第一篇:計算機組成原理實驗一
計算機組成原理實驗一
基礎匯編語言程序設計
實驗目的:
1. 學習和了解TEC-2000十六位機監控命令的用法; 2. 學習和了解TEC-2000十六位機的指令系統; 3. 學習簡單的TEC-2000十六位機匯編程序設計;
實驗內容:
1. 使用監控程序的R命令顯示/修改寄存器內容、D命令顯示存儲器內容、E命令修改存儲器內容; 2. 使用A命令寫一小段匯編程序,U命令反匯編剛輸入的程序,用G命令連續運行該程序,用T、P命令單步運行并觀察程序單步執行情況;
實驗要求
在使用該教學機之前,應先熟悉教學機的各個組成部分,及其使用方法。
實驗步驟
1. 關閉電源,將大板上的COM1口與PC機的串口“1”相連; 2. 接通電源,在PC機上運行tec-2000文件夾中的PCEC.EXE文件,所用PC機的串口為“1”, 其它的設置一般不用改動,直接回車即可;
3. 置控制開關為00101(連續、內存讀指令、組合邏輯、16位、聯機),開關撥向上方表示“1”,撥向下方表示“0”,“X”表示任意。其它實驗相同; 4. 按一下“RESET”按鍵,再按一下“START”按鍵,主機上顯示: TEC-2000 CRT MONITOR Version 1.0 April 2001 Computer Architectur Lab.,Tsinghua University Programmed by He Jia > 5. 用R命令查看寄存器內容或修改寄存器的內容 6. 用D命令顯示存儲器內容
7.用E命令修改存儲器內容
注意:用E命令連續修改內存單元的值時,每修改完一個,按一下空格鍵,系統會自動給出下一個內存單元的值,等待修改;按回車鍵則退出E命令。
用D命令顯示這幾個修改內存單元的內容(在實驗報告中寫明你的實驗內容)8.用A命令鍵入一段匯編源程序,主要是向累加器送入數據和進行運算,執行程序并觀察運行結果。
1)在命令行提示符狀態下輸入:
A 2000↙ ;表示該程序從2000H(內存RAM區的起始地址)地址開始 屏幕將顯示: 2000: 輸入程序:
(實驗報告中寫出自己的程序)
程序的最后一個語句,必須為RET指令
直接敲回車鍵,結束A命令輸入程序的操作過程
若輸入有誤,系統會給出提示并顯示出錯地址,用戶只需在該地址重新輸入
正確的指令即可。2)用U命令反匯編剛輸入的程序
在命令行提示符狀態下輸入:
U 2000↙
在相應的地址會得到輸入的指令及其操作碼(報告中寫出執行結果)3)
用G命令運行前面剛鍵入源程序
G 2000↙
程序運行結束后,可以看到程序的運行結果,屏幕顯示各寄存器的值。(實驗報告中程序的執行結果,程序運行是否正確)
4)用P或T命令,單步執行這段程序,觀察指令執行結果
(實驗報告中寫出執行過程及結果)
注:T總是執行單條指令,但執行P命令時,則把每一個CALL語句連同被調用的子程序一次執行完成。T、P命令每次執行后均顯示所有通用寄存器及狀態寄存器的內容,并反匯編出下一條將要執行的指令。
9.舉例編寫匯編程序, 用“A”命令輸入,運行并觀察結果(實驗報告中寫出源程序及執行過程及結果)
參考《TEC-2000A教學計算機系統技術說明與實驗指導》第二章及第五章5.1內容,并思考例2后的思考題,在報告中分析并寫出執行結果,要求編寫在屏幕上輸出A-Z26個英文字母,實驗報告中寫出源程序及運行結果。
例3后的思考題及編寫程序,實驗報告中寫出源程序及運行結果。
認真預習實驗,做好實驗準備,實驗后按要求認真書寫實驗報告,報告要詳細,實驗過程及調試好的程序及實驗結果,以及實驗中遇到的問題,如何解決問題和對本課程及實驗的心得體會。
要求每個學生認真上好實驗課,做到在規定的時間,規定的實驗箱做好實驗,實驗過程中保持安靜。愛護實驗設備!
第二篇:計算機組成原理實驗
ALU設計
module ALU(ALU_OP,AB_SW,F_LED_SW,LED);
input[2:0] ALU_OP,AB_SW,F_LED_SW;
output[7:0] LED;reg[7:0] LED;
reg[31:0] A,B,F;reg OF,ZF;
always@(*)begin
end
always@(*)begin
ZF=0;OF=0;case(ALU_OP)
3'b000: begin F=A&B;end 3'b001: begin F=A|B;end 3'b010: begin F=A^B;end 3'b011: begin F=~(A|B);end 3'b100: begin {OF,F}=A+B;OF=OF^F[31];end 3'b101: begin {OF,F}=A-B;OF=OF^F[31];end 3'b110: begin F=A
3'b000: begin A=32'h0000_0000;B=32'h0000_0000;end 3'b001: begin A=32'h0000_0003;B=32'h0000_0607;end 3'b010: begin A=32'h8000_0000;B=32'h8000_0000;end 3'b011: begin A=32'h7FFF_FFFF;B=32'h7FFF_FFFF;end 3'b100: begin A=32'h8000_0000;B=32'hFFFF_FFFF;end 3'b101: begin A=32'hFFFF_FFFF;B=32'h8000_0000;end 3'b110: begin A=32'h1234_5678;B=32'h3333_2222;end 3'b111: begin A=32'h9ABC_DEF0;B=32'h1111_2222;end endcase endcase
if(F==32'b0)ZF=1;end
always@(*)begin
end case(F_LED_SW)
3'b000: LED=F[7:0];3'b001: LED=F[15:8];3'b010: LED=F[23:16];3'b011: LED=F[31:24];default:begin LED[7]=ZF;LED[0]=OF;LED[6:1]=6'b0;end endcase
endmodule 管腳配置
NET “AB_SW[0]” LOC = T10;NET “AB_SW[1]” LOC = T9;NET “AB_SW[2]” LOC = V9;NET “ALU_OP[0]” LOC = M8;NET “ALU_OP[1]” LOC = N8;NET “ALU_OP[2]” LOC = U8;NET “F_LED_SW[0]” LOC = V8;NET “F_LED_SW[1]” LOC = T5;NET “F_LED_SW[2]” LOC = B8;NET “LED[0]” LOC = U16;NET “LED[1]” LOC = V16;NET “LED[2]” LOC = U15;NET “LED[3]” LOC = V15;NET “LED[4]” LOC = M11;NET “LED[5]” LOC = N11;NET “LED[6]” LOC = R11;NET “LED[7]” LOC = T11;寄存器 module jicunqi(input Clk, input Reset, input [4:0] Reg_Addr, input Write_Reg, input [1:0] Sel, input AB, output reg [7:0] LED);reg [31:0] W_Data;wire [31:0] R_Data_A,R_Data_B,LED_Data;REG RU1(Clk,Reset,Reg_Addr,Reg_Addr,Reg_Addr,W_Data,Write_Reg,R_Data_A,R_Data_B);assign LED_Data=AB?R_Data_A : R_Data_B;always @(*)begin
W_Data=32'h0000_0000;
LED=8'b0000_0000;
if(Write_Reg)
begin
case(Sel)
2'b00: W_Data= 32'h1234_5678;
2'b01: W_Data= 32'h89AB_CDEF;2'b10: W_Data= 32'h7FFF_FFFF;2'b11: W_Data= 32'hFFFF_FFFF;endcase end
else
begin
case(Sel)
2'b00: LED=LED_Data[7:0];2'b01: LED=LED_Data[15:8];2'b10: LED=LED_Data[23:16];2'b11: LED=LED_Data[31:24];
endcase end end endmodule `timescale 1ns / 1ps // REG.v module REG(input Clk, input Reset, input [4:0] R_Addr_A, input [4:0] R_Addr_B, input [4:0] W_Addr, input [31:0] W_Data, input Write_Reg, output [31:0] R_Data_A, output [31:0] R_Data_B);
reg [31:0] REG_Files[0:31];integer i;
assign R_Data_A=REG_Files[R_Addr_A];assign R_Data_B=REG_Files[R_Addr_B];
always @(posedge Clk or posedge Reset)begin
if(Reset)
begin
for(i=0;i<=31;i=i+1)
REG_Files[i]<=32'h0000_0000;
end
else
begin
if(Write_Reg)
begin
REG_Files[W_Addr]<=W_Data;
end end end endmodule
管腳配置 NET “Clk” LOC=“C9”;NET “Reset” LOC=“D9”;NET “Reg_Addr[4]” LOC=“T5”;NET “Reg_Addr[3]” LOC=“V8”;NET “Reg_Addr[2]” LOC=“U8”;NET “Reg_Addr[1]” LOC=“N8”;NET “Reg_Addr[0]” LOC=“M8”;NET “Write_Reg” LOC=“V9”;NET “Sel[1]” LOC=“T9”;NET “Sel[0]” LOC=“T10”;NET “AB” LOC=“A8”;NET “LED[7]” LOC=“T11”;NET “LED[6]” LOC=“R11”;NET “LED[5]” LOC=“N11”;NET “LED[4]” LOC=“M11”;NET “LED[3]” LOC=“V15”;NET “LED[2]” LOC=“U15”;NET “LED[1]” LOC=“V16”;NET “LED[0]” LOC=“U16”;
第三篇:_計算機組成原理實驗2
計算機組成原理實驗日志
實驗題目:
進位、移位控制實驗
實驗目的:
(1)了解帶進位控制的運算器的組成結構;(2)驗證帶進位控制的運算器的功能。(3)了解移位發生器74LS299的功能;(4)驗證移位控制電路的組合功能。實驗主要步驟:
一、進位
(1)按圖1.2-2連接實驗電路并檢查無誤。(2)打開電源開關。
(3)用輸入開關向暫存器DR1和DR2置數,方法同前。
(4)關閉數據輸入三態門(SW-B=1),打開ALU輸出三態門(ALU-B=0),并使LDDR1=0、LDDR2=0,關閉寄存器打入控制門。
(5)對進位標志清零。實驗板上“SWITCH UNIT”單元中的CLR開關為標志CY、ZI的清零開關,它為零狀態時是清零狀態,所以將此開關做1→0→1操作,即可使標志位清零。
注意:進位標志指示燈CY亮時表示進位標志為“0”,無進位;標志指示燈CY滅時表示進位為“1”,有進位。
圖1.2-1 帶進位運算器通路圖
圖1.2-2 帶進位運算實驗接線圖
(6)驗證帶進位運算及進位鎖存功能。使Cn=1,AR=0,進行帶進位算術運算。例如,做加法運算,使ALU-B=0,S3、S2、S1、S0、M的狀態為1、0、0、1、0,此時數據總線上顯示的數據為DR1加DR2加當前進位標志的和,但這時的進位狀態位還沒有打入進位鎖存器中,(它是要靠T4節拍來打入的。)這個結果是否有進位產生,則要按動微動開關KK2,若進位標志燈亮,則無進位,反之則有進位。因為做加法運算時數據總線一直顯示的數據為DR1+DR2+CY,所以當有進位輸入到進位鎖存器時,總線顯示的數據將為加上當前進位鎖存器中鎖存的進位的結果。
二、移位
(1)按圖1.3-2連接實驗電路并檢查無誤。(2)打開電源開關。(3)向移位寄存器置數。
①撥動輸入開關,形成二進制數01101011(或其它數值)。
②使SWITCH UNIT單元中的開關SW-B=0,打開數據輸入三態門。③使S0=
1、S1=1,并按動微動開關KK2,則將二進制數01101011置入了移位寄存器。
④使SW-B=1,關閉數據輸入三態門。(4)移位運算操作。
①參照表1.3-1中的內容,先將S1、S0置為0、0,檢查移位寄存器單元裝入的數是否正確,然后通過改變S0、S1、M、299-B的狀態,并按動微動開關KK2,觀察移位結果。
②根據移位控制電路功能表1.3-1中的內容,分析移位運算的結果是否正確。
圖1.3-2 移位運算實驗接線圖
實驗結果: 一.進位
向DR1中置入80H 向DR2中置入 80H CY初始位置為亮 0 加法完成后 CY為滅總線顯示01H 二.移位
輸入00011000 移位后 00110000 心得體會:
通過本次實驗了解了的帶進位的加法和移位器的原理。
第四篇:_計算機組成原理實驗3
計算機組成原理實驗日志3 實驗題目:
靜態隨機存儲器實驗 實驗目的:
掌握靜態隨機存儲器RAM工作特性及數據的讀/寫方法。實驗主要步驟:
(1)形成時鐘脈沖信號T3。具體接線方法和操作步驟如下:
①接通電源,把示波器接到方波信號源的輸出插孔H23調節電位器W1及W2,使H23端輸出實驗所期望的頻率和占空比的方波。
②將時序電路模塊(STATE UNIT)單元中的φ和信號源單元(SIGNAL UNIT)中的H23排針相連。
③在時序電路模塊中有兩個二進制開關“STOP”和“STEP”。將“STOP”開關置為“RUN”狀態、“STEP”開關置為“EXEC”狀態時,按動微動開關START,則T3端輸出連續的方波信號,此時調節電位器W1,用示波器觀察,使T3輸出實驗要求的脈沖信號。當“STOP”開關置為“RUN”狀態、“STEP”開關置為“STEP”狀態時,每按動一次微動開關START,則T3輸出一個單脈沖,其脈沖寬度與連續方式相同。用PC聯機軟件中的示波器功能也能看到波形。這樣可以代替真實示波器。
(2)按圖2-2連接實驗線路,仔細查線無誤后接通電源。
圖2-2 靜態隨機存儲器實驗接線圖(3)寫存儲器。給存儲器的00、01、02、03、04地址單元中分別寫入數據11H、12H、13H、14H、15H。
由上面的存儲器實驗原理圖(圖2-2)看出,由于數據和地址全由一個數據開關給出,因此要分時地給出。下面的寫存儲器要分兩個步驟:第一步寫地址,先關掉存儲器的片選(CE=1),打開地址鎖存器門控信號(LDAR=1),打開數據開關三態門(SW-B=0),由開關給出要寫入的存儲單元的地址,按動START產生T3脈沖將地址打入到地址鎖存器;第二步寫數據,關掉地址鎖存器門控信號(LDAR=0),打開存儲器片選(CE=0),使之處于寫狀態(CE=0,WE=1),由開關給出此單元要寫入的數據,按動STRAT產生T3脈沖將數據寫入到當前的地址單元中。寫其他單元依次循環上述步驟。
寫存儲器流程如圖2-3所示(以向00號單元寫入11H為例)。
圖2-3 寫存儲器流程圖
(4)讀存儲器。
依次讀出第00、01、02、03、04號單元中的內容,觀察上述各單元中的內容是否與前面寫入的一致。同寫操作類似,讀每個單元也需要兩步:第一步寫地址,先關掉存儲器的片選(CE=1),打開地址鎖存器門控信號(LDAR=1),打開,由開關給出要讀存儲單元的地址,按動START產生T3脈沖將地址打入到地址鎖存器;第二步讀存儲器,關掉數據開關三態門(SW-B=1),打開存儲器(CE=0),使它處于讀狀態(CE=0,WE=0),此時數據總線上顯示的數據即為從存儲器當前地址中讀出的數據內容。讀其他單元依次循環上述步驟。
讀存儲器操作流程如下圖2-4所示(以從00號單元讀出11H數據為例)。
圖2-4 讀存儲器流程圖
實驗結果:
置入存儲器地址00 寫入存儲器數據 11H 置入存儲器地址01 寫入存儲器數據12H 置入存儲器地址02 寫入存儲器數據13H 置入存儲器地址03 寫入存儲器數據14H 置入存儲器地址04 寫入存儲器數據15H
讀數據
置入存儲器地址00 讀出存儲器數據11H 置入存儲器地址01 讀出存儲器數據12H 置入存儲器地址02 讀出存儲器數據13H 置入存儲器地址03 讀出存儲器數據14H 置入存儲器地址04 讀出存儲器數據15H 實驗思考題
(1)一片靜態存儲器6116(2K×8),容量是多大?因實驗箱上地址寄存器只有8位接入6116的A7-A0,而高三位A8-A10接地,所以實際存儲容量是多少?為什么?
答:容量是16kbit大小,當只有A7-A0只有8位字時,實際容量是256*8=4Kbit大小。(2)歸納出向存儲器寫入一個數據的過程,包括所需的控制信號(為“1”還是為“0”)有效。
答:根據實驗指導書上WR0有效,此時為寫入數據
心得體會:
通過這次實驗掌握了靜態存儲器的基本原理,以及存儲器是如何寫入數據和讀取數據的,強化了計算機存儲器的理解
第五篇:計算機組成原理實驗(存儲器)
實驗3 半導體存儲器原理實驗
(一)、實驗目的
(1)熟悉靜態隨機存儲器RAM和只讀存儲器ROM的工作特性和使用方法;(2)熟悉半導體存儲器存儲和讀出數據的過程;(3)了解使用半導體存儲器電路時的定時要求。
(二)、實驗要求
利用Quartus Ⅱ器件庫提供的參數化存儲單元,設計一個由128X8位的RAM和128X8位的ROM構成的存儲器系統。請設計有關邏輯電路,要求仿真通過,并設計波形文件,驗證該存儲器系統的存儲與讀出。
(三)、實驗原理圖與仿真圖
ram內所存儲的數據:
rom內所存儲的數據:
仿真圖如下:
(四)心得體會
本次試驗中,我們應該熟練掌握Quartus Ⅱ軟件的使用方法;熟悉靜態隨機存儲器RAM和只讀存儲器ROM的工作特性和使用方法;熟悉半導體存儲器存儲和讀出數據的過程;了解使用半導體存儲器電路時的定時要求。并且制定實驗方案然后進行實驗驗證。要學會將學到的知識運用到實際中。