2011年11月13日 星期日

2011/11/07 硬體描述語言 多bits加法器設計

這個禮拜的課題僅針對加法器的設計去處理,
為了可以像多工器那樣用模組的方式構成高bit的加法器,
首先就得先設計出可以做為基底的1-bit加法器,
其電路圖如下:











我自己本身也用真值表的關係,
加上卡諾圖的化簡,
一樣會得到相同的結果。

因此電路圖的程式碼如下:













如此一來便完成了基底的模組,之後只要向多bits多工器般累加上去即可。

2-bits加法器的關係圖如下:












其中需要注意的是低腳位的進位必須進入高腳位的進位輸入端才能使高腳位動作,
因此在程式碼的撰寫上應注意先寫低腳位的程式碼。
其程式碼如下:










如此一來便可將兩個1-bit加法器連接成2-bits加法器。
剩餘程式碼則不打出來了。

接著就可以進行測試,
當A和B為1時,cin為0,
其結果應為2,
結果圖為:
圖中結果驗證推測正確,
且cout為0(2位元加法器只要結果不超過3就沒有進位)。
由此可知64bits的加法器並不難製作,
而結果的部分以後再補上。


而這禮拜要注意的是位變數設值的部份,
原先因為設值有問題的關係一直沒有使結果正確跑出,
直到老師說最好不要將設值以C語言的方式來看待,
應該要用verilog所具有的設值方式來設值,
按照老師的指導之後,
果然順利跑出結果。

另外在課本測試程式碼的部分,
C語言和MATLAB的「不等於」皆是"!=",
而verilog則是"!==",
不過不小心打錯時,
只要照著編譯結果除錯,
都可以快速的修正問題。