關於Logisim
Logisim在仿真軟件行列中算是比較直觀的軟件了,它能做的事情有很多,唯一不足的是硬件描述語言的支持,總體上來說適合比較底層的仿真,依賴於Hex值,通過線路邏輯設計能夠較好的
關於本實驗
計算機指令的執行過程設計是相對復雜的,指令的形式也是多種多樣,按照格式可分為有二三單地址指令,根據訪問部件的不同可分為立即數,RR,SS,RS等指令
本實驗通過Logisim實現:
1.寄存器->存儲器
2.存儲器->寄存器
3.立即數->存儲器
4.立即數->寄存器
的四種控制結構
正文
1)實現寄存器組
寄存器組能夠組合成一個緩存序列,並按照每個寄存器的地址進行更改和訪問,一次只能改寫或讀取一個寄存器內容。
2)立即數與主存儲器
主存儲器與寄存器都是存儲部件能作為輸入輸出使用,立即數只能作為輸入
3)通路設計
控制數據通路實際是通過數據選擇器不斷的控制輸入地址達到選擇通路的效果。
兩處data作為同一線路,同時為Memory輸入端提供可選地址
為寄存器入口提供選擇入口
存儲器->寄存器
寄存器->存儲器
是一對互斥操作可將兩者讀寫控制信號合並為一個
0->存儲器寫
1->寄存器寫
4)將控制通路的二路選擇器信號合並一處形成指令端口
這里有兩種布局方式a)硬布線b)微程序控制器
兩者各有優缺點
需要有指令周期這里就是簡單的讀寫周期用clock+譯碼器就可構成
采用方案b將讀寫,li/Memory,li/Regs端口進行分析
指令 | 讀寫r/w | li/memory | li/regs | 指令序號 |
立即數->memory | 0 | 0 | 0 | 1 |
立即數->regis | 1 | 0 | 0 | 2 |
memory->regis | 1 | 1 | 0 | 3 |
regis->memory | 0 | 0 | 1 | 4 |
三位二進制控制信號可以指定8種操作其中很多操作相互重疊只取其中一個就好
5)編寫微指令控制器
ROM中存儲微指令
這樣就完成了數據傳送了
后續
可以發現圖中還有很多地址信號可以壓縮成一定長(S_R,w_a,address,data),度需要根據指令類型進行指令各個位置的數據的通路判斷。