久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3166|回復: 0
收起左側

計算機組成原理課程設計報告

[復制鏈接]
ID:108615 發表于 2016-3-14 17:24 | 顯示全部樓層 |閱讀模式
一.實驗目的
1.深入理解基本模型計算機的功能、組成知識
2.深入學習計算機各類典型指令的執行流程
3.學習微程序控制器的設計過程和相關技術,掌握LPM_ROM的配置方法
4.在掌握部件單元電路實驗的基礎上,進一步將單元電路組成系統,構造一臺基本模型計算機。
5.定義六條機器指令,并編寫相應的微程序,上機調試,掌握計算機整機概念。掌握微程序的設計方法,學會編寫二進制微指令代碼表。
6.通過熟悉較完整的計算機設計,全面了解并掌握微程序控制方式計算機的設計方法。
二.實驗原理
1.在部件實驗過程中,各不見單元的控制信號是認為模擬產生的,而本實驗將能在微過程控制下自動產生各部件單元控制信號,實現特定的功能。實驗中,計算機數據通路的控制將由微過程控制器來完成,CPU從內存中取出一條及其指令到指令執行結束的一個指令周期,全部由微指令組成的序列來完成,即一條機器指令對應一個微程序。
2.指令格式
(1)機器指令格式
采用寄存器直接尋址方式,其格式如下:
  
  
  
7   6   5   4
  
  
3   2
  
  
1   0
  
  
功能
  
  
操作碼(OP-CODE)
  
  
源寄存器(Rs)
  
  
目的寄存器(Rd)
  

其中寄存器地址規定如下
  
Rs或Rd地址
  
  
選定的寄存器
  
  
00
  
01
  
10
  
  
R0
  
R1
  
R2
  

模型計算機支持的指令如下
  
指令助記符
  
  
機器指令碼
  
  
Addr地址碼
  
  
功能說明
  
  IN
  OUT addr
  SUB addr
  AND addr
  OR   addr
  XOR addr
  MOV #num
  LDR addr
  
    00H
    10H             xxH
     20H             xxH
     30H             xxH
     40H             xxH
     50H             xxH
     60H             xxH
     70H             xxH
  
  “INPUT”中的數據 → R0
   [addr]  → OUT
   R0  - [addr] → R0
   R0  & [addr] → R0
   R0  | [addr] → R0
   R0  ^ [addr] → R0
   num → R0
   [addr] → R0
  
其中IN為單字節指令,其余為雙字節指令,xxH為addr對應的十六進制地址碼。為了向RAM中裝入程序和數據,檢查寫入是否正確,并能啟動程序執行,還需要設計三個控制臺微程序用于對控制器的控制。
1.存儲器讀操作(KRD):下載實驗程序后按總清除按鍵(CLR)后,控制臺SWA、SWB為“00”時,可對RAM連續手動讀入操作。
2.存儲器寫操作(KWE):下載實驗程序后按總清除按鍵(CLR)后,控制臺SWA、SWB為“01”時,可對RAM連續手動寫入操作。
3.啟動程序(RP):下載實驗程序后按總清除按鍵(CLR)后,控制臺SWA、SWB為“11”時,即可轉入到微地址“01”號“取指令”微指令,啟動程序運行。


控制臺微程序操作如下
  
SWB
  
  
SWA
  
  
控制臺指令
  
  
0
  
0
  
1
  
  
0
  
1
  
1
  
  
讀內存(KRD)
  
寫內存(KWE)
  
啟動程序(RP)
  

(2)微指令格式
24位微指令格式如下
  
24
  
  
23
  
  
22
  
  
21
  
  
20
  
  
19
  
  
18
  
  
17
  
  
16
  
  
15
  
  
14
  
  
13
  
  
12
  
  
11
  
  
10
  
  
9
  
  
8
  
  
7
  
  
6
  
  
5
  
  
4
  
  
3
  
  
2
  
  
1
  
  
S3
  
  
S2
  
  
S1
  
  
S0
  
  
M
  
  
Cn
  
  
WE
  
  
A9
  
  
A8
  
  
A[2]
  
  
A[1]
  
  
A[0]
  
  
B[2]
  
  
B[1]
  
  
B[0]
  
  
C[2]
  
  
C[1]
  
  
C[0]
  
  
uA5
  
  
uA4
  
  
uA3
  
  
uA2
  
  
uA1
  
  
uA0
  
