第一篇:計算機組成原理及實驗報告
中南大學
計算機組成原理及匯編實驗報告
姓 名: 代巍 學 號: 0909121615 專業班級: 信安1201 指導教師: 盛羽 學 院: 信息科學與工程學院
計算機組成原理實驗
實驗1 總線基本實驗
一、實驗目的
(1)掌握靜態存儲隨機存儲器RAM的工作特性(2)掌握靜態存儲隨機存儲器RAM的讀寫方法
二、實驗設備
74LS374(一片),74LS245(一片),74LS273(一片),靜態存儲器MEMORY 6116(一片),8位數據排線(一片),與門(兩片),與非門(一片),單脈沖(三片),開關若干,燈泡若干。
三、實驗原理
總線傳輸實驗框圖如圖4.1所示,它將幾種不同的設備掛至總線上,有存儲器、輸入 設備、輸出設備、寄存器。這些設備都需要有三態輸出控制,按照傳輸要求恰當有序的控制 它們,就可實現總線信息傳輸。
總線傳輸實驗框圖
總線基本實驗要求如下:根據掛在總線上的幾個基本部件,設計一個簡單的流程。(1)輸入設備將一個數輸入R0 寄存器。(2)輸入設備將另一個數輸入地址寄存器。
(3)將R0 寄存器中的數寫入到當前地址的存儲器中。(4)將當前地址的存儲器中的數用LED 數碼管顯示。
四、實驗步驟
(1)選擇實驗設備:根據實驗原理圖,將所需要的組件從組件列表中拖到實驗設計流程欄中。
搭建實驗流程:將已選擇的組件進行連線(鼠標從一個引腳的端點拖動到另一組件的引腳端,即完成連線)。搭建好的實驗流程圖如圖4.3所示。
(2)初始化各芯片的控制信號,仔細檢查無誤后點擊 【電源開/關】按鈕接通電源。
總線基本實驗流程圖
(3)實驗的具體操作步驟如圖4.2 所示。
首先應關閉所有三態門(SW-B=1,CS=1,R0-B=1,LED-B=1),并將關聯的信號置為:LDAR=0,LDR0=0,W/R(RAM)=1,W/R(LED)=1。然后參照如下操作流程,先給數據開關置數,打開數據輸出三態門,開關LDR0置1,并雙擊旁邊的單脈沖,使產生一個上升沿將數據輸入到R0 中;然后繼續給數據開關置數,開關LDAR置1,并雙擊旁邊的單脈沖,使產生一個上升沿將數據輸入到AR 中;關閉數據開關三態門,打開R0 寄存器輸出控制(開關LDR0和開關R0-B都置0),使存儲器處于寫狀態(W/R=0、CS=0)將R0 中的數寫到存儲器中;關閉存儲器片選,關閉R0 寄存器輸出(開關R0-B置0),使存儲器處于讀狀態(W/R=
1、CS=0)。
實驗步驟圖
五、實驗結果及結果分析
實驗截圖
六、實驗心得體會
通過本次本次實驗:
(1)了解了一些邏輯器的組成結構(2)掌握一些邏輯器的工作原理(3)驗證了各邏輯器件的組合功能
(4)了解了總線和各個器件之間的工作過程。
通過親自動手,能更好的理解邏輯器件的組成及功能。同時實驗中遇到各種問題,解決后,讓自己的知識更加牢固。同時也意識到自己的不足,需要更加的努力!
匯編語言實驗
實驗2 匯編語言編程實驗
一、實驗目的
(1)掌握循環程序的設計方法
(2)掌握匯編語言源程序的編輯、匯編、連接及調試過程。
(3)進一步熟悉利用DEBUG程序修改參數的方法,并檢查和驗證結果的正確性。(4)學會針對不同的問題,選用不同的組織循環的方法。
二、實驗設備
PC機及masm for windows軟件。
三、實驗要求
(1)編輯一個指定的匯編語言源程序,并對其進行匯編、連接和運行。(2)利用DEBUG進行程序調試,掌握常用命令的使用方法,觀察運行結果。
(3)匯編語言上機操作,掌握循環程序的過程和匯編實現原理,進一步熟練掌握DEBUG操作指令以及匯編語言源程序的編輯、匯編、連接及調試過程。
四、實驗內容
實驗一:編程計算1~100的和
實驗二:編程計算 S=1+2*3+3*4+4*5+……+N*(N+1),N由用戶輸入,將結果在屏幕顯示
實驗三:編程計算SUM=1!+2!+3!+4!+5!,將結果輸出,需要有子程序
五、程序源代碼
實驗一程序代碼如下: DATA SEGMENT SUM1 DW 0,13,10,'$'
DATA ENDS STACK1 SEGMENT S DB 1000 DUP(0)STACK1 ENDS CODE SEGMENT ASSUME CS:CODE, DS:DATA, SS:STACK1 START: MOV AX, DATA MOV DS, AX MOV AX, 0 MOV CX, 0
LOOP1: ADD AX, CX INC CX CMP CX, 101 JL LOOP1 MOV SUM1, AX lea di ,sum1 call cv mov ah,9 lea dx,sum1 int 21h jmp ok
cv:
push cx push dx xor cx,cx mov si,10 s0:
xor dx,dx inc cx div si push dx cmp ax,0 jnz s0 s1: pop dx add dl,“0”
mov byte ptr [di],dl inc di loop s1 mov al,20h s2:
cmp byte ptr [di],0 jz s3
cmp byte ptr [di],43h jz s3
mov byte ptr [di],al inc di jmp s2 s3: pop dx pop cx ret ok:
MOV AH,4CH INT 21H CODE ENDS END START
實驗二程序代碼如下: DATAS SEGMENT
s dw ?;此處輸入數據段代碼
n dw ?
DATAS ENDS STACKS SEGMENT
dw 64 dup(?);此處輸入堆棧段代碼 STACKS ENDS CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS START:
loop1:
clc
;此指令清除cf標志位cf=0
mov ah,1h
;通過給AH寄存器賦值,然后調用INT 21H指令,;計算機就會根據AH寄存器中的值執行相應的操作
;其中1H是鍵盤輸入并回顯,AL中有輸入字符
int 21h
cmp al,0dh;比較是不是回車鍵,不改變操作數,只改變標志位,若ZF=1,則表示兩數相等
je print;ZF=1,轉至標號處執 表示輸入完畢
cmp al,'0'
jz rotate;ZF=1,轉至標號處執
stc
;此指令設置cf為1 rotate:
rcl bx,1
;注意這里是帶進位左移,程序的思想所在 jmp loop1;無條件轉移 print:
mov n,bx
MOV AX,DATAS
MOV DS,AX
mov bx,0001h
mov dl,02h lop2:mov al,bl
inc dl;加1
mul dl;無符號數乘法AX=oprd*al
add bx,ax
cmp ax,n;與n比較
jna lop2;不高于轉移
mov s,bx
mov ch,4
mov cl,4 lop1:rol bx,cl
mov dl,bl
and dl,0Fh
cmp dl,09h
jbe next;低于等于轉移
add dl,7 next:add dl,30h
mov ah,2
int 21h
dec ch
jnz lop1;非零轉移
MOV AH,4CH
INT 21H CODES ENDS
END START 實驗三程序代碼如下:
DATA SEGMENT
OUTPUT_TIPS DB 10, 13, “1!+ 2!+ 3!+ 4!+ 5!=
NNN DW 1 DATA ENDS CODE SEGMENT
ASSUME CS:CODE, DS:DATA START:
MOV AX, DATA
MOV DS, AX
MOV BX, 2
;0、1 的階乘都是 1 LOP:
MOV AX, BX
MOV CX, AX
CALL FACTOR
;用遞歸方法計算階乘
$”
ADD AX, NNN
MOV NNN, AX
INC BX
CMP BX, 6
JNE LOP
MOV AX, NNN
DISP:
PUSH AX
MOV DX, OFFSET OUTPUT_TIPS
MOV AH, 9
;顯示字符串.INT 21H
POP AX
MOV BX, 10
MOV CX, 0 L1:
MOV DX, 0
DIV BX
PUSH DX
INC CX
AND AX, AX
JNZ L1 L2:
POP DX
ADD DL, 48
MOV AH, 2
INT 21H
LOOP L2 EXIT:
MOV AH, 4CH
INT 21H
FACTOR PROC NEAR
;階乘.DEC CX
;CX=2~8
CMP CX, 1
;=1 ?
JE
FACTOR_E
;為1就退出
PUSH CX
;非1壓棧保存
CALL FACTOR
;遞歸調用,把CX一次次的減一
POP CX
;彈出一個個遞減的數值
MUL CX
;乘到AX FACTOR_E:
RET
;AX=(2~8)!FACTOR ENDP
;簡潔明了,無與倫比 CODE ENDS
END START
六、運行結果
實驗一調試
實驗一運行結果
實驗二調試
實驗二運行結果
實驗三調試
實驗三運行結果
七、實驗總結
通過本次上機實驗,學習了數值轉換,循環,中斷,分支結構等知識點。在課堂中聽到的關于匯編語言中的循環和分支程序的知識點,我們將它實踐化了,使得我們更深一步的認識和理解了循環程序和分支程序。在實驗中,暴漏出來的問題就是,對于一些符號它所代表的是什么還是不熟悉,導致程序出現問題,因此,以后還要多看書,多練習,加強這方面的記憶。這次實驗所學到的印象最深的就是LOOP循環以及有符號數跳轉JLE。
總體上來講,有些知識點理解的還不到位,希望通過以后的練習能加強對這些知識點的理解。實驗過程中,遇到很多問題,比如程序一的編寫,基本上都是學習書本以及依靠書本多做題才編出來的,僅有的幾次上機實驗,要抓緊時間學習和交流,時間挺少的。在今后的學習和生活中,我們都需要相互學習、相互交流,共同進步。學習是一個循序漸進的過程。通過這次實驗,使我了解到運行調試程序的不易,今后一定更加努力,把程序做到最好!對于不足之處,會積極改正。掌握匯編語言程序編輯、匯編、連接、運行以及利用DEBUG調試程序的方法。加深對循環和分支程序結構的理解,掌握循環和分支結構程序設計的方法,熟練匯編語言程序上機調試的方法和過程。能夠獨立自主的編輯代碼解決一些小問題,對匯編有了初步的了解。但仍有很多需要學習的地方!
第二篇:計算機組成原理實驗報告
計算機科學與技術-計10計 算 機 組 成 原 理 實 驗 報姓
名:
學
號:
班
級:
指 導 老 師:
鄭
計算機科學與技術-計10
4一個上升沿,數據66H 被寫入W 寄存器。3)將11H寫入R0寄存器
①K23-K16開關置零,按[RST]鈕,按[TV/ME]鍵三次,進入“Hand......”手動狀態。②二進制開關K23-K16用于DBUS[7:0]的數據輸入,置數據11H
置控制信號為:
③按住STEP脈沖鍵,CK由高變低,觀察現象;放開STEP鍵,CK由低變高,產生一個上升沿,數據11H 被寫入R0 寄存器。4)將22H寫入R1寄存器
①K23-K16開關置零,按[RST]鈕,按[TV/ME]鍵三次,進入“Hand......”手動狀態。②二進制開關K23-K16用于DBUS[7:0]的數據輸入,置數據22H
置控制信號為:
③按住STEP脈沖鍵,CK由高變低,觀察現象;放開STEP鍵,CK由低變高,產生一個上升沿,數據22H被寫入R1 寄存器。5)將33H寫入R2寄存器
①K23-K16開關置零,按[RST]鈕,按[TV/ME]鍵三次,進入“Hand......”手動狀態。②二進制開關K23-K16用于DBUS[7:0]的數據輸入,置數據33H
置控制信號為:
③按住STEP脈沖鍵,CK由高變低,觀察現象;放開STEP鍵,CK由低變高,產生一個上升沿,數據33H被寫入R2 寄存器。
計算機科學與技術-計104
這時寄存器R3 的紅色輸出指示燈亮,R3 寄存器的數據送上數據總線。此時數據總線指示燈L7...L0為: 01000100.將K11(RRD)置為1,關閉R3 寄存器輸出。11)將12H寫入MAR寄存器
①K23-K16開關置零,按[RST]鈕,按[TV/ME]鍵三次,進入“Hand......”手動狀態。②二進制開關K23-K16用于DBUS[7:0]的數據輸入,置數據12H
置控制信號為:
③按住STEP脈沖鍵,CK由高變低,觀察現象;放開STEP鍵,CK由低變高,產生一個上升沿,數據12H被寫入MAR寄存器。12)將34H寫入ST寄存器
①K23-K16開關置零,按[RST]鈕,按[TV/ME]鍵三次,進入“Hand......”手動狀態。②二進制開關K23-K16用于DBUS[7:0]的數據輸入,置數據34H
置控制信號為:
③按住STEP脈沖鍵,CK由高變低,觀察現象;放開STEP鍵,CK由低變高,產生一個上升沿,數據34H被寫入ST 寄存器。13)將56H寫入OUT寄存器
①K23-K16開關置零,按[RST]鈕,按[TV/ME]鍵三次,進入“Hand......”手動狀態。②二進制開關K23-K16用于DBUS[7:0]的數據輸入,置數據56H
置控制信號為:
計算機科學與技術-計10
4(2)掌握簡單運算器的數據傳送通道。
(3)能夠按給定數據,完成實驗指定的算術/邏輯運算。
4.實驗步驟:
①將55H寫入A寄存器
二進制開關K23-K16用于DBUS[7:0]的數據輸入,置數據55H
置控制信號為:
按住STEP脈沖鍵,CK由高變低,這時寄存器A的黃色選擇指示燈亮,表明選擇A寄存器。放開STEP鍵,CK由低變高,產生一個上升沿,數據55H被寫入A寄存器。
②將33H寫入W寄存器
二進制開關K23-K16用于DBUS[7:0]的數據輸入,置數據33H
置控制信號為:
按住STEP脈沖鍵,CK由高變低,這時寄存器W 的黃色選擇指示燈亮,表明選擇W寄存器。放開STEP 鍵,CK 由低變高,產生一個上升沿,數據33H 被寫入W 寄存器。
③置下表的控制信號,檢驗運算器的運算結果
計算機科學與技術-計10
4實驗2:移位實驗 將55H寫入A寄存器
二進制開關K23-K16用于DBUS[7:0]的數據輸入,置數據55H
置控制信號為:
按住STEP脈沖鍵,CK由高變低,這時寄存器A的黃色選擇指示燈亮,表明選擇A寄存器。放開STEP鍵,CK由低變高,產生一個上升沿,數據55H被寫入A寄存器。
S2S1S0=111 時運算器結果為寄存器A內容
5.實驗結果與分析:
移位與輸出門是否打開無關,無論運算器結果如何,移位門都會給出移位結果。但究竟把那一個結果送數據總線由X2X1X0輸出選擇決定。表中第一行,A中寄存器值為55H=01010101,L為左移結果為:10101010B=AAH,D為直通輸入結果為原值,R為右
計算機科學與技術-計10
4(2)按圖3—6連接實驗線路,仔細查線無誤后接通源。
4.實驗結果與分析:
① 編程
計算機科學與技術-計104
MAO清零,從而明確本機的運行入口微地址為000000(二進制)。
D.按動“START”鍵,啟動時序電路,則每按動一次啟動鍵,讀出一條微指令后停機,此時實驗臺上的微地址顯示燈和微命令顯示燈將顯示所讀出的一條指令。注意:在當前條件下,可將“MICRO—CONTROLLER”單元的sE6一sEl接至“SWITCH UNIT”中的S3—Cn對應二進制開關上,可通過強置端sEl一sE6人為設置分支地址。將SEI—SE6對應二進制開關量為“1”,當需要人為設置分支地址時,將某個或幾個二進制開關置“0”,相應的微地址位即被強置為“l”,從而改變下一條微指令的地址。(二進制開關置為“0”,相應的微地址位將被強置為“l”)④ 連續運行
A.將編程開關置為“RUN(運行)”狀態。
B.將實驗板的單步開關“STEP”置為“EXEC”狀態。
C.使CLR從l→0→l,此時微地址寄存器清“0”,從而給出取指微指令的入口地址為 000000(二進制)。
D.啟動時序電路,則可連續讀出微指令。
5.實驗注意事項:
此次實驗主要要掌握微程序控制器的組成、工作原理;明確微程序、微指令、微命令的概念;掌握微指令、微程序的設計及調試方法;通過單步方式執行若干條微指令深入理解微程序控制器的工作原理;用邏輯分析儀測試微程序控制器指令的轉移,微程序、微指
第三篇:計算機組成原理實驗報告
課程名稱:計算機組成原理學
院:計算機科學與工程專
業:計算機科學與技術指導教師:廖建明學生姓名:林怡學
號:實驗成績:日
期:實驗報告
2012060020023
2014 年 11
日月
電 子 科 技 大 學
實
驗
報
告
一、實驗一:ALU設計實驗
二、實驗室名稱:主樓A2-411 實驗學時:4
三、實驗目的:
1.熟悉ALU的工作原理。2.掌握多個ALU的擴展方法。
3.掌握用硬件描述語言設計ALU的方法。
4.掌握數據的暫存和分時傳送的方法。
四、實驗內容
設計一個8bit ALU,實現兩個8bit二進制數的算術運算和邏輯運算, ★算術運算(加、減);★邏輯運算(與、或、置
1、清0);實驗要求:
1.設計一個4bitALU模塊;
2.如何用4bitALU實現8bitALU的功能?
3.數據的輸入/輸出
輸入: 只有8個開關,如何分時輸入數據?
輸出: 8個指示燈(數據),1個指示燈(進位/借位)
4.控制端輸入
模式控制:(算術 / 邏輯)
運算方式控制:(+、-/ and、or、set、clr)
分時控制位:(輸入數據的使能端)
數據輸入控制脈沖:
五、實驗原理: 實驗原理圖如圖一:
圖一
由圖可知,ALU模塊有四個輸入,分別為寄存器A、B,模式控制端M與邏輯/算術運算方式控制端SE。輸出為四位的D,同時還有一個進位/借位端cout。
其中M端為一位的輸入,當M=1時,模塊將用于邏輯運算,而M=0時,模塊將進行算術運算。而兩種運算模式下,兩位的輸入端SE的不同的值又將控制+、-/ and、or、set、clr等不同的運算方式。所以可以考慮采用if..else..結合case模塊的方式來實現always塊中的功能描述。
六、實驗器材:
PC機、Xilinx ise7.1 集成開發壞境、pq208芯片一塊
七、實驗步驟:
1、在Xilinx ise7.1 集成開發壞境中輸入實驗代碼,保存并驗證其正確性;
2、將模塊中使用到的開關與pq208的各個引腳的標號對應起來,并在xilinx中將其設置好;
3、將所需的開關與pq208的對應引腳用電線連接起來,之后將驗證正確的代碼下載到pq208芯片中;
4、根據實驗要求操作各開關,觀察指示燈的結果以驗證實驗的正確性;
實驗代碼如下:
module alu(A,B,M,SE,D,cout);input [3:0] A;input [3:0] B;input M;input [1:0] SE;output [3:0] D;output cout;reg [3:0] D;reg cout;always @(A,B,M,SE)begin
// 邏輯運算模式 if(M)begin case(SE)2'b00:D=A&B;//與運算 2'b01:D=A|B;//或運算 2'b10:D=4'b1111;//置1 2'b11:D=4'b0000;//置0 endcase end
else //算術運算模式
begin
case(SE)
2'b00: {cout,D}=A+B;//加法運算 2'b01:{cout,D}=A+B;2'b10: {cout,D}=A-B;//減法運算 2'b11:{cout,D}=A-B;endcase end end endmodule
I/O 端口與指示燈的連接方式: A[3:0] 與K1,K2,K3,K4相連,B[3:0]與K5,K6,K7,K8相連,M與K10相連,SE與K12,K11相連,cout與L5相連,輸出端D[3:0]分別與L4,L3,L2,L1相連。
八、實驗數據及結果分析:
電路圖如圖二、三所示:
圖二
圖三 圖三中,當輸入為0-1時,發現指示燈結果如為D[3:0]=1111 且cout=1。分析后可知,這個結果是由于-1的四位二進制補碼表示為1111。
九、總結、改進建議及心得體會:
通過本次實驗,我不僅完成了Verilog HDL語言從書本知識到實踐的轉化,同時也加深了對計算機CPU中的ALU模塊的各種功能的了解。把自己設計的ALU模塊加載到pq208芯片上進行仿真驗證,非常好地鍛煉了我的動手能力,看到自己寫出的代碼能夠有實質性的成果展示也更好的調動了我的積極性。
總體來說,這次實驗是非常有收獲的。
電 子 科 技 大 學
實
驗
報
告
一、實驗二:存貯器設計實驗
二、實驗室名稱:主樓A2-411 實驗學時:4
三、實驗目的:
1.掌握存貯器的讀寫控制方法,(讀信號、寫信號、片選信號)。2.掌握存儲器的字擴展和位擴展方法。3.掌握用硬件描述語言設計存貯器的方法。4.了解存儲器種類、工作原理和特點。
四、實驗原理: 實驗原理圖如下圖:
分析上圖可知,我們要把16*4的存儲器擴展為一個32*8的存儲器模塊,總共需要4塊16*4的存儲器模塊。我們首先需要把兩塊16*4的模塊連接在一起擴展為一塊16*8的存儲器模塊,再對兩塊16*8的模塊進行字擴展,最終把它們擴展為一塊32*8的靜態存儲器模塊。
五、實驗內容:
用字擴展和位擴展的方式,設計一個32X8的靜態存儲器,能夠對其隨機的讀寫。其中:32表示地址的尋址空間大小,8表示數據單元的位數。要求:
1.設計一個16X4的可隨機讀寫的存儲器模塊。
2.利用16X4存儲器模塊,如何通過級連實現32X8的存儲器的功能。3.數據、地址的輸入/輸出
數據/地址的輸入:開關控制。
數據的輸出:指示燈顯示。4.控制信號
片選:低有效。
讀:低有效。
寫:上升沿有效。
六、實驗器材:
PC機、Xilinx ise7.1 集成開發壞境、pq208芯片一塊
七、實驗步驟:
1、把兩塊16*4的存儲器模塊位擴展為16*8的存儲器模塊;
2、繼續把兩塊16*8的存儲器模塊字擴展為一塊32*8的存儲器模塊;
3、在Xilinx ise7.1 集成開發壞境中把寫好的實驗代碼保存;
4、將模塊中使用到的開關與pq208的各個引腳的標號對應起來,將所需的開關與pq208的對應引腳用電線連接起來,之后將驗證正確的代碼下載到pq208芯片中;
5、根據實驗要求操作各開關,對存儲器進行讀寫操作并觀察指示燈的結果以驗證實驗的正確性;
實驗代碼如下: 16*4存儲器設計模塊
module ram16_4(din,addr,wr,rd,cs,dout);
parameter D_WIDTH = 4;
parameter A_WIDTH = 4;
input[D_WIDTH-1:0] din;
//D[3:0] input[A_WIDTH-1:0] addr;
//AD[3:0] input wr,rd,cs;output[D_WIDTH-1:0]dout;
reg [D_WIDTH-1:0] ram [(2**A_WIDTH)-1:0];//16*4
wire [D_WIDTH-1:0] dout;
always @(posedge wr)
if(!cs)
ram[addr] <= din;
assign dout =(!(rd||cs))?ram[addr]:4'bzzzz;
//rd cs同時為低電平ram[addr] endmodule 16*8存儲器設計模塊
module ram16_8(d,ad,wr,rd,cs,dout);
input[4:0] ad;input[7:0] d;input wr,rd,cs;output[7:0] dout;ram16_4 m1(.din(d[3:0]),.addr(ad[3:0]),.wr(wr),.rd(rd),.cs(ad[4]|cs),.dout(dout[3:0]));ram16_4 m2(.din(d[7:4]),.addr(ad[3:0]),.wr(wr),.rd(rd),.cs(~ad[4]|cs),.dout(dout[7:4]));endmodule
32*8存儲器設計模塊
module ram32_8(d,ad,wr,rd,cs,dout);
input[4:0] ad;input[7:0] d;input wr,rd,cs;output[7:0] dout;ram16_8 ram16_8_1(.d(d[3:0]),.ad(ad[3:0]),.wr(wr),.rd(rd),.cs(ad[4]|cs),.dout(dout[3:0]));ram16_8 ram16_8_2(.d(d[7:4]),.ad(ad[3:0]),.wr(wr),.rd(rd),.cs(~ad[4]|cs),.dout(dout[7:4]));endmodule
八、實驗數據及結果分析:
實驗結果圖如下:
九、總結、改進建議及心得體會:
本實驗對存儲器模塊進行了字擴展和位擴展,將16*4的模塊擴展為32*8的存儲器模塊,加深了我對于存儲器擴展這部分知識的理解,同時讓我對于Verilog HDL語言中的模塊調用這部分的機制有了更深入的體會。
在驗證實驗結果的環節,自己動手操作對存儲器模塊進行讀寫操作也使我對于存儲器這個計算機的重要組成部分有了一個更加感性的認識,對于它的尋址方式,片選邏輯等機制都有了更深層次的掌握。
第四篇:計算機組成原理--實驗報告
實驗一 寄存器實驗
實驗目的:了解模型機中各種寄存器結構、工作原理及其控制方法。
實驗要求:利用CPTH 實驗儀上的K16..K23 開關做為DBUS 的數據,其它開關做為控制信號,將數據寫入寄存器,這些寄存器包括累加器A,工作寄存器W,數據寄存器組R0..R3,地址寄存器MAR,堆棧寄存器ST,輸出寄存器OUT。
實驗電路:寄存器的作用是用于保存數據的CPTH 用74HC574 來構成寄存器。74HC574 的功能如下:
系統清零和手動狀態設定:K23-K16開關置零,按[RST]鈕,按[TV/ME]鍵三次,進入“Hand......”手動狀態。在后面實驗中實驗模式為手動的操作方法不再詳述.
將55H寫入A寄存器
二進制開關K23-K16用于DBUS[7:0]的數據輸入,置數據55H
置控制信號為:
按住STEP脈沖鍵,CK由高變低,這時寄存器A的黃色選擇指示燈亮,表明選擇A寄存器。放開STEP鍵,CK由低變高,產生一個上升沿,數據55H被寫入A寄存器。將66H寫入W寄存器
二進制開關K23-K16用于DBUS[7:0]的數據輸入,置數據66H
將11H、22H、33H、44H寫入R0、R1、R2、R3寄存器將 二進制開關K23-K16,置數據分別為11H、22H、33H、44H 置控制信號為:
K11、K10為10,K1、k0分別為00、01、10、11
并分別按住STEP 脈沖鍵,CK 由高變低,這時寄存器R0、R1R2R3 的黃色選擇指示燈分別亮,放開STEP鍵,CK由低變高,產生一個上升沿,數據被寫入寄存器。注意觀察:
1.數據是在放開STEP鍵后改變的,也就是CK的上升沿數據被打入。
2.K1(SB),K0(SA)用于選擇寄存器。
讀寄存器
置控制信號為:K11、K10為01,K1、K0為00時,讀R0,這時寄存器R0 的紅色輸出指示燈亮,R0 寄存器的數據送上數據總線。此時數據總線指示燈L7...L0為:00010001.00110011.01000100.寄存器MAR原理圖
連接線表 寄存器OUT原理圖
寄存器MAR,ST,OUT寫工作波形圖
K14(MAROE)為0,MAR寄存器中的地址輸出,MAR 紅色輸出指示燈亮。將K14(MAROE)置為1,關閉MAR輸出。
將34H寫入ST寄存器
二進制開關K23-K16用于DBUS[7:0]的數據輸入,置數據34H
置控制信號為:
按住STEP 脈沖鍵,CK 由高變低,這時寄存器ST 的黃色選擇指示燈亮,表明選擇ST 寄存器。放開STEP鍵,CK由低變高,產生一個上升沿,數據34H被寫入ST 寄存器。將56H寫入OUT寄存器
二進制開關K23-K16用于DBUS[7:0]的數據輸入,置數據56H
置控制信號為:
1實驗電路:CPTH 中的運算器由一片CPLD實現,有8 種運算,通過S2,S1,S0 來選擇,運算數據由寄存器A及寄存器W 給出,運算結果輸出到直通門D。
連接線表
按住STEP脈沖鍵,CK由高變低,這時寄存器W 的黃色選擇指示燈亮,表明選擇W寄存器。放開STEP 鍵,CK 由低變高,產生一個上升沿,數據33H 被寫入W 寄存器。
置下表的控制信號,檢驗運算器的運算結果
注意觀察:
運算器在加上控制信號及數據(A,W)后,立刻給出結果,不須時鐘。實驗心得:
實驗三
PC 實驗
實驗目的:
1、了解模型機中程序計數器PC的工作原理及其控制方法。
2、了解程序執行過程中順序和跳轉指令的實現方法。
PC 原理圖
在CPTH 中,PC+1 由PCOE 取反產生。當RST = 0 時,PC 記數器被清0
當ELP=1 時,LDPC=1,不允許PC被預置 當ELP=0 時,LDPC 由IR3,IR2,Cy,Z確定 當IR3 IR2 = 1 X 時,LDPC=0,PC 被預置
當IR3 IR2 = 0 0 時,LDPC=非Cy,當Cy=1時,PC 被預置 當IR3 IR2 = 0 1 時,LDPC=非Z,當Z=1 時,PC 被預置 連接線表
每置控制信號后,按一下STEP鍵,觀察PC的變化。
實驗心得
實驗四 存儲器EM 實驗
實驗目的:了解模型機中程序存儲器EM 的工作原理及控制方法。
實驗要求:利用CPTH 實驗儀上的K16..K23 開關做為DBUS 的數據,其它開關做為控制信號,實現程序存儲器EM 的讀寫操作。實驗電路:
存儲器EM 由一片6116RAM 構成,是用戶存放程序和數據的地方。存儲器EM 通過一片74HC245 與數據總線相連。存儲器EM 的地址可選擇由PC或MAR 提供。
存儲器EM 的數據輸出直接接到指令總線IBUS,指令總線IBUS 的數據還可以來自一片74HC245。當ICOE 為0 時,這片74HC245 輸出中斷指令B8。
實驗1:PC/MAR 輸出地址選擇
置控制信號為:
0,二進制開關K23-K16用于DBUS[7:0]的數據輸入,置數據01H 置控制信號為:
按STEP鍵, 將地址1 寫入MAR
將數據22H寫入EM[1] 二進制開關K23-K16用于DBUS[7:0]的數據輸入,置數據22H 置控制信號為:
按STEP鍵,將數據22H寫入EM[1] 實驗3:存儲器EM 讀實驗 將地址0 寫入MAR 二進制開關K23-K16用于DBUS[7:0]的數據輸入,置數據00H 置控制信號為:
按STEP鍵, 將地址0 寫入MAR
5實驗4:存儲器打入IR指令寄存器/uPC實驗 將地址0寫入MAR 二進制開關K23-K16用于DBUS[7:0]的數據輸入,置數據00H
置控制信號為:
按STEP鍵,將地址0寫入MAR
讀EM[0],寫入IR及uPC
置控制信號為:
EM[0]被讀出:11H 按STEP鍵,將EM[0]寫入IR及uPC,IR=11H,uPC=10H
7實驗五 微程序存儲器uM 實驗
實驗目的:
1、了解微程序控制方式模型機的基本工作原理。
2、了解微程序存儲器uM的控制方法。實驗要求:利用CPTH 實驗儀上的開關做為控制信號,實現微程序存儲器uM 的輸出功能。
實驗電路:
存儲器uM 由三片6116RAM 構成,共24 位微指令,采用水平型微指令格式。存儲器的地址由uPC 提供, 片選及讀信號恒為低, 寫信號恒為高.存儲器uM 始終輸出uPC 指定地址單元的數據。
uM原理圖
連接線表
實驗1:微程序存儲器uM 讀出
置控制信號為:K0為1
uM 輸出uM[0]的數據
按一次STEP脈沖鍵,CK產生一個上升沿,數據uPC 被加一。uM 輸出uM[1]的數據
按一次STEP脈沖鍵,CK產生一個上升沿,數據uPC 被加一。uM 輸出uM[2]的數據
實驗2:使用實驗儀小鍵盤輸入uM
1.連接J1, J2
2.打開電源
1實驗六
模型機綜合實驗(微程序控制器)
第五篇:計算機組成原理實驗報告[推薦]
湘潭大學學生實驗報告
實驗名稱____________________實驗日期__________________ 學號:____________姓名:__________班級_________
一、實驗目的二、實驗原理
三、實驗要求
四、實驗內容與步驟
五、實驗環境與設備
六、實驗代碼設計(含符號說明)
七、實驗驗證與測試
八、測試數據
九、實驗過程中出現的問題及處理情況(包括實驗現象、原因分析、排除故障的方法等)