複製鏈接
請複製以下鏈接發送給好友

格雷碼計數器

鎖定
格雷碼計數器是為了在異步時鐘域之間傳遞計數結果而用到的計數器
中文名
格雷碼計數器
外文名
Gray counter

目錄

格雷碼計數器簡介

格雷碼計數器(Gray counter)是為了在異步時鐘域之間傳遞計數結果而用到的計數器,因為格雷碼計數器計數時相鄰的數之間只有一個bit發生了變化,例如:000-001-011-010-110-111-101-100。

格雷碼計數器用途

一般的,普通二進制碼與格雷碼可以按以下方法互相轉換:
二進制碼-運動項目不一致格雷碼(編碼):從最右邊一位起,依次將每一位與左邊一位異或(XOR)(http://bk.7tmusic.com/lemma-php/dispose/view.php/379209.htm),作為對應格雷碼該位的值,最左邊一位不變(相當於左邊是0);
格雷碼-〉二進制碼解碼):從左邊第二位起,將每位與左邊一位解碼後的值異或,作為該位解碼後的值(最左邊一位依然不變).
數學(計算機)描述:
原碼:p[0~n];格雷碼:c[0~n](n∈N);編碼:c=G(p);解碼:p=F(c);書寫時從左向右標號依次減小.
編碼:c=p XOR p[i+1](i∈N,0≤i≤n-1),c[n]=p[n];
解碼:p[n]=c[n],p=c XOR p[i+1](i∈N,0≤i≤n-1).
Gray Code是由貝爾實驗室的Frank Gray在20世紀40年代提出的(是1880年由法國工程師Jean-Maurice-EmlleBaudot發明的),用來在使用PCM(Pusle Code Modulation)方法傳送訊號時避免出錯,並於1953年3月17日取得美國專利。由定義可知,Gray Code的編碼方式不是僅有的,這裏討論的是最常用的一種。 (引用自百度https://baike.baidu.com/view/358724.htm)
所以,在設計格雷碼計數器的時候可以使用狀態機,給每個碼設定一個狀態然後用時鐘來控制它在狀態間轉換,這樣就完成了我們需要的功能,但是若是狀態比較多,如n=6,這時就會有64個狀態,顯然再用狀態機非常不方便,當然理論上是可以的。

格雷碼計數器限制

用karnaugh化簡也是限制在位數比較少的情況。
所以我們需要的是一種通用的計數方式,最笨辦法就是設計一個二進制計數器binary counter,通過它來計數,然後利用binary -gray的編碼就可以得到對應的格雷碼計數器,在如今fpga資源那麼充裕的情況下,我們學習這樣完全可以了,相信二進制計數器大家都會設計,那麼接下來的編碼器也不是問題,這樣就解決了。