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

notice: 本文已被archive,只具備歷史價值,上機價值 學習

實驗目的 測試

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

實驗環境 google

(如下文字僅供google搜索)編碼

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

本章全部實驗均基於實驗包提供的data.circ 文件完成 debug

data.circ原始文件 設計

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

data.circ完成文件 code

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

   

實驗內容_漢字編碼

_GB2312 區位號

 在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位國際碼

輸出區號行號

子電路以下

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

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

漢字GB2312編碼實驗

5127H 表示一個漢字…

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

好比下面這段

ced2 d2aa c1a2 c2ed b7a2 d2bb c6aa b2a9

實驗內容_偶校驗

_奇偶校驗

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

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

   

須要特別注意異或門,中的多輸入行爲標籤,默認的不是異或門

電路設計

我沒有找到按位異或的方法,下面這個子電路能夠複製做爲按位異或器

   

編碼電路

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

  • 若是沒有錯誤發生

     

  • 討論恰好有一位錯的狀況 ,

    若是原始數據有偶數個1,則偶校驗位就是0,

    1表示有錯

    若是~有奇數個1,偶校驗位就是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,…位肯定

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

若是是偶校驗位

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

海明校驗傳輸測試

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

_險象

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

相關文章
相關標籤/搜索