2011年12月31日 星期六

2011/12/26 Verilog運算元和連續指定

Verilog除了有很多從C語言照搬過來的運算子外,
也有許多為了方便設計IC而產生的運算子,
(筆者不能百分之百確定運算子的新舊,因筆者對C語言位元處理的部分並沒有多加深入)
數值運算子的部分,
舉凡加減乘除等全部都和C語言一樣,
這裡就不再多加描述。

位元運算子的部分,
有"<<"的左移運算子,
或是相反的右移運算子等等的,
種類並不多。

邏輯運算子的部分,
常見的"&&"和"||"並無任何改變,
但令人感到特別的是"?"加上":"的"if、else"簡化版也出現在Verilog之中。
還有對應not的"~"邏輯運算元,
只要變數前面加了"~"就是not的意思。

Verilog中有x的unknow信號和z的high xxx信號,
前者為短路的象徵,
後者則是開路的象徵,
對應這兩種情況,
Verilog有===、!==這兩種新的邏輯運算子來判斷是否發生這樣的情況。
若只用==和!=,碰到上述情況就會給出x的判斷結果,
進而造成錯誤。

連續指定的部分的關鍵是assign,
他也是無窮迴圈的一種,
透過這個無窮迴圈,
再加上運算子和變數設值的計算,
也可以變成一個類似的邏輯閘,
但這個部分偏理念上的設計,
若直接透過電腦佈局,
只會得到失敗的情況,
若要成功,
還是得用老實的方式把接腳的線一步步拉出來,
最近有出一顆新型的CPU,
它的效能不理想的原因據傳是因為太過仰類電腦佈局的結果,
以前數位邏輯也有將邏輯閘以最複雜的方式呈現,
那都是為了可以透過電腦來工作,
但現今人工智慧還不夠成熟,
若要有個優良的IC,
還是得靠人的智慧一步一腳印的慢慢實踐。

沒有留言:

張貼留言