其中A、B、C各個字段功能說明
(1)uA5-uA0:微程序控制器的微地址輸出信號,下一條要執行的微指令的微地址。
(2)S3、S2、S1、S0:由微程序控制器輸出地ALU操作選擇信號,以控制指令16種算術操作中的某一種操作。
(3)M:微程序控制輸出地ALU操作方式選擇信號。M=0時執行算術操作;M=1時執行邏輯操作。
(4)Cn:微程序控制器輸出的進位標志信號,Cn=0時表示ALU運算時最低位有進位,Cn=1時表示無進位。
(5)WE:微程序控制器輸出地RAM控制信號。當/CE=0時,WE=0為存儲器讀;WE=1為存儲器寫。
(6)A9、A8——譯碼后產生CS0、CS1、CS2信號,分別作為SW_B、RAM、LED的選通信號。
(7)A字段(15、14、13)——譯碼后產生與總線相連接的各單元的輸入選通信號。
(8)B字段(12、11、10)——譯碼后產生與總線相連接的各單元的輸出選通信號。
(9)C字段(9、8、7)——譯碼后產生分支判斷測試信號P(1)~P(4)和LDPC信號。
系統涉及到的微程序流程見圖xx。當執行“取指令”微指令時,該微指令的判斷測試字段微P(1)測試。由于“取指令”微指令是所有微程序都使用的公共微指令,因此P(1)的測試結果出現多路分支。 用指令寄存器的高4位(IR7-IR4)作為測試條件,出現5路分支,占用5各固定地址單元。
控制臺操作為P(4)測試,它以控制臺信號SWB、SWA作為測試條件,出現了3路分支,占用3個固定位地址單元。當分支位地址單元固定后,剩下的其他地方就可以一條微指令占用控制存儲器的一個微地址單元,隨意填寫。
簡而言之:
M:運算模式選擇,0:算術運算;1:邏輯運算
Cn:進位標志位,0:最低位有進位;1:無進位
WE:RAM寫使能信號,0:RAM讀使能;1:RAM寫使能

A9 A8:
(00)b:IN→BUS;
(01)b:RAM→BUS;
(10)b:BUS→OUT;

A:
(001)b:BUS→Rx(匯編指令中I1 I0指明寄存器地址)
(010)b:BUS→DR1
(011)b:BUS→DR2
(100)b:BUS→IR(指令寄存器)
(101)b:BUS→PC
(110)b:BUS→AR(地址寄存器)

B:
(001)b:Rx→BUS(匯編指令中I3 I2指明寄存器地址)
(010)b:Rx→BUS(匯編指令中I1 I0指明寄存器地址)
(011)b:
(100)b:
(101)b:ALU→BUS
(110)b:PC→BUS

C:
(001)b:測試匯編指令,跳轉到相應微程序首地址
(010)b:
(011)b:
(100)b:測試控制臺輸入狀態,跳轉到控制用的微程序首地址
(101)b:
(110)b:PC+1→PC

當全部微程序設計完畢后,應將每條微指令代碼化:
  
微地址
  
  
微指令
  
  S3  S2 S1 S0 M CN WE A9 A8
  
  
A
  
  
B
  
  
C
  
  
uA5——uA0
  
  
00
  
  
018110
  
  0   0  0  0   0  0  0   1  1
  
  
000
  
  
000
  
  
100
  
  
010000
  
  
01
  
  
01ED82
  
  0   0  0  0   0  0  0  1  1
  
  
110
  
  
110
  
  
110
  
  
000010
  
  
02
  
  
00C048
  
  0   0  0  0   0  0  0   0  1
  
  
100
  
  
000
  
  
001
  
  
001000
  
  
03
  
  
000000
  
   
  
  
  
  
  
  
  
  
  
  
04
  
  
000000
  
   
  
  
  
  
  
  
  
  
  
  
05
  
  
000000
  
   
  
  
  
  
  
  
  
  
  
  
06
  
  
000000
  
   
  
  
  
  
  
  
  
  
  
  
07
  
  
000000
  
   
  
  
  
  
  
  
  
  
  
  
10
  
  
001001
  
  0   0  0  0   0  0  0   0  0
  
  
001
  
  
000
  
  
000
  
  
000001
  
  
11
  
  
01ED98
  
  0   0  0  0   0  0  0   1  1
  
  
110
  
  
110
  
  
110
  
  
011000
  
  
12
  
  
01ED9B
  
  0   0  0  0   0  0  0   1  1
  
  
110
  
  
110
  
  
110
  
  
011011
  
  
13
  
  
01ED9F
  
  0   0  0  0   0  0  0   1  1
  
  
110
  
  
110
  
  
110
  
  
011111
  
  
14
  
  
01EDA3
  
  0   0  0  0   0  0  0   1  1
  
  
