西安交通大學(xué)計(jì)算機(jī)組成原理實(shí)驗(yàn)報(bào)告_第1頁(yè)
西安交通大學(xué)計(jì)算機(jī)組成原理實(shí)驗(yàn)報(bào)告_第2頁(yè)
西安交通大學(xué)計(jì)算機(jī)組成原理實(shí)驗(yàn)報(bào)告_第3頁(yè)
西安交通大學(xué)計(jì)算機(jī)組成原理實(shí)驗(yàn)報(bào)告_第4頁(yè)
西安交通大學(xué)計(jì)算機(jī)組成原理實(shí)驗(yàn)報(bào)告_第5頁(yè)
已閱讀5頁(yè),還剩14頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、西安交通大學(xué)計(jì)算機(jī)組成原理實(shí)驗(yàn)報(bào)告姓名:* 班級(jí):物聯(lián)網(wǎng)* 學(xué)號(hào):實(shí)驗(yàn)一 存儲(chǔ)器的訪問(wèn)與實(shí)現(xiàn)一、 實(shí)驗(yàn)?zāi)康?、 理解計(jì)算機(jī)主存儲(chǔ)器的分類及作用;2、 掌握ROM、RAM的讀寫方法。二、 實(shí)驗(yàn)原理存儲(chǔ)器按存取方式分,可分為隨機(jī)存儲(chǔ)器和順序存儲(chǔ)器。如果存儲(chǔ)器中的任何存儲(chǔ)單元的內(nèi)容都可隨機(jī)存取,稱為隨機(jī)存儲(chǔ)器,計(jì)算機(jī)中的主存儲(chǔ)器都是隨機(jī)存儲(chǔ)器。如果存儲(chǔ)器只能按某種順序存取,則稱為順序存儲(chǔ)器,磁帶是順序存儲(chǔ)器,磁盤是半順序存儲(chǔ)器,它們的特點(diǎn)是存儲(chǔ)容量大,存取速度慢,一般作為外部存儲(chǔ)器使用。如果按存儲(chǔ)器的讀寫功能分,有些存儲(chǔ)器的內(nèi)容是固定不變的,即只能讀出不能寫入,這種存儲(chǔ)器稱為只讀存儲(chǔ)器(ROM);既

2、能讀出又能寫入的存儲(chǔ)器,稱為隨機(jī)讀寫存儲(chǔ)器(RAM)。實(shí)際上真正的ROM基本上不用了,用的是光可擦除可編程的ROM(EPROM)和電可擦除可編程的ROM(EEPROM)。EEPROM用的越來(lái)越多,有取代EPROM之勢(shì),比如容量很大的閃存(FLASH)現(xiàn)在用的就很廣泛,常說(shuō)的U盤就是用FLASH做的。按信息的可保存性分,存儲(chǔ)器可分為非永久性記憶存儲(chǔ)器和永久性記憶存儲(chǔ)器。ROM、EPROM、EEPROM都是永久記憶存儲(chǔ)器,它們斷電后存儲(chǔ)內(nèi)容可保存。RAM則是非永久性記憶存儲(chǔ)器,斷電后存儲(chǔ)器中存儲(chǔ)的內(nèi)容丟失。隨機(jī)讀寫存儲(chǔ)器類型隨機(jī)存儲(chǔ)器按其元件的類型來(lái)分,有雙極存儲(chǔ)器和MOS存儲(chǔ)器兩類。在存取速度和

3、價(jià)格兩方面,雙極存儲(chǔ)器比MOS存儲(chǔ)器高,故雙極存儲(chǔ)器主要用于高速的小容量存儲(chǔ)體系。在MOS存儲(chǔ)器中,根據(jù)存儲(chǔ)信息機(jī)構(gòu)的原理不同,又分為靜態(tài)隨機(jī)存儲(chǔ)器(SRAM)和動(dòng)態(tài)隨機(jī)存儲(chǔ)器(DRAM)。靜態(tài)隨機(jī)存儲(chǔ)器采用雙穩(wěn)態(tài)觸發(fā)器來(lái)保存信息,只要不斷電,信息就不會(huì)丟失;動(dòng)態(tài)隨機(jī)存儲(chǔ)器利用記憶電容來(lái)保存信息,使用時(shí)只有不斷地給電容充電才能使信息保持。靜態(tài)隨機(jī)存儲(chǔ)器的集成度較低,功耗也較大;動(dòng)態(tài)隨機(jī)存儲(chǔ)器的集成度較高,功耗低?,F(xiàn)在計(jì)算機(jī)中,內(nèi)存容量較大,常由動(dòng)態(tài)隨機(jī)存儲(chǔ)器構(gòu)成。靜態(tài)隨機(jī)存儲(chǔ)器靜態(tài)存儲(chǔ)器由存儲(chǔ)體、地址譯碼電路、讀寫電路和控制電路組成。一個(gè)4096×1位的SRAM的結(jié)構(gòu)框圖如圖6-37

