二進位制格雷碼與自然二進位製碼的互換
中國科學院光電技術研究所 遊志宇
在精確定位控制系統中,為了提高控制精度,準確測量控制物件的位置是十分重要的。目前,檢測位置的辦法有兩種:其一是使用位置感測器,測量到的位移量由變送器經a/d轉換成數字量送至系統進行進一步處理。此方法精度高,但在多路、長距離位置監控系統中,由於其成本昂貴,安裝困難,因此並不實用;其二是採用光電軸角編碼器進行精確位置控制。光電軸角編碼器根據其刻度方法及訊號輸出形式,可分為增量式、絕對式以及混合式三種。而絕對式編碼器是直接輸出數字量的感測器,它是利用自然二進位制或迴圈二進位制(格雷碼)方式進行光電轉換的,編碼的設計一般是採用自然二進位製碼、迴圈二進位製碼、二進位制補碼等。特點是不要計數器,在轉軸的任意位置都可讀出乙個固定的與位置相對應的數字碼;抗干擾能力強,沒用累積誤差;電源切斷後位置資訊不會丟失,但解析度是由二進位制的位數決定的,根據不同的精度要求,可以選擇不同的解析度即位數。目前有10位、11位、12位、13位、14位或更高位等多種。
其中採用迴圈二進位制編碼的絕對式編碼器,其輸出訊號是一種數字排序,不是權重碼,每一位沒有確定的大小,不能直接進行比較大小和算術運算,也不能直接轉換成其他訊號,要經過一次碼變換,變成自然二進位製碼,在由上位機讀取以實現相應的控制。而在碼制變換中有不同的處理方式,本文著重介紹二進位制格雷碼與自然二進位製碼的互換。
一、格雷碼(又叫迴圈二進位製碼或反射二進位製碼)介紹
在數字系統中只能識別0和1,各種資料要轉換為二進位制**才能進行處理,格雷碼是一種無權碼,採用絕對編碼方式,典型格雷碼是一種具有反射特性和迴圈特性的單步自補碼,它的迴圈、單步特性消除了隨機取數時出現重大誤差的可能,它的反射、自補特性使得求反非常方便。格雷碼屬於可靠性編碼,是一種錯誤最小化的編碼方式,因為,自然二進位製碼可以直接由數/模轉換器轉換成模擬訊號,但某些情況,例如從十進位制的3轉換成4時二進位製碼的每一位都要變,使數位電路產生很大的尖峰電流脈衝。而格雷碼則沒有這一缺點,它是一種數字排序系統,其中的所有相鄰整數在它們的數字表示中只有乙個數字不同。它在任意兩個相鄰的數之間轉換時,只有乙個數字發生變化。它大大地減少了由乙個狀態到下乙個狀態時邏輯的混淆。另外由於最大數與最小數之間也僅乙個數不同,故通常又叫格雷反射碼或迴圈碼。下表為幾種自然二進位製碼與格雷碼的對照表:
十進位制數
自然二進位制數
格雷碼十進位制數
自然二進位制數
格雷碼0
0000
0000
81000
1100
10001
0001
91001
1101
20010
0011
101010
1111
30011
0010
111011
1110
40100
0110
121100
1010
50101
0111
131101
1011
60110
0101
141110
1001
70111
0100
151111
1000
二、二進位制格雷碼與自然二進位製碼的互換
1、自然二進位製碼轉換成二進位制格雷碼
自然二進位製碼轉換成二進位制格雷碼,其法則是保留自然二進位製碼的最高位作為格雷碼的最高位,而次高位格雷碼為二進位製碼的高位與次高位相異或,而格雷碼其餘各位與次高位的求法相類似。
2、二進位制格雷碼轉換成自然二進位製碼
二進位制格雷碼轉換成自然二進位製碼,其法則是保留格雷碼的最高位作為自然二進位製碼的最高位,而次高位自然二進位製碼為高位自然二進位製碼與次高位格雷碼相異或,而自然二進位製碼的其餘各位與次高位自然二進位製碼的求法相類似。
三、二進位制格雷碼與自然二進位製碼互換的實現方法
1、自然二進位製碼轉換成二進位制格雷碼
a)、軟體實現法(參見示例工程中的 binary to gray)
根據自然二進位制轉換成格雷碼的法則,可以得到以下的**:
static unsigned int decimaltogray(unsigned int x)
//以上**實現了unsigned int型資料到格雷碼的轉換,最高可轉換32位自然二進位製碼,超出32位將溢位。
static int decimaltogray( int x)
//以上**實現了 int型資料到格雷碼的轉換,最高可轉換31位自然二進位製碼,超出31位將溢位。 上述**即可用於vc控制程式中,也可以用於微控制器控制程式中。在微控制器程式設計時,若採用組合語言程式設計,可以按相同的原理設計程式;若採用c語言程式設計,則可以直接利用上述**,但建議用unsigned int函式。
b)、硬體實現法
根據自然二進位制轉換成格雷碼的法則,可以得到以下電路圖:
上圖所示電路圖即可用異或積體電路74ls136實現,也可以利用可程式設計器件pld等程式設計實現。
2、二進位制格雷碼轉換成自然二進位製碼
a)、軟體實現法(參見示例工程中的 gray to binary )
根據二進位制格雷碼轉換成自然二進位製碼的法則,可以得到以下的三種**方式:
//以上**實現了unsigned int型資料到自然二進位製碼的轉換,最高可轉換32位格雷碼,超出32位將溢位。將資料型別改為int型即可實現31位格雷碼轉換。
上述**即可用於vc控制程式中,也可以用於微控制器控制程式中。在微控制器程式設計時,若採用組合語言程式設計,可以按相同的原理設計程式;若採用c語言程式設計,則可以直接利用上述**,但建議用unsigned int函式。
b)、硬體實現法
根據二進位制格雷碼轉換成自然二進位製碼的法則,可以得到以下電路圖:
上圖所示電路圖即可用異或積體電路74ls136實現,也可以利用可程式設計器件pld等程式設計實現。
二進位制格雷碼與自然二進位製碼的互換
原始網頁 http www.pcdog.com a 19 10 a210086.html 在精確定位控制系統中,為了提高控制精度,準確測量控制物件的位置是十分重要的。目前,檢測位置的辦法有兩種 其一是使用位置感測器,測量到的位移量由變送器經a d轉換成數字量送至系統進行進一步處理。此方法精度高,但在...
Gray碼 格雷碼 二進位制
以下內容是看了matrix67的關於二進位制的blog link 的一點總結與摘錄。gray碼,中文 格雷碼 是一種特殊的編碼,相鄰兩個格雷碼的二進位制表示中有且僅有一位不同,且 n 階 gray 碼是 0 2 n 1 的乙個排列。n 階 gray 碼可以由 n 1 階 gray 碼映象翻轉之後最前...
格雷碼二進位制轉換
在結構光編碼方法中,有一種格雷碼編碼方法 與二進位制編碼方法相比,格雷碼編碼方法能夠更好的乙隻雜訊干擾,方便糾錯。用格雷碼對三維測量空間進行編碼,在解碼時需要將格雷碼在此轉換成二進位制,方便計算。實現 如下 unsigned binarytogray unsigned num 將二進位制值右移一位,...