北航verilog实验报告(全)
Verilog实验报告(电子)参考模板
西安邮电大学Verilog HDL大作业报告书
学院名称:电子工程学院
学生姓名:
专业名称:电子信息工程
班级:
实验一异或门设计
一、实验目的
(1)熟悉Modelsim 软件
(2)掌握Modelsim 软件的编译、仿真方法
(3)熟练运用Modelsim 软件进行HDL 程序设计开发
二、实验内容
my_or,my_and和my_not门构造一个双输入端的xor门,其功能是计算z=x’y+xy’,其中x和y为输入,z为输出;编写激励模块对x和y的四种输入组合进行测试仿真
1、实验要求
用Verilog HDL 程序实现一个异或门,Modelism仿真,观察效果。
2、步骤
1、建立工程
2、添加文件到工程
3、编译文件
4、查看编译后的设计单元
5、将信号加入波形窗口
6、运行仿真
实验描述如下:
module my_and(a_out,a1,a2);
output a_out;
input a1,a2;
wire s1;
nand(s1,a1,a2);
nand(a_out,s1,1'b1);
endmodule
module my_not(n_out,b);
output n_out;
input b;
nand(n_out,b,1'b1); endmodule
module my_or(o_out,c1,c2);
output o_out;
input c1,c2;
wire s1,s2;
nand(s1,c1,1'b1);
nand(s2,c2,1'b1);
nand(o_out,s1,s2); endmodule
module MY_XOR(z,x,y);
Verilog流水灯实验报告
流火灯真验报告之阳早格格创做
真验两流火灯
一、真验手段
教会编写一个简朴的流火灯步调并掌握分频的要领.认识Modelsim仿真硬件的使用.
二、真验央供
用Quartus编写流火灯步调,正在Modelsim硬件中举止仿真.
三、真验仪器战设备
1、硬件:估计机
2、硬件:Quartus、Modelsim、(UE)
四、真验真质
1、将时钟周期举止分频.
2、编写Verilog步调真止LED等依次明灭,用Modelsim举止仿真,画造波形图.
五、真验安排
(一)分频本理
已知时钟周期f为50MHz,周期T为1/f,即20ns.若念得到四分频计数器,即周期为80ns的时钟,需要把时钟举止分频.即每四个时钟周期合并为一个周期.本理图如图1所示.
图1四分频本理图
(两)流火灯安排思路
1、真止4盏LED灯依次隔1s明灭,即周期为1s;
2、估计出频次f为1/T=1Hz;
3、树坐计数器cnt,当检测到clk降下沿时启初计数,当cnt计数到24_999_999时,clk_4跳形成1,LED灯明起,当cnt计数49_999_999时,clk_4置0,LED灯燃烧.
4、给LED赋初值4’b0001,第一盏灯明.
5、利用位拼交,真止循环.
(三)安排框图
图2安排基础框图
(四)位拼交的用法
若输进a=4'b1010,b=3'b101,c=4'b0101,念要使输出
d=5'b10001
用位拼交,标记“{}”:d<={b[2:1],c[1],a[2:1]}
即把b的矮1~2位10,c的矮1位0,a的矮1~2位01拼交起去,得到10001.
verilog实验报告
verilog实验报告
Verilog实验报告
引言:
Verilog是一种硬件描述语言(HDL),用于设计和模拟数字电路。它是一种高
级语言,能够描述电路的行为和结构,方便工程师进行数字电路设计和验证。
本实验报告将介绍我在学习Verilog过程中进行的实验内容和所获得的结果。
实验一:基本门电路设计
在这个实验中,我使用Verilog设计了基本的逻辑门电路,包括与门、或门和非门。通过使用Verilog的模块化设计,我能够轻松地创建和组合这些门电路,以实现更复杂的功能。
我首先创建了一个与门电路的模块,定义了输入和输出端口,并使用逻辑运算
符和条件语句实现了与门的功能。然后,我创建了一个测试模块,用于验证与
门的正确性。通过输入不同的组合,我能够验证与门的输出是否符合预期。
接下来,我按照同样的方法设计了或门和非门电路,并进行了相应的测试。通
过这个实验,我不仅学会了使用Verilog进行基本门电路的设计,还加深了对逻辑电路的理解。
实验二:时序电路设计
在这个实验中,我学习了如何使用Verilog设计时序电路,例如寄存器和计数器。时序电路是一种具有状态和时钟输入的电路,能够根据时钟信号的变化来改变
其输出。
我首先设计了一个简单的寄存器模块,使用触发器和组合逻辑电路实现了数据
的存储和传输功能。然后,我创建了一个测试模块,用于验证寄存器的正确性。
通过输入不同的数据和时钟信号,我能够观察到寄存器的输出是否正确。
接下来,我设计了一个计数器模块,使用寄存器和加法电路实现了计数功能。
我还添加了一个复位输入,用于将计数器的值重置为初始状态。通过测试模块,我能够验证计数器在不同的时钟周期内是否正确地进行计数。
Verilog实验报告
Verilog实验报告
实验一简单组合逻辑电路的设计
一实验要求
1.用verilog HDL语言描写出简单的一位数据比较器及其测试程序;
2.用测试程序对比较器进行波形仿真测试;画出仿真波形;
3.总结实验步骤和实验结果。
二实验原理与内容
4.这是一个可综合的数据比较器,很容易看出它的功能是比较数据a
与数据b,如果两个数据相同,则给出结果1,否则给出结果0。在
Verilog HDL中,描述组合逻辑时常使用assign结构。注意
equal=(a==b)?1:0,这是一种在组合逻辑实现分支判断时常使用的
格式。
5.模块源代码
测试模块:
6.波形图:
四结实验步骤和实验结果
由图可看出,每当输入的电位值不同时输出为0,这与实验要求一致,相同时输出为1,故此程序是可行的。
实验三在verilog HDL中使用函数
一实验要求
1.掌握函数在模块中的使用
2.用测试程序进行波形仿真测试;画出仿真波形
3.总结实验步骤和实验结果
二实验原理与内容
与一般的程序设计语言一样;verilog HDL也可以使用函数已是应对不同变量采取同一运算的操作。verilog HDL函数在综合时被理解成具有独立运算功能的电路,每调用一次函数相当于改变这部分电路的输入以得到相应的计算结果。
模块源代码:
module ex3(clk,n,result,reset);
output[31:0] result;
input[3:0] n;
input reset,clk;
reg[31:0] result;
always @(posedge clk)
begin
if(!reset)result <= 0;
北航计算机体系结构方向实验介绍
基本实验:主要完成数字逻辑基本器件和常见数字电路的设计,包括常
用组合逻辑电路(如译码器、编码器、数据选择器、数值比较器、算术逻辑 运算单元等)、触发器、常用时序逻辑电路(寄存器、计数器、时钟分频电 路、按钮消抖电路、16位伪随机码发生器、8位序列信号检测器等)和状态 机的设计。内容涵盖了数字逻辑的主要知识点,共13个。
17
北航计算机体系结构方向实验介绍
数字逻辑实验 部分实验大纲 数字逻辑实验-部分实验大纲
课程实验(五) 实验名称:寄存器和乘法器(4学时,设计型) 实验名称 寄存器和乘法器(4学时 设计型) 实验目的:了解数码寄存器、移位寄存器的特点、电路结构和 工作原理。掌握时序逻辑电路的设计方法,掌握数码寄存器和 移位寄存器的设计方法。 实验内容:(1)设计一个32位指令寄存器,使其具有复位功 能 当时钟上升沿到来且写使能有效时 保存来自存储器的指 能,当时钟上升沿到来且写使能有效时,保存来自存储器的指 令(为《计算机组成原理实验》做准备)。(2)设计一个32位 移位寄存器,实现对32位数据的逻辑左移、逻辑右移、算术右 移或无操作(为《计算机组成原理实验》做准备) (3)设计 移或无操作(为《计算机组成原理实验》做准备)。(3)设计 一个寄存器组,能够根据读写控制信号进行数据的读或写(为 《计算机组成原理实验》做准备)。(4)设计乘法单元,使其 具有乘法运算 除法运算 输出HI/LO寄存器 写入HI/LO寄存 具有乘法运算、除法运算、输出HI/LO寄存器、写入HI/LO寄存 器和复位功能(为《计算机组成原理实验》做准备)。 实验要求:(1)基本要求:实验内容(1)-(4)。 (2)较高要求:采用教材给定的不同方法设计乘法器,并比 较它们的差异。 18
时序逻辑电路的Verilog_HDL实现实验报告
时序逻辑电路的Verilog HDL 实现
一.实验要求
(1):编写JK 触发器、8位数据锁存器、数据寄存器的Verilog HDL 程序,并实现其仿真及其测试程序;
(2):在实验箱上设计含异步清零和同步使能的计数器。
(3):进行波形仿真测试后;画出仿真波形。
(4):写出实验心得
二.实验内容:
(1)1.JK 触发器的元件符号如图7.14所示,其中J 、K 是数据输入端,CLR 是复位控制输入端,当CLR=0时,触发器的状态被置为0态;CLK 是时钟输入端;Q 和QN 是触发器的两个互补输出端。
JK 触发器的状态方程为
Q n+1 =J Q n +K Q n
JK 触发器的verilog HDL 程序
module jkff_rs(clk,j,k,q,rs,set); input clk,j,k,set,rs;
output reg q;
always@(posedge clk,negedge rs,negedge set)
begin if(!rs) q<=1'b0;
else if(!set) q<=1'b1;
else case({j,k})
2'b00:q<=q;
2'b01:q<=1'b0;
2'b10:q<=1'b1;
2'b11:q<=~q;
default:q<=1'bx;
endcase
end
endmodule
JK 触发器的功能:带异步清0,异步置1(低电平有效)
JK 触发器的仿真结果
JK 触发器的元件符号
2.8位数据锁存器锁存器元件符号如图所示。CLR是复位控制输入端,当CLR=0时,8位数据输出Q[7..0]=00000000。ENA是使能控制输入端,当ENA=1时,锁存器处于工作状态,输出Q[7..0]=D[7..0];ENA=0时,锁存器的状态保持不变。OE是三态输出控制端,当OE=1时,输出为高阻态;OE=0时,锁存器为正常输出状态。
北航verilog实验报告
北京航空航天大学
电子电路设计数字部分实验报告
实验一简单组合逻辑设计 (2)
实验二简单分频时序逻辑电路的设计 (3)
一.实验目的:1.掌握最基本组合逻辑电路的实现方法。 (3)
2.学习时序电路测试模块的编写。 (3)
3.学习综合和不同层次的仿真。 (3)
实验三利用条件语句实现计数分频时序电路 (5)
实验四阻塞赋值与非阻塞赋值的区别 (7)
实验五用always块实现较复杂的组合逻辑: (10)
实验六在Verilog HDL中使用函数 (12)
实验七在Verilog HDL中使用任务(task) (14)
实验八利用有限状态机进行时序逻辑的设计 (17)
实验九楼梯灯 (19)
实验思考与总结 (29)
学院:
学号:
姓名:
实验一简单组合逻辑设计
一.实验目的:
1.掌握基本组合逻辑电路的实现方法。
2.初步了解两种基本组合逻辑电路的生成方法。
3.学习测试模块的编写。
4.通过综合和布局布线了解不同层次仿真的物理意义。
二.实验设备:
安装Modelsim-6.5c的PC机。
三.实验内容:
描述一个可综合的数据比较器,比较数据a 、b的大小,若相同,则给出结果1,否则给出结果0
四.综合仿真结果
实验二简单分频时序逻辑电路的设计
一.实验目的:1.掌握最基本组合逻辑电路的实现方法。
2.学习时序电路测试模块的编写。
3.学习综合和不同层次的仿真。
二.实验设备:
安装Modelsim-6.5c的PC机。
三.实验内容:
用always块和@(posedge clk)或@(negedge clk)的结构表述一个1/2分频器的可综合模型,观察时序仿真结果
北航电气技术实践FPGA报告
FPGA实验报告
141717
一、实验目的
1、熟悉使用可编程逻辑器件--Altera 公司FPGA Cyclone ш系列EP3C55F
2、熟悉使用硬件描述语言--VHDL
3、熟悉FPGA集成环境--Altera公司FPGA Quartusǁ 9或10开发流程
4、熟悉并掌握核心目标系统板与接口电路等工作原理及功能模块绑定新信息
5、熟悉并掌握下载线方式和下载文件的选择
二、实验要求
1、学习并掌握文本编辑、图形编辑等输入和时序、功能仿真方法。
2、学习并掌握门电路、组合电路、时序电路等单一模块功能。
3、学习并设计各种不同状态机逻辑功能的电路。
4、学习并设计有单一模块--较多功能模板集成--系统集成的方法。
5、学习并将系统及成功逐一拆分成一个个子功能模块的方法。
6、学习并选择多种模式显示(发光二极管显示、七段数码管--动态扫描或静态扫描显示、LED点阵显示各种字符和图形或静止或移动等方式、LCD字符液晶显示各种字符和图形或静止或移动、TFT-LCD触摸液晶屏显示各种信息等方式)。
7、根据自己的兴趣和愿望,可从给定的实验题目中选取或自己设定功能题目。
8、同组实验者应轮流操作实例实验流程,并实施源程序编写、编译、调试、下载程序和验证实验结果实践环节。
9、利用元件例化语句调用,至少涉及一个有内容、功能较复杂稍大的主、子程序综合应用例程。
功能内容,关键是看质量。
三、实验设备
1、可编程逻辑EDA/SOPC实验箱一台。
2、计算机及开发软件Quartusǁ一台套。
四、实验内容
1、按指导书7.6集成开发环境使用章节操作顺序实现文本编程实例1和图形编程实例2全过程。
北航夏宇闻verilog讲稿ppt-HDL
Verilog HDL 的抽象级别
行为级:有关行为和技术指标模块, 行为级:有关行为和技术指标模块,容易理 解 有关逻辑执行步骤的模块, RTL级:有关逻辑执行步骤的模块,较难理 解 有关逻辑部件互相连接的模块, 门级 :有关逻辑部件互相连接的模块,很 难理解 开关级:有关物理形状和布局参数的模块, 开关级:有关物理形状和布局参数的模块, 非常难理解
怎样设计如此复杂的系统? 怎样设计如此复杂的系统?
现代的设计方法: 现代的设计方法: - 选用合适的 EDA仿真工具; EDA仿真工具; 仿真工具
- 选用合适电路图输入和HDL编辑工具; 选用合适电路图输入和 电路图输入和HDL编辑工具 编辑工具; - 逐个编写可综合HDL模块; 逐个编写可综合HDL模块 模块; - 逐个编写HDL测试模块; 逐个编写HDL测试模块 测试模块; - 逐个做Verilog HDL 电路逻辑访真; 逐个做Verilog 电路逻辑访真; - 编写Verilog HDL总测试模块; 编写Verilog HDL总测试模块 总测试模块; - 做系统电路逻辑总仿真; 做系统电路逻辑总仿真;
sela nsl selb out
sl
Verilog HDL入门 HDL入门
module myadder(clock, reset, a, b, sum); myadder(clock, um); parameter width = 8; input clock, reset; input [width-1:0] a, b; [widthoutput [width :0] sum; um; reg [width-1:0] a_reg, b_reg; [widthreg [ width : 0 ] sum; um; always @(posedge clock or negedge reset) if (!reset) begin (!reset) a_reg <= ‘b0; b_reg <= ’b0; sum<= ’b0; um<= end
北航实验报告封面(共8篇)
北航实验报告封面(共8篇)
北航惯性导航综合实验一实验报告
实验一
陀螺仪关键参数测试与分析实验加速度计关键参数测试与分析实验
二零一三年五月十二日
实验一陀螺仪关键参数测试与分析实验
一、实验目的
通过在速率转台上的测试实验,增强动手能力和对惯性测试设备的感性认识;通过对陀螺仪测试数据的分析,对陀螺漂移等参数的物理意义有清晰的认识,同时为在实际工程中应用陀螺仪和对陀螺仪进行误差建模与补偿奠定基础。
二、实验内容
利用单轴速率转台,进行陀螺仪标度因数测试、零偏测试、零偏重复性测试、零漂测试实验和陀螺仪标度因数与零偏建模、误差补偿实验。三、实验系统组成
单轴速率转台、MEMS 陀螺仪(或光纤陀螺仪)、稳压电源、数据采集系统与分析系统。四、实验原理
1. 陀螺仪原理
陀螺仪是角速率传感器,用来测量载体相对惯性空间的角速度,通常输出与角速率对应的电压信号。也有的陀螺输出频率信号(如激光陀螺)和数字信号(把模拟电压数字化)。以电压表示的陀螺
输出信号可表示为:
UGUG?0??kG??kGfG(a)?kG?G
(1-1)
式中fG(a)是与比力有关的陀螺输出误差项,反映了陀螺输出受比力的影响,本实验不考虑此项误差。因此,式(1-1)简化为 UGUG?0??kG??kG?G
(1-2)
由(1-2)式得陀螺输出值所对应的角速度测量值:
测量?
UG?UG(0)
(1-3) ??G
kG
对于数字输出的陀螺仪,传感器内部已经利用标度因数对陀螺仪模拟输出进行了量化,直接输出角速度值,即:
测量??0??真值??G
(1-4)
?0是是陀螺仪的零偏,物理意义是输入角速度为零时,陀螺仪输出值所对
北航实验报告实验实验
实验三UC-OS移植实验
一、实验目的
在内核移植了uCOS-II 的处理器上创建任务。
二、实验内容
1.运行实验十,在超级终端上观察四个任务的切换。
2. 任务1~3,每个控制“红”、“绿”、“蓝”一种颜色的显示,适当增加OSTimeDly()的时间,且优先级高的任务延时时间加长,以便看清三种颜色。
3.引入一个全局变量 BOOLEAN ac_key,解决完整刷屏问题。
4. #define rUTRSTAT0 (*(volatile unsigned *)0x)
#define RdURXH0()(*(volatile unsigned char *)0x)
当键盘有输入时在超级终端上显示相应的字符。
三、实验设备
硬件:ARM嵌入式开发平台、用于ARM920T的JTAG仿真器、PC机Pentium100以上。
软件:PC机操作系统Win2000或WinXP、ARM 集成开发环境、仿真器驱动程序、超级终端通讯程序。
四、实验原理
所谓移植,指的是一个操作系统可以在某个微处理器或者微控制器上运行。虽然uCOS-II的大部分源代码是用C语言写成的,仍需要用C语言和汇编语言完成一些与处理器相关的代码。比如:uCOS-II在读写处理器、寄存器时只能通过汇编语言来实现。因为uCOS-II在设计的时候就己经充分考虑了可移植性,所以,uCOS-II的移植还是比较容易的。
要使uCOS一工工可以正常工作,处理器必须满足以下要求:
1)处理器的C编译器能产生可重入代码。
2)在程序中可以打开或者关闭中断。
3)处理器支持中断,并A能产生定时中断(通常在10Hz}1000Hz之间)。
Verilog实验报告
实验报告册(2015-2016学年度第2学期)
实验课程:VHDL
系别专业:信息工程
班级:1404
*名:**
任课教师:**
教育信息技术实验教学中心制
实验报告
二、实验过程
实验步骤:
1、设计思路
一个1位全加器可以用两个1位半加器及一个或门连接而成。而一个1位半加器可由基本门电路组成。半加器的真值表为
其中a为被加数,b为加数,so为本位和,co为本位向高位进位,因而可得表达式为:so=NOT(a XOR (NOT b)) ;而co=a AND b ;其原理图形如下:
而全加器的真值表如下:
其中ain为被加数,bin为加数,cin为低位向本位的进位,sum为本位向高位的进位,cout为本位和其原理图如图所示:
2、设计全加器
(1)、在File菜单中选择New项,将出现新建文件对话框。选择“Device Design File->Block Diagram->Schematic File”项。点击“OK”,在主界面中将打开“Block Editor”窗口。
(2)元件的添加:在绘图区点击鼠标右键->Insert->Symbol…或双击鼠标左键,弹出相应的Symbol对话框,在name栏输入需添加的元件,input(输入引脚),两个h_suber ,or2(两输入或门),output(输出引脚)等,回车或点击ok,此时在鼠标光标处将出现该元件图标,并随鼠标的移动而移动,在合适的位置点击鼠标左键,放置一个元件。设计好的全加器如原理图所示。保存文件:从“File”
菜单下选择“Save”,出现文件保存对话框,选择文件夹d:suber(与刚才的半加器选在同一个文件夹下必须)。单击“OK”.
北航电气实验FPGA实验报告
北京航空航天大学电气实验报告
FPGA实验
张天
130325班
学号:13031220
一.实验目的
略
二.实验要求
略
三.实验设备
略
四.实验内容
略
五.实验实例
1.实例6-1
思考题1:输出信号q3q2q1绑定接口电路的七段数码管或米字型数码管或LED点
阵显示?
答:
思考题2:怎样修改成4位二进制减法计数器,具有清零,启动控制功能等?
答:
思考题3:把计数器修改成2位或更多位十进制计数功能,再用七段数码管进行显示等?
答:
2.实例6-2
思考题:一位半加器电路采用VHDL语言实验
答:
library ieee;
use ieee.std_logic_1164.all;
use iee.std_logic_unsigned.all;
entity halfadd is
port (a,b;in std_logic
sum,carry; out std_logic)
end entity halfadd;
architecture halfadd is
begin
sum<=a and(not b)+b and (not a);
carry<= a and b;
end architecture halfadd;
六.实验过程
我们组做的是一个利用led点阵规律亮灭变化形成字体,并且字体产生变化,形成“自动化❤”的样子,实现图片如下图:
1.实验分析:
实验设计思路:
本实验的设计思路是利用led灯的
辉光效应,利用逐行扫描,在高频情况下就会显示所有行的亮灯,进而形成汉字,并且有时钟计数程序,当时钟数字达到规定值(本实验为111111111b)时,跳转到下一个状态,显示第二个憨子。每个汉字的颜色由led灯决定,改led矩阵有红绿两种led灯,因此有红绿橙三种颜色显示。
verilog实验
实验二:组合逻辑电路设计
一、实验目的:
学习组合逻辑电路,学习译码器的功能与定义,学习Verilog语言。
二、实验内容:
编写3-8译码器的Verilog 代码并仿真,编译下载验证。
三、实验环境
PC 机(Pentium100 以上)、Altera Quartus II 6.0 CPLD/FPGA 集成开发环境、AR1000核心板、SOPC-MBoard板、ByteBlaster II 下载电缆。
四、实验原理
译码是编码的逆过程,它的功能是将特定含义的二进制码进行辨别,并转换成控制信号,具有译码功能的逻辑电路成为译码器。
译码器可分为两种类型,一种是将一系列代码转换成与之一一对应得有效信号。这种译码器可以称为唯一地址译码器,它常用于计算机中对存储器单元地址的译码,即将每一个地址代码换成一个有效信号,从而选中对应的单元。另一种是将一种代码转换成另一种代码,所以也称为代码变换器。
五、实验过程
1.代码
2.编译成功
3.波形simulation
4.仿真波形图
实验三:时序逻辑电路设计(一)
一、实验目的:
学习时序逻辑电路,学习计数器的原理,学习Verilog。
二、实验内容:
编写一个带预置输入,清零输入,可加/可减计数器的Verilog 代码并仿真。
三、实验环境
PC 机(Pentium100 以上)、Altera Quartus II 6.0 CPLD/FPGA 集成开发环境。
四、实验原理
计数器是数字系统中用的较多的基本逻辑器件。它不仅能记录输入时钟脉冲的个数,还可以实现分频、定时等功能。
计数器的种类很多。按脉冲方式可以分为同步计数器和异步计数器;按进制可以分为二进制计数器和非二进制计数器;按计数过程数字的增减,可分为加计数器、减计数器和可逆计数器。
北航verilog实验报告(全)
目录
实验一 (2)
实验二 (8)
实验三 (14)
实验四 (27)
实验一
实验目的:熟悉硬件开发流程,掌握Modelsim设计与仿真环境,学会简单组合逻辑电路、简单时序逻辑电路设计,不要求掌握综合和综合后仿真。
实验内容:必做实验:练习一、简单的组合逻辑设计
练习二、简单分频时序逻辑电路的设计
选做实验:选做一、练习一的练习题
选做二、7段数码管译码电路
练习一、简单的组合逻辑设计
描述一个可综合的数据比较器,比较数据a 、b的大小,若相同,则给出结果1,否则给出结果0。
实验代码:
模块源代码:
module compare(equal,a,b);
input a,b;
output equal;
assign equal=(a==b)?1:0;
endmodule
测试模块源代码:
`timescale 1ns/1ns
`include "./compare.v"
module t;
reg a,b;
wire equal;
initial
begin
a=0;
b=0;
#100 a=0;b=1;
#100 a=1;b=1;
#100 a=1;b=0;
#100 a=0;b=0;
#100 $stop;
end
compare m(.equal(equal),.a(a),.b(b));
endmodule
实验波形
练习二、简单分频时序逻辑电路的设计
用always块和@(posedge clk)或@(negedge clk)的结构表述一个1/2分频器的可综合模型,观察时序仿真结果。
实验代码:
模块源代码:
module halfclk(reset,clkin,clkout);
Verilog学号滚动实验报告
电子科技大学
实
验
报
告
学生姓名:聂英豪
学号:2012079150013
指导教师:黄志奇
日期:年月日
一、实验室名称:
现代测试技术实验室
二、实验项目名称:
基于NEXYS2 FPGA开发板的数码管扫描显示特定数字
三、实验原理:
1:FPGA(Field-Programmable Gate Array),即现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。
2:利用Xilinx ISE 14.4软件进行Verilog的编程与仿真,然后将生成的bit文件下载至NEXYS2开发板上,可以观察到实验现象。
四、实验目的:
1:熟悉掌握FPGA开发实验流程。
2:掌握Verilog语言的基本编程。
3:学习掌握时序电路等知识。
五、实验内容:
1:学习并掌握数码管扫描显示流程。
2:使用Xilinx ISE14.4编程相应Verilog程序。
3:将程序下载至NEXYS2开发板上观察现象。
六、实验器材(设备、元器件):
1)计算机(安装Xilinx ISE 14.4软件平台);
2)NEXYS2 FPGA开发板一套(带USB-MIniUSB下载线)。
七、实验步骤:
1:确定实验流程:
开始
时钟分频
使用移位寄存
器将预置数值
保存
数码管显示对
应数值
结束
2:编写时钟分频模块。
程序如图,clk190代表190HZ时钟,用于数码管的扫描显示,clk3代表3HZ时钟,用于数码管的滚动。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
目录
实验一 (2)
实验二 (8)
实验三 (14)
实验四 (27)
实验一
实验目的:熟悉硬件开发流程,掌握Modelsim设计与仿真环境,学会简单组合逻辑电路、简单时序逻辑电路设计,不要求掌握综合和综合后仿真。
实验内容:必做实验:练习一、简单的组合逻辑设计
练习二、简单分频时序逻辑电路的设计
选做实验:选做一、练习一的练习题
选做二、7段数码管译码电路
练习一、简单的组合逻辑设计
描述一个可综合的数据比较器,比较数据a 、b的大小,若相同,则给出结果1,否则给出结果0。
实验代码:
模块源代码:
module compare(equal,a,b);
input a,b;
output equal;
assign equal=(a==b)?1:0;
endmodule
测试模块源代码:
`timescale 1ns/1ns
`include "./compare.v"
module t;
reg a,b;
wire equal;
initial
begin
a=0;
b=0;
#100 a=0;b=1;
#100 a=1;b=1;
#100 a=1;b=0;
#100 a=0;b=0;
#100 $stop;
end
compare m(.equal(equal),.a(a),.b(b));
endmodule
实验波形
练习二、简单分频时序逻辑电路的设计
用always块和@(posedge clk)或@(negedge clk)的结构表述一个1/2分频器的可综合模型,观察时序仿真结果。
实验代码:
模块源代码:
module halfclk(reset,clkin,clkout);
input clkin,reset;
output clkout;
reg clkout;
always@(posedge clkin)
begin
if(!reset) clkout=0;
else clkout=~clkout;
end
endmodule
测试模块源代码:
`timescale 1ns/100ps
`define clkcycle 50
module tt;
reg clkin,reset;
wire clkout;
always#`clkcycle clkin=~clkin;
initial
begin
clkin=0;
reset=1;
#10 reset=0;
#110 reset=1;
#100000 $stop;
end
halfclk m0(.reset(reset),.clkin(clkin),.clkout(clkout));
endmodule
练习题1:设计一个字节(8位)的比较器。要求:比较两个字节的大小,并改写测试模型,使其能进行比较全面的测试。观察RTL级仿真、综合后门级仿真和布线后仿真有什么不同,并说明不同的原因。从文件系统中查阅自动生成的compare.vm,compare.vo文件和compare.v文件作比较,说出不同点和相同点。实验代码:
模块源代码:
module compare1(equal,a,b);
input [7:0]a,b;
output equal;
assign equal=(a>b)?1:0;
endmodule
测试模块源代码:
`timescale 1ns/1ns
`include "./compare1.v"
module ttt;
reg [7:0]a,b;
wire equal;
initial
begin
a=8'b00000000;
b=8'b00000000;
#100 a=8'b00001001;b=8'b00100010;
#100 a=8'b00110001;b=8'b00100100;
#100 a=8'b00010001;b=8'b00101000;
#100 a=8'b10000001;b=8'b00110000;
#100 $stop;
end
compare1 m(.equal(equal),.a(a),.b(b));
endmodule
实验分析:RTL,综合后门级仿真和布线后仿真的区别
1.RTL行为级仿真
这个阶段的仿真可以用来检查代码中的语法错误以及代码行为的正确性,其中不包括延时信息。如果没有实例化一些与器件相关的特殊底层元件的话,这个阶段的仿真也可以做到与器件无关。因此在设计的初期阶段不使用特殊底层元件即可以提高代码的可读性、可维护性,又可以提高仿真效率,且容易被重用。
2.综合后门级功能仿真(前仿真)
一般在设计流程中的第二个仿真是综合后门级功能仿真。绝大多数的综合工具除了可以输出一个.VO标准网表文件以外,还可以输出Verilog或者VHDL网表,其中标准网表文件是用来在各个工具之间传递设计数据的,并不能用来做仿真使用,而输出的Verilog或者VHDL网表可以用来仿真,之所以叫门级仿真是因为综合工具给出的仿真网表已经是与生产厂家的器件的底层元件模型对应起来了,所以为了进行综合后仿真必须在仿真过程中加入厂家的器件库,对仿真器进行一些必要的配置,不然仿真器并不认识其中的底层元件,无法进行仿真。Xilinx公司的集成开发环境ISE中并不支持综合后仿真,而是使用映射前门级仿真代替,对于Xilinx开发环境来说,这两个仿真之间差异很小。
3.时序仿真(后仿真)
在设计流程中的最后一个仿真是时序仿真。在设计布局布线完成以后可以提供一个时序仿真模型,这种模型中也包括了器件的一些信息,同时还会提供一个SDF时序标注文件(Standard Delay format Timing Anotation)。SDF时序标注最初使用在Verilog语言的设计中,现在VHDL语言的设计中也引用了这个概念。对于一般的设计者来说并不需知道SDF 对源程序.v的仿真称之为功能仿真,对.vo的仿真称之为网表仿真,这里使用的就是厂家实际用到的元件,是为了确认综合是不是实现了用户预想的功能。和加入sdo之后的仿真是真正加入了线路延时的仿真。