計算機組成原理課設
代碼鏈接:@
NO1.課程設計選題:
任意輸入5個整數,輸出所有正數的平方和。
彙編代碼 :
MOV R3,0H ;R0累計和
MOV R1,5H ;R1計數器,從5開始降到0,計數5次
L1:TEST R1 ;判斷R1爲0則跳轉
JZ L2 ;跳轉L2
INT R2 ;R2輸入數據
TEST R2 ;測試R2是否爲負數
JB L1 ;如果小於0,跳轉L1繼續輸入
MUL R2,R2 ;R2自乘
ADD R2,R3 ;R3=R3+R2
DEC R1 ;計數減1
JMP L1
L2:OUT R3 ;輸出累加和
JMP L2
NO2.計組理論基礎:
總體設計
(1)嵌入式 CISI 模型機系統總體設計
(2)嵌入式 CISC 系統控制器的邏輯結構框圖
(3)指令系統設計
對Rs和Rd的規定
(4)微程序流程圖設計
(5)地址轉移邏輯
地址轉移邏輯電路是根據微程序流程圖3-2中的棱形框部分及多個分支微地址,利用微地址寄存器的異步置“1”端,實現微地址的多路轉移。由於微地址寄存器中的觸發器異步置“1”端低電平有效,與µA4~µA0對應的異步置“1”控制信號SE5~SE1的邏輯表達式爲:(µA5的異步置“1”端SE6實際未使用)。
(6)設計微指令格式和微指令代碼
CISC模型機系統使用的微指令採用全水平型微指令,字長爲26位,其中微命令字段爲18位,P字段爲2位,後繼微地址爲6位,其格式如下:
微地址 | LOAD | LDPC | LDAR | LDIR | LDRI | LDPSW | Rs_B | S2 | S1 | S0 | ALU_B | SW_B | LED_B | RD_D | CS_D | RAM_B | CS_I | ADDR_B | P1 | P2 | uA5~uA0 |
---|
微程序設計
NO3.maxplus2使用:
鏈接:工程代碼
- 打開文件,進入maxplus2目錄下,篩選"應用程序",運行max2win.exe。
- 修改license。選擇"Options"——“License Setup”——“Browse”,選中文件夾license文件裏的license.dat,點擊ok即可。
在文件夾裏新建一個工程文件,你的所有代碼和操作產生的文件,將會在這裏進行,這是重要的一步。這裏隨便建立一個"Project"文件夾作爲示例,推薦使用英文命名,以免後面產生不必要的麻煩。
(1)切換到maxplus2界面,新建一個文件。點擊"Flie"——“New”。
這裏以設計PC單元爲例,選擇"Text Editor file"。
(2)在文件夾裏的CISC文件找到pc.vhd,複製代碼到Text Editer文本框。
使用快捷鍵"ctrl+s"保存,按順序操作。
1.一定要選中project所在的盤。
2.雙擊maxplus2
3.選中project文件
4.選擇.vhd(必須是.vhd)
5.命名爲pc
6.點擊OK
之後會看到關鍵字將會被變成深藍色,說明保存成功了。
(3)將鼠標點擊在文本框中,使用快捷鍵"ctrl+shift+j",是的編譯條件指向當前文本。
(4)點擊編譯按鈕對代碼進行編譯。
編譯的結果,只要不是error就可以。如果是error,那就找代碼哪裏出錯了。
(5)完成後,點擊❌就可以了。以同樣的方法,分別創建你想要的器件單元就好了。基本代碼都在CISC裏面,你可以複製粘貼使用即可,部分代碼如果需要做修改,就根據自己的設計進行修改編譯,此處不做講解。
NO4.創建組合器件單元
- 微地址寄存器aa
- 控制寄存器COUNTROM
(1)新建圖元層
由於這三個是由各個單元組成的,所以創建的方式與上面會有所差別。同樣的新建一個文件,但不是上面的Text Editor file了,選擇Graphic Editor file,並且選擇.gdf。
(2)導入單元
新建後,右鍵空白處選擇Enter Symbol,第一步和第二步表示首先要確定是maxplus2文件夾,由於前面涉及到很多的單元,我就拿我之前做好的工程演示,自己做的一定要選前面的Project文件。第三步是在圖元庫裏找到你想要的單元,點擊ok後就可以在圖元層看到生成的器件樣子。如果前面編譯沒錯,這裏就會有你已經編譯好的單元 ,如果沒有,就回去找前面哪裏錯了。
(3)連接器件
這裏以aa作爲演示,將單元擺放好後進行連線。這些輸入輸出的引腳原件不是在我們project裏有的器件,屬於系統內部。同樣的按(2)操作:
1.雙擊prim路徑
2.選擇input或者output
這樣就會顯示這些引腳了。
(4)生成COUNTROM圖元
同樣的按上述步驟,生成後如下圖所示。
(5)生成頂層圖
步驟和上面一樣,只是這裏需要極大的耐心,要接對每一根線,接錯了後面的仿真就會有錯誤。
NO5.編譯仿真
編譯前最重要的一部就是將編譯對象指向當前的窗口,這是很多人容易忘記的,如果沒有指向當前的窗口,編譯的結果永遠是前面某個的代碼,新改的代碼依然沒被編譯。切記!!!
(1)選擇芯片驅動
“ctrl+shift+j"指向當前窗口後,點擊"Assign”——“Device”,選擇"EP1K30TC144-1",然後點擊ok。
(2)編譯頂層圖
點擊編譯按鈕,開始進行編譯。同樣的沒有error就沒事。
(3)仿真頂層圖
1.點MAX+plus II,選擇Wareform Editor
2.在Wareform Editor空白處右鍵選中Insert Node,在Node & Groups from SNF框中,找到你想要觀測的引腳,點擊ok就可以在Wareform Editor窗口看到引腳了。
3.在Node & Groups from SNF框中,引腳名不一定是我們想要的,我們可以在Wareform Editor窗口裏自定義名稱。還有就是你想看的一些參數沒有,這時你得去頂層圖添加引腳接到你想觀測的線上,然後編譯,在Node & Groups from SNF框中就可以看到你想要的引腳了。
4.設置仿真時序。點擊"File"——“End Time”,設置整個週期爲120us。
CLK默認200ns,CLR在200ns處爲低電平,其餘都是高電平。INBUS設置你想要的數據,進制數可以切換,我這裏調爲10進制,默認是16進制。
5.點擊仿真按鈕。就可以看到仿真時序圖了。
NO6.結語
仿真過程可能會慢點,耐心等等就好了。看着時序圖慢慢的生成,還是感覺不錯的,但是時序圖分析的結果和預期的結果是否一致,得需要去認真分析。計算機組成原理課設挺麻煩的,哪裏錯了需要一步一步的回去排查,考驗你的細心和耐心。
文章不做太多代碼的詳細解析,只是針對一些實踐操作講述,原理還得迴歸課本,希望對你有所幫助。