前言
為了幫助同學們完成痛苦的實驗課程設計,本作者將其作出的實驗結(jié)果及代碼貼至CSDN中,供同學們學習參考。如有不足或描述不完善之處,敬請各位指出,歡迎各位的斧正!
一、實驗目的
- 掌握使用算術邏輯運算器 74LS181 進行算術運算、 邏輯運算的方法。
- 掌握基于“累加-移位”原理的串行乘法運算方法。
二、實驗環(huán)境
操作系統(tǒng):Win10
實驗用軟件:Proteus 8
三、實驗內(nèi)容
- 在輸入單元(撥碼開關) 通過三態(tài)門 74LS244 向運算器的總線 BUS 輸入?yún)⑴c運算的數(shù)據(jù), 并在輸出單元(數(shù)碼管) 顯示總線 BUS 的內(nèi)容;
- 把參與運算的數(shù)據(jù)AA打入緩存器 DRA 并送入ALU的A輸入端,將55打入緩存器 DRB并送入ALU的B輸入端;
- 參照表 1 所示的 74LS181 真值表,置 ALU 的控制信號組合(S3, S2, S1, S0, M,CN)進行算術運算和邏輯運算。再令 SW_BUS=1, ALU_OE=0, 觀察并且記錄運算器 ALU 的輸出端 F 和標志位 CF、 SF、 ZF的值。
- 利用“累加-移位”原理,計算二進制數(shù) 10101011 和 11010101相乘的結(jié)果,并驗證是否和手工計算結(jié)果一致。
四、實驗步驟
一.在輸入端(DIPSWC_8)向總線BUS[0…7]輸入數(shù)據(jù),并在輸出端(7SEG-BCD-GRN)輸出總線BUS[0…7]的內(nèi)容
首先將ALU_BUS和ALU_EN拉倒高阻態(tài),防止和SW_BUS上面的數(shù)據(jù)出現(xiàn)沖突。開始仿真后將SW_BUS拉到低組態(tài),然后通過輸入端輸入10101010,即0xAA;
通過撥動DRA_CLK時鐘信號將信號保存至寄存器中。
同理,輸入01010101,即0x55,并撥動DRB_CLK時鐘信號,將信號保存至寄存器中
輸入結(jié)束后將SW_BUS拉高,ALU_CN拉低,ALU_BUS拉低。
將功能控制端S3-S0置位0001,M置零,刷新ALU_OE實現(xiàn)A+B,即0xFF,SF燈亮起
通過ALU_CN對結(jié)果進位實現(xiàn)A+B+1,刷新屏幕后得到0x00。
二.
1) 啟動運算,首先判斷寄存器 Q 的最低位 Qn:
若 Qn=1,說明需要累加,把部分積 A 與被乘數(shù) B 相加,得到新的部分積;若 Qn=0,說
明不需要累加。
2)令加法進位 CF、寄存器 A(保存新的部分積)和寄存器 Q 聯(lián)合右移一位。
3)計數(shù)器自減 1,然后啟動下一次運算(返回到第 1)步)。
上述運算循環(huán)執(zhí)行,直到計數(shù)器的值減到0,即總共執(zhí)行了n次循環(huán)。此時,乘數(shù)Q已經(jīng)完全右移出寄存器Q,保存在寄存器A和Q中的是2n位乘法結(jié)果|P|(絕對值)的高 n 位和低n位。乘積 Pf的符號位則單獨處理,由被乘數(shù)和乘數(shù)的符號位A和B邏輯“異或”得到。
如圖3所示,運算器ALU通路中的8位緩存器DRA和DRB就相當于圖5中的寄存器A和Q:緩存器 DRA 的 SL=ALU_C,其最低位連接 DRB 的 SL 端,連成一個 16 位移位寄存器。 因為緩存器 DRA 和 DRB 都是由移位寄存器 74LS194 構成,若兩個移位寄存器 74LS194 的控 制端信號 S0=0 且 S1=1,則當時鐘信號 DRx_CLK 上升沿跳變時,74LS194 全部執(zhí)行移位操作 Q0Q1Q2Q3=Q1Q2Q3SL。
此時,ALU_C 移入 DRA 最高位,DRA 所有位依次右移,最低位移入 DRB 的最高位,DRB 所有位亦依次右移,即“DRA→DRB”操作。該操作相當于圖 5 中的“寄存器 A 和 Q 聯(lián)合 右移一位”操作。
因為運算器 ALU 通路中只有兩個緩存器 DRA 和 DRB,所以,緩存器 DRB 必須同時承 擔圖 5 中寄存器 B 和 Q 的作用;而且,在串行乘法的運算過程中,需要借助寄存器 REG_0 和 REG_1 作為臨時寄存器,在不同運算切換之際用以保存緩存器 DRB 的數(shù)據(jù)。
在運算器 ALU 通路中,串行乘法的運算過程如下所述。
初始狀態(tài):被乘數(shù)|X|打入寄存器 REG_0,“0”打入寄存器 REG_1;
乘數(shù)|Y|打入緩存器 DRB,而緩存器 DRA 無需初始化(因為第 1)步就賦值“1”)。
1)ALU執(zhí)行“F=1”,結(jié)果“0”打人 DRA;又執(zhí)行“F=A+1”,結(jié)果“1”再打入 DRA。
2)ALU執(zhí)行“F=A·B”(邏輯與),觀察運算結(jié)果零標志位ZF(即判斷最低位Qn是否為0):
3)若 ZF=0(即 Qn=0),則 REG_1 的值打入 DRA,跳轉(zhuǎn)到第 5)步;若 ZF=1(Qn=1),則 ALU 執(zhí)行“F=B”,把 DRB 保存的值打入 REG_1。
4)把 REG_0 的值(“被乘數(shù)”)打入 DRB,REG_1 的值打入 DRA,ALU 執(zhí)行“F=A 加 B”
(算術和),運算結(jié)果打人 DRA,再把 REG_1 的值打回 DRB。
5)ALU 執(zhí)行“DRA→DRB”移位(注意 DRA_CLK 和 DRB_CLK 操作的先后順序)。
6)若乘數(shù)所有位都移出 DRB,則運算結(jié)束(16 位乘積的高 8 位在 DRA,低 8 位在 DRB);否則,ALU 執(zhí)行“F=A”,把 DRA 保存的部分積打入 REC_1,返回第 1)步。
最終結(jié)果如下:
五、實驗結(jié)果
須用表格列出74LS181中各控制信號(S3, S2, S1, S0, M,CN)為不同值時,ALU 的輸出端 F 和標志位 CF、 SF、 ZF的值。文章來源:http://www.zghlxwxcb.cn/news/detail-443257.html
S3 S2 S1 S0 | M=0 CN=1 | M=0 CN=0 | M=1 |
---|---|---|---|
0000 | AA 100 | A6 100 | 55 000 |
0001 | FF 100 | 00 011 | 00 010 |
0010 | AA 100 | A6 100 | 55 000 |
0011 | FF 100 | 00 011 | 00 010 |
0100 | 54 001 | 55 001 | FF 101 |
0101 | A9 101 | AA 101 | AA 101 |
0110 | 54 001 | 55 001 | FF 101 |
0111 | A9 101 | AA 101 | AA 101 |
1000 | AA 100 | A6 100 | 55 000 |
1001 | FF 100 | 00 011 | 00 010 |
1010 | AA 100 | A6 100 | 55 000 |
1011 | FF 100 | 00 011 | 00 010 |
1100 | 54 001 | 55 001 | FF 101 |
1101 | A9 101 | AA 101 | AA 101 |
1110 | 54 001 | 55 001 | FF 101 |
1111 | A9 101 | AA 101 | AA 101 |
六、實驗總結(jié)
- 運算器 74LS181 可以執(zhí)行無符號數(shù)的加法和減法運算么?對于有符號數(shù)的算術運算, 運算器 74LS181 是補碼運算器還是原碼運算器?
答:74LS181組成的運算器運算可以區(qū)分有符號數(shù)運算和無符號數(shù)運算;
對于有符號數(shù)的算數(shù)運算,74LS181是補碼運算器。 - 參與串行乘法運算的兩個數(shù)據(jù)是無符號數(shù)還是有符號數(shù)?若有符號位,怎么處理?
答:參與串行乘法運算的兩個數(shù)據(jù)是無符號數(shù);
若有符號位,則需先對符號位進行運算,搭配兩數(shù)絕對值的乘積,進而給出結(jié)果。
心得體會:
進行本次實驗操作時,實驗器件多,連線復雜,多次出現(xiàn)了漏連線、漏標線等情況,而且,哪怕連線完成、實驗圖做好后,依然不了解這個圖的用途及原理。之后,本人通過查閱資料、同學討論、觀看學習視頻等等方式,對本次實驗有了大概的理解,同時,本次實驗步驟復雜,稍不留意就容易前功盡棄,需要我們在做實驗時謹慎再謹慎。文章來源地址http://www.zghlxwxcb.cn/news/detail-443257.html
到了這里,關于計算機組成與體系結(jié)構第一次試驗:運算器實驗的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!