課程 計算機組成原理實驗 編程
實驗日期 2015 年 12 月 1 日 測試
1、實驗目的編碼
1.掌握時序發生器的組成原理。spa
2.掌握微程序控制器的組成原理。調試
2、實驗內容blog
1.實驗電路路由
(1)時序發生器電路io
本實驗所用的時序電路見圖4.1。電路由一個500KHz晶振、2片GAL22V10、一片74LS390組成,可產生兩級等間隔時序信號T1-T4、W1-W3,其中一個W由一輪T1-T4組成,至關於一個微指令週期或硬連線控制器的一拍,而一輪W1-W3能夠執行硬連線控制器的一條機器指令。另外,供數字邏輯實驗使用的時鐘由MF經一片74LS390分頻後產生。table
圖4.1 時序信號發生器原理
(2)微程序控制器電路
圖4.2微程序控制器電路
微地址轉移邏輯表達式:
A5=D5=μA5;
A4=D4=C•P2+μA4;
A3=D3=IR7•P1+μA3;
A2=D2=IR6•P1+SWC•P0+μA2;
A1=D1=IR5•P1+SWB•P0+μA1;
A0=D0=IR4•P1+SWA•P0+μA0。
2.一些關鍵技術
(1) 微指令格式
圖4.3微指令格式
(2)指令功能與格式
表4-1 指令功能與格式
名稱 |
助記符 |
功能 |
指令格式 |
||
IR7 IR6 IR5 IR4 |
IR3 IR2 |
IR1 IR0 |
|||
加法 |
ADD Rd, Rs |
Rd + Rs→Rd |
0 0 0 0 |
Rs1 Rs0 |
Rd1 Rd0 |
減法 |
SUB Rd, Rs |
Rd - Rs→Rd |
0 0 0 1 |
Rs1 Rs0 |
Rd1 Rd0 |
邏輯與 |
AND Rd, Rs |
Rd & Rs→Rd |
0 0 1 0 |
Rs1 Rs0 |
Rd1 Rd0 |
存數 |
STA Rd, [Rs] |
Rd→[Rs] |
0 0 1 1 |
Rs1 Rs0 |
Rd1 Rd0 |
取數 |
LDA Rd, [Rs] |
[Rs]→Rd |
0 1 0 0 |
Rs1 Rs0 |
Rd1 Rd0 |
條件轉移 |
JC R3 |
若C=1, 則R3→PC |
0 1 0 1 |
1 1 |
× × |
停機 |
STP |
暫停執行 |
0 1 1 0 |
× × |
× × |
輸出 |
OUT Rs |
Rs→DBUS |
0 1 1 1 |
Rs1 Rs0 |
× × |
(3)上述8條指令的微程序流程圖如圖4.4所示
圖4.4微程序流程圖
(4)微程序代碼表
表4-2 微程序代碼表
微指令 KT RRF WRF RRM WRM PR
當前微地址 00 0C 1E 06 07 0B 1D 0D 0E 0A 02 03 09 04 05 08 0F
下一微地址 08 1E 06 07 1E 1D 0D 0E 1D 02 03 02 04 05 04 0F 10
P0 1 . . . . . . . . . . . . . . . .
P1 . . . . . . . . . . . . . . . . 1
P2 . . . . . . . . . . . . . . . . .
備用 . . . . . . . . . . . . . . . . .
TJ . 1 . . 1 1 . 1 1 . 1 . 1 . 1 . .
LDIR . . . 1 . . . 1 . . . . . . . . 1
PC+1 . . . . . . . . . . . . . . . . .
LDPC# . 1 . . . 1 . . . . . . . . . 1
AR+1 . . . . . . . . . . . 1 . . 1 . .
LDAR# . 1 . . . 1 . . . 1 . . 1 . . . .
LDDR1 . . . . . . . . . . . . . . . . .
LDDR2 . . . . . . . . . . . . . . . . .
LDRi . . . . . . . . 1 . . . . . . . .
SW_BUS# . 1 1 . . 1 1 . 1 1 . . 1 1 . 1 .
RS_BUS# . . . . 1 . . . . . . . . . . . .
ALU_BUS# . . . . . . . . . . . . . . . . .
RAM_BUS# . . . . . . . . . . 1 . . . . . .
CER# . . . 1 . . . 1 . . . . . . . . 1
CEL# . . 1 . . . 1 . . . 1 . . 1 . . .
LR/W# . . 0 . . . 0 . . . 1 . . 0 . . .
Cn# . . . . . . . . . . . . . . . . .
M . . . . . . . . . . . . . . . . .
S0 . . . . . . . . . . . . . . . . .
S1 . . . . . . . . . . . . . . . . .
S2 . . . . . . . . . . . . . . . . .
S3 . . . . . . . . . . . . . . . . .
表4-2 微程序代碼表(續)
微指令 ADD SUB AND STA LDA JC STP OUT
當前微地址 10 18 11 19 12 1A 13 1B 14 1C 15 1F 16 17
下一微地址 18 0F 19 0F 1A 0F 1B 0F 1C 0F 0F 0F 0F 0F
P0 . . . . . . . . . . . . . .
P1 . . . . . . . . . . . . . .
P2 . . . . . . . . . . 1 . . .
備用 . . . . . . . . . . . . . .
TJ . . . . . . . . . . . . 1 1
LDIR . . . . . . . . . . . . . .
PC+1 . 1 . 1 . 1 . 1 . 1 1 . 1 1
LDPC# . . . . . . . . . . . 1 . .
AR+1 . . . . . . . . . . . . . .
LDAR# . . . . . 1 . 1 . . . . .
LDDR1 1 . 1 . 1 . 1 . . . . . . .
LDDR2 1 . 1 . 1 . . . . . . . . .
LDRi . 1 . 1 . 1 . . . 1 . . . .
SW_BUS# . . . . . . . . . . . . . .
RS_BUS# . . . . . . 1 . 1 . . 1 . 1
ALU_BUS# . 1 . 1 . 1 . 1 . . . . . .
RAM_BUS# . . . . . . . . . 1 . . . .
CER# . . . . . . . . . . . . . .
CEL# . . . . . . . 1 . 1 . . . .
LR/W# . . . . . . 0 . 1 . . . .
Cn# . . . 1 . . . . . . . . . .
M . 0 . 0 . 1 . 0 . . . . . .
S0 . 1 . 0 . 1 . 0 . . . . . .
S1 . 0 . 1 . 1 . 0 . . . . . .
S2 . 0 . 1 . 0 . 0 . . . . . .
S3 . 1 . 0 . 1 . 0 . . . . . .
注:後綴爲#的信號都是低電平有效信號,爲了在控存ROM中用「1」表示有效,這些信號在控制器中通過反相後送往數據通路。
3.實驗任務
(1)按實驗要求,鏈接實驗臺的電平開關K0-K15、時鐘信號源和微程序控制器。鏈接完成後應仔細檢查一遍,而後才能夠加上電源。
注意:本次實驗只作微程序控制器自己的實驗,故微程序控制器輸出的微命令信號與執行部件(數據通路)的連線不鏈接。
(2)觀察時序信號
用雙蹤示波器觀測時序發生器的輸入、輸出信號:MF、T1-T四、W1-W3。比較相位關係,畫出其波形圖,並標註出測量所得的脈衝頻率(f)、週期(T)及脈寬(tp)。觀察時須將DB、DP開關置爲0狀態。先按CLR#,而後按QD按鈕,則時序電路不停地在運行,直到按CLR# 按鈕爲止。
(3)熟悉微指令格式的定義,按此定義將圖4.4所示的所有微程序變換成二進制代碼,並列表登記。此表請在預習時完成。
(4)控制檯操做的功能由SWC、SWB、SWA三個二進制開關的狀態配合P0判斷來決定。用單拍(DP)方式執行控制檯操做微程序,觀察判別字段和微地址指示燈的顯示,跟蹤微指令的執行狀況,並與上表數據對照。
(5)深入理解0FH微指令的功能和P1測試的狀態條件(IR7-IR4),用二進制開關設置IR7-IR4的不一樣狀態,觀察ADD至OUT八條機器指令對應微程序的微命令信號,特別是微地址轉移的實現,並與上面表格進行對照。
3、實驗環境
軟件: WIN XP、串口調試助手軟件
硬件:1.微機 1臺
2.TEC-5實驗系統 1臺
3.數字雙蹤示波器 1臺
4.邏輯測試筆 1支
5.編程器 公用
4、實驗步驟和實驗結果
1.觀察時序信號波形
(1)接線表
時序電路 |
TJ |
SKIP |
固定電平 |
地 |
地 |
注意:接線表中的TJ是時序電路中的TJ,不是控制器中的TJ(該TJ由控制器產生,不能接輸入信號),切記勿接錯。
(2)時序信號的波形以下所示:
按順序依次是M,T1:
T2,T3:
T4,W1:
W2,W3:
2.控制檯操做微指令編碼測試
接線表以下:
控制器 |
C |
IR4 |
IR5 |
IR6 |
IR7 |
模擬開關 |
K0 |
K1 |
K2 |
K3 |
K4 |
時序電路 |
TJ |
SKIP |
固定電平 |
地 |
地 |
控制檯微代碼在58C65的D0—D7輸出,D0是最低位,D7是最高位,CM0是最低字節,CM3是最高字節。D0—D7對應於58C65的引腳十一、十二、1三、1五、1六、1七、1八、19。對於控存的輸出,有相應的32個指示燈指示。
(1)寫存儲器WRM工做模式
置DP = 1,DB =0,使實驗系統處於單拍狀態。置SWC = 0、SWB = 0、SWA = 1,實驗系統處於寫存儲器WRM工做模式。按CLR#按鈕,使實驗系統處於初始狀態,微地址爲00H,測得的微碼是00H 00H 00H 48H。按一次QD按鈕,微地址爲09H,測得的微碼是00H 08H 84H 04H。按一次QD按鈕,微地址爲04H,測得的微碼是01H 08H 00H 05H。按一次QD按鈕,微地址爲05H,測得的微碼是00H 00H 44H 04H。按一次QD按鈕,微地址爲04H。因爲微地址又返回04H,中止測試。
(2)讀存儲器RRM工做模式
置DP = 1,DB =0,使實驗系統處於單拍狀態。置SWC = 0、SWB = 一、SWA = 0,實驗系統處於讀存儲器RRM工做模式。按CLR#按鈕,使實驗系統處於初始狀態,微地址爲00H,測得的微碼是00H 00H 00H 48H。按一次QD按鈕,微地址爲0AH,測得的微碼是00H 08H 80H 02H。按一次QD按鈕,微地址爲02H,測得的微碼是03H 40H 04H 03H。按一次QD按鈕,微地址爲03H,測得的微碼是00H 00H 40H 02H。按一次QD按鈕,微地址爲02H。因爲微地址又返回02H,中止測試。
(3)寫寄存器WRF工做模式
置DP = 1,DB =0,使實驗系統處於單拍狀態。置SWC = 0、SWB = 一、SWA = 1,實驗系統處於寫寄存器WRF工做模式。按CLR#按鈕,使實驗系統處於初始狀態,微地址爲00H, 測得的微碼是00H 00H 00H 48H。按一次QD按鈕,微地址爲0BH,測得的微碼是00H 08H A4H 1DH。按一次QD按鈕,微地址爲1DH,測得的微碼是01H 08H 00H 0DH。按一次QD按鈕,微地址爲0DH,測得的微碼是00H 80H 0CH 0EH。按一次QD按鈕,微地址爲0EH,測得的微碼是00H 0CH 04H 1DH。按一次QD按鈕,微地址爲1DH。因爲微地址又返回1DH,中止測試。
(4)讀寄存器RRF工做模式
置DP = 1,DB =0,使實驗系統處於單拍狀態。置SWC = 一、SWB = 0、SWA = 0,實驗系統處於讀寄存器工做模式。按CLR#按鈕,使實驗系統處於初始狀態,微地址爲00H, 測得的微碼是00H 00H 00H 48H。按一次QD按鈕,微地址爲0CH,測得的微碼是00H 08H A4H 1EH。按一次QD按鈕,微地址爲1EH,測得的微碼是01H 08H 00H 06H。按一次QD按鈕,微地址爲06H,測得的微碼是00H 80H 08H 07H。按一次QD按鈕,微地址爲07H,測得的微碼是00H 10H 04H 1EH。按一次QD按鈕,微地址爲1EH。因爲微地址又返回1EH,中止測試。
(5)實驗系統處於PR工做模式
置DP = 1,DB =0,使實驗系統處於單拍狀態。置SWC=0、SWB = 0、SWA = 0,實驗系統處於PR工做模式。按CLR#按鈕,使實驗系統處於初始狀態,微地址µA5-µA0爲00H。按一次QD按鈕,微地址爲08H,測得的微碼是00H 08H 20H 0FH。按一次QD按鈕,微地址爲0FH,測得的微碼是00H 80H 08H 90H。因爲之後的微碼與機器指令有關,中止測試。
深入理解0FH微指令的功能和P1測試的狀態條件(IR7-IR4),用二進制開關設置IR7-IR4的不一樣狀態,觀察ADD至OUT八條機器指令對應微程序的微命令信號,特別是微地址轉移的實現。
0FH微指令的功能是根據程序計數器PC從存儲器取指令,送往指令寄存器IR。0FH微指令的下一微指令地址是10H。不過,10H只是一個表面的下一微地址,因爲該微指令中P1 = 1,所以實際的微指令地址的低4位要根據IR7—IR4肯定,實際微地址爲10H + IR7 IR6 IR5 IR4。
① 置DP = 1,DB =0,使實驗系統處於單拍狀態。選擇SWC = 0、SWB = 0、SWA = 0,按CLR#按鈕,使實驗系統處於初始狀態,微地址是00H。按一次QD按鈕,微地址變爲08H,微代碼爲00H 08H 20H 0FH。按一次QD按鈕,微地址變爲0FH,微代碼爲00H 80H 08H 90H。令K4(IR7) = 0,K3(IR6)=0,K2(IR5)= 0,K1(IR4)= 0,至關於ADD指令的操做碼。按一次QD按鈕,微地址變爲10H,微代碼是(00H 03H 00H 18H)。按一次QD按鈕,微地址變爲18H,微代碼是(90H 24H 10H 0FH)。按一次QD按鈕,微地址回到0FH。
② 置DP = 1,DB =0,使實驗系統處於單拍狀態。選擇SWC = 0、SWB = 0、SWA = 0,按CLR#按鈕,使實驗系統處於初始狀態,微地址是00H。按一次QD按鈕,微地址變爲08H,微代碼爲00H 08H 20H 0FH。按一次QD按鈕,微地址變爲0FH,微代碼爲00H 80H 08H 90H。令K4(IR7) = 0,K3(IR6)=0,K2(IR5)= 0,K1(IR4)= 1,至關於SUB指令的操做碼。按一次QD按鈕,微地址變爲11H,微代碼是(00H 03H 00H 19H)。按一次QD按鈕,微地址變爲19H,微代碼是(04H 24H 10H 0FH)。按一次QD按鈕,微地址回到0FH。
③ 置DP = 1,DB =0,使實驗系統處於單拍狀態。選擇SWC = 0、SWB = 0、SWA = 0,按CLR#按鈕,使實驗系統處於初始狀態,微地址是00H。按一次QD按鈕,微地址變爲08H,微代碼爲00H 08H 20H 0FH。按一次QD按鈕,微地址變爲0FH,微代碼爲00H 80H 08H 90H。令K4(IR7) = 0,K3(IR6)=0,K2(IR5)= 1,K1(IR4)= 0,至關於AND指令的操做碼。按一次QD按鈕,微地址變爲12H,微代碼是(00H 03H 00H 1AH)。按一次QD按鈕,微地址變爲1AH,微代碼是(B8H 24H 10H 0FH)。按一次QD按鈕,微地址回到0FH。
④ 置DP = 1,DB =0,使實驗系統處於單拍狀態。選擇SWC = 0、SWB = 0、SWA = 0,按CLR#按鈕,使實驗系統處於初始狀態,微地址是00H。按一次QD按鈕,微地址變爲08H,微代碼爲00H 08H 20H 0FH。按一次QD按鈕,微地址變爲0FH,微代碼爲00H 80H 08H 90H。令K4(IR7) = 0,K3(IR6)=0,K2(IR5)= 1,K1(IR4)= 1,至關於STA指令的操做碼。按一次QD按鈕,微地址變爲13H,微代碼是(00H 11H 80H 1BH)。按一次QD按鈕,微地址變爲1BH,微代碼是(01H 20H 10H 0FH)。按一次QD按鈕,微地址回到0FH。
⑤ 置DP = 1,DB =0,使實驗系統處於單拍狀態。選擇SWC = 0、SWB = 0、SWA = 0,按CLR#按鈕,使實驗系統處於初始狀態,微地址是00H。按一次QD按鈕,微地址變爲08H,微代碼爲00H 08H 20H 0FH。按一次QD按鈕,微地址變爲0FH,微代碼爲00H 80H 08H 90H。令K4(IR7) = 0,K3(IR6)=1,K2(IR5)= 0,K1(IR4)= 0,至關於LDA指令的操做碼。按一次QD按鈕,微地址變爲14H,微代碼是(00H 10H 80H 1CH)。按一次QD按鈕,微地址變爲1CH,微代碼是(00H 44H 10H 0FH)。按一次QD按鈕,微地址回到0FH。
⑥ 置DP = 1,DB =0,使實驗系統處於單拍狀態。選擇SWC = 0、SWB = 0、SWA = 0,按CLR#按鈕,使實驗系統處於初始狀態,微地址是00H。按一次QD按鈕,微地址變爲08H,微代碼爲00H 08H 20H 0FH。按一次QD按鈕,微地址變爲0FH,微代碼爲00H 80H 08H 90H。令K4(IR7) = 0,K3(IR6)=1,K2(IR5)= 0,K1(IR4)= 1,至關於JC指令的操做碼。按一次QD按鈕,微地址變爲15H,微代碼是(00H 00H 11H 0FH)。令K0(C)=0。按一次QD按鈕,微地址變爲0FH,微代碼爲00H 80H 08H 90H。按一次QD按鈕,微地址變爲15H。令K0(C)=1,按一次QD按鈕,微地址變爲1FH,微代碼是(00H 10H 20H 0FH)。按一次QD按鈕,微地址回到0FH。
⑦ 置DP = 1,DB =0,使實驗系統處於單拍狀態。選擇SWC = 0、SWB = 0、SWA = 0,按CLR#按鈕,使實驗系統處於初始狀態,微地址是00H。按一次QD按鈕,微地址變爲08H,微代碼爲00H 08H 20H 0FH。按一次QD按鈕,微地址變爲0FH,微代碼爲00H 80H 08H 90H。令K4(IR7) = 0,K3(IR6)=1,K2(IR5)= 1,K1(IR4)= 0,至關於STP指令的操做碼。按一次QD按鈕,微地址變爲16H,微代碼是(00H 00H 14H 0FH)。按一次QD按鈕,微地址回到0FH。
⑧ 置DP = 1,DB =0,使實驗系統處於單拍狀態。選擇SWC = 0、SWB = 0、SWA = 0,按CLR#按鈕,使實驗系統處於初始狀態,微地址是00H。按一次QD按鈕,微地址變爲08H,微代碼爲00H 08H 20H 0FH。按一次QD按鈕,微地址變爲0FH,微代碼爲00H 80H 08H 90H。令K4(IR7) = 0,K3(IR6)=1,K2(IR5)= 1,K1(IR4)= 1,至關於OUT指令的操做碼。按一次QD按鈕,微地址變爲17H,微代碼是(00H 10H 14H 0FH)。按一次QD按鈕,微地址回到0FH。
5、實驗結果與討論
(1)實驗任務(2)結果討論:
實驗得出的波形圖以下所示:
結論:測量結果與理論值相符。
(2)實驗任務中的(4)和(5)所測的控制存儲器代碼以下表:
微地址 |
CM3 |
CM2 |
CM1 |
CM0 |
00 |
00 |
00 |
00 |
48 |
01 |
00 |
00 |
00 |
00 |
02 |
03 |
40 |
04 |
03 |
03 |
00 |
00 |
40 |
02 |
04 |
01 |
08 |
00 |
05 |
05 |
00 |
00 |
44 |
04 |
06 |
00 |
80 |
08 |
07 |
07 |
00 |
10 |
04 |
1E |
08 |
00 |
08 |
20 |
0F |
09 |
00 |
08 |
84 |
04 |
0A |
00 |
08 |
80 |
02 |
0B |
00 |
08 |
A4 |
1D |
0C |
00 |
08 |
A4 |
1E |
0D |
00 |
80 |
0C |
0E |
0E |
00 |
0C |
04 |
1D |
0F |
00 |
80 |
08 |
90 |
10 |
00 |
03 |
00 |
18 |
11 |
00 |
03 |
00 |
19 |
12 |
00 |
03 |
00 |
1A |
13 |
00 |
11 |
80 |
1B |
14 |
00 |
10 |
80 |
1C |
15 |
00 |
00 |
11 |
0F |
16 |
00 |
00 |
14 |
0F |
17 |
00 |
10 |
14 |
0F |
18 |
90 |
24 |
10 |
0F |
19 |
64 |
24 |
10 |
0F |
1A |
B8 |
24 |
10 |
0F |
1B |
01 |
20 |
10 |
0F |
1C |
03 |
44 |
10 |
0F |
1D |
01 |
08 |
00 |
0D |
1E |
01 |
08 |
00 |
06 |
1F |
00 |
10 |
20 |
0F |
結論:測量結果與理論值相符。
6、思考題
請問圖4.4微程序流程圖中的0BH微地址是如何產生的?
答:根據微指令產生後繼微地址的多路轉移方式的邏輯表達式:
A5=D5=μA5; A4=D4=C•P2+μA4;
A3=D3=IR7•P1+μA3; A2=D2=IR6•P1+SWC•P0+μA2;
A1=D1=IR5•P1+SWB•P0+μA1; A0=D0=IR4•P1+SWA•P0+μA0。
而由此時的流程圖可知,WRF(011)指令,SWC、SEB、SWA分別爲0、一、1。
且P1=0,P0=1。
故A5=0,A4=0,A3=1,A2=0,A1=1,A0=1。因而,產生001011地址,即0BH微地址。
7、總結
(一) 本次實驗按時按量完成。
(二) 經過本次實驗我掌握時序發生器的組成原理和微程序控制器的組成原理。
(三) 在觀察時序信號波形時,若是出現紅色的波形,則按MATH按鈕便可消除。若是出現紅色的橫條或豎條線,則經過顯示按鈕來調節。
(四) 向AR送地址時地址指示燈AR不隨SW7-SW0數據的變化而改變。主要緣由是LDAR#接觸不良.同理向PC送地址時PC地址指示燈不隨SW7-SW0數據的變化而改變.主要緣由是LDPC#接觸不良。