华中科技大学 计算机组成原理 上机实验1 2018
notice: 本文已被archive,只具有歷史價(jià)值,上機(jī)價(jià)值
實(shí)驗(yàn)?zāi)康?
- GB2312 區(qū)位碼
- 字模碼
- 奇偶校驗(yàn)校
- 驗(yàn)位
- 檢錯(cuò)
- 海明碼編解碼電路基本原理
- 流水?dāng)?shù)據(jù)傳輸機(jī)制,流水暫停原理
實(shí)驗(yàn)環(huán)境
(以下文字僅供google搜索)
Logisim平臺(tái),該平臺(tái)是一款數(shù)字電路模擬的教育軟件,用戶都可以通過它來學(xué)習(xí)如何創(chuàng)建邏輯電路,方便簡單。它是一款基于Java 的應(yīng)用程序,可運(yùn)行在任何支持JAVA 環(huán)境的平臺(tái),方便學(xué)生來學(xué)習(xí)設(shè)計(jì)和模仿數(shù)字邏輯電路。Logisim 中的主要組成部分之一就在于設(shè)計(jì)并以圖示來顯示CPU。當(dāng)然Logisim 中還有其他多種組合分析模型來對(duì)你進(jìn)行幫助,如轉(zhuǎn)換電路,表達(dá)式,布爾型和真值表等等。同時(shí)還可以重新利用小規(guī)模的電路來作為大型電路的一部分
本章所有實(shí)驗(yàn)均基于實(shí)驗(yàn)包提供的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
? ?
實(shí)驗(yàn)內(nèi)容_漢字編碼
_GB2312 區(qū)位號(hào)
?在ROM存儲(chǔ)器中存入25個(gè)成句的漢字,并用時(shí)鐘仿真依次顯示
GB2312字符集構(gòu)成一個(gè)94行,94列的二維表,列號(hào)稱為位號(hào),行號(hào)稱為區(qū)號(hào);每一個(gè)漢字或符號(hào)在碼表中的位置用它所在的區(qū)號(hào)和尾號(hào)來表示
? ?
計(jì)算機(jī)內(nèi)部每個(gè)漢字的區(qū)號(hào)和位號(hào)分別用一個(gè)Byte來表示:例如"學(xué)"字的區(qū)號(hào)49,位號(hào)07,區(qū)位碼即4907H
0011 0001 0000 0111
區(qū)位碼因?yàn)榕c通信使用的控制碼(00H~1FH)沖突,所以ISO2022規(guī)定每個(gè)漢字區(qū)號(hào)位號(hào)必須加上20H,"學(xué)"字的國際交換碼就是
0101 0001 0010 0111
即5127H
? ?
^注意
因?yàn)閰^(qū)號(hào)和尾號(hào)范圍是1~94所以用7bit存儲(chǔ)
設(shè)計(jì)國際碼轉(zhuǎn)區(qū)位碼電路
輸入:GB2312 16位國際碼
輸出區(qū)號(hào)行號(hào)
子電路如下
上述子電路由減法器和分離器組成
具體由實(shí)驗(yàn)文件data.circ可推知
漢字GB2312編碼實(shí)驗(yàn)
5127H 表示一個(gè)漢字…
這個(gè)項(xiàng)目就是要找一段漢字對(duì)應(yīng)的gb2312碼
比如下面這段
| ced2 d2aa c1a2 c2ed b7a2 d2bb c6aa b2a9 |
實(shí)驗(yàn)內(nèi)容_偶校驗(yàn)
_奇偶校驗(yàn)
…
設(shè)計(jì)16位數(shù)據(jù)編碼的偶校驗(yàn)編碼電路
編碼就是 16位數(shù)據(jù)的最高位置再加上一位,這位數(shù)是所有數(shù)據(jù)位的異或值(如果是奇校驗(yàn)還要取反)
? ?
需要特別注意異或門,中的多輸入行為標(biāo)簽,默認(rèn)的不是異或門
電路設(shè)計(jì)
我沒有找到按位異或的方法,下面這個(gè)子電路可以復(fù)制作為按位異或器
? ?
編碼電路
設(shè)計(jì)17位偶校驗(yàn)編碼的檢錯(cuò)電路
- 如果沒有錯(cuò)誤發(fā)生
?
- 討論剛好有一位錯(cuò)的情況,
如果原始數(shù)據(jù)有偶數(shù)個(gè)1,則偶校驗(yàn)位就是0,→
1表示有錯(cuò)
如果~有奇數(shù)個(gè)1,偶校驗(yàn)位就是1,→
1表示有錯(cuò)
- 有兩位錯(cuò)則無法檢測出
偶校驗(yàn)傳輸測試1
沒錯(cuò)則顯示正確
出現(xiàn)一位錯(cuò)能夠檢錯(cuò)
出現(xiàn)兩位錯(cuò)則誤報(bào)
測試2
出現(xiàn)一位錯(cuò)能糾正錯(cuò)誤
出現(xiàn)兩位錯(cuò)則不能糾正
實(shí)驗(yàn)內(nèi)容_海明校驗(yàn)
_海明校驗(yàn)
給你一組k位的有效信息,b1 b2 b3 b4 b5 b6 b7 b8
海明校驗(yàn)在其中插入r個(gè)校驗(yàn)位來檢測錯(cuò)誤和糾錯(cuò)
表示整個(gè)校驗(yàn)碼(校驗(yàn)位加上有效信息)
校驗(yàn)位位置
從最左邊開始插入在第2^i位,位數(shù)是相對(duì)有效信息+校驗(yàn)碼的整體而言
P1 P2 b1 P3 b2 b3 b4 P4 b5 b6 b7 b8 b9 b11 P5 …
所以信息碼與檢驗(yàn)位的位數(shù)對(duì)應(yīng)如下
| 1 | 2~4 | 5~11 | 12~26 |
| 2 | 3 | 4 | 5 |
檢驗(yàn)位是多少
例子10011101
插入ab1c001d1101(字母表示校驗(yàn)碼
a的確定由第1,3,5,7,9,…位確定
?如果是奇校驗(yàn)(要求被檢驗(yàn)位中1的個(gè)數(shù)是奇數(shù)個(gè)),
如果是偶校驗(yàn)位
bcd的確定由下表的規(guī)律:
| 檢驗(yàn)碼所在海明碼的位置 | 檢驗(yàn)的海明碼的位數(shù) |
| 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 |
如果檢驗(yàn)位所在海明碼的位置是
檢驗(yàn)的海明碼的位數(shù)
糾錯(cuò)方法
這里介紹的只能糾錯(cuò)一位:
引入指錯(cuò)碼G1 G2 G3 G4 G5
?
也就是第i個(gè)指錯(cuò)碼是第i個(gè)檢驗(yàn)位的值異或它之前檢驗(yàn)的值
根據(jù)奇偶校驗(yàn)的性質(zhì),G為1,表示G對(duì)應(yīng)的檢驗(yàn)位所負(fù)責(zé)的組中出現(xiàn)了問題
按照先前分組的規(guī)則,糾錯(cuò)可以根據(jù)2進(jìn)制的特點(diǎn)來判斷:比如第1,2,8(G1,G2,G4)位校驗(yàn)位=1,表示第1+2+8位的數(shù)據(jù)出錯(cuò)
^注意
校驗(yàn)位本身也可能出錯(cuò)
(如果只出現(xiàn)一位錯(cuò)的話)將只有1個(gè)指錯(cuò)碼是1
設(shè)計(jì)16位數(shù)據(jù)編碼的海明校驗(yàn)編碼電路
輸入16位原始數(shù)據(jù)
輸出16位數(shù)據(jù)位,5位海明校驗(yàn)位,1位奇校驗(yàn)位(指的是所有數(shù)據(jù)位的異或再取反)
下面這個(gè)版本是廣為流傳的錯(cuò)誤版本,引以為戒↓
正確版本
| 校驗(yàn)位 | 被檢驗(yàn)的數(shù)據(jù)位 |
| 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 |
電路
這里的檢驗(yàn)位P1 P2 P3 P4 P5采用偶檢驗(yàn);想改引腳改標(biāo)簽名字就可以了
這里一定要慎之又慎,并且影響下一步試驗(yàn)
設(shè)計(jì)22位海明校驗(yàn)碼的解碼電路
輸入22位校驗(yàn)碼
輸出…
原理分析
與上面我們談到到海明校驗(yàn)碼相比,這里多了一位奇校驗(yàn)碼,所以能夠糾兩位錯(cuò)誤,并改正一位錯(cuò)誤:
- 如果沒有錯(cuò)誤
所有指錯(cuò)碼都為0時(shí),奇校驗(yàn)碼(指的是檢驗(yàn)全部的)也為0
- 如果有一位錯(cuò)誤
把指錯(cuò)碼作為二進(jìn)制的位數(shù)得到的二進(jìn)制數(shù)就是出錯(cuò)的數(shù);同時(shí)奇校驗(yàn)碼為1(具體見上面的分析)
把取反即可
- 如果有兩位錯(cuò)誤
首先奇校驗(yàn)碼為0
指錯(cuò)碼的變化比較大..
電路設(shè)計(jì)
| 奇校驗(yàn)碼 | G1*G2*G3*G4*G5 | ?? |
| 1 | 0 | 電路設(shè)計(jì)錯(cuò)誤 |
| 0 | 0 | 無錯(cuò)誤 |
| 1 | 1 | 一位錯(cuò) |
| 0 | 1 | 兩位錯(cuò) |
解碼器的其他部分只要把編碼的電路拿過來稍加改動(dòng)就可以了
糾錯(cuò)部分比較麻煩
由上面分析我們知道第位取反,不過電路設(shè)計(jì)比較麻煩,這也是耗時(shí)最久的
下面的電路包含了一些debug用的東西,
我測試過,正確,能糾錯(cuò)一個(gè)字,檢查兩位錯(cuò)
Decd
這是復(fù)用器decoder,默認(rèn)下,你輸入一個(gè)5位數(shù) 10001:
輸出32位,其中第(10001)2也就是第17位輸出是1,其余均為0
海明校驗(yàn)傳輸測試
測試編解碼電路的正確性(最多兩位錯(cuò)誤)…
_險(xiǎn)象
電路中出現(xiàn)的情況,當(dāng)X發(fā)生延遲時(shí),電路的期望輸出就會(huì)發(fā)現(xiàn)變化
?
轉(zhuǎn)載于:https://www.cnblogs.com/migeater/p/9078117.html
總結(jié)
以上是生活随笔為你收集整理的华中科技大学 计算机组成原理 上机实验1 2018的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 点对点架构模式
- 下一篇: 用简单的方法构建一个高可用服务端