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