原创 [博客大赛]Verilog-FPGA硬件电路设计四——最大公约数功能仿真和时序仿真区别

2013-10-18 09:56 4065 28 28 分类: FPGA/CPLD 文集: Verilog-FPGA硬件电路设计

综合软件:QuartusII 12.1

仿真软件:Modelsim-Altera

 

1、输出done无寄存器,直接从组合逻辑电路输出

1.1功能仿真

 

说明: C:\Users\Administrator\AppData\Local\youdao\ynote\images\BA54E35D2FE2490EBAEFC28B853BE49F\clipboard.png

1.2时序仿真:存在竞争冒险的输出

说明: C:\Users\Administrator\AppData\Local\youdao\ynote\images\37048EB160784512AB6F7E9BAA40E72B\clipboard.png

可以明显的看出存在着竞争冒险。在testbench中,我们在检测到done的下降沿时更新输入值a,b。然后有时候,done出现了冒险,更新了值,但此时上一次的输入还没有计算出最大公约数,那么此次更新的值,就不能被运算单元所接受(状态机此时没有回到IDEL状态,无法接受新值)。从而没法计算出新输出值的最大公约数。

 

 

 

2、延时一个CLK输出

2.1 功能仿真(检验不出门延时和线延时):

说明: C:\Users\Administrator\AppData\Local\youdao\ynote\images\3EF882D62E854E7FA5E2AF8E04F8DA24\clipboard.png

和上面的功能仿真相比,可以很明显的看出,此时需要多一个CLK的时钟,才能输出有些值

 

2.2 时序仿真: 利用寄存器打一拍,可以消除竞争

 

说明: C:\Users\Administrator\AppData\Local\youdao\ynote\images\7A29C308F82649669B6F8FCB9622BFD5\clipboard.png

出现一个问题:复位完成后,  datapath中的 A寄存器(对于图中的A_output)就等于0了,CLK上升沿到来时,直接判断有输出,令done=1, 输出值Y=B=0

所以必须在复位时令A=0

做出修改后的

功能仿真图:

说明: C:\Users\Administrator\AppData\Local\youdao\ynote\images\7D66F266371545CE870EF875BCAAF043\clipboard.png

 

时序仿真图:

说明: C:\Users\Administrator\AppData\Local\youdao\ynote\images\B12F5916FD4E46D58AE9345ECE4F59ED\clipboard.png

 

可以看出, 修改后,功能仿真没有变动。但时序仿真中,一开头不会再出现误判断,和误输出。

 

 

文章评论0条评论)

登录后参与讨论
我要评论
0
28
关闭 站长推荐上一条 /2 下一条