一、实验目的
1、掌握行为级建模方式的Verilog HDL语言的编程方法;
2、掌握行为级建模中过程语句、块语句、条件语句、赋值等语句的应用;
3、应用行为级建模方式设计十进制计数器。
二、实验内容
1、掌握行为级建模方式的Verilog HDL语言的编程方法;
2、利用数字电路中74LS160功能,基于Verilog HDL利用行为级建模方式实现一个带有复位、置数功能的十进制计数器。
三、实验原理
十进制计数器74LS160,当异步清零端口为低电平时,计数器输出为零;当同步预置数端口为低电平时,计数器输出端Q=D;当==1且EP=ET=1时,每次时钟上升沿到来时开始计数。
74LS160计数器引脚图

74LS160计数器功能表

74LS160状态转换图

四、实验设备与器件
安装Quartus II软件的PC机
五、实验步骤
1、设计编写功能模块
File→New →Verilog HDL file→输入编写好的程序→另存为→选择存储路径(注意路径不要含有中文)

图1 File→New →Verilog HDL file建立新程序编写文件

图2 输入编写好的程序


图3 另存为→选择存储路径(注意路径不要含有中文,文件名一定要与模块名一致)
参考程序:
module counter160(clock,reset,load,en,D,Q,C);
input clock,reset,load,en;
input [3:0] D;
output C;
output [3:0] Q;
reg [3:0] Q;
always @(posedge clock ,posedge reset)
begin
if(reset==1)
Q<=4'd0;
else if(load==1)
Q<=D;
else if(en)
Q<=Q;
else if(Q==9)
Q<=0;
else
Q<=Q+1;
end
assign C=(Q==9);
endmodule
2、建工程文件
保存后弹出对话框”Do you want to create a new project with this file” →点击“是”→Next→设置路径、项目及顶层模块名称→Next→在弹出的对话框中单击File栏后的按钮,将编写好的Verilog程序加入此工程→Next→选择目标芯片(例:CycloneⅢ系列→Ep3C55F4884C8)→Next→EDA工具设置窗口→Next→finish


图4 建立本设计项目工程文件→next项目工程信息→next


图5 设置路径、项目及顶层模块名称→Next 图6 单击File栏后的…按钮,添加Verilog程序→Next


图7 点击add按键将add.v文件添加入下面对话框中→Next



图8 选择目标芯片→Next→EDA工具设置窗口→Next→finish
3、编译验证(验证程序编写是否有错误)


图9 点击编译按键进行编译
4、功能仿真File→New →vector waveform file→保存

图10 点击File→New →vector waveform file→保存,建立波形仿真文件

图11 双击Name下方空白处弹出Insert Node or Bus对话框,点击Node Finder…


图12 点击List加载模块输入输出引脚→OK

图13 点击OK→添加输入信号信息
5、添加输入信号信息


图14 点击左侧工具栏添加输入信号信息


图15 点击Assignments→Settings…→将Timing改成Functional


图15 点击Processing→Generate Functional Simulation Netlist→网表文件生成成功

图16 点击波形仿真按钮进行仿真
6、产生功能波形(参考波形如下)
①当en=0、load=0、reset=1时,输出端从0开始重新计数。

②当en=0、 reset =0、 load =1时,输出端从输入端D的值开始重新计数。

③当reset =0、 load =0 、en=1时,输出端保持状态不变。

④当reset =0、 load =0 、en=0时,输出从0计数到9后开始新的周期循环计数。
