計算機組成原理課程設計《設計一臺嵌入式CISC模型機》

代碼鏈接:@

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使用:

鏈接工程代碼

  1. 打開文件,進入maxplus2目錄下,篩選"應用程序",運行max2win.exe。
  2. 修改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.創建組合器件單元

  1. 微地址寄存器aa
  2. 控制寄存器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圖元

同樣的按上述步驟,生成後如下圖所示。

crom

(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.結語

仿真過程可能會慢點,耐心等等就好了。看着時序圖慢慢的生成,還是感覺不錯的,但是時序圖分析的結果和預期的結果是否一致,得需要去認真分析。計算機組成原理課設挺麻煩的,哪裏錯了需要一步一步的回去排查,考驗你的細心和耐心。
文章不做太多代碼的詳細解析,只是針對一些實踐操作講述,原理還得迴歸課本,希望對你有所幫助。

感謝閱讀

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章