西安交通大學,組成原理課內(nèi)實驗_第1頁
西安交通大學,組成原理課內(nèi)實驗_第2頁
西安交通大學,組成原理課內(nèi)實驗_第3頁
西安交通大學,組成原理課內(nèi)實驗_第4頁
西安交通大學,組成原理課內(nèi)實驗_第5頁
已閱讀5頁,還剩17頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、 計算機組成原理課內(nèi)實驗報告 實驗二學生姓名 高君宇 專業(yè)班級 計算機15 學 號 2110505112 所在學院 電信學院 提交日期 2014年1月18日 實驗二1. 實驗目的(1)理解計算機主存儲器的分類及作用(2)掌握ROM、RAM的讀寫方法2. 實驗要求1)實驗設計目標設計一個能夠?qū)嶒炁_上的存儲器讀寫的部件,滿足以下目標:(1)一個16位的存儲器地址寄存器。該寄存器在reset為低電平時清零,在時鐘clk的上升沿加1,地址寄存器在超過ox000f后下一個時鐘上升沿回到0。(2)一個標志寄存器,在reset為低電平時復位為0,當存儲器地址寄存器等于0x000f后,下一個時鐘clk的上升

2、沿標志寄存器翻轉(zhuǎn)。(3)在標志寄存器為0時執(zhí)行存儲器存數(shù)功能,從存儲器的0單元開始存16個16位數(shù)。按動一次單脈沖按鈕,存一次數(shù),存的數(shù)由內(nèi)部產(chǎn)生,不由實驗臺開關(guān)輸入。(4)當標志寄存器為1時,執(zhí)行從存儲器的0單元開始的讀數(shù)功能。按動一次單脈沖按鈕,讀一次數(shù),一直讀16個數(shù)。讀出的數(shù)據(jù)送入一個16位信號R15.0暫存。提示:當需要從存儲器讀取數(shù)據(jù)時,首先將"ZZZZZZZZZZZZZZZZ"賦值給數(shù)據(jù)總線,然后才能讀取存儲器中的數(shù)據(jù)。2)頂層設計實體的引腳要求引腳要求對應關(guān)系如下:(1)clk對應實驗臺上的時鐘(單脈沖)。(2)reset對應實驗臺上的CPU復位信號CPU_

3、RST。(3)存儲器地址總線A15.0對應實驗臺上的指示燈A15A0。(4)存儲器數(shù)據(jù)總線D15.0對應實驗臺上的數(shù)據(jù)指示燈D15D0。(5)16位信號R15.0對應實驗臺上的指示燈R15R0。(6)存儲器讀寫信號FWR對應實驗臺上的FWR。3. 實驗原理存儲器按存取方式分,可分為隨機存儲器和順序存儲器。如果存儲器中的任何存儲單元的內(nèi)容都可隨機存取,稱為隨機存儲器,計算機中的主存儲器都是隨機存儲器。如果存儲器只能按某種順序存取,則稱為順序存儲器,磁帶是順序存儲器,磁盤是半順序存儲器,它們的特點是存儲容量大,存取速度慢,一般作為外部存儲器使用。如果按存儲器的讀寫功能分,有些存儲器的內(nèi)容是固定不變

4、的,即只能讀出不能寫入,這種存儲器稱為只讀存儲器(ROM);既能讀出又能寫入的存儲器,稱為隨機讀寫存儲器(RAM)。實際上真正的ROM基本上不用了,用的是光可擦除可編程的ROM(EPROM)和電可擦除可編程的ROM(EEPROM)。EEPROM用的越來越多,有取代EPROM之勢,比如容量很大的閃存(FLASH)現(xiàn)在用的就很廣泛,常說的U盤就是用FLASH做的。按信息的可保存性分,存儲器可分為非永久性記憶存儲器和永久性記憶存儲器。ROM、EPROM、EEPROM都是永久記憶存儲器,它們斷電后存儲內(nèi)容可保存。RAM則是非永久性記憶存儲器,斷電后存儲器中存儲的內(nèi)容丟失。TEC-CA實驗臺上HM611