4、所示。圖中,A0A11為地址線,用來(lái)尋址存儲(chǔ)器中的某一個(gè)單元。DIN、DOUT為數(shù)據(jù)線,實(shí)現(xiàn)數(shù)據(jù)的輸入、輸出。W/R為讀寫控制信號(hào)線,用來(lái)實(shí)現(xiàn)讀寫操作控制。/CS為片選信號(hào)。圖6-37 SRAM結(jié)構(gòu)框圖動(dòng)態(tài)隨機(jī)存儲(chǔ)器動(dòng)態(tài)隨機(jī)存儲(chǔ)器(DRAM)和SRAM一樣,也是由許多基本存儲(chǔ)電路按照行和列來(lái)組成的。DRAM是以MOS管柵極和襯底間電容上的電荷來(lái)存儲(chǔ)信息的。由于MOS管柵極上的電荷會(huì)因漏電而泄放,故存儲(chǔ)單元中的信息只能保持若干秒,為此DRAM必須附加刷新邏輯電路。另外,DRAM將地址分為行地址和列地址,并分時(shí)復(fù)用以減少引腳數(shù)目。常見(jiàn)的4164芯片即是DRAM。三、 實(shí)驗(yàn)要求1、實(shí)驗(yàn)設(shè)計(jì)目標(biāo)設(shè)計(jì)一

5、個(gè)能夠?qū)?shí)驗(yàn)臺(tái)上的存儲(chǔ)器讀寫的部件,滿足以下目標(biāo):(1)、一個(gè)16位的存儲(chǔ)器地址寄存器(MAR)。該寄存器在reset為低電平時(shí)清零,在時(shí)鐘clk的上升沿加1,地址寄存器在超過(guò)ox000f后下一個(gè)時(shí)鐘上升沿回到0。一個(gè)標(biāo)志寄存器(flag),在reset為低電平時(shí)復(fù)位為0,當(dāng)存儲(chǔ)器地址寄存器等于0x000f后,下一個(gè)時(shí)鐘clk的上升沿標(biāo)志寄存器翻轉(zhuǎn)。(2)、在標(biāo)志寄存器為0時(shí)執(zhí)行存儲(chǔ)器存數(shù)功能,從存儲(chǔ)器的0單元開(kāi)始存16個(gè)16位數(shù)。按動(dòng)一次單脈沖按鈕,存一次數(shù),存的數(shù)由內(nèi)部產(chǎn)生,不由實(shí)驗(yàn)臺(tái)開(kāi)關(guān)輸入。(3)、當(dāng)標(biāo)志寄存器為1時(shí),執(zhí)行從存儲(chǔ)器的0單元開(kāi)始的讀數(shù)功能。按動(dòng)一次單脈沖按鈕,讀一次數(shù),一

6、直讀16個(gè)數(shù)。讀出的數(shù)據(jù)送入一個(gè)16位信號(hào)R15.0暫存。提示:當(dāng)需要從存儲(chǔ)器讀取數(shù)據(jù)時(shí),首先將"ZZZZZZZZZZZZZZZZ"賦值給數(shù)據(jù)總線,然后才能讀取存儲(chǔ)器中的數(shù)據(jù)。2、頂層設(shè)計(jì)實(shí)體的引腳要求引腳要求對(duì)應(yīng)關(guān)系如下:(1) clk對(duì)應(yīng)實(shí)驗(yàn)臺(tái)上的時(shí)鐘(單脈沖)。(2) reset對(duì)應(yīng)實(shí)驗(yàn)臺(tái)上的CPU復(fù)位信號(hào)CPU_RST。(3) 存儲(chǔ)器地址總線A15.0對(duì)應(yīng)實(shí)驗(yàn)臺(tái)上的指示燈A15A0。(4) 存儲(chǔ)器數(shù)據(jù)總線D15.0對(duì)應(yīng)實(shí)驗(yàn)臺(tái)上的數(shù)據(jù)指示燈D15D0。(5) 16位信號(hào)R15.0對(duì)應(yīng)實(shí)驗(yàn)臺(tái)上的指示燈R15R0。(6) 存儲(chǔ)器讀寫信號(hào)FWR對(duì)應(yīng)實(shí)驗(yàn)臺(tái)上的FWR。(7)四

