天天看點

華中科技大學 計算機組成原理 上機實驗1 2018

notice: 本文已被archive,隻具有曆史價值,上機價值

實驗目的

  • GB2312 區位碼
  • 字模碼
  • 奇偶校驗校
    • 驗位
    • 檢錯
  • 海明碼編解碼電路基本原理
  • 流水資料傳輸機制,流水暫停原理

實驗環境

(以下文字僅供google搜尋)

Logisim平台,該平台是一款數字電路模拟的教育軟體,使用者都可以通過它來學習如何建立邏輯電路,友善簡單。它是一款基于Java 的應用程式,可運作在任何支援JAVA 環境的平台,友善學生來學習設計和模仿數字邏輯電路。Logisim 中的主要組成部分之一就在于設計并以圖示來顯示CPU。當然Logisim 中還有其他多種組合分析模型來對你進行幫助,如轉換電路,表達式,布爾型和真值表等等。同時還可以重新利用小規模的電路來作為大型電路的一部分

本章所有實驗均基于實驗包提供的data.circ 檔案完成

data.circ原始檔案

https://drive.google.com/file/d/1rvhs-o0V76AwB5HZwmVZ2ycMIEs6zdS9/view?usp=sharing

data.circ完成檔案

https://drive.google.com/file/d/1jbXW2mIa82wQ-gWKbYNfjss9IeCezezG/view?usp=sharing

實驗内容_漢字編碼

_GB2312 區位号

華中科技大學 計算機組成原理 上機實驗1 2018

 在ROM存儲器中存入25個成句的漢字,并用時鐘仿真依次顯示

GB2312字元集構成一個94行,94列的二維表,列号稱為位号,行号稱為區号;每一個漢字或符号在碼表中的位置用它所在的區号和尾号來表示

計算機内部每個漢字的區号和位号分别用一個Byte來表示:例如"學"字的區号49,位号07,區位碼即4907H

0011 0001 0000 0111

區位碼因為與通信使用的控制碼(00H~1FH)沖突,是以ISO2022規定每個漢字區号位号必須加上20H,"學"字的國際交換碼就是

0101 0001 0010 0111

即5127H

^注意

因為區号和尾号範圍是1~94是以用7bit存儲

設計國際碼轉區位碼電路

輸入:GB2312 16位國際碼

輸出區号行号

子電路如下

華中科技大學 計算機組成原理 上機實驗1 2018

上述子電路由減法器和分離器組成

具體由實驗檔案data.circ可推知

漢字GB2312編碼實驗

5127H 表示一個漢字…

這個項目就是要找一段漢字對應的gb2312碼

比如下面這段

ced2 d2aa c1a2 c2ed b7a2 d2bb c6aa b2a9

實驗内容_偶校驗

_奇偶校驗

設計16位資料編碼的偶校驗編碼電路

編碼就是 16位資料的最高位置再加上一位,這位數是所有資料位的異或值(如果是奇校驗還要取反)

需要特别注意異或門,中的多輸入行為标簽,預設的不是異或門

華中科技大學 計算機組成原理 上機實驗1 2018

電路設計

我沒有找到按位異或的方法,下面這個子電路可以複制作為按位異或器

華中科技大學 計算機組成原理 上機實驗1 2018

編碼電路

華中科技大學 計算機組成原理 上機實驗1 2018

設計17位偶校驗編碼的檢錯電路

  • 如果沒有錯誤發生
  • 讨論剛好有一位錯的情況,

    如果原始資料有偶數個1,則偶校驗位就是0,→

    1表示有錯

    如果~有奇數個1,偶校驗位就是1,→

    1表示有錯

  • 有兩位錯則無法檢測出
    華中科技大學 計算機組成原理 上機實驗1 2018

偶校驗傳輸測試1

沒錯則顯示正确

出現一位錯能夠檢錯

出現兩位錯則誤報

測試2

出現一位錯能糾正錯誤

出現兩位錯則不能糾正

實驗内容_海明校驗

_海明校驗

給你一組k位的有效資訊,b1 b2 b3 b4 b5 b6 b7 b8

海明校驗在其中插入r個校驗位來檢測錯誤和糾錯

表示整個校驗碼(校驗位加上有效資訊)

