1. 程式人生 > >華中科技大學 計算機組成原理 上機實驗1 2018

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

image 可能 ive debug 區號 分析 pan open 實驗目的

實驗目的

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

實驗環境

(以下文字僅供google搜索)

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

本章所有實驗均基於實驗包提供的data.circ 文件完成

data.circ原始文件

https://drive.google.com/open?id=1rvhs-o0V76AwB5HZwmVZ2ycMIEs6zdS9

data.circ完成文件

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

實驗內容_漢字編碼

_GB2312 區位號

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

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

計算機內部 每個漢字的區號和位號分別用一個Byte來表示:例如""字的區號49,位號07,區位碼即4907

0011 0001 0000 0111

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

0101 0001 0010 0111:5127H

^註意

因為區號和尾號範圍是1~94所以用7bit表示

設計國際碼轉區位碼電路

輸入:GB2312 16位國際碼

輸出 區號行號

子電路如下

技術分享圖片

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

具體由實驗文件data.circ可推知

漢字GB2312編碼實驗

5127H 表示一個漢字…

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

gb2312

比如下面這段

ced2 d2aa c1a2 c2ed b7a2 d2bb c6aa b2a9

實驗內容_偶校驗

_奇偶校驗

設計16位數據編碼的偶校驗編碼電路

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

需要特別註意異或門,中的多輸入行為標簽,默認的不是異或門

技術分享圖片

電路設計

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

技術分享圖片

編碼電路

技術分享圖片

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

  • 如果沒有錯誤發生

    技術分享圖片

  • 討論剛好有一位錯的情況,

    技術分享圖片

    1表示有錯

    技術分享圖片

    1表示有錯

  • 有兩位錯則無法檢測出

    技術分享圖片

偶校驗傳輸測試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,…位確定

技術分享圖片

技術分享圖片

bcd的確定由下表的規律:

技術分享圖片

檢驗碼所在海明碼的位置

檢驗的 海明碼的位數

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個檢驗位的值 異或 它之前檢驗的值

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

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

^註意

校驗位本身也可能出錯

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

設計16位數據編碼的海明校驗編碼電路

輸入16位原始數據

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

下面這個版本是廣為流傳的錯誤版本,引以為戒

技術分享圖片

正確版本

校驗位

被檢驗的數據位

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采用偶檢驗;想改引腳改標簽名字就可以了

這裏一定要慎之又慎,並且影響下一步試驗

技術分享圖片

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

輸入22位校驗碼

輸出…

原理分析

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

  • 如果沒有錯誤

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

  • 如果有一位錯誤

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

    技術分享圖片

  • 如果有兩位錯誤

    首先奇校驗碼為0

    指錯碼的變化比較大..

電路設計

奇校驗碼

G1*G2*G3*G4*G5

1

0

電路設計錯誤

0

0

無錯誤

1

1

一位錯

0

1

兩位錯

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

糾錯部分比較麻煩

技術分享圖片

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

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

Decd

這是復用器decoder,默認下,你輸入一個5位數 10001:

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

技術分享圖片

海明校驗傳輸測試

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

_險象

技術分享圖片

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