110
  
  
110
  
  
110
  
  
100011
  
  
15
  
  
01EDA7
  
  0   0  0  0   0  0  0   1  1
  
  
110
  
  
110
  
  
110
  
  
100111
  
  
16
  
  
01EDAB
  
  0   0  0  0   0  0  0   1  1
  
  
110
  
  
110
  
  
110
  
  
101011
  
  
17
  
  
01EDAD
  
  0   0  0  0   0  0  0   1  1
  
  
110
  
  
110
  
  
110
  
  
101101
  
  
20
  
  
01EDAF
  
  0   0  0  0   0  0  0   1  1
  
  
110
  
  
110
  
  
110
  
  
101111
  
  
21
  
  
000000
  
   
  
  
  
  
  
  
  
  
  
  
22
  
  
000000
  
   
  
  
  
  
  
  
  
  
  
  
23
  
  
018001
  
  0   0  0  0   0  0  0   1  1
  
  
000
  
  
000
  
  
000
  
  
000001
  
  
24
  
  
000000
  
   
  
  
  
  
  
  
  
  
  
  
25
  
  
000000
  
   
  
  
  
  
  
  
  
  
  
  
26
  
  
000000
  
   
  
  
  
  
  
  
  
  
  
  
27
  
  
000000
  
   
  
  
  
  
  
  
  
  
  
  
30
  
  
00E019
  
  0   0  0  0   0  0  0   0  1
  
  
110
  
  
000
  
  
000
  
  
011001
  
  
31
  
  
00A01A
  
  0   0  0  0   0  0  0   0  1
  
  
010
  
  
000
  
  
000
  
  
011010
  
  
32
  
  
010A01
  
  0   0  0  0   0  0  0   1  0
  
  
000
  
  
101
  
  
000
  
  
000001
  
  
33
  
  
00E01C
  
  0   0  0  0   0  0  0   0  1
  
  
110
  
  
000
  
  
000
  
  
011100
  
  
34
  
  
00B01D
  
  0   0  0  0   0  0  0   0  1
  
  
011
  
  
000
  
  
000
  
  
011101
  
  
35
  
  
01A21E
  
  0   0  0  0   0  0  0   1  1
  
  
010
  
  
001
  
  
000
  
  
011110
  
  
36
  
  
619A01
  
  0   1  1  0   0  0  0   1  1
  
  
011
  
  
101
  
  
000
  
  
000001
  
  
37
  
  
00E020
  
  0   0  0  0   0  0  0   0  1
  
  
110
  
  
000
  
  
000
  
  
100000
  
  
40
  
  
00B021
  
  0   0  0  0   0  0  0   0  1
  
  
011
  
  
000
  
  
000
  
  
100001
  
  
41
  
  
01A222
  
  0   0  0  0   0  0  0   1  1
  
  
010
  
  
001
  
  
000
  
  
100010
  
  
42
  
  
B99A01
  
  1   0  1  1   1  0  0   1  1
  
  
001
  
  
101
  
  
000
  
  
000001
  
  
43
  
  
00E024
  
  0   0  0  0   0  0  0   0  1
  
  
110
  
  
000
  
  
000
  
  
100100
  
  
44
  
  
00B025
  
  0   0  0  0   0  0  0   0  1
  
  
011
  
  
000
  
  
000
  
  
100101
  
  
45
  
  
01A226
  
  0   0  0  0   0  0  0   1  1
  
  
010
  
  
001
  
  
000
  
  
100110
  
  
46
  
  
E99A01
  
  1   1  1  0   1  0  0   1  1
  
  
001
  
  
101
  
  
000
  
  
000001
  
  
47
  
  
00E028
  
  0   0  0  0   0  0  0   0  1
  
  
110
  
  
000
  
  
000
  
  
101000
  
  
50
  
  
00B029
  
  0   0  0  0   0  0  0   0  1
  
  
011
  
  
000
  
  
000
  
  
101001
  
  
51
  
  
01A22A
  
  0   0  0  0  0  0   0  1  1
  
  
010
  
  
001
  
  
000
  
  
101010
  
  
52
  
  
699A01
  
  0   1  1  0   1  0  0   1  1
  
  
001
  
  
101
  
  
000
  
  
000001
  
  
53
  
  
009001
  
  0   0  0  0   0  0  0   0  1
  
  
001
  
  
000
  
  
000
  
  
000001
  
  
54
  
  
000000
  
   
  
  
  
  
  
  
  
  
  
  
55
  
  
00E02E
  
  0   0  0  0   0  0  0   0  1
  
  
110
  
  
000
  
  
000
  
  
101110
  
  
56
  
  
009001
  
  0   0  0  0   0  0  0   0  1
  
  
