硬體課程設計報告
risc模型機的設計
對所學計算機硬體課程進行系統化,進一步提高硬體設計及動手能力。
(1)選用使用頻率比較高的五條基本指令:mov、add、store、load、jmp。
(2)定址方式採用暫存器定址及直接定址兩種方式。
(3)指令格式採用單字長及雙字長兩種格式。
(4)設計不採用微程式,在cpld中設計控制邏輯。
單字長指令格式為:
操作碼 rs
rd
雙字長指令格式為:
操作碼 rs
rdaddr
其中rs、rd為不同狀態,則選中不同的暫存器:
rs或rd
暫存器 00
01 10
11 r0 r1
r2 ac
指令系統如下:
mov rs, rd
add rs, rd
jmp rs
load [addr], rd
store rs, [addr]
mov,add,jmp三條指令為單週期執行完成。store,load兩條指令為兩週期執行完成,addr為存或取數的直接位址。第一機器週期完成取操作碼、作標記;第二機器週期完成取直接位址並完成取數或存數。
圖中pld模組用able語言設計來實現,它是用來產生各部件的控制訊號。其餘模組根據裝置上提供的資源用硬佈線來構成。
1.實驗步驟 (
1)在ispdesignexpert
系統中建立 (
2)按所給的接線圖連線線路。
(3)用所設計的指令系統,編寫一段機器指令程式。
(4)執行cmpp20進行聯機,將上述程式裝載到實驗系統的ram中。
(5)將時序單元的stop開關撥至run狀態,step開關撥至step狀態,通過按start微動開關,來單步機器指令,可通過位址顯示燈檢查指令執行的位址,執行完後檢查ram中的運算結果。
實驗中若將時序單元(
stateunit)中的φ接至訊號源單元(signalunit)的h23上則可用來單步執行機器指令操作;若將φ接至kk2+上則可單步執行每個節拍來除錯實驗程式,其方法是將step開關撥至exec狀態後,按一下start啟動鍵,然後每按動一次kk2鍵產生乙個節拍。
(6)聯機執行程式時,進入軟體介面,裝載機器指令後,選擇risc通路圖,按相應功能鍵即可聯機執行、監控、除錯程式。
2. cpld晶元設計
頂層模組電路圖
(top.sch)
3.risc接線圖
4.pld的abel程式
module pld
t1,t2,t3,t4 pin ;
i7,i6,i5,i4,i3,i2,i1,i0 pin ;
pc_b, alu_b ,cs,wr pin ;
ld,ldar,ldac,ldir,ldpc pin ;
clr, r0_b,r1_b,r2_b pin ;
lddr, ldr0,ldr1,ldr2 pin ;
mov,add,jmp,load,sta node istype 'com' ;
rs_b, ldri node ;
f node istype 'reg';
equations
mov=!i6&!i5&!i4; add=!i6&!i5&i4; jmp=!i6&i5&!i4;
load=!i6&i5&i4; sta=i6&!i5&!i4;
f.ar=clr; f.clk=!((load#sta)&t4); f:=!f.fb;
pc_b =(!t1&!(load&t3)&!(sta&t3))#f;
cs =(!t2&!f)#(!t1&!(t2&load)&!(t3&sta)&f);
ldir =t3&!f;
ldpc =!t2&!(jmp&t3);
lddr =(!add&t4);
alu_b =!(add&t4);
wr =!(t3&sta&f);
ld =!(jmp&(t3#t4))#f;
ldar =t2#load&t4&!f#sta&t4&!f;
rs_b =((!(mov&t3)&!(add&t3)&!(jmp&(t4#t3)))&!f)
#(!(sta&t3)&f);
ldri =(!(mov&t3)&!(add&t4)#f)&(!(load&t2)#!f);
r0_b =rs_b#i3#i2; r1_b=rs_b#i3#!i2;
r2_b =rs_b#!i3#i2;
ldac =ldri#!i1#!i0; ldr0=ldri#i1#i0;
ldr1 =ldri#i1#!i0; ldr2=ldri#!i1#i0;
end
5.除錯程式
各指令操作碼
(i6i5i4):
mov 000
add 001
jmp 010
load 011
sta 100
一段功能偽**:
$p00 load r0
$p01 08
$p02 mov r0 ac
$p03 add ro
$p04 store ro
$p05 09
$p06 mov r0 r1
$p07 jmp r1
$p08 01
$p09 ff
對應的機器碼實現:
$p0030
$p0108
$p0203
$p0314
$p0440
$p0509
$p0601
$p0725
$p0801
$p09ff 6.
除錯結果
說明:主要標出了變化的暫存器(或ram)和源(或目的)暫存器(或ram)
arir
pcalu
memr0
acdr
r1load [08] r00t1
0000
0030
0000
t230
t301
t401081
t108
01t2
01t3
02t4
mov r0 ac2t1
0203
t203
t303
01t4
add ac r03t1
0314
t214
t304
01t4
0202
store r0 [09]4t1
0440
t240
t305
4at4
05095t1
09t2
t306
02t4
mov r0 r16t1
0601
t201
t307
0202
t4jmp r17t1
0725
t225
t302
02t4
課程設計報告
c 程式設計 課程設計報告 一problem b 題意 輸出所有在給定範圍內的水仙花數 水仙花數是乙個三位數,它的各位數字的立方和等於其本身 解題思路 用while語句輸入多組資料,首先用for語句迴圈給定範圍的每乙個數,接著把個十百位數表示出來,用if語句進行判斷。細節處理 每一組資料的輸出要換行...
課程設計報告
1 水仙花數 是指乙個三位數,它的各位數字的立方和等於其本身,現在要求輸出所有在m和n範圍內的水仙花數。如下 include include include using namespace std int h 20 int main if h 0 0 else if h 0 0 cout 總結 這個...
課程設計報告總結
總結 從開始接觸這一新的 語言 到現在為止,差不多已經三四個月的時間。有喜有悲。喜 的是接觸到了新的東西 開闊了眼界 get到乙個新的技能 還有就是遇到了乙個好的老師 最重要的是讓我們知道自學的重要性。悲 的是熬夜敲 被一道題目 折磨 好幾天 還有就是,下學期我們不再開設這門課程,而我們學到的連皮毛...