校驗位位置

從最左邊開始插入在第2^i位,位數是相對有效資訊+校驗碼的整體而言

P1 P2 b1 P3 b2 b3 b4 P4 b5 b6 b7 b8 b9 b11 P5 …

是以資訊碼與檢驗位的位數對應如下

1 2~4 5~11 12~26
2 3 4 5

檢驗位是多少

例子10011101

插入ab1c001d1101(字母表示校驗碼

a的确定由第1,3,5,7,9,…位确定

華中科技大學 計算機組成原理 上機實驗1 2018

 如果是奇校驗(要求被檢驗位中1的個數是奇數個),

如果是偶校驗位

bcd的确定由下表的規律:

華中科技大學 計算機組成原理 上機實驗1 2018
檢驗碼所在海明碼的位置 檢驗的海明碼的位數
1(P1) (1) 3 5 7 9 11 13 15 17 19 21 23
2(P2) (2),3 6,7 10,11 14,15 18,19 22,23
4(P3) (4),5,6,7 12,13,14,15 20,21,22,23

如果檢驗位所在海明碼的位置是

檢驗的海明碼的位數

糾錯方法

這裡介紹的隻能糾錯一位:

引入指錯碼G1 G2 G3 G4 G5

也就是第i個指錯碼是第i個檢驗位的值異或它之前檢驗的值

根據奇偶校驗的性質,G為1,表示G對應的檢驗位所負責的組中出現了問題

按照先前分組的規則,糾錯可以根據2進制的特點來判斷:比如第1,2,8(G1,G2,G4)位校驗位=1,表示第1+2+8位的資料出錯

^注意

校驗位本身也可能出錯

(如果隻出現一位錯的話)将隻有1個指錯碼是1

設計16位資料編碼的海明校驗編碼電路

輸入16位原始資料

輸出16位資料位,5位海明校驗位,1位奇校驗位(指的是所有資料位的異或再取反)

下面這個版本是我搜到的一個錯誤版本,↓

華中科技大學 計算機組成原理 上機實驗1 2018

正确版本

校驗位 被檢驗的資料位
P1 D1 D2 D4 D5 D7 D9 D11 D12 D14 D16
P2 D1 D3 D4 D6 D7 D10 D11 D13 D14
P3 D2 D3 D4 D8 D9 D10 D11 D15 D16
P4 D5 D6 D7 D8 D9 D10 D11
P5 D12 D13 D14 D15 D16

電路

這裡的檢驗位P1 P2 P3 P4 P5采用偶檢驗;想改引腳改标簽名字就可以了

這裡一定要慎之又慎,并且影響下一步試驗

華中科技大學 計算機組成原理 上機實驗1 2018

設計22位海明校驗碼的解碼電路

輸入22位校驗碼

輸出…

原理分析

與上面我們談到到海明校驗碼相比,這裡多了一位奇校驗碼,是以能夠糾兩位錯誤,并改正一位錯誤:

  • 如果沒有錯誤

    所有指錯碼都為0時,奇校驗碼(指的是檢驗全部的)也為0

  • 如果有一位錯誤

    把指錯碼作為二進制的位數得到的二進制數就是出錯的數;同時奇校驗碼為1(具體見上面的分析)

    把取反即可

  • 如果有兩位錯誤

    首先奇校驗碼為0

    指錯碼的變化比較大..

電路設計

奇校驗碼 G1*G2*G3*G4*G5
1 電路設計錯誤
無錯誤
1 1 一位錯
1 兩位錯

解碼器的其他部分隻要把編碼的電路拿過來稍加改動就可以了

糾錯部分比較麻煩

由上面分析我們知道第位取反,不過電路設計比較麻煩,這也是耗時最久的

下面的電路包含了一些debug用的東西,

我測試過,正确,能糾錯一個字,檢查兩位錯

Decd

這是複用器decoder,預設下,你輸入一個5位數 10001:

輸出32位,其中第(10001)2也就是第17位輸出是1,其餘均為0

華中科技大學 計算機組成原理 上機實驗1 2018

海明校驗傳輸測試

測試編解碼電路的正确性(最多兩位錯誤)…

_險象

電路中出現的情況,當X發生延遲時,電路的期望輸出就會發現變化