7、、 實(shí)驗(yàn)步驟實(shí)驗(yàn)臺(tái)設(shè)置成FPGA-CPU附加外部RAM運(yùn)行模式“011”。該調(diào)試模式要能夠?qū)崿F(xiàn)模擬FPGA-CPU對(duì)實(shí)驗(yàn)臺(tái)存儲(chǔ)器的存數(shù)、取數(shù)功能。即REGSEL = 0、CLKSEL = 1、FDSEL = 1。使用實(shí)驗(yàn)臺(tái)上的單脈沖,即STEP_CLK短路子短接,短路子RUN_CLK斷開(kāi)。由于當(dāng)FDSEL=0時(shí),指示燈D15D0顯示的是開(kāi)關(guān)SD15SD0的值,因此開(kāi)關(guān)FDSEL必須為1。這種方式除了FPGA-CPU的時(shí)鐘是單脈沖外,其余都與單片機(jī)控制FPGA-CPU調(diào)試模式完全一樣。將設(shè)計(jì)在Quartus 下輸入,編譯后下載到TEC-CA上的FPGA中。首先按實(shí)驗(yàn)臺(tái)上的CPU復(fù)位按鈕,使存儲(chǔ)器

8、地址寄存器復(fù)位為0,然后不斷觀察實(shí)驗(yàn)臺(tái)上的指示燈,察看結(jié)果與預(yù)想的是否一致。1、 實(shí)驗(yàn)思路:2、源代碼library 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; -復(fù)位、時(shí)鐘 FWR: out std_logic; -RAM的讀寫 D: inout std_logic_vector(15 downto 0);-數(shù)據(jù)A: out std_logic_vector(

9、15 downto 0); -地址 R:out std_logic_vector(15 downto 0)- 寄存器 );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; -開(kāi)始計(jì)數(shù)(讀寫)、結(jié)束(狀態(tài))beginA <= counter;wdata <= "00000000001" &am

10、p; counter(4 downto 0);- 數(shù)據(jù)16bit的形成process(reset,clk)begin if reset = '0' thencounter <= x"0000"elsif clk'event and clk = '1' then - 計(jì)數(shù)if (start = '1') and (counter /= x"000f") then counter <= counter + '1'elsif (start = '1') and

11、(counter = x"000f") thencounter <= x"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

12、' thenflag <= '0'elsif clk'event and 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 = 

13、9;0' thenD <= wdata;FWR <= clk;elseD <= "ZZZZZZZZZZZZZZZZ"FWR <= '1'R <= D;end if;end if;end process; -增加flag引出信號(hào),觀察他的變化。end behav; 五、實(shí)驗(yàn)結(jié)果及分析仿真結(jié)果如下圖所示,分為兩個(gè)階段,第一個(gè)階段是寫入數(shù)據(jù)階段,經(jīng)過(guò)16個(gè)時(shí)鐘脈沖后,進(jìn)入第二個(gè)階段;第二個(gè)階段是讀出數(shù)據(jù)階段,同樣經(jīng)歷16個(gè)時(shí)鐘脈沖,讀出的數(shù)據(jù)首先暫存在一個(gè)寄存器中,然后再送入數(shù)據(jù)總線。六、思考題如果從存儲(chǔ)器中讀出數(shù)據(jù)時(shí)不首先向

