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

2022-05-01 11:03:06 字數 2406 閱讀 4056

notice : 這篇文章僅僅具有上機實驗的參考作用,並且需要配套的檔案

_暫存器

訊號邊緣

訊號的乙個

上公升沿(rising edge) 是數碼訊號從低電平向高電平的轉換;是下圖的某些紅色豎線

實踐上高低電平的轉變不是瞬間完成的,訊號邊緣不一定與時間軸垂直,有一定的延遲

如果乙個

觸發器/flip-flop/latch

忽略高電平轉向低電平,只有當接入的時間脈衝訊號從低電平向高電平轉變(rising edge)才被觸發;

這個觸發器就被稱為rising edge-triggered

下面介紹logisim中的暫存器

輸入端:

使能enable

enable=0

時,使暫存器不能被時鐘訊號觸發

時鐘電路輸入端

清空reset

reset =1

時,暫存器值被清空

資料被時鐘觸發時,儲存到暫存器裡的值

輸出端

乙個輸出當前暫存器值的埠

電路時鐘

能產生像時鐘一樣精確的**電路

_定點乘法運算

原碼一位乘法

補碼一位乘法

booth演算法

假設有乙個8位乘數

multiplier

:0111 1110,將產生6行非零的部分積;如果將

multiplier

記成1 0 0 0 0 0 -1 0

就可以大大減少非零行的數目

這種變換稱為booth encoding,保證每兩個連續位中最多只有乙個是1或-1;這一變換把乘數變換成乙個**制形式

改進的booth encoding

編碼如下

000000

1x01

0x01

12x10

0-2x10

1-x11

0-x11

1-0所以0111 1110

改寫為01(1) 11(1) 11(1) 10(0)

→10(2y) 00 00 -10(-2y)

回過頭來看經典的booth演算法,如下圖

1+0同時符號位增加一位,以便檢驗溢位(見課本)

部分積 0

部分積 0+00.1001

部分積 00.0010 01(>>2)

+11.0111

部分積 11.1001 01

部分積 11.1110 0101

+00.1001

=00.0111 0101

電路設計一位補碼乘法器

輸入被乘數x,與乘數y

被乘數x符號位要增加一位

第8,9位是符號位

乘數y後面要加一位0

然後把y booth編碼:

用yn表示y_(i+1)y_i

yn怎麼產生呢

?需要暫存器

→register

假設y右移後的值是r(9位),存在乙個暫存器裡面

auto r=bitset<9>(y);

iter_num=0;

yn=bitset<2>(0b00);

while(rising_edge)→counter

隧道ckt就是exit訊號

根據booth編碼,求出

部分積ppi

如果 yn = 10 , 加法器還需要進製,才算求出-x的補碼

部分積與之前累積的部分相加

紅箭頭標明了兩個9位數之間的相加過程

剩下部分

建兩個暫存器,乙個暫存器放乘積的高8位,乙個放低8位,

目前為止出現的三個暫存器都用同乙個時鐘的上公升沿觸發,並用ckt隧道啟動

每次求出的和(上圖紅箭頭的輸出部分:)記為s

s的最低位記作l

low暫存器存放的數記為q

l作為最高位與(q>>1)存入low暫存器,

s其餘位存入high暫存器,並右移作為下一次的被加數(上圖左邊的紅箭頭);

華中科技大學 找位置

題目描述 對給定的乙個字串,找出有重複的字元,並給出其位置,如 abcaaab12ab12 輸出 a,1 a,4 a,5 a,10,b,2 b,11,1,8 1,12,2,9 2,13。輸入描述 輸入包括乙個由字母和數字組成的字串,其長度不超過100。輸出描述 可能有多組測試資料,對於每組資料,按照...

奇偶校驗 華中科技大學計算機題

題目描述 輸入乙個字串,然後對每個字元進行奇校驗,最後輸出校驗後的二進位制數 如 3 輸出 10110011 輸入描述 輸入包括乙個字串,字串長度不超過100。輸出描述 可能有多組測試資料,對於每組資料,對於字串中的每乙個字元,輸出按題目進行奇偶校驗後的數,每個字元校驗的結果佔一行。輸入例子 3 3...

華中科技大學複試 對稱矩陣

題目描述 輸入乙個n維矩陣,判斷是否對稱。輸入描述 輸入第一行包括乙個數 n 1 n 100 表示矩陣的維數。接下來的n行,每行包括n個數,表示n n矩陣的元素。輸出描述 可能有多組測試資料,對於每組資料,輸出 yes 表示矩陣為對稱矩陣。輸出 no 表示矩陣不是對稱矩陣。示例輸入4 16 19 1...