明德扬点拨FPGA高手进阶 第四章 modelsim技巧 4.7 modelsim一级练习2.pdf
文本预览下载声明
4.7 modelsim 一级练习2
4.7.1 练习要求
请下载工程,该工程包括测试代码 test_modelsim5.v 和设计代码 modelsim5.v。
下载地址:
/cH2AWxjqZr7wK 访问密码 35c1
modelsim5.v 实现如下功能:
1. 实现秒表计时功能。
2. 复位时,数码管显示 0.
3. 数码管依次从 0 变到 9 显示。
4. 复位时 conlig 等于 0 ,复位后,conlig 最低比特为 0 ,其他为1.
信号名 I/O 位宽 说明
clk I 1 系统工作时钟 50M
rst_n I 1 系统复位信号,低电平有效
dataout O 数码管显示信号,共 8 位。由低到高,分
别表示数码管的 dp,a,b,c,d,e,f,g,点。当该
8
比特为 0 时,表示点亮相应位置;为 1 时
熄灭。
conlig O 8 数码管的位选输出。对应的比特为 1 时不
被选中,为 0 时被选中。
但该代码有错误,请将代码和已经编写好的测试文件,加到 modelsim 工程中
仿真,找出错误。
4.7.2 验收标准
观察信号波形,找到错误并改正,使其满足所需要的功能。
4.7.3 练习答案
波形要模拟真实的十几秒时间,可以发现 modelsim 要运行非常久,才能产生这十
几秒的波形。实际上,我们的仿真验证时间通常都是微秒和毫秒级的。
本代码的错误在于,dataout 在显示 9 后,有一个时钟周期输出的值为 0。经常追
踪发现是由于内部信号 miao=10 引起的,再分析产生 miao 的always 代码,可以这个
计数器结束条件不正确。按照我们规范,应该修改如下:
always @(posedge clk or negedge rst_n)begin
if(!rst_n)
miao=0;
else begin
if(count==26begin
if(miao==9)
miao= 0;
else
miao=miao+1;
end
else begin
miao=miao;
end
end
end
更加详细的查找定位过程,请查看明德扬的配套视频。
以上文章出自明德扬点拨FPGA 高手进阶,版权归明德扬所有,如需转载,请注明明德扬,
谢谢!
显示全部