7人表决器的实现之路
感覺已經(jīng)好久沒有更新了(畢竟好久也沒玩FPGA了,小聲逼逼😂),手也有點(diǎn)生疏,各個軟件的操作也有些忘記了。看來每天打開一下Quartus II, ModelSim, SignalTap II, UltraEdit 很有必要!(就算不用,也要打開一下熟悉界面嘛)
這次不是將具體原理的實(shí)現(xiàn),而是記錄一下遇到的問題(因?yàn)橛行〇|西我也不是太清楚!)
首先我先給出仿真Test Bench文件(之后的遇到的問題基本與此無關(guān)),從里面的注釋可以發(fā)現(xiàn),還是遇到很多困難的,畢竟這個文件是自己一行一行敲的,肯定存在了一些問題!
下圖是整個實(shí)驗(yàn)的思路導(dǎo)圖!
一、唯一的一次成功情形
for語句中使用非阻塞賦值,在always塊的結(jié)尾將sum清零!
可以發(fā)現(xiàn):在112ns~116ns中,4ns經(jīng)歷了一次vote信號的變化(詳請查看仿真文件),并且針對我們vote信號中"1"的個數(shù)給出相應(yīng)的pass信號。
二、
這里,我們先將最后的sum清零注釋掉,此時與書中(《自己動手寫CPU》)的原始代碼基本一致。問題是:我們的 i 恒為7,sum一直處于 未知態(tài)。
三、
基于 二 ,我們猜想可能是for循環(huán)中的初始賦值語句只執(zhí)行一次。于是就將 i= 0; 置于for語句前面。
但依然沒有什么用:我們的 i 恒為7,sum一直處于 未知態(tài)
四、
基于 二,我們將always塊中的非阻塞賦值 全部替換成 阻塞賦值。
但依然沒有什么用:我們的 i 恒為7,sum一直處于 未知態(tài)
五、
基于四,在always塊中對sum 非阻塞清零。
但依然沒有什么用:我們的 i 恒為7,sum一直處于 未知態(tài)
六、
基于 五,再將 對sum的非阻塞清零 改成 阻塞清零。
可以看出稍微有一點(diǎn)改觀,sum不再是 未知態(tài),而變成了 恒為0
以上就是我對7人表決器的實(shí)驗(yàn)記錄,其中的原理和機(jī)制并不是很清楚。如果以后理解了,再來在評論處解答;當(dāng)然也希望有大佬在評論提前告知原理😄
總結(jié)
以上是生活随笔為你收集整理的7人表决器的实现之路的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 换IP软件用户如何选择?
- 下一篇: sql正则表达式