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...