onehot code detect

2、布爾代數知識的練習會對你的電路設計能力有着潛移默化的影響,舉個非常簡單的例子,獨熱碼檢測電路,目的是檢測一個例如8位數碼是否爲獨熱碼(只有一個比特位爲1,其他全部爲0),最直接想到的就是把這8比特數碼加起來,然後看其結果是否爲1,對應的代碼如下所示:

 

綜合器大約會根據上述代碼綜合出什麼電路呢,大概也就是用target_library中現成的全加器模塊或者所謂的“random logic”來推斷出一些加法器,而且,需要很多級加法運算才能計算出結果,這種結構的延遲和麪積都是很大的,爲什麼能“預知出”它的面積和延遲很大,這就是電路和集成電路基礎知識的作用了,

那麼能否根據布爾邏輯耍些花招來簡化電路結構呢,

我們發現如果一個8比特數碼減去1,那麼如果8比特爲獨熱碼,它減一之後在與本身按位與操作,結果肯定是全零,因爲一旦進行減一操作,唯一的那個1必然會被低位借一而變爲0,那麼按位與的結果就是0,

另一種情況爲8比特數碼爲全0的情況,這時候它減一後的結果再同減一前的數碼按位與,結果也爲全零,

那麼我們只需要在開始的時候排除全零的存在即可(縮減或),而如果8比特有兩個或者以上的1,那麼如果減一操作,最低位的那個1會被借掉,高位的1都會被“隔離”,這樣減一前後的兩個結果按位與的結果就不是全零,

這種實現方法的最大延遲和麪積消耗爲減一操作(也是憑藉電路、集成電路的基礎知識來進行預知判斷的),這個例子我沒有花時間去畫畫示意圖,再加上我的表達能力不是很好,也許會不太明白我在說些什麼,最好自己動手按照一些提示,比如上面說到的減一,然後把減一前後的兩個結果按位與操作後自己看看規律。這個例子說明了對於布爾代數的熟練是如何潛移默化影響電路設計能力提升的。(或許這個例子兩種實現方法差距並不是很大,例子並不是很典型,只要能說明布爾代數在其中的作用即可)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章