14、數(shù)據(jù)總線送出"ZZZZZZZZZZZZZZZZ",那么會(huì)發(fā)生什么問(wèn)題?答:如果在從存儲(chǔ)器中讀出數(shù)據(jù)時(shí)不首先向數(shù)據(jù)總線送出高阻狀態(tài),那么讀狀態(tài)和寫狀態(tài)就可能會(huì)混淆重疊,從而造成錯(cuò)誤。七、 實(shí)驗(yàn)心得通過(guò)本次實(shí)驗(yàn),我更好地理解了計(jì)算機(jī)主存儲(chǔ)器的分類及作用,同時(shí)也更好地了解和掌握了ROM、RAM的讀寫方法。通過(guò)實(shí)驗(yàn),我可以將書本上的理論知識(shí)與實(shí)際的實(shí)驗(yàn)內(nèi)容及結(jié)果結(jié)合起來(lái),這讓我更好地掌握課堂上學(xué)習(xí)的知識(shí)。不過(guò)在實(shí)驗(yàn)中也遇到了不少問(wèn)題,幸運(yùn)的是,在老師的指導(dǎo)與幫助下,我最終完成了實(shí)驗(yàn),希望以后會(huì)有更多的實(shí)驗(yàn)機(jī)會(huì)。實(shí)驗(yàn)二 運(yùn)算器的設(shè)計(jì)與實(shí)現(xiàn) 加法器的設(shè)計(jì)一、實(shí)驗(yàn)?zāi)康?、掌握基本的算術(shù)運(yùn)

15、算和邏輯運(yùn)算的運(yùn)算規(guī)則和實(shí)現(xiàn)方法;2、掌握基本運(yùn)算器的信息傳送通路;3、掌握運(yùn)算器的工作原理,設(shè)計(jì)并實(shí)現(xiàn)具有定點(diǎn)、浮點(diǎn)運(yùn)算功能的模塊。二、實(shí)驗(yàn)原理運(yùn)算器是既能實(shí)現(xiàn)算術(shù)運(yùn)算又能完成邏輯運(yùn)算的部件。算術(shù)運(yùn)算主要包括加減乘除運(yùn)算,邏輯運(yùn)算主要包括與、或、非、異或和移位運(yùn)算。運(yùn)算器(ALU)通常有兩個(gè)數(shù)據(jù)輸入端(opr1和opr2),一個(gè)數(shù)據(jù)輸出端(result),運(yùn)算模式控制信號(hào)(code)和標(biāo)志位(cin,flag)等。下圖為運(yùn)算器的邏輯框圖:圖2-1 運(yùn)算器運(yùn)算器包含加法器、減法器、乘法器、與門、或門、非門、異或門和移位器。各組成部件的原理如下所述。(本實(shí)驗(yàn)中設(shè)計(jì)的運(yùn)算器操作數(shù)為8位字長(zhǎng))。加法

16、器 從進(jìn)位傳遞時(shí)間和門電路的扇入、扇出來(lái)考慮,將8位數(shù)據(jù)分為兩組,采取組內(nèi)并行、組間串行的設(shè)計(jì)方案。該加法器的設(shè)計(jì)框圖如下所示:圖2-2 8位的加法器其中,Gi=opr1(i) and opr2(i) (i=1,7),Gi 為第i位的本地進(jìn)位,Pi=opr1(i) xor opr2(i)(i=1,7),P(i)為傳遞條件。4位先行加法器的邏輯圖如下所示:圖2-3 4位先行加法器邏輯圖于是根據(jù)邏輯圖可以得出4位先行加法器的邏輯表達(dá)式如下:Gi = opr1(i-1)opr2(i-1)Pi = opr1(i-1)opr2(i-1)S1 = P1C0C1 = G1 + P1C0 S2 = P2C1

17、C2 = G2 + P2C1 = G2 + P2G1 + P2P1C0 S3 = P3C2 C3 = G3 + P3C2 = G3 + P3 G2 + P3 P2G1 + P3P2P1C0 S4 = P4C3 C4 = G4 + P4C3 = G4 + P4G3 + P4P3G2 + P4P3 P2G1 + P4P3P2P1C0四、實(shí)驗(yàn)內(nèi)容由于時(shí)間關(guān)系,第二次實(shí)驗(yàn)老師要求我們只需要做加法器,所以實(shí)驗(yàn)內(nèi)容主要是設(shè)計(jì)一個(gè)基本的加法器。頂層設(shè)計(jì)實(shí)體的引腳對(duì)應(yīng)關(guān)系:(1)運(yùn)算控制信號(hào)set對(duì)應(yīng)實(shí)驗(yàn)臺(tái)上開(kāi)關(guān)SA0;(2)低位向高位的進(jìn)位或者借位信號(hào)cin對(duì)應(yīng)實(shí)驗(yàn)臺(tái)上開(kāi)關(guān)SA1;(3)操作碼code2.0