5、6的使用在TEC-CA開放式CPU實驗教學系統(tǒng)實驗臺上,有2片靜態(tài)存儲器器件HM6116。HM6116有8位數(shù)據(jù)總線和11位地址總線。2片HM6116構(gòu)成了2k X 16bits的靜態(tài)存儲器,與FPGA-CPU一起構(gòu)成了能夠運行測試程序的計算機。圖6-41是FPGA-CPU和2片HM6116連接示意圖。圖6-41 FPGA-CPU和2片HM6116連接示意圖對于FPGA-CPU來說,實驗臺上的2片HM6116的CS是接地的,因此不需要對它們的CS進行控制。FPGA-CPU產(chǎn)生的16位存儲器地址A15A0只有11位地址A10A0送往2片HM6116,其余5位地址A15A11沒有使用。FPGA-C

6、PU的16位存儲器數(shù)據(jù)總線D15D0和2片HM6116相連,1片HM6116的I/O7I/O0接D7D0,另1片HM6116的I/O7I/O0接D15D8。FPGA-CPU輸出的存儲器控制信號FWR直接送2片HM6116的WE;FWR在實驗臺經(jīng)過一個反相器反相后送2片HM6116的OE。因此FPGA-CPU只要在存儲器地址總線A10A0設置好地址,在數(shù)據(jù)總線D15D0上送出被寫數(shù)據(jù),然后在FWR上產(chǎn)生一個負脈沖,就能將數(shù)據(jù)寫入指定的存儲器單元;只要在存儲器地址總線A10A0設置好地址,然后使FWR為高電平,就能在數(shù)據(jù)總線D15D0上接收到從指定的存儲器單元讀出的數(shù)據(jù)。4.設計思路與源代碼lib

7、rary IEEE;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity memory isport(reset,clk: in std_logic; -復位、時鐘 FWR: out std_logic; -RAM的讀寫 D: inout std_logic_vector(15 downto 0);-數(shù)據(jù)A: out std_logic_vector(15 downto 0); -地址 R:out std_logic_vector(15 downto 0)-

8、 寄存器 );end memory;architecture behav of memory issignal counter:std_logic_vector(15 downto 0);signal wdata: std_logic_vector(15 downto 0);signal start, flag : std_logic; -開始計數(shù)(讀寫)、結(jié)束(狀態(tài))beginA <= counter;wdata <= "00000000001" & counter(4 downto 0);- 數(shù)據(jù)16bit的形成process(reset,clk)b

9、egin if reset = '0' thencounter <= x"0000"elsif clk'event and clk = '1' then - 計數(shù)if (start = '1') and (counter /= x"000f") then counter <= counter + '1'elsif (start = '1') and (counter = x"000f") thencounter <= x"

10、;0000"end if;end if;end process;process(reset,clk)beginif reset = '0' thenstart <= '0'elsif clk'event and clk = '1' thenstart <= '1'end if;end process;process(reset,counter,clk)beginif reset = '0' thenflag <= '0'elsif clk'event an

11、d clk = '1' thenif counter = x"000f" thenflag <= not flag;end if;end if;end process;process(reset,counter,clk,start,flag,wdata,D)beginif reset = '0' thenFWR <= '1'elsif start = '1' thenif flag = '0' thenD <= wdata;FWR <= clk;elseD <= &

12、quot;ZZZZZZZZZZZZZZZZ"FWR <= '1'R <= D;end if;end if;end process; -增加flag引出信號,觀察他的變化。end behav; 5.實驗步驟(1)實驗臺設置成FPGA-CPU附加外部RAM運行模式“011”。該調(diào)試模式要能夠?qū)崿F(xiàn)模擬FPGA-CPU對實驗臺存儲器的存數(shù)、取數(shù)功能。即REGSEL = 0、CLKSEL = 1、FDSEL = 1。使用實驗臺上的單脈沖,即STEP_CLK短路子短接,短路子RUN_CLK斷開。由于當FDSEL=0時,指示燈D15D0顯示的是開關(guān)SD15SD0的值,因

13、此開關(guān)FDSEL必須為1。這種方式除了FPGA-CPU的時鐘是單脈沖外,其余都與單片機控制FPGA-CPU調(diào)試模式完全一樣。(2)將設計在Quartus 下輸入,編譯后下載到TEC-CA上的FPGA中。首先按實驗臺上的CPU復位按鈕,使存儲器地址寄存器復位為0,然后不斷觀察實驗臺上的指示燈,察看結(jié)果與預想的是否一致。6、實驗現(xiàn)象:reset信號使整個運行過程復位, clk脈沖有效是存入16個16位數(shù),標志位變?yōu)?,按clk開始讀存儲器,此時可以通過觀察指示燈的亮滅情況得到輸出結(jié)果。7、實驗小結(jié)本次實驗中使我對Quartus有了更加充分的認識,在實驗過程中,仿真的時候波形不正確,其中一開始是仿真