001
  
  
000
  
  
000
  
  
000001
  
  
57
  
  
009001
  
  0   0  0  0   0  0  0   0  1
  
  
001
  
  
000
  
  
000
  
  
000001
  
指令寄存器(IR):指令寄存器用來保存當前正在執行的一條指令。當執行一條指令時,先把它從內存取到緩沖寄存器中,然后再傳送至指令寄存器。指令劃分為操作碼和地址碼段,由二進制數構成,為了執行任何給定的指令,必須對操作碼進行測試“P(1)”,通過節拍脈沖T4的控制,以便識別所要求的操作。
指令譯碼器:根據指令中的操作碼強置微控制器單元的微地址,使下一條微指令指向相應的微程序首地址。
實驗中LCD顯示屏可以用來顯示模型機CPU中各組成單元的內容。將FPGA 配置文件下載到實驗臺后,按系統復位鍵,LCD液晶顯示屏即顯示CPU中各組成單元的內容。其功能說明如下:
  
指令名稱
  
  
作用
  
  
指令名稱
  
  
作用
  
  
IN
  
  
輸入單元INPUT
  
  
DR1
  
  
暫存器DR1
  
  
OUT
  
  
輸出單元OUPUT
  
  
DR2
  
  
暫存器DR2
  
  
ALU
  
  
算術邏輯單元
  
  
PC
  
  
程序計數器
  
  
BUS
  
  
內部數據總線
  
  
AR
  
  
地址寄存器
  
  
R0
  
  
寄存器R0
  
  
RAM
  
  
程序/數據存儲器
  
  
R1
  
  
寄存器R1
  
  
IR
  
  
指令寄存器
  
  
R2
  
  
寄存器R2
  
  
MC
  
  
微程序控制器
  

測試微程序的機器指令如下:
  
地址(16進制)
  
  
內容(16進制)
  
  
助記符
  
  
說明
  
  
00
  
  
00
  
  
IN
  
  
“INPUT”中的數據66H → R0
  
  
01
  
  
10
  
  
OUT  60H
  
  
[60H] → OUT
  
間接尋址,其中60H中數據為44H
  
  
02
  
  
60
  
  
03
  
  
20
  
  
SUB  61H
  
  
R0  - [61H] → R0
  
其中61H中數據為55H
  
  
04
  
  
61
  
  
05
  
  
30
  
  
AND  62H
  
  
R0  & [62H] → R0
  
其中62H中數據為01H
  
  
06
  
  
62
  
  
07
  
  
40
  
  
OR  63H
  
  
R0  | [63H] → R0
  
其中63H中數據為F0H
  
  
08
  
  
63
  
  
09
  
  
50
  
  
XOR  64H
  
  
R0  ^ [64H] → R0
  
其中64H中數據為00H
  
  
0A
  
  
64
  
  
0B
  
  
60
  
  
MOV  #33H
  
  
33H  → R0
  
立即數尋址方式,將33H送到R0
  
  
0C
  
  
33
  
  
0D
  
  
70
  
  
LDR  65H
  
  
[65H]  → R0
  
間接尋址方式,其中65H中數據為77H
  
  
0E
  
  
65
  

三.實驗步驟
1.微程序的輸入
根據二進制微指令表,編輯LPM_ROM配置文件,與實驗電路一同編譯后,得到FPGA的配置文件,將該文件下載到實驗系統。實驗板上的時鐘clock0選擇輸入頻率為1.5MHz。
2.輸入模型機的程序,這里采用自動寫入
(1)在QuartusII環境下,選擇LPM_RAM_DQ的存儲器初始文件(mif文件)為MyRam.mif文件
(2)將工程文件重新編譯后,下載到FPGA中,即完成LPM_RAM的配置。
(3)根據以上方法,復位信號RST(鍵8)=1;將控制開關SWB、SWA(鍵4、鍵3)設置為0、0,按鍵7,每兩個
     2次單步運行(產生2個正脈沖)。
3.執行程序
(1)按1次系統復位鍵8,并置鍵8為高電平,使CPU允許正常工作;
(2)控制開關(鍵4、鍵3)設置為SWB、SWA=1,1,處于程序執行方式,觀察圖6-1控制臺:PR(11);
(3)通過鍵2、鍵1輸入運算數據66H,按4次單步鍵7,產生2個脈沖,執行2條微指令,進入到圖6-1控制臺的RP(11),此時的微指令地址是“23”,微指令碼MC=008001;IN=66H
(4)再用鍵7產生1個脈沖,執行1條微指令,微程序流程進入圖6-2左的“運行微程序”的最上塊:此時PC=00,送地址寄存器AR=00,PC自動加1,PC=01,MC=00ED82,IN=66。
(5)鍵7產生1個脈沖,執行微指令MC=00C048(圖6-2),RAM中的第一條指令碼00進入BUS,再由BUS進入指令寄存器IR=00。鍵7再進1個脈沖,進入MC=001001,執行指令IN,送數IN→R0=66;
(6)鍵7產生1個脈沖,執行完IN指令后,返回到初始端,執行微指令MC=00ED82;
(7)仿照步驟4~6的操作方法,依次按按鍵7,觀察液晶顯示屏上檢測的CPU內部寄存器和總線上的數據變化。

