編碼與碼制

        數字系統的主要功能是處理信息。因此必須將信息表示成電路能夠識別,便於運算存儲的形式。信息主要有兩類:數值信息和非數值信息。數值:可以用來算數運算的數據。如張三的學習成績考了多少分。非數值:不能用來算數運算的數據。如某球員球衣上的編號。數值的表示方法:進制。非數值的表示方法:編碼。

       在數字技術中,常用二進制碼0和1來表示文字符號信息,這種特定的二進制碼稱爲代碼。如:計算機鍵盤上面的字母和數字這些特定的信息,對於計算機來說它不能識別這些特定的信息,而計算機只識別0和1組成的代碼,因此需要將這些特定的代碼轉換成計算機可以識別的0和1代碼。

       建立這種代碼於信息的一一對應的關係稱爲編碼。例如:CPU和鍵盤之間必須有一個編碼器來將鍵盤上所表示的信息與對應的代碼的對應關係。完成這種編碼的電路稱爲編碼器。

       爲了分別表示N個字符,至少需要二進制數的位數爲n,例如有10個信息,用2進製表示,就需要有4位2進製表示。
       
       一個代碼的好壞和它的編碼非常相關。例如:如果我們要去調查某某人的的姓名、出身時間會非常複雜,所以我們國家爲我們每個人都安排了身份證,如果身份證以11111、22222、33333的方式去排列這使我們查找很不方便,所以身份證以420000198801222541使我們很容易分辨出此身份證是湖北人1988年1月22日出身的。

      編碼可以有多種,數字電路中所用的主要是二-十進制碼(BCD(binary-Coded-Decimal))。
      BCD碼:用二進制碼錶示一位十進制數的代碼。在BCD碼中,用四位二進制數表示0~9十個數碼。四位二進制數最多可以表示16個字符(2^4=16),因此0~9十個字符與這16個組合之間可以有多種情況,不同的對應便形成了一種編碼。這裏主要介紹:8421碼、2421碼、5421碼、餘3碼、格雷碼(循環碼)、餘3循環碼。重碼:凡是有權值相同的碼都會有重碼。如2421(權值2出現了2次)、5211(權值1出現了2次)。
     8421碼:指每一位的權值是8(第四位的權值2^3)、4(第三位的權值2^2)、2(第二位的權值2^1)、1(第一位的權值2^0)。
     0000=0*2^3+0*2^2+0*2^1+0*2^0=0*8+0*4+0*2+0*1=0+0+0+0=0
     0001=0*2^3+0*2^2+0*2^1+1*2^0=0*8+0*4+0*2+1*1=0+0+0+1=1
     0010=0*2^3+0*2^2+1*2^1+0*2^0=0*8+0*4+1*2+0*1=0+0+2+0=2
     0011=0*2^3+0*2^2+1*2^1+1*2^0=0*8+0*4+1*2+1*1=0+0+2+1=3
     0100=0*2^3+1*2^2+0*2^1+0*2^0=0*8+1*4+0*2+0*1=0+4+0+0=4
     0101=0*2^3+1*2^2+0*2^1+1*2^0=0*8+1*4+0*2+1*1=0+4+0+1=5
     0110=0*2^3+1*2^2+1*2^1+0*2^0=0*8+1*4+1*2+0*1=0+4+2+0=6
     0111=0*2^3+1*2^2+1*2^1+1*2^0=0*8+1*4+1*2+1*1=0+4+2+1=7
     1000=1*2^3+0*2^2+0*2^1+0*2^0=1*8+0*4+0*2+0*1=8+0+0+0=8
     1001=1*2^3+0*2^2+0*2^1+1*2^0=1*8+0*4+0*2+1*1=8+0+0+1=9

      2421碼:指每一位的權值是2(第四位的權值)、4(第三位的權值)、2(第二位的權值)、1(第一位的權值)。
      0000=0*2+0*4+0*2+0*1=0+0+0+0=0
      0001=0*2+0*4+0*1+1*1=0+0+0+0=1
      0010=0*2+0*4+1*2+0*1=0+0+2+0=2
      0011=0*2+0*4+1*2+1*1=0+0+2+1=3
      0100=0*2+1*4+0*2+0*1=0+4+0+0=4
      1011=1*2+0*4+1*2+1*1=2+0+2+1=5
      1100=1*2+1*4+0*2+0*1=2+6+0+0=6
      1101=1*2+1*4+0*2+1*1=2+4+0+1=7
      1110=1*2+1*4+1*2+0*1=2+4+2+0=8
      1111=1*2+1*4+1*2+1*1=2+4+2+1=9

      5421碼:指每一位的權值是5(第四位的權值)、4(第三位的權值)、2(第二位的權值)、1(第一位的權值)。
      0000=0*5+0*4+0*2+0*1=0+0+0+0=0
      0001=0*5+0*4+0*1+1*1=0+0+0+0=1
      0010=0*5+0*4+1*2+0*1=0+0+2+0=2
      0011=0*5+0*4+1*2+1*1=0+0+2+1=3
      0100=0*5+1*4+0*2+0*1=0+4+0+0=4
      1000=1*5+0*4+0*2+0*1=5+0+0+0=5
      1001=1*5+0*4+0*2+1*1=5+0+0+1=6
      1010=1*5+0*4+1*2+0*1=5+0+2+1=7
      1011=1*5+0*4+1*2+1*1=5+0+2+1=8
      1100=1*5+1*4+0*2+0*1=5+4+0+0=9

      餘3碼:在8421碼的基礎上多3(偏移3)(無權碼)。
      0011=0*8+0*4+1*2+1*1=0+0+2+1=3  -3=0
      0100=0*8+1*4+0*2+0*1=0+4+0+0=4  -3=1
      0101=0*8+1*4+0*2+1*1=0+4+0+1=5  -3=2
      0110=0*8+1*4+1*2+0*1=0+4+2+1=6  -3=3
      0111=0*8+1*4+1*2+1*1=0+4+2+1=7  -3=4
      1000=1*8+0*4+0*2+0*1=8+0+0+0=8  -3=5
      1001=1*8+0*4+0*2+1*1=8+0+0+1=9  -3=6
      1010=1*8+0*4+1*2+0*1=8+0+2+1=10-3=7
      1011=1*8+0*4+1*2+1*1=8+0+2+1=11-3=8
      1100=1*8+1*4+0*2+0*1=8+4+0+0=12-3=9

     循環碼(格雷碼 Grey Code):循環碼是一種無權碼,循環碼編排的特點是相鄰兩個數碼之間符合卡諾圖中的鄰接條件,即相鄰兩個數碼之間只有一位碼元不同,碼元就是組成數碼的單元。符合這個特點的有多種方案(不止一種編碼方式),但循環碼只能是表中的那種。循環碼的優點是沒有瞬時錯誤,因爲在數碼變換過程中,在速度上會有快有慢,中間經過其它一些數碼形式,稱它們爲瞬時錯誤。這在某些數字系統中是不允許的,爲此希望相鄰兩個數碼之間僅有一位碼元不同,即滿足鄰接條件,這樣就不會產生瞬時錯誤。循環碼就是這樣一種編碼,它可以在卡諾圖中依次循環得到。
     在數據傳輸當中採用循環碼的傳輸方式來進行編碼,我們檢測就知道,前面一個數和後面一個數它只有一位不同,如果它有兩位不同,就說明這個數據在傳輸過程中受到干擾,這個數據在傳輸過程中就產生了錯誤,我就可以報錯。

     格雷碼優點:某叉車數控調速系統,其速度分爲10 檔,試用8421BCD 碼和格雷碼分別對10檔速度進行編碼。並將這10檔速度分別用8421BCD碼和格雷碼(Gray)碼編碼,如下表所示。叉車數控調速系統檔位編碼
     速度檔    8421BCD碼    格雷碼    速度檔    8421BCD碼    格雷碼
     0              0000                0000       5              0101                0111
     1              0001                0001       6              0110                1111
     2              0010                0011       7              0111                1110
     3              0011                0010       8              1000                1100
     4              0100                0110       9              1001                1000

     如果速度用8421BCD碼來表示,則將3檔速度調到4檔速度就意味着將編碼從0011變爲0100。顯然,4位編碼中有3位發生了變化。由於1和0在數字電路中是用電路高電平和低電平來表示的,由高電平變爲低電平的時間與由低電平變爲高電平的時間不可能完全一致。假設由低電平變爲高電平(0→1)的轉換比由高電平變爲低電平(1→0)的轉換快,電路中會瞬間出現0111(七檔)這個中間狀態,從而造成叉車在換檔時的明顯抖動。檔位切換情況如上表所示。如果速度採用格雷碼編碼,由於相鄰碼間只有一位不同,將不會中間狀態,消除了檔位切換時的抖動。由於格雷碼從一個數過渡到相鄰數時,不會瞬間出現別的碼組,所以它是錯誤最小化編碼,屬於一種可靠性編碼,因此獲得廣泛應用。

      從二進制編碼得到相應的格雷碼:設4位二進制碼爲a3a2a1a0,4位格雷碼爲b3b2b1b0,可以通過以下規律將二進制碼轉換爲格雷碼。
     (1)如果a0和a1相同,則b0爲0,否則爲1;
     (2)如果a1和a2相同,則b1爲0,否則爲1;
     (3)如果a2和a3相同,則b2爲0,否則爲1;
     (4)b3和a3相同。
     上述規律還可以用以下邏輯邏輯表達式描述:b0=a1 ⊕ a0,b1=a2 ⊕ a1,b2=a3 ⊕ a2,b3=a3。式中“⊕”爲“異或”邏輯運算符。

      0000=0
      0001=1
      0011=2
      0010=3
      0110=4
      0111=5
      1111=6
      1110=7
      1100=8
      1000=9

      餘3循環碼:在循環碼的基礎上偏移3(不是+3,餘3循環碼沒有權值)。     

      0010=0
      0111=1
      0111=2
      0111=3
      0100=4
      1100=5
      1101=6
      1111=7
      1110=8
      1010=9

      若要用BCD碼來表示n位十進制數,則需要用n個BCD碼來表示。

      例如:用8421BCD碼和2421BCD碼來表示(1689)(10進制),可寫成

     (1689)(10進制)=(0001  0110  1000  1001)8421BCD
     (1689)(10進制)=(0001  1100  1110  1111)2421BCD

      反之,已知BCD碼,可直接寫成十進制數。
      如:(0101  0110  1000  1001.1001)(8421BCD)=(568.9)(10進制)

      ASCⅡ碼:採用7位二進制代碼對字符編碼,故可表示128(2^7=128)個字符,包括控制符號、阿拉伯數字、英文大小寫字母及專用符號。如0~9的ASCⅡ碼爲30H~39H,英文大寫字母A~Z的ASCⅡ碼爲41H~5AH。      一個字節爲8位,在用一個字節表示一個ASCⅡ碼時。通常認爲最高位爲0。有時根據需要也用最高位作爲奇偶效驗位。ASCⅡ碼錶:
 

      奇偶校驗碼:是計算機常用的一種可靠性代碼,其主要用途是檢查數據傳送過程中數碼1(或0)的個數的奇偶性是否正確。奇偶校驗碼由信息位和校驗位兩部分組成。信息位就是要傳送的二進制信息本身,校驗位則是附加的冗餘位(多餘位)。在信息中添加校驗位的作用是使得數據發送端的奇偶校驗碼具有統一的奇偶性,以便於數據接收端的驗證。例如,設信息具有四個數據位與一個校驗位,在信息傳遞過程中需要對信息作奇校驗,即要求奇偶校驗碼始終具有奇數個1。當信息爲0101 時,校驗位應該爲1,即包含校驗位的奇校驗碼爲01011;當信息爲0111 時,校驗位應該爲0,包含校驗位的奇校驗碼爲01110。
      奇偶校驗,內存中最小的單位是比特,也稱爲“位”,位有隻有兩種狀態分別以1和0來標示,每8個連續的比特叫做一個字節(byte)。不帶奇偶校驗的內存每個字節只有8位,如果其某一位存儲了錯誤的值,就會導致其存儲的相應數據發生變化,進而導致應用程序發生錯誤。而奇偶校驗就是在每一字節(8位)之外又增加了一位作爲錯誤檢測位。在某字節中存儲數據之後,在其8個位上存儲的數據是固定的,因爲位只能有兩種狀態1或0,假設存儲的數據用位標示爲1、1、1、0、0、1、0、1,那麼把每個位相加(1+1+1+0+0+1+0+1=5),結果是奇數,那麼在校驗位定義爲1,反之爲0。當CPU讀取存儲的數據時,它會再次把前8位中存儲的數據相加,計算結果是否與校驗位相一致。從而一定程度上能檢測出內存錯誤,奇偶校驗只能檢測出錯誤而無法對其進行修正,同時雖然雙位同時發生錯誤的概率相當低,但奇偶校驗卻無法檢測出雙位錯誤。
  奇偶校驗碼是奇校驗碼和偶校驗碼的統稱,是一種最基本的檢錯碼。它是由n-1位信息元和1位校驗元組成,可以表示成爲(n,n-1)。如果是奇校驗碼,在附加上一個校驗元以後,碼長爲n的碼字中“1”的個數爲奇數個;如果是偶校驗碼,在附加上一個校驗元以後,碼長爲n的碼字中“1”的個數爲偶數個。奇偶校驗由校驗方程來解決。

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