14、過程不熟悉導致,后來解決時通過調(diào)整延長了地址有效時間,讀取穩(wěn)定。 這說明成功是需要不斷嘗試的! 計算機組成原理課內(nèi)實驗報告實驗三學生姓名 高君宇 專業(yè)班級 計算機15 學 號 2110505112 所在學院 電信學院 提交日期 2014年1月18日 實驗三1、 實驗目的(1)了解通用寄存器組的用途及對CPU的重要性。(2)掌握通用寄存器組的設計方法。(3) 掌握VHDL中層次結(jié)構(gòu)的設計特點和方法;學習和掌握component語句和port map語句。(4) 進一步學習和掌握case語句及其他語句的用法,完成各種寄存器、譯碼器及選擇 器的設計和實現(xiàn)。2、實驗要求1)實驗設計目標設計一個通用寄存

15、器組,滿足以下要求:(1) 通用寄存器組中有4個16位的寄存器。(2) 當復位信號reset = 0時,將通用寄存器組中的4個寄存器清零。2)頂層設計實體的引腳要求引腳要求對應關(guān)系如下:(1)clk對應實驗臺上的時鐘(單脈沖)。(2)reset對應實驗臺上的CPU復位信號CPU_RST。(3)SR1.0對應實驗臺開關(guān)SA1、SA0。(4)DR1.0對應實驗臺開關(guān)SA3、SA2。(5)DRWr對應實驗臺開關(guān)SA5。(6)目的操作數(shù)用實驗臺上的指示燈A15A0顯示,源操作數(shù)用實驗臺上的指示燈R15R0顯示。3.實驗原理通用寄存器組是CPU的重要組成部分。從存儲器取來的數(shù)據(jù)要放在通用寄存器中;從外部

16、設備取來的數(shù)據(jù)除DMA方式外,要放在通用寄存器中。向存儲器輸出的數(shù)據(jù)也是從通用寄存器中取出的;向外部設備輸出的數(shù)據(jù)除DMA方式外也是從通用寄存器中取出的。由于從通用寄存器組中取數(shù)據(jù)比從存儲器或者外部設備取數(shù)據(jù)速度快得多,因此參加算術(shù)運算和邏輯運算的數(shù)據(jù)一般是從通用寄存器組中取出的,它向算術(shù)邏輯單元ALU提供了進行算術(shù)運算和邏輯運算所需要的2個操作數(shù),同時又是運算結(jié)果的暫存地。通用寄存器組內(nèi)寄存器的數(shù)目與CPU性能有關(guān),CPU性能越高,通用寄存器組內(nèi)的寄存器數(shù)目越多。由于算術(shù)邏輯運算需要2個操作數(shù),因此通用寄存器組有2個讀端口,負責提供進行算術(shù)邏輯單元需要的源操作數(shù)和目的操作數(shù)。通用寄存器組有1

17、個寫端口,負責將運算結(jié)果保存到指定的寄存器內(nèi)。根據(jù)通用寄存器組的功能要求,一個只有4個16位寄存器的通用寄存器組的框圖如圖所示。6)4選1多路選擇器:*多路選擇器1從4個寄存器R0、R1、R2和R3的輸出Q15.0選擇1路送到DR_data1.0,給算術(shù)邏輯單元提供目的操作數(shù);選擇信號sel1.0接DR1.0。*多路選擇器2從4個寄存器R0、R1、R2和R3的輸出Q15.0選擇1路送到SR_data1.0,給算術(shù)邏輯單元提供源操作數(shù);選擇信號sel1.0接SR1.0。4、設計思路與源代碼設計思路:主要運用層次結(jié)構(gòu)設計的方法,首先設計了底層的3個實體:16位寄存器,具有復位功能和允許寫功能;一個