18、對(duì)應(yīng)實(shí)驗(yàn)臺(tái)上開(kāi)關(guān)SA5SA2;(4)第一操作數(shù)opr17.0對(duì)應(yīng)于實(shí)驗(yàn)臺(tái)上開(kāi)關(guān)SD7SD0;(5)第二操作數(shù)opr2 7.0對(duì)應(yīng)實(shí)驗(yàn)臺(tái)上開(kāi)關(guān)SD15SD8;(6)運(yùn)算結(jié)果result 15.0對(duì)應(yīng)實(shí)驗(yàn)臺(tái)上指示燈A7A0; (7)運(yùn)算結(jié)果標(biāo)志位flag對(duì)應(yīng)實(shí)驗(yàn)臺(tái)上指示燈 A8。注: 運(yùn)算器模塊框圖:運(yùn)算器(ALU)通常有兩個(gè)數(shù)據(jù)輸入端(opr1和opr2),一個(gè)數(shù)據(jù)輸出端(result),運(yùn)算模式控制信號(hào)(code)和標(biāo)志位( cin , flag)等。下圖為運(yùn)算器的邏輯框圖:圖2-1 運(yùn)算器· 運(yùn)算器包含加法器(含用先行進(jìn)位的構(gòu)成的加法器)、減法器、乘法器、與門、或門、非門、異或門和

