目录
实验一 4选1数据选择器的设计(EDA-01) (2)
实验二译码器的设计(EDA-02) (6)
实验三带清零、使能的4位加法计数器设计(EDA-03) (10)
实验四 8位移位寄存器的设计(EDA-04) (12)
实验五深度为4的8位RAM设计(EDA-05) (14)
实验六基于LPM函数的加法电路设计(EDA-06) (17)
实验七综合实验 - Moore型有限状态机的时序电路设计(EDA-07) (20)
主要参考文献 (22)
实验一 4选1数据选择器的设计
一、实验目的和任务
1、熟习MAX+PLUS II软件的使用;
2、掌握用原理图输入法和硬件描述语言(Verilog HDL)两种方法来设计逻辑电路;
3、通过电路的仿真及验证,进一步了解4选1数据选择器的功能;
二、实验内容
1、用原理图输入法来设计4选1数据选择器
参照按图1-1所示来编辑完成4选1数据选择器的原理图输入设计,其中a、b、c、d 为数据输入端,sel[1]、sel[0]为控制输入端,q为4选1数据输出端。存盘仿真后,观察仿真波形,以验证数据选择器的功能。
图1-1 4选1数据选择器原理图
2、用Verilog HDL硬件描述语言来设计4选1数据选择器
用MAX+plusII中的文本编辑器,编辑输入4选1数据选择器源程序:
module mux4_1( a, b, c, d, sel, q);
input a,b,c,d;
input [1:0]sel;
output q;
reg q;
always @( sel)
case(sel)
2’b00: q=a;
2’b01: q=b; 2’b10: q=c; 2’b11: q=d; endcase endmodule
程序中的a 、b 、c 、d 依然为数据输入端,sel[1]、sel[0]为控制输入端,q 为4选1
数据输出端。同样存盘后进行仿真,并观察仿真波形,以验证数据选择器的功能。
三、实验仪器、设备及材料
电脑、EDA 软件、实验箱、下载电缆、连接导线。
四、实验原理
4选1数据选择器的原理框图及真值表如图1-2及表1-1所示,sel[1:0]可能出现四种组合情况: 00 01 10 11,它分别对应选通四个不同的数据输入a 、b 、c 、d ,从q 端输出。结合以前所学数字电路的知识,可由真值表得出利用“与非门”实现的逻辑电路,进而可用MAX+PLUS II 原理图输入方法,设计出该4选1数据选择器;如应用EDA 技术所学的Verilog HDL 硬件描述语言来描述该电路功能,即可设计出该4选1数据选择器的源程序。
q Sel[1]输出
选择输入
0a 01b 00c 11
d
1
Sel[0]表1-1 真值表
图1-2 4选1数据选择器的原理框图
五、主要技术重点、难点
本实验技术重点在于理解4选1数据选择器的功能后,用原理图输入法和硬件描述语言(Verilog HDL )两种方法来设计该逻辑电路。 其难点是要仿真出4选1数据选择器的波形,然后通过观测仿真波形,来验证该数据选择器的功能。
六、实验步骤
(一)原理图输入法的设计步骤:
(1)进入Windows 操作系统,打开MAX+plus II 。
1、启动File \ Project Name 菜单,输入设计项目的名字MUX41。 点击Assign \ Device 菜单,选择器件(本设计选用EPF10K10)。
2、启动菜单File \ New ,选择Graphic Editor File
,打开原理图编辑器,进行原理图
d
a b c
设计输入。
(2)设计的输入
1. 放置4个三输入端与非门(nand3)、1个四输入端与非门(nand4),2个非门(not)
器件、及6个输入端(input)、1个输入端(output)在原理图上;
①在原理图的空白处双击鼠标右键,在出现窗体中的“Symbol Libraries:”一
栏中,从\maxplus2\max2lib\prim元件库中调出4选1数据选择器电路设计所
需要的元件;
②在光标处输入元件名称或用鼠标点取元件,按下OK即可。
③如果安放相同元件,只要按住Ctrl键,同时用鼠标拖动该元件。
④参照图1-1来安放相应的元件。
2. 添加连线到器件的管脚上
把鼠标移到元件引脚附近,则鼠标光标自动由箭头变为十字,按住鼠标右键拖动,即可画出连线,参照图1连好相应元件的输入、输出脚。
3.保存原理图
单击保存按钮,对于第一次输入的新原理图,出现类似文件管理器的图框,选择合适目录、合适名称保存刚才输入的原理图1-1 ,原理图的扩展名为.gdf,本实验中取名为mux41.gdf。
(3)编译
启动MAX+plus II \ Compiler菜单,按Start开始编译(如图1-3),并显示编译结果,生成.sof、.pof文件,以备硬件下载和编程时调用。同时生成.rpt文件,可详细查看编译结果。
图1-3 编译
(4)仿真设计文件
启动MAX+plus II \ File \ New菜单,如
图1-4所示进入波形编辑环境,编辑mux41.gdf
的波形文件,设置输入信号a、b、c、d和控制
信号sel[1]、sel[0]的电平。波形文件编辑结束
后以mux41.scf为波形文件名存盘。
执行仿真命令,启动仿真并观察仿真波形,
进行设计电路的功能验证。
图1-4 新建波形文件的选择对话框
(二)用Verilog HDL语言完成的设计步骤:
(1)、运行MAX+PLUS II软件
(2)、启动File \ New菜单命令(如图1-5);
(3)、选择Text Editor file,点击OK后,键
入上面“二、实验内容”中的程序;
(4)、在新的目录中存成mux_1.V 文件,并按
“Ctrl+Shift+J”将该文件设为一个Project工程,
然后进行编译。
(5)参照原理图输入设计进行仿真,并观察仿
真波形,以验证所设计电路的功能。
图1-5 新建文本文件的选择对话框
七、实验报告要求
1. 对于原理图设计要求有设计过程。
2. 详细论述实验步骤。
3. 给出原理图输入法和Verilog HDL语言设计两种方法的仿真波形。
八、实验注意事项
1. 使用原理图设计时,其文件名[mux41.gdf]要与仿真的波形文件名[mux41.scf]相同,只是文件的后缀不同;使用Verilog HDL语言设计时,其文件名(mux4_1.V)要与模块名[module mux4_1( a, b, c, d, sel, q);]相同,且仿真的波形文件名[mux4_1.scf]也要相同。
2. 用原理图输入法和Verilog HDL语言两种方法所做的设计,最好放在不同的目录中,且目录名不要出现中文字符。
3.在Waveform Editor仿真时,应先在菜单选项的Options/ Grid Size…中所弹出的对话框中将Grid Size:改为1.0us;并菜单选项的File/ End Time…中所弹出的对话框中将Grid Size改为100.0us,以方便观察、理解仿真得到的波形。
九、思考题
1. 如何用设计好的4选1数据选择器,来实现8选1数据选择器的设计(用原理图输入法来设计),试给出设计与仿真的结果。
2.谈谈使用原理图输入法和Verilog HDL语言设计两种方法的优劣心得。
实验二译码器的设计
一、实验目的和任务
1、熟习MAX+PLUS II软件的使用;
2、掌握用Verilog HDL硬件描述语言来设计3-8译码器及七段显示译码器;
3、通过电路的仿真和硬件验证,进一步了两种译码器的功能;
二、实验内容
1、要求用Verilog HDL语言设计一个3输入、8输出的3-8译码器,输出低有效。
用MAX+plusII中的文本编辑器,编辑输入3-8译码器的参考源程序:
module decoder3_8(a,y);
input [2:0]a;
output [7:0]y;
reg [7:0]y;
always @( a )
case ( a)
3'b000: y=8'b11111110;
3'b001: y=8'b11111101;
3'b010: y=8'b11111011;
3'b011: y=8'b11110111;
3'b100: y=8'b11101111;
3'b101: y=8'b11011111;
3'b110: y=8'b10111111;
3'b111: y=8'b01111111;
endcase
endmodule
程序中的a[2:0]为3个数据输入端,y[7:0]为8个数据输出端。编辑输入存盘后,要求进行仿真,并观察仿真波形,以验证3-8译码器的功能。
2、要求用Verilog HDL语言来设计七段显示译码器,用于控制共阴LED数码管显示“0, 1, 2, 3, 4, 5 , 6, 7, 8, 9, A, B, C, D, E, F”字符。要求该输入为4位二进制码,输出7位共阴LED数码管的a、b、c、d、e、f、g的控制位,以控制其显示相应的字符。
用MAX+plusII中的文本编辑器,编辑输入七段显示译码器的源程序:
module de_7(d, y);
input [3:0]d;
output [6:0]y;
reg [6:0]y;
always @( d )
case( d )
4’b0000: y=7’b1111110; 4’b0001: y=7’b0110000; 4’b0010: y=7’b1101101; 4’b0011: y=7’b1111001;
4’b0100: y=7’b0110011; 4’b0101: y=7’b1011011; 4’b0110: y=7’b1011111; 4’b0111: y=7’b1110000; 4’b1000: y=7’b1111111; 4’b1001: y=7’b1111011; 4’b1010: y=7’b1110111; 4’b1011: y=7’b0011111; 4’b1100: y=7’b1001110; 4’b1101: y=7’b0111101; 4’b1110: y=7’b1001111; 4’b1111: y=7’b1000111;
endcase endmodule
程序中的d [3:0]为4位二进制码的输入端,7位输出y[6:0] 对应共阴LED 数码管
的7位控制位:a 、b 、c 、d 、e 、f 、g 。同样存盘后进行仿真,并观察仿真波形,以验证七段显示译码器的功能。
三、实验仪器、设备及材料
电脑、EDA 软件、实验箱、下载电缆、连接导线。
四、实验原理
1. 3-8译码器的原理框图及真值表如图2-1及表2-1所示,3个输入a[2:0]可能出现8种组合情况:000,001,010,011,100,101,110,111,这样就可控制8个输出y[7:0]相应的某1位输出为“0”。
图2-1 3-8译码器的原理框图
y[7:0]
输 入 输 出
a[2:0] y[7:0]
000 11111110 001 11111101 010 ******** 011 11110111
输 入 输 出
a[2:0] y[7:0] 100 11101111 101 11011111 110 10111111
111 01111111 表2-1 3-8译码器真值表
2. 七段显示译码器的原理框图及真值表如图2-2及表2-2所示,4个输入d[3:0]可能出现16种组合情况;它的7个输出y[6:0]分别控制共阴LED 数码管的a 、b 、c 、d 、e 、f 、g 七段的亮/灭,从而显出对应的16个字符。
图2-2 七段显示译码器的原理框图
五、主要技术重点、难点
本实验技术重点在于理解3-8译码器、七段显示译码器的功能后,用Verilog HDL 硬件描述语言来设计两种译码器;并掌握always 、case 语句的使用。
其难点是要仿真出3-8译码器、七段显示译码器的波形,然后通过观测仿真波形,来验证相应译码器的功能。
六、实验步骤
(一)用Verilog HDL 语言设计3-8译码器的步骤:
(1)、运行MAX+PLUS II 软件 (2)、启动File\ New 菜单命令(如图2-3); (3)、选择Text Editor file ,点击OK 后,键 入上面“二、实验内容”中的程序;
(4)、在目录中存成decoder3_8.V 文件,并按 “Ctrl+Shift+J ”将该文件设为一个Project 工程, 然后进行编译。
图2-3 新建文本文件的选择对话框
(5)、仿真设计文件
表2-2 8421BCD 七段显示译码器真值表
输 入 输 出
d[3:0] y[6:0]
a,b,c,d,e,f,g
H"0" 1,1,1,1,1,1,0 H"1" 0,1,1,0,0,0,0 H"2" 1,1,0,1,1,0,1 H"3" 1,1,1,1,0,0,1
输 入 输 出
d[3:0] y[6:0]
a,b,c,d,e,f,g
H"4" 0,1,1,0,0,1,1 H"5" 1,0,1,1,0,1,1 H"6" 1,0,1,1,1,1,1 H"7" 1,1,1,0,0,0,0
输 入 输 出
d[3:0] y[6:0]
a,b,c,d,e,f,g
H"8" 1,1,1,1,1,1,1 H"9" 1,1,1,1,0,1,1 H"A" 1,1,1,0,1,1,1 H"B" 0,0,1,1,1,1,1
输 入 输 出
d[3:0] y[6:0]
a,b,c,d,e,f,g
H"C" 1,0,0,1,1,1,0 H"D" 0,1,1,1,1,0,1 H"E" 1,0,0,1,1,1,1 H"F" 1,0,0,0,1,1,1
a
b g
c
d
e
f
启动MAX+plus II \ File \ New菜单,如图2-4
所示进入波形编辑环境,编辑decoder3_8.V的波形文
件,设置输入信号a[2:0]的8种组合情况的值,并将
波形文件以decoder3_8.scf为波形文件名存盘。
执行仿真命令,启动仿真并观察仿真波形,并
对设计电路的进行功能验证。
(二)用Verilog HDL语言设计七段显示译码器
的步骤请参照3-8译码器的步骤进行。
图2-4 新建波形文件的选择对话框
七、实验报告要求
1. 详细论述两种译码器的Verilog HDL语言设计及仿真实验步骤。
2. 给出两种译码器设计仿真后的波形。
八、实验注意事项
1. 使用Verilog HDL语言设计3-8译码器/七段显示译码器时,其文件名(decoder3_8.V/de_7.V)要与模块名[module decoder3_8(a,y); /module de_7(d, y);]相同,且仿真的波形文件名[decoder3_8.scf/de_7.scf]也要相同。
2.所设计的两种译码器,最好放在不同的目录中,且目录名不要出现中文字符。
3.在Waveform Editor仿真时,应先在菜单选项的Options/ Grid Size…中所弹出的对话框中将Grid Size:改为1.0us;并菜单选项的File/ End Time…中所弹出的对话框中将Grid Size改为100.0us,以方便观察、理解仿真得到的波形。
九、思考题
1. 如何理解3-8译码器仿真过程中出现的毛刺现象?
2. 如果七段显示译码器驱动的是共阳LED数码管,又该如何设计与之对应的七段显示译码器?
实验三 带清零、使能的4位加法计数器设计
一、实验目的和任务
1、熟习MAX+PLUS II 软件的使用;
2、掌握用Verilog HDL 硬件描述语言来设计加法计数器;
3、通过电路的仿真和硬件验证,进一步了加法计数器的功能;
二、实验内容
1、要求用Verilog HDL 语言设计一个带清零、使能的4位加法计数器。
用MAX+plusII 中的文本编辑器,编辑输入该4位加法计数器的参考源程序:
module couter_1( clk,clr,en,q); input clk,clr,en; output [3:0]q; reg [3:0]q;
always @(posedge clk) if (!clr) q=0; else if (en) q=q+1; endmodule
程序中的clk 为计数时钟输入,clr 为清零输入控制端,en 为计数使能输入控制
端,q[3:0]为4位加法计数器的输出。
2、编辑存盘后,要求进行相应的仿真,并观察仿真波形,以验证该计数器的功能。
三、实验仪器、设备及材料
电脑、EDA 软件、实验箱、下载电缆、连接导线。
四、实验原理
带清零、使能的4位加法计数器的真值表 如表3-1所示,当清零端clr 为0时,将计数器 的输出q[3:0] 清零;当clr 为1时,且计数使能 en 为1时,才允许计数器进行加计数;而clr 为
1时,en 为0时,无论是否有时钟clk 来到,该
计数器始终处于保持状态(即禁止计数状态)。
五、主要技术重点、难点
本实验技术重点在于理解带清零、使能的4位加法计数器的功能后,用Verilog HDL
硬件描述语言来设计该加法计数器;并掌握always 、if 语句的使用。
表3-1 4位加法计数器功能表
其难点是要仿真出4位加法计数器的清零、计数使能、保持状态(即禁止计数状态)等情况的波形,然后通过观测仿真波形,来验证该加法计数器的功能。
六、实验步骤
用Verilog HDL语言设计带清零、使能的4位
加法计数器的步骤:
(1)、运行MAX+PLUS II软件
(2)、启动File\ New菜单命令(如图3-1);
(3)、选择Text Editor file,点击OK后,键
入上面“二、实验内容”中的程序;
(4)、在目录中存成couter_1.V 文件,并按
“Ctrl+Shift+J”将该文件设为一个Project工程,
然后进行编译。图3-1 新建文本文件的选择对话框
(5)、仿真设计文件
启动MAX+plus II \ File\ New菜单,如图3-2
所示进入波形编辑环境,编辑couter_1.V的波形文件,
设置清零clr、计数使能en的4种组合情况的值,以及
输入clk的时钟波形,并将波形文件以couter_1.scf
为波形文件名存盘。
执行仿真命令,启动仿真并观察仿真波形,并
对设计电路的进行功能验证。
图3-2 新建波形文件的选择对话框
七、实验报告要求
1. 详细论述带清零、使能的4位加法计数器的Verilog HDL语言设计及仿真步骤。
2. 给出4位加法计数器的清零、计数使能、保持状态(即禁止计数状态)等情况的仿真波形。
八、实验注意事项
1. 使用Verilog HDL语言设计4位加法计数器时,其文件名(couter_1.V)要与模块名[module couter_1( clk,clr,en,q);]相同,且仿真的波形文件名[couter_1.scf]也要相同。
2.在Waveform Editor仿真时,应先在菜单选项的Options/ Grid Size…中所弹出的对话框中将Grid Size:改为1.0us;并菜单选项的File/ End Time…中所弹出的对话框中将Grid Size改为100.0us,以方便观察、理解仿真得到的波形。
九、思考题
1. 如要将设计的加法计数器改为减法计数器,该如何修改设计?
2. 如要在所设计的4位加法计数器基础上增加一个进位位输出,又该如何修改设计?
实验四 8位移位寄存器的设计
一、实验目的和任务
4、熟习MAX+PLUS II软件的使用;
5、掌握用硬件描述语言(Verilog HDL)来设计移位寄存器电路;
6、通过电路的仿真和硬件验证,进一步了解8位移位寄存器功能。
二、实验内容
1、要求用Verilog HDL语言设计一个8位移位寄存器。
用MAX+plusII中的文本编辑器,编辑输入该8位移位寄存器的参考源程序:
module shiter8(clk,d,q);
input clk, d;
output [7:0]q;
reg [7:0]q;
integer k;
always @(posedge clk)
for (k=0;k<7;k=k+1)
begin
q[0]<=d;
q[k+1]<=q[k];
end
endmodule
程序中的clk为移位时钟输入,d为移位寄存器的数据输入,q[7:0]为8位移位寄存器的输出。
2. 编辑存盘后,要求进行相应的仿真,并观察仿真波形,以验证该移位寄存器的功能。
三、实验仪器、设备及材料
电脑、EDA软件、实验箱、下载电缆、连接导线。
四、实验原理
移位寄存器主要是将串行输入的数据依次移入到寄存中,可用于串行预置初值、串并转换等场合。它主要在时钟作用下依次左移(或右移),通过非阻塞性过程赋值及for循环语句来实现。
五、主要技术重点、难点
在于理解移位寄存器的工作原理后,用Verilog HDL语言的for循环语句、非阻塞性
过程赋值来设计该移位寄存器。
其难点是要仿真出移位寄存器的工作波形,然后通过观测仿真波形,来验证该移位寄存器的功能,并理解阻塞性过程赋值与非阻塞性过程赋值的区别。
六、实验步骤
用Verilog HDL语言设计移位寄存器的步骤:
(1)、运行MAX+PLUS II软件
(2)、启动File\ New菜单命令(如图4-1);
(3)、选择Text Editor file,点击OK后,键
入上面“二、实验内容”中的程序;
(4)、在目录中存成shiter8.V 文件,并按
“Ctrl+Shift+J”将该文件设为一个Project工程,
然后进行编译。图4-1 新建文本文件的选择对话框
(5)、仿真设计文件
启动MAX+plus II \ File \ New菜单,如图4-2
所示进入波形编辑环境,编辑shiter8.V的波形文件,
设置移位输入时钟clk的波形及输入数据d值,并将
波形文件以shiter8.scf为波形文件名存盘。
执行仿真命令,启动仿真并观察仿真波形,并
对设计电路的进行功能验证。
图4-2 新建波形文件的选择对话框
七、实验报告要求
1. 详细论述移位寄存器的Verilog HDL语言设计及仿真步骤。
2. 给出移位寄存器的仿真波形。
八、实验注意事项
1. 使用Verilog HDL语言移位寄存器时,其文件名(shiter8.V)要与模块名[module shiter8(clk,d,q);]相同,且仿真的波形文件名[shiter8.scf]也要相同。
2.在Waveform Editor仿真时,应先在菜单选项的Options/ Grid Size…中所弹出的对话框中将Grid Size:改为1.0us;并菜单选项的File/ End Time…中所弹出的对话框中将Grid Size改为100.0us,以方便观察、理解仿真得到的波形。
九、思考题
1. 试设计一下8位右移移位寄存器,并比较8位左移和右移移位寄存器不同点。
实验五深度为4的8位RAM设计
一、实验目的和任务
1.熟习MAX+PLUS II软件的使用;
2.掌握用硬件描述语言(Verilog HDL)来设计RAM电路;
3.通过电路的仿真和硬件验证,进一步了解RAM的功能及特点;
二、实验内容
1、要求用Verilog HDL语言设计一个深度为4的8位RAM电路。
用MAX+plusII中的文本编辑器,编辑输入该RAM电路的参考源程序:
module RAM(clk,din,ad,read,we,q);
input clk,we,read;
input [1:0]ad;
input [7:0]din;
output [7:0]q;
reg [7:0]q;
reg [7:0]a,b,c,d;
always @(posedge clk)
if (we)
case( ad)
2’b00: a=din;
2’b01: b=din;
2’b10: c=din;
2’b11: d=din;
endcase
always @(posedge clk)
if (read)
case( ad)
2’b00: q=a;
2’b01: q=b;
2’b10: q=c;
2’b11: q=d;
endcase
endmodule
程序中的输入clk为RAM工作时钟,ad[1:0]为输入地址信号,read、we 分别为读、写控制线,din[7:0]、q[7:0]分别RAM的数据输入、输出。
2. 编辑存盘后,要求进行相应的仿真,并观察仿真波形,以验证该RAM的功能。
三、实验仪器、设备及材料
电脑、EDA软件、实验箱、下载电缆、连接导线。
四、实验原理
4 X 8位RAM 的原理框图如图5-1所示, 两位地址ad[2:0]组成4位深度,read 、we 分别 控制RAM 的读、写,用if 语句描述来区分是否 读或写,而case 语句则用描述RAM 对某一个 地址数据的操作。
图5-1 RAM 的原理框图
五、主要技术重点、难点
本实验技术重点在于理解4 X 8位RAM 的功能后,用Verilog HDL 硬件描述语言来设计该电路;并掌握if 及case 语句的使用方法及技巧。
其难点是要仿真出4 X 8位RAM 的工作波形,然后通过观测仿真波形,来验证RAM 设计是否能完成相应的功能。
六、实验步骤
用Verilog HDL 语言设计RAM 的步骤: (1)、运行MAX+PLUS II 软件 (2)、启动File\ New 菜单命令(如图5-2); (3)、选择Text Editor file ,点击OK 后,键 入上面“二、实验内容”中的程序;
(4)、在目录中存成RAM .V 文件,并按
“Ctrl+Shift+J ”将该文件设为一个Project 工程,
然后进行编译。 图5-2 新建文本文件的选择对话框
(5)、仿真设计文件
启动MAX+plus II \ File \ New 菜单,如图5-3 所示进入波形编辑环境,编辑RAM .V 的波形文件,
设置工作时钟clk 的波形, 并选择“C
”图标 加入数据及RAM 地址,最后将波形文件以RAM .scf 为波形文件名存盘。
执行仿真命令,启动仿真并观察仿真波形,并 对设计电路的进行功能验证。
图5-3 新建波形文件的选择对话框 七、实验报告要求
1. 详细描述4 X 8位RAM 的Verilog HDL 语言设计及仿真步骤。
2. 给出移位寄存器的仿真波形。
八、实验注意事项
1. 使用Verilog HDL 语言移位寄存器时,其文件名(RAM .V )要与模块名[module
we D[7:0]
clk Ad[1:0]
read
RAM (clk,d,q);]相同,且仿真的波形文件名[RAM.scf]也要相同。
2.在Waveform Editor仿真时,应先在菜单选项的Options/ Grid Size…中所弹出的对话框中将Grid Size:改为1.0us;并菜单选项的File/ End Time…中所弹出的对话框中将Grid Size改为100.0us,以方便观察、理解仿真得到的波形。
九、思考题
1. 时序电路的特点?
2. 时序电路与组合电路的区别是什么?
实验六基于LPM函数的加法电路设计
一、实验目的和任务
1、熟习MAX+PLUS II软件的使用;
2、熟习使用LPM函数设计复杂的时序电路方法;
3、掌握锁定管脚、下载方法;
二、实验内容
1、要求用LPM函数设计一个带流水线的四位加法器,如果和大于等于15将使rlt为高,否则为低。
用MAX+plusII中的文本编辑器,编辑输入该加法电路的参考源程序:
module test_add(a, b, c, cot,rlt);
input [3:0]a,b;
output [3:0]c;
output cot;
output rlt;
reg rlt;
wire [4:0]ccot;
assign ccot[4:0]={cot,{c[3:0]}};
LPM_ADD_SUB adder4(.dataa(a) ,.datab(b),.result(c), .cout(cot));
defparam adder4.LPM_WIDTH=4;
defparam adder4.MAXIMIZE_SPEED=10;
defparam adder4.LPM_REPRESENTATION="UNSIGNED";
defparam adder4.LPM_PIPELINE=0;
always @(ccot)
if (ccot>=4'b1111)
rlt=1;
else
rlt=0;
endmodule
程序中的a[3:0]、b [3:0]分别为被加数、加数;c [3:0]为和;cot为进位;rlt为溢出位,如果和大于等于15将使rlt为高,否则为低。
2. 编辑存盘后,要求进行相应的仿真,并观察仿真波形,以验证该RAM的功能。
三、实验仪器、设备及材料
电脑、EDA软件、实验箱、下载电缆、连接导线。
四、实验原理
在电路中调用LPM 函数(又叫强函数),
即参数化的电路功能模块。MAX+PLUS II 软
件支持的LPM 函数种类较多,这里主要使用 有加减法功能的LPM_ADD_SUB 函数(其原 理框图如6-1所示。必须要设置好该LPM 函 数诸如加、减法控制器、其中一个加数是否为
常数、数据宽度等参数,让其实现相应的功能。
图6-1 具有加减法功能原理框 五、主要技术重点、难点
本实验技术重点在于掌握用Verilog HDL 语言来调用LPM 函数,以设计出一个带流水线的四位加法器;
其难点是要学会设置LPM 函数的进出端口参数;且仿真出四位加法器的工作波形。
六、实验步骤
用Verilog HDL 语言设计RAM 的步骤: (1)、运行MAX+PLUS II 软件 (2)、启动File\ New 菜单命令(如图6-2); (3)、选择Text Editor file ,点击OK 后,键 入上面“二、实验内容”中的程序;
(4)、在目录中存成test_add .V 文件,并按 “Ctrl+Shift+J ”将该文件设为一个Project 工程,
然后进行编译。 图6-2 新建文本文件的选择对话框
(5)、仿真设计文件
启动MAX+plus II \ File\ New 菜 单,进入波形编辑环境, 编辑test_add .V
的波形文件,选择“C
”图标分 别设置被加数、加数a[3:0]、b [3:0],最 后将波形文件以test_add .scf 为波形文 件名存盘。执行仿真命令,启动仿真并 观察仿真波形,并对设计电路的进行功 能验证。
(6)、锁定管脚、编程下载。 1)锁定管脚方法:
启动MAX+plus II \ Floorplan Editor 菜单命令,出现如图6-3所示的画面: Floorplan Editor 显示该设计项目的管脚
分配。这是由软件自动分配的。用户可
随意改变管脚分配。 图6-3 分配管脚的对话框
进位被加数
被减数
加数减数
和进位
管脚编辑过程如下:
用鼠标按住某输入/输出口名称,并拖到下面芯片的某一管脚上,松开鼠标左键,便完成一个管脚的分配。
注意:芯片上有一些特定功能管脚,进行管脚编辑时一定要注意。另外,在芯片选择中,如果选Auto,则不允许对管脚进行再分配。
2)、器件下载:
1、启动MAX+plus II \ Programmer菜单。
2、选择JTAG \ Multi-Device JTAG Chain菜单项。
3、启动JTAG \ Multi-Device JTAG Chain Setup…菜单项。
4、点击Select Programming Fi le…按钮,选择要下载的.sof文件。然后按Add加到
文件列表中。
5、按Configure按钮完成下载。
注意:如果不能正确下载,可点击Detect JTAG Chain Info按钮进行测试,查找原因,最后按OK退出。
七、实验报告要求
1. 详细描述用LPM函数来设计带流水线的四位加法器及其仿真步骤。
2. 给出四位加法器的仿真波形。
八、实验注意事项
1. 使用Verilog HDL语言设计移位寄存器时,其文件名(test_add.V)要与模块名[module test_add(a, b, c, cot,rlt);]相同,且仿真的波形文件名[test_add.scf]也要相同。
2.在Waveform Editor仿真时,应先在菜单选项的Options/ Grid Size…中所弹出的对话框中将Grid Size:改为1.0us;并菜单选项的File/ End Time…中所弹出的对话框中将Grid Size改为100.0us,以方便观察、理解仿真得到的波形。
九、思考题
1、在仿真时rlt信号会出现毛刺,应如何消除该信号中的毛刺?
2、如要将该电路改为一个减法器,又该如何设计?
实验七综合实验 - Moore型有限状态机的时序电路设计
一、实验目的和任务
1、熟习MAX+PLUS II软件的使用;
2、掌握用硬件描述语言(Verilog HDL)来设计有限状态机电路;
3、通过电路的仿真和硬件验证,进一步了解的有限状态机功能;
二、实验内容
1、要求用Verilog HDL语言设计如下Moore(摩尔)型有限状态机:
a==0
图7-1 摩尔型有限状态机
说明:图7-1中的a为输入信号,z为输出信号。
2、要求对所作的设计进行相应的仿真,并观察仿真波形,以验证该其正确性。
三、实验仪器、设备及材料
电脑、EDA软件、实验箱、下载电缆、连接导线。
四、实验原理
Moore型有限状态机的工作方式是根据控制信号,在时钟clk的作用下,按照预先设定的状态进行顺序运行的,状态机是纯硬件数字系统中的顺序控制电路,是实现高频率、高可靠逻辑控制的重要途径。同时状态机容易构成性能良好的同步时序逻辑电路。
五、主要技术重点、难点
本实验技术重点在于学习并掌握用Verilog HDL语言,来描述Moore型有限状态机的状态转移;