当前位置:首页 > 数电课程设计基于FPGA的数字式秒表报告
begin CR=0; P=0; end else begin CR=1; P=~P; end end
Endmodule
(2)模块化电路
(3)波形仿真
由波形可以看出,初始时刻S1,S2皆为高电平,CR(清零)和P(使能)皆为低电平,计数器不工作;按S1,CR和P变为高,计数器开始计数;再按S1,P变为低,计数器使能端为低,暂停计数;按S2,CR和P都变为低,计数器清零且暂停计数。
五、 仿真与测试结果
(1)按S1使计数器开始计数,计数器正常工作时,数码管的输出即为数据选择器的输出经过显示译码器得到的结果,显示范围为031100.00—031199.99。
(2)按S1一下,计数器暂停计数,因此数据选择器输出,显示译码器输出,数码管显示
信号皆保持不变。
(3)按S2一下,计数器清零且暂停计数,数码管显示(031100.00)。
六、 实验总结与心得体会
开始进行设计时,对整个设计的原理和用Verilog语言编写程序不是非常熟悉,因此采用直接调用集成模块画原理图的方法进行设计,结果发现像74160和74151这种模块都具有许多不必要的控制端口,因此连线不仅繁多而且还极容易出错。特别是8选1数据选择器74151,由于显示译码器需要4位信号输入,所需要的4个数据选择器也就需要更多的连线。随着设计的进行,发现采用自顶而下的方式,用Verilog语言编写每一个模块,在原理图中直接调用生成的图形文件,不仅没有了很多的控制端口和由此带来的连线,而且像数据选择器这种输入与输出之间逻辑很清晰的模块不仅可以直接编写成为一个大模块,而且这样程序编写起来也很简单。尽管十进制计数器也可以编写成一个大模块,但由于存在进位问题,程序编写起来不算容易,逻辑性也不是很强,因此还是选择采用四个单独的计数器。
第一次在试验箱上测试存在进位问题,即由低位的8到9时直接跳到高位的9然后再到高位的0。分析认为是由于十进制计数器存在着进位问题,其程序片段如下:
always @(posedge Clk or negedge Rst_n) ——————————
if(Led>=4'd9) OUT=1'd1; else OUT=1'd0; 可以看出,对于OUT进位输出,0到8时是低电平,9为高电平,即8到9时有上升沿,9回到0时是下降沿,而计数器的Clk是上升沿触发。除了修改程序的方法,还可以采用直接在OUT后接非门将上升沿与下降沿互换。
共分享92篇相关文档