19、移位器等及浮點(diǎn)運(yùn)算模塊;運(yùn)算器模塊中也可以加入寄存器組(Register file) · 本實(shí)驗(yàn)中設(shè)計(jì)的運(yùn)算器操作數(shù)可以分別為8/16/32位字長(zhǎng)(32位字長(zhǎng)運(yùn)算可以只進(jìn)行仿真分析)五、實(shí)驗(yàn)源代碼8位加法器LIBRARY ieee;USE ieee.std_logic_1164.ALL;ENTITY adder8 ISPORT (a : IN std_logic_vector(7 DOWNTO 0);b : IN std_logic_vector(7 DOWNTO 0);cin : IN std_logic;cout : OUT std_logic;sum : OUT std_log

20、ic_vector(7 DOWNTO 0);END adder8;ARCHITECTURE ripple OF adder8 ISCOMPONENT fulladderPORT(a, b, CarryIn : INSTD_LOGIC;Sum, CarryOut : OUTSTD_LOGIC);END COMPONENT;SIGNAL carry : std_logic_vector(7 DOWNTO 1);BEGINf0: fulladder PORT MAP (a => a(0), b => b(0),CarryIn => cin, Sum => sum(0), Ca

21、rryOut => carry(1);f1: fulladder PORT MAP (a => a(1), b => b(1),CarryIn => carry(1), Sum => sum(1), CarryOut => carry(2);f2: fulladder PORT MAP (a => a(2), b => b(2),CarryIn => carry(2), Sum => sum(2), CarryOut => carry(3);f3: fulladder PORT MAP (a => a(3), b =>

22、; b(3),CarryIn => carry(3), Sum => sum(3), CarryOut => carry(4);f4: fulladder PORT MAP (a => a(4), b => b(4),CarryIn => carry(4), Sum => sum(4), CarryOut => carry(5);f5: fulladder PORT MAP (a => a(5), b => b(5),CarryIn => carry(5), Sum => sum(5), CarryOut => ca

23、rry(6);f6: fulladder PORT MAP (a => a(6), b => b(6),CarryIn => carry(6), Sum => sum(6), CarryOut => carry(7);f7: fulladder PORT MAP (a => a(7), b => b(7),CarryIn => carry(7), Sum => sum(7), CarryOut => cout);END ripple;六、實(shí)驗(yàn)結(jié)果加法器設(shè)計(jì):第一操作數(shù)opr17.0對(duì)應(yīng)于實(shí)驗(yàn)臺(tái)上開(kāi)關(guān)SD7SD0;第二操作數(shù)opr2 7

24、.0對(duì)應(yīng)實(shí)驗(yàn)臺(tái)上開(kāi)關(guān)SD15SD8;運(yùn)算結(jié)果result 15.0對(duì)應(yīng)實(shí)驗(yàn)臺(tái)上指示燈A7A0。通過(guò)開(kāi)關(guān)SD7SD0表示第一操作數(shù),開(kāi)關(guān)SD15SD8表示第二操作數(shù),相加在指示燈A7A0上即可得到結(jié)果。七、實(shí)驗(yàn)心得通過(guò)這次實(shí)驗(yàn),我對(duì)基本的算術(shù)運(yùn)算和邏輯運(yùn)算的運(yùn)算規(guī)則和實(shí)現(xiàn)方法的掌握加深了。除此之外,通過(guò)實(shí)驗(yàn),我基本掌握運(yùn)算器的工作原理,我還學(xué)習(xí)了如何用運(yùn)算器實(shí)現(xiàn)信息傳送通路。這次實(shí)驗(yàn)我們主要學(xué)習(xí)了加法器的設(shè)計(jì)與實(shí)現(xiàn)。起初大家都還不熟悉,所以從一位加法器開(kāi)始做起,慢慢地熟悉起來(lái)之后,可以做到八位了。在此,我很感謝姜老師在實(shí)驗(yàn)過(guò)程中對(duì)我的幫助,因?yàn)橛欣蠋煹膸椭也趴梢栽谝?guī)定時(shí)間里完成實(shí)驗(yàn),并收獲了不

25、少知識(shí)!實(shí)驗(yàn)三 指令譯碼器(硬連線控制器)的設(shè)計(jì)與實(shí)現(xiàn)一、 實(shí)驗(yàn)?zāi)康?、理解指令譯碼器的作用和重要性;2、理解控制器中指令與微操作的關(guān)系;3、學(xué)習(xí)設(shè)計(jì)指令譯碼器。二、 實(shí)驗(yàn)原理指令譯碼器是計(jì)算機(jī)控制器中最重要的部分。所謂組合邏輯控制器就是指指令譯碼電路是由組合邏輯實(shí)現(xiàn)的。組合邏輯控制器又稱硬連線控制器,是早期設(shè)計(jì)計(jì)算機(jī)的一種方法。這種控制器中的控制信號(hào)直接由各種類型的邏輯門和觸發(fā)器等組合產(chǎn)生。這樣,一旦控制部件構(gòu)成后,除非重新設(shè)計(jì)和物理上對(duì)它重新連線,否則要想增加新的功能是不可能的。結(jié)構(gòu)上的這種缺陷使得硬連線控制器的設(shè)計(jì)和調(diào)試變得非常復(fù)雜而且代價(jià)很大。所以,硬連線控制器曾一度被微程序控制器所取

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

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

28、作時(shí)間表,將執(zhí)行某一微操作的所有條件(哪條指令、哪個(gè)機(jī)器周期、哪個(gè)節(jié)拍和脈沖等)都考慮在內(nèi),加以分類組合,列出各微操作產(chǎn)生的邏輯表達(dá)式,并加以簡(jiǎn)化。(5)實(shí)現(xiàn)電路根據(jù)上面所得邏輯表達(dá)式,用邏輯門電路的組合或大規(guī)模集成電路來(lái)實(shí)現(xiàn)。三、實(shí)驗(yàn)內(nèi)容1、設(shè)計(jì)目標(biāo)根據(jù)提供的指令集(附件1),設(shè)計(jì)CPU的指令譯碼器,本實(shí)驗(yàn)指令譯碼器的設(shè)計(jì)相對(duì)簡(jiǎn)單,因?yàn)楣?jié)拍(t1、t2和t3)信號(hào)只在存儲(chǔ)器讀寫時(shí)需要對(duì)存儲(chǔ)器地址分時(shí)使用時(shí)需要考慮,所以這里暫不考慮節(jié)拍脈沖t,也就是說(shuō)微操作控制信號(hào)只是指令操作碼In和Bj的函數(shù):Cm = f(In,Bj)式中的In主要代表指令操作碼IR15.12,還有輔助操作碼(如算術(shù)邏輯指

29、令時(shí)的IR2.0,我們這里要求只考慮指令操作碼IR15.12。Bj代表進(jìn)位標(biāo)志C和結(jié)果為0標(biāo)志Z。要求產(chǎn)生的微操作控制信號(hào)如下:op_code 控制ALU進(jìn)行8種運(yùn)算操作的3位編碼。c_z_j_flag 為1表示需要條件轉(zhuǎn)移。lj_instruct 為1表示本條指令是條“JMP ADR”指令。DRWr 為1表示在t3的下降沿將本條指令的執(zhí)行結(jié)果寫入目的寄存器。Mem_Write 為1表示本條指令有存儲(chǔ)器寫操作,存儲(chǔ)器的地址是目的寄存器的內(nèi)容。DW_intruct 為1表示本條指令是雙字指令。change_z 為1表示本條指令可能改變z(結(jié)果為0)標(biāo)志。change_c 為1表示本條指令可能改變

30、c(進(jìn)位)標(biāo)志。sel_memdata 為1表示本條指令寫入目的寄存器的值來(lái)自讀存儲(chǔ)器。2、頂層設(shè)計(jì)實(shí)體的引腳要求引腳要求的對(duì)應(yīng)關(guān)系如下:(1)指令I(lǐng)R15.12對(duì)應(yīng)實(shí)驗(yàn)臺(tái)開(kāi)關(guān)SD3SD0進(jìn)位C對(duì)應(yīng)實(shí)驗(yàn)臺(tái)開(kāi)關(guān)SD4結(jié)果為0標(biāo)志Z對(duì)應(yīng)實(shí)驗(yàn)臺(tái)開(kāi)關(guān)SD5(2)控制信號(hào)對(duì)應(yīng)如下:op_code2.0指示燈R2、R1、R0 c_z_j_flag指示燈R3lj_instruct指示燈R4DRWr指示燈R5Mem_Write指示燈R6DW_intruct指示燈R7change_z 指示燈R8change_c指示燈R9sel_memdata 指示燈R10四、實(shí)驗(yàn)源程序及注釋指令譯碼器:library ieee

31、;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;-實(shí)體的定義部分entity instruction_decoder isport (IRH: in std_logic_vector(3 downto 0); /指令操作碼IR15.12c,z: in std_logic; /c表示進(jìn)位標(biāo)志,z表示結(jié)果為0標(biāo)志op_code: out std_logic_vector(2 downto 0); /控制ALU進(jìn)行8種運(yùn)算操作的3位編碼 c_z_j_flag: out

32、std_logic; /為1表示需要操作轉(zhuǎn)移 lj_instruct: out std_logic; /為1表示本條指令是“JMP ADR”指令 DRWr: buffer std_logic; /為1時(shí)寫DR寄存器 Mem_Write: out std_logic; /為1表示本指令有存儲(chǔ)器寫操作,存儲(chǔ)器的地址是目的寄存器中的內(nèi)容 DW_intruct: buffer std_logic; /為1表示指令是雙字指令 change_z: out std_logic; /為1表示本條指令可能改變Z標(biāo)志change_c: out std_logic; /為1表示本條指令可能改變C標(biāo)志sel_memd

33、ata: out std_logic /為1時(shí)存儲(chǔ)器的讀出數(shù)據(jù)作為寫入DR的數(shù)據(jù) );end instruction_decoder;architecture behav of instruction_decoder issignal zj_instruct, cj_instruct: std_logic;beginsel_memdata <= IRH(3) and IRH(2) and (not IRH(1);-110.開(kāi)頭操作碼的指令change_z <= (not IRH(3) and (not IRH(2) or (not IRH(3) and IRH(2) and (no

34、t IRH(1) or (not IRH(3) and IRH(2) and IRH(1) and (not IRH(0);/10. 010. 0110開(kāi)頭操作碼的指令改變z標(biāo)志change_c <= (not IRH(3) and (not IRH(2); /00. 開(kāi)頭操作碼的指令改變c標(biāo)志c_z_j_flag <= (zj_instruct and (not z) or (cj_instruct and (not c);/條件轉(zhuǎn)移DRWr_proc: process(IRH)beginif IRH(3) = '0' then /算術(shù)邏輯指令,000,001,0

35、10,011,DRWr為1,將結(jié)果存入目的寄存器 DRWr <= '1'elsif IRH(2) = '1' and IRH(1) = '0' then /MVRD DR,DATA;LDR DR,SRDRWr <= '1' /110,111,DRWr為1,將結(jié)果存入目的寄存器elseDRWr <= '0'end if;end process;M_instruct:process(IRH)begincase IRH(3 downto 0) iswhen "1000" | &quo

36、t;1100" => -jmp addr;mvrd dr,dataMem_Write <= '0'DW_intruct <= '1'when "1110" => - str sr,drMem_Write <= '1'DW_intruct <= '0'when others =>Mem_Write <= '0'DW_intruct <= '0'end case;end process;ALUOP_CODE_PROC:P

37、ROCESS(IRH) /算術(shù)邏輯單元begin if IRH(3) = '0' then -000,001,010,011op_code <= IRH(2 downto 0);elseop_code <= "111"end if;end process;Jinstruct_PROC:process(IRH)begin case IRH(3 downto 0) iswhen "1000" => -jmp adr /功能:PC<-ADR 無(wú)條件轉(zhuǎn)移zj_instruct <= '0'cj_ins

38、truct <= '0'lj_instruct <= '1'when "1001" => -jnc addr /條件轉(zhuǎn)移zj_instruct <= '0'cj_instruct <= '1'lj_instruct <= '0'when "1010" => -jnz addr zj_instruct <= '1'cj_instruct <= '0'lj_instruct <= '

39、;0'when others =>zj_instruct <= '0'cj_instruct <= '0'lj_instruct <= '0'end case;end process;end behav;五、實(shí)驗(yàn)步驟(可選兩種設(shè)備操作)1、使用TEC-CA-I實(shí)驗(yàn)箱的操作:(1)實(shí)驗(yàn)臺(tái)設(shè)置成FPGA-CPU獨(dú)立調(diào)試模式REGSEL = 0、CLKSEL = 1、FDSEL = 0。使用實(shí)驗(yàn)臺(tái)上的單脈沖,即STEP_CLK短路子短接,短路子RUN_CLK斷開(kāi)。(2)將設(shè)計(jì)在Quartus 下輸入,編譯后下載到TEC-

40、CA上的FPGA中。(3)撥動(dòng)實(shí)驗(yàn)臺(tái)上的開(kāi)關(guān)SD5SD0,改變IR15.12、進(jìn)位標(biāo)志C和結(jié)果為0標(biāo)志Z,觀察指示燈R10-R0顯示的控制信號(hào),并填寫下表2、使用XJECA實(shí)驗(yàn)板的操作:(1)輸入信號(hào)(指令操作碼):IR15.12、OP2.0(2)輸出信號(hào):指示燈顯示微操作信號(hào)(下表的后8項(xiàng))填寫下表。表一 指令譯碼器實(shí)驗(yàn)(C=0且Z=0)指令I(lǐng)R15.12OP2.0c_z_j_flaglj_instructDRWrMem_WriteDW_intructchange_zchange_csel_memdataADD DR,SR000000000100110INC DR00011000010011

41、0SUB DR,SR001001000100110DEC DR001111000100110AND DR,SR010000100100100OR DR,SR010110100100100NOT DR011001100100100MOV DR,SR011111100100000JMP ADR100011101000000JNC ADR100111110000000JNZ ADR101011110000000MVRD DR,DATA110011100100000LDR DR,SR110111100100001STR SR,DR111011100010000表二 指令譯碼器實(shí)驗(yàn)(C=0且Z=1或者C

42、=1且Z=0或者C=1且Z=1)指令I(lǐng)R15.12OP2.0c_z_j_flaglj_instructDRWrMem_WriteDW_intructchange_zchange_csel_memdataADD DR,SR000000000100110INC DR000100100100110SUB DR,SR001001000100110DEC DR001101100100110AND DR,SR010010000100100OR DR,SR010110100100100NOT DR011011000100100MOV DR,SR110011100101001JMP ADR100011101001000JNC ADR100111100000000JNZ ADR101011100000000MVRD DR,DATA110011100101001LDR DR,SR110111100100001STR SR,DR111011100010000由上表可知,C和Z只影響與標(biāo)志位有關(guān)的指令的結(jié)果。其中指令JNC ADR和JNZ ADR有條件轉(zhuǎn)移,所以當(dāng)C和Z的取值變化時(shí),會(huì)影響實(shí)驗(yàn)結(jié)果。對(duì)于其他指令,C和Z的取值發(fā)生變化時(shí)結(jié)果不變。對(duì)于JNC

溫馨提示

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

評(píng)論

0/150

提交評(píng)論