四.實驗結果
針對設計的共8條指令,編寫測試機器碼來測試指令執行的正確性。將測試的機器碼連同模型機的電路下載到FPGA中,按照三中所敘述的步驟,觀察到液晶顯示屏上的主要數據變化如下
執行第一條指令IN后,R0=66H
執行第二條指令OUT 60H后,OUT=44H
執行第三條指令SUB 61H后,R0=11H
執行第四條指令AND 62H后,R0=01H
執行第五條指令OR 63H后,R0=F1H
執行第六條指令XOR 64H后,R0=F1H
執行第七條指令MOV #33H后,R0=33H
執行第八條指令LDR 65H后,R0=65H
從以上測試代碼執行的情況來看,微程序的設計沒有問題。
五.實驗中遇到的主要問題和分析解決問題的思路
實驗中首先遇到的一個問題是軟件的問題,在使用QuartusII將康芯的示意配置文件修改后下載到FPGA中,FPGA中的微程序運行一直不變,剛開始以為是自己的微程序問題,后來在檢查的時候發現FPGA的配置文件的生成時間跟電腦的時間不吻合,初步確定是配置文件沒有更新,后來在檢查編譯報告時發現提示該版本的Quartus不能生成編程文件。后來在裝有License的機器上將文件重新編譯一次,生成了真正的編程文件后,下載到FPGA中,執行微指令,正常。中間經常遇到的問題是試驗箱上的按鍵7按得太快的話,微程序的執行順序會變得不正常,這個問題還沒有解決。目前按鍵按得慢點的話不會出現這種問題。還有個問題,當指令條數超過8條后,微控制器給出的微程序入口地址就不是按照原先的規律遞增了,通過請教老師得知微控制器譯碼的指令不能超過8條,所以本設計連同原先的IN和OUT兩條指令,剩下只設計6條。
六.學習經驗和切身體會
通過本次課程設計,初步了解了CPU內部的各部分,能夠使用微程序的方式來完成簡單的CPU內部控制序列的設計,對微指令的理解更進了一步。提高了自己分析問題解決問題的能力,在遇到的QuartusII軟件License導致無法生成編程配置文件這個問題上通過一步步的分析,把原因定位到軟件的問題上,從而解決了問題。對教學實驗的有一個建議,就是每臺電腦上裝上殺毒軟件后再裝上還原卡。實驗中遇到不少問題都是機器的問題,例如軟件的License問題,用U盤把編輯好的工程文件拷貝到別的裝有License的機子上打開后發現文件夾被病毒莫名地隱藏了等等。

計算機組成原理課程設計報告.rar

15.72 KB, 下載次數: 8, 下載積分: 黑幣 -5

回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 四虎最新视频 | 国产一区二区在线看 | 7777奇米影视| 亚洲精品2 | 精品91| 欧美日韩亚洲一区 | 午夜小视频在线播放 | 久草资源 | 成人av免费看| 中文字幕国产 | 亚洲一区二区久久 | 久久aⅴ乱码一区二区三区 亚洲国产成人精品久久久国产成人一区 | 亚洲性网 | 毛片a| 91精品久久久久久久久久入口 | 中文在线一区二区 | 欧美日韩亚洲国产 | 毛片久久久 | 在线看亚洲 | 日日夜夜免费精品视频 | 久久极品 | 久久久91精品国产一区二区三区 | 亚洲综合在线视频 | 黄 色 毛片免费 | 天天躁人人躁人人躁狂躁 | 精品一区视频 | 性欧美精品一区二区三区在线播放 | 91中文字幕在线 | 91高清视频在线观看 | 日本高清视频在线播放 | 亚洲一区在线观看视频 | 黄色毛片在线播放 | 日韩在线不卡视频 | 国产一区欧美 | 美女黄18岁以下禁止观看 | 成人一区二区三区在线观看 | 不用播放器看的av | 国产高清视频一区二区 | 亚洲精品成人av久久 | 亚洲黄色网址视频 | 一区二区三区中文字幕 |