18、2-4譯碼器,對應寄存器寫選擇;一個4選1多路開關(guān),負責'1') then if sel = '1' and write = '1' then q_output <= d_input; end if; end if;end process;end a;2設計實體decoder2_to_4 library ieee;use ieee.std_logic_1164.all;entity decoder2_to_4 isport (sel : in std_logic_vector(1 downto 0);sel00 : out std_logi

19、c;sel01 : out std_logic;sel02 : out std_logic;sel03 : out std_logic );end decoder2_to_4;architecture behavioral of decoder2_to_4 isbeginsel00<= (not sel(1) and (not sel(0);sel01<= (not sel(1) and sel(0) ;sel02<= sel(1) and (not sel(0);sel03<= sel(1) and sel(0);end behavioral;3.設計實體mux4_t

20、o_1library ieee;use ieee_std_logic_1164.all;entity mux4_to_1 isport (input0 ,input1 ,input2 ,input3 : in std_logic_vector(15 downto 0); sel : in std_logic_vector(1 downto 0); out_put : out std_logic_vector(15 downto 0);end mux4_to_1;architecture behavioral of mux4_to_1 isbeginmux: process(sel , inpu

21、t0, input1, input2, input3)begin case sel is when "00" => out_put <= input0;when "01" => out_put <= input1;when "10" => out_put <= input2;when "11" => out_put <= input3;end case;end process;end behavioral;4.頂層設計實體regfilelibrary ieee;use

22、 ieee_std_logic_1164.all;entity regfile isport ( wr_port : in std_logic_vector(1 downto 0); rd_port : in std_logic_vector(1 downto 0); reset : in std_logic; wen : in std_logic; clk : in std_logic; data : in std_logic_vector(15 downto 0); data_out : out std_logic_vector(15 downto 0) );end regfile;arc

23、hitecture port( input0 ,input1 ,input2 ,input3: in std_logic_vector(15 downto 0);sel : in std_logic_vector(1 downto 0); out_put : out std_logic_vector(15 downto 0));end component;signal reg00 , reg01 ,reg02 ,reg03 : std_logic_vector(15 downto 0);signal sel00 ,sel01 ,sel02 ,sel03 : std_logic;beginAre

24、g00: register_16 port map( -16位寄存器R0reset => reset, -該語句將底層芯片的引腳reset與頂層的 端口信號reset連接起來了; d_input => data, -頂層設計實體的外部輸入信號dataclk => clk, -頂層設計實體的外部輸入信號clk write => wen, -頂層設計實體的外部輸入信號wen sel => sel00,q_output => reg00);Areg01: register_16 port map( -16位寄存器R1 reset => reset, -頂層設

25、計實體的外部輸入信號reset d_input => data, -頂層設計實體的外部輸入信號data clk => clk , -頂層設計實體的外部輸入信號clk write => wen, -頂層設計實體的外部輸入信號wen sel => sel01,q_output => reg01 );Areg02: reggister_16 port map ( -16位寄存器R2 reset => reset, -頂層設計實體的外部輸入信號reset d_input => data, -頂層設計實體的外部輸入信號data clk => clk, -頂

26、層設計實體的外部輸入信號clk write => wen , -頂層設計實體的外部輸入信號wen sel => sel02, q_output => reg02);Areg03: reggister_16 port map(-16位寄存器R3 reset => reset, -頂層設計實體的外部輸入信號reset d_input => data, -頂層設計實體的外部輸入信號data clk => clk, -頂層設計實體的外部輸入信號clkwrite => wen, -頂層設計實體的外部輸入信號wren sel => sel03,q_outpu

27、t => regsel03 => sel03 );mux: mux_4_to_1 port map( -4選1多路器 input0 => reg00, input1 => reg01,input2 => reg02,input3 => reg03,sel => rd_port, -頂層設計實體的外部輸入信號rd_port out_put => data_out -頂層設計實體的輸出信號q_out );end struct;5、實驗現(xiàn)象 在實驗臺指示燈A15A0和R15R0上觀察各寄存器的值如下所示。A15A0R15R0R0R1R2R3R0R1R2

28、R3 (1)reset后00000000000000000000000000000000(2)R0寫入0x3333后33330000000000003333000000000000(3)R1寫入0x5555后33335555000000003333555500000000(4)R2寫入0xAAAA后33335555AAAA000033335555AAAA0000(5)R3寫入0xFFFF后FFFFFFFF 可以看到實驗結(jié)果實現(xiàn)了寄存器的傳遞數(shù)據(jù)的功能。6、實驗總結(jié) 本次的實驗讓我對VHDL語言有了更加深刻的理解,軟件和硬件的邏輯等價性在這種語言的描述中發(fā)揮的淋漓盡致!同時也使得我對于寄存器有了

29、更加深刻的了解和認識,對于寄存器的傳遞數(shù)據(jù)的功能,與cpu進行直接的數(shù)據(jù)傳輸?shù)裙δ芰私飧由羁?,在實驗過程中自己對于寄存器的結(jié)構(gòu)以及作用有了一個很好地掌握!計算機組成原理課內(nèi)實驗報告實驗四學生姓名 高君宇 專業(yè)班級 計算機15 學 號 2110505112 所在學院 電信學院 提交日期 2014年1月18日 實驗四:指令譯碼器一實驗目的(1)理解指令譯碼器的作用和重要性。(2)學習設計指令譯碼器。二 實驗要求1)實驗設計目標本實驗要求根據(jù)實驗CPU中使用的指令系統(tǒng)設計指令譯碼器,本實驗指令譯碼器的設計相對比較簡單,節(jié)拍(t1、t2和t3)因素只在存儲器讀寫時需要對存儲器地址分時使用時需要考慮,

30、這里暫不考慮節(jié)拍脈沖t,也就是說微操作控制信號只是指令操作碼In和Bj的函數(shù):Cm = f(In,Bj)式中的In主要代表指令操作碼IR15.12,還有輔助操作碼(如算術(shù)邏輯指令時的IR2.0,我們這里要求只考慮指令操作碼IR15.12。Bj代表進位標志C和結(jié)果為0標志Z。要求產(chǎn)生的微操作控制信號如下:op_code 控制ALU進行8種運算操作的3位編碼。c_z_j_flag 為1表示需要條件轉(zhuǎn)移。lj_instruct 為1表示本條指令是條“JMP ADR”指令。DRWr 為1表示在t3的下降沿將本條指令的執(zhí)行結(jié)果寫入目的寄存器。Mem_Write 為1表示本條指令有存儲器寫操作,存儲器的地

31、址是目的寄存器的內(nèi)容。DW_intruct 為1表示本條指令是雙字指令。change_z 為1表示本條指令可能改變z(結(jié)果為0)標志。change_c 為1表示本條指令可能改變c(進位)標志。sel_memdata 為1表示本條指令寫入目的寄存器的值來自讀存儲器。2)頂層設計實體的引腳要求引腳要求的對應關(guān)系如下:(1)指令I(lǐng)R15.12對應實驗臺開關(guān)SD3SD0 進位C對應實驗臺開關(guān)SD4 結(jié)果為0標志Z對應實驗臺開關(guān)SD5(2)控制信號對應如下:op_code2.0指示燈R2、R1、R0 c_z_j_flag指示燈R3lj_instruct指示燈R4DRWr指示燈R5Mem_Write指示燈

32、R6DW_intruct指示燈R7change_z 指示燈R8change_c指示燈R9sel_memdata指示燈R10三實驗原理指令譯碼器是計算機控制器中最重要的部分。所謂組合邏輯控制器就是指指令譯碼電路是由組合邏輯實現(xiàn)的。組合邏輯控制器又稱硬連線控制器,是早期設計計算機的一種方法。這種控制器中的控制信號直接由各種類型的邏輯門和觸發(fā)器等組合產(chǎn)生。這樣,一旦控制部件構(gòu)成后,除非重新設計和物理上對它重新連線,否則要想增加新的功能是不可能的。結(jié)構(gòu)上的這種缺陷使得硬連線控制器的設計和調(diào)試變得非常復雜而且代價很大。所以,硬連線控制器曾一度被微程序控制器所取代。但是隨著新一代機器及VLSI技術(shù)的發(fā)展,

33、這種控制器又得到了重視,如RISC機廣泛使用這種控制器。1. 組合邏輯控制器原理圖6-42 組合邏輯控制器的結(jié)構(gòu)方框圖圖6-42是組合邏輯控制器的結(jié)構(gòu)方框圖。邏輯網(wǎng)絡的輸入信號來源有三個:(1)指令操作碼譯碼器的輸出In;(2)來自時序發(fā)生器的節(jié)拍電位信號Tk;(3)來自執(zhí)行部件的反饋信號Bj。邏輯網(wǎng)絡的輸出信號就是微操作控制信號,用來對執(zhí)行部件進行控制。顯然,組合邏輯控制器的基本原理,可描述為:某一微操作控制信號Cm是指令操作碼譯碼器的輸出In、時序信號(節(jié)拍電位信號Tk)和狀態(tài)條件信號Bj的邏輯函數(shù)。即Cm f ( In,Tk,Bj )用這種方法設計控制器,需要根據(jù)每條指令的要求,讓節(jié)拍電

34、位和時序脈沖有步驟地去控制機器的各有關(guān)部分,一步一步地執(zhí)行指令所規(guī)定的微操作,從而在一個指令周期內(nèi)完成一條指令所規(guī)定的全部操作。一般來說,組合邏輯控制器的設計步驟如下。(1)繪制指令流程圖為了確定指令執(zhí)行過程所需的基本步驟,通常是以指令為綱,按指令類型分類,將每條指令歸納成若干微操作,然后根據(jù)操作的先后次序畫出流程圖。(2)安排指令操作時間表指令流程圖的進一步具體化,把每一條指令的微操作序列分配到各個機器周期的各個時序節(jié)拍信號上。要求盡量多的安排公共操作,避免出現(xiàn)互斥。(3)安排微命令表以指令流程圖為依據(jù),表示出在哪個機器周期的哪個節(jié)拍有哪些指令要求哪些微命令。(4)進行微操作邏輯綜合根據(jù)微操

35、作時間表,將執(zhí)行某一微操作的所有條件(哪條指令、哪個機器周期、哪個節(jié)拍和脈沖等)都考慮在內(nèi),加以分類組合,列出各微操作產(chǎn)生的邏輯表達式,并加以簡化。(5)實現(xiàn)電路根據(jù)上面所得邏輯表達式,用硬件電路模塊來實現(xiàn)。四譯碼器的設計思路 1、設計指令系統(tǒng)首先要設計指令系統(tǒng)。ADD DR,SR指令編碼:0000 DR SR0000 0111功能:DR DR + SR, 影響C Z標志。PC PC + 1。INC DR指令編碼:0001 DR SR0000 0111功能:DR DR + 1,影響C和Z標志。PC PC + 1。SUB DR,SR指令編碼:0010 DR SR0000 0111功能:DR DR

36、 SR,影響C和Z標志。PC PC + 1DEC DR指令編碼:0011 DR SR0000 0111功能:DR DR 1,影響C和Z標志。PC PC + 1。AND DR,SR指令編碼:0100 DR SR0000 0011功能:DR DR and SR,影響Z標志。PC PC + 1。OR DR,SR指令編碼:0101 DR SR0000 0011功能:DR DR or SR,影響Z標志。PC PC + 1。NOT DR指令編碼:0110 DR SR0000 0011功能:DR not DR,影響Z標志。PC PC + 1。MOV DR,SR指令編碼:0111 DR SR0000 0001

37、功能:DR SR,不影響標志位。PC PC + 1。JMP ADR指令編碼:1000 00000000 0000 ADR功能:PC ADR。JNC ADR 指令編碼:1001 0000ADR - -1功能:如果C=0,則PC ADR;如果C=1,則PC PC + 1。 JNZ ADR指令編碼:1010 0000ADR - -1功能:如果Z=0,則PC ADR;如果Z=1,則PC PC + 1。MVRD DR,DATA指令編碼:1100 DR 000000 0000 DATA功能:DR DATA。PC PC + 2。LDR DR,SR指令編碼:1101 DR SR0000 0001功能:DR S

38、R。PC PC + 1。STR SR,DR 指令編碼:1110 DR SR0000 0000功能:DR SR。PC PC + 1。NOP 指令編碼:0111 00000000 0000功能:PCPC+1新增指令:PUSH指令編碼:1110 DR SR0000 0000功能:向內(nèi)存中中寫入數(shù)據(jù),即壓棧操作。POP指令編碼:1101 DR SR0000 0001功能:從內(nèi)存中讀出數(shù)據(jù),即出棧操作。1、 op_code的擴展,由原來3位變成5位,目的是為了PUSH和POP的引入。op_code(4 downto 2)為原來op_code,op_code(1 downto 0)為IR(5 downto

39、 4),后兩位區(qū)分STR和PUSH,LDR和POP指令。當op_code(1 downto 0)為11時,執(zhí)行對壓棧彈棧操作。2、 將PUSH和POP兩條指令與STR和LDR兩條指令相結(jié)合,容易發(fā)現(xiàn),PUSH和STR指令的區(qū)別在于,STR是從寄存器DR中提取內(nèi)存的地址,而PUSH是從另設的寄存器中提取的地址,同為對內(nèi)存的寫操作,兩者僅在t2階段的執(zhí)行有區(qū)別。而POP和LDR的區(qū)別也類似,POP是將棧頂指針減一所指的內(nèi)存地址中存放的數(shù)據(jù)放入寄存器中,而LDR是將SR寄存器中存的內(nèi)存地址中的數(shù)據(jù)放入寄存器中,同為對內(nèi)存的讀操作。五設計方案1、一條指令執(zhí)行需要3拍時間t1 取指。在t2的上升沿,將從

40、存儲器取出的指令寫入指令寄存器IR。t2根據(jù)指令寄存器IR的內(nèi)容進行指令譯碼;根據(jù)指令譯碼得到的控制信號進行運算和其它操作。t3存儲器讀、寫操作;在t3的下降沿將運算結(jié)果寫入目的寄存器,改變C標志和Z標志;在t3的下降沿,改變PC的值,為取下一條指令做好準備。由于取指階段和存儲器讀寫階段都要訪問存儲器,速度較慢;而指令譯碼和運算都由CPU本身完成,因此取指階段和存儲器讀寫階段各占一拍時間,指令譯碼和運算共占一拍時間。實驗CPU的總體構(gòu)成實驗CPU由5部分組成:取指部分instru_fetch、指令譯碼部分decoder_unit、執(zhí)行部分exe_unit、存儲器部分memory_unit和通用

41、寄存器組fegfile。另外,還有一個程序包exe_cpu_components,將各低層設計實體作為元件存儲,供各設計實體使用。頂層設計實體exe_cpu完成5個組成部分的連接。六 實驗步驟(1)實驗臺設置成FPGA-CPU獨立調(diào)試模式REGSEL = 0、CLKSEL = 1、FDSEL = 0。使用實驗臺上的單脈沖,即STEP_CLK短路子短接,短路子RUN_CLK斷開。(2)將設計在Quartus 下輸入,編譯后下載到TEC-CA上的FPGA中。(3)撥動實驗臺上的開關(guān)SD5SD0,改變IR15.12、進位標志C和結(jié)果為0標志Z,觀察指示燈R10-R0顯示的控制信號,并填寫表6-28和

42、表6-29。七 實驗過程及結(jié)果譯碼器是控制器的一個重要組成部分。而要進行譯碼器的設計,首先應有碼可譯,即須進行指令系統(tǒng)的設計。由于采用硬布線系統(tǒng),故應先在數(shù)據(jù)通路上排出每條指令的指令周期流程,并把流程中的每一步操作分解成微操作序列,然后為每一個微操作分配時間,列出微操作對應的微命令操作時間表,寫出微命令的最簡邏輯表達式,最終用電路實現(xiàn)。實驗時,在原有指令的基礎上,按照實驗要求,考慮了PUSH SR,POP DR,CALL ADDR和RET指令,并相應設計了譯碼器。實驗中遇到了困難主要是編寫的程序一直無法通過。經(jīng)過查閱了大量資料后,終于編寫出正確的程序,完成了實驗要求。加上附加的4條指令后,該實

43、驗中指令條數(shù)達到了17條。因此指令操作碼字段應擴展為5位,對應地,IR也為5位。對應指令的微操做系統(tǒng)已經(jīng)寫在上面的表格中。存儲指令譯碼分析以上圖為例,指令寄存器中的指令為1110111000000000(即STR R2 R3,存儲指令),譯出的Mem_Write為1表示本條指令有存儲器寫操作,存儲器的地址是源寄存器的內(nèi)容。譯出的操作碼op_code為1111(非算術(shù)操作),譯出的目的操作數(shù)寄存器DR為11(即R3),源操作數(shù)寄存器SR均為10(即R2),change_c和change_z等其他無關(guān)標志均為無效。轉(zhuǎn)移指令譯碼分析以上圖為例,指令寄存器中的指令為1010000001010101(即JNZ 55H,條件轉(zhuǎn)移指令),譯出的條件轉(zhuǎn)移標志zj_instruct為1表示本條指令是條“JNZ ADR”指令,譯出的操作碼op_code為1111(非算術(shù)操作),譯出的條件轉(zhuǎn)移指令轉(zhuǎn)移地

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論