版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> 計(jì)算機(jī)組成原理課程設(shè)計(jì)報(bào)告</p><p> 題 目: 設(shè)計(jì)一臺(tái)嵌入式CISC模型機(jī) </p><p> 院 (系): 計(jì)算機(jī)科學(xué)與工程學(xué)院 </p><p> 專 業(yè): 網(wǎng)絡(luò)工程 </p><p> 學(xué)
2、 號(hào): </p><p> 學(xué)生姓名: </p><p> 指導(dǎo)教師: </p><p><b> 目錄</b></p><p> 設(shè)計(jì)一臺(tái)嵌入式CISC模型機(jī)選題及
3、要求3</p><p> 課程設(shè)計(jì)的題目和內(nèi)容(B類)3</p><p> 課程設(shè)計(jì)需要完成的內(nèi)容要求3</p><p> 系統(tǒng)開發(fā)環(huán)境及平臺(tái)介紹4</p><p> 嵌入式CISI模型機(jī)系統(tǒng)總體設(shè)計(jì)4</p><p> 嵌入式CISC系統(tǒng)設(shè)計(jì)模型圖4</p><p>
4、控制器邏輯結(jié)構(gòu)框圖5</p><p> 設(shè)計(jì)模型機(jī)指令系統(tǒng)及指令格式5</p><p> 基本指令及匯編功能介紹5</p><p> 指令格式設(shè)計(jì)介紹6</p><p> T1、T2、T3、T4與CLR、Q之間的關(guān)系圖7</p><p> 微程序控制流程圖8</p><p>
5、; 微程序微指令詳細(xì)設(shè)計(jì)9</p><p> 地址邏輯轉(zhuǎn)移電路單元9</p><p> 軟件代碼清單設(shè)計(jì)11</p><p> 微地址寄存器單元aa11</p><p> 控制存儲(chǔ)器單元CONTROM13</p><p> 微命令寄存器單元MCOMMAND15</p><p&
6、gt; 微地址轉(zhuǎn)換器單元(F1、F2、F3)17</p><p> 微程序操作器單元CROM19</p><p> 算術(shù)邏輯運(yùn)算執(zhí)行單元ALU21</p><p> 狀態(tài)條件寄存器單元LS7422</p><p> 公共寄存器單元LS27323</p><p> 1:2分配器FEN2單元24&l
7、t;/p><p> 3選1數(shù)據(jù)選擇器MUX3單元25</p><p> 4選1數(shù)據(jù)選擇器MUX4單元26</p><p> 程序計(jì)數(shù)器PC單元27</p><p> 主存儲(chǔ)器ROM芯片ROM16單元28</p><p> 時(shí)序產(chǎn)生器COUNTER單元29</p><p> 嵌入
8、式CISC模型機(jī)頂層電路單元31</p><p> 匯編語言源程序設(shè)計(jì)31</p><p> 機(jī)器語言源程序代碼設(shè)計(jì)32</p><p> 功能仿真及波形圖結(jié)果分析33</p><p> 嵌入式CISC模型機(jī)的故障現(xiàn)象分析35</p><p> 課設(shè)總結(jié)心得體會(huì)36</p><
9、p> 設(shè)計(jì)一臺(tái)嵌入式CISC模型機(jī)選題及要求</p><p> 課程設(shè)計(jì)的題目和內(nèi)容(B類)</p><p> 設(shè)計(jì)一臺(tái)嵌入式CISC模型計(jì)算機(jī)(采用定長CPU周期、聯(lián)合控制方式),并運(yùn)行能完成一定功能的機(jī)器語言程序進(jìn)行驗(yàn)證。</p><p> 要求連續(xù)輸入5個(gè)有符號(hào)整數(shù)(用8位二進(jìn)制補(bǔ)碼表示,十六進(jìn)制數(shù)輸入)求所有正數(shù)的平方和并輸出顯示。</p
10、><p> 說明:①5個(gè)有符號(hào)數(shù)從外部輸入;</p><p> ?、谝欢ㄒ褂梅?hào)位(比如說SF),并且要使用負(fù)的時(shí)候轉(zhuǎn)移(比如 說JS)或不為負(fù)的時(shí)候轉(zhuǎn)移(比如說JNS)指令。</p><p> 課程設(shè)計(jì)需要完成的內(nèi)容要求</p><p> 完成系統(tǒng)的總體設(shè)計(jì),畫出模型機(jī)數(shù)據(jù)通路框圖;</p><p> 設(shè)
11、計(jì)微程序控制器(CISC模型計(jì)算機(jī))的邏輯結(jié)構(gòu)框圖; </p><p> 設(shè)計(jì)機(jī)器指令格式和指令系統(tǒng); </p><p> 設(shè)計(jì)時(shí)序產(chǎn)生器電路; </p><p> 設(shè)計(jì)所有機(jī)器指令的微程序流程圖; </p><p> 設(shè)計(jì)操作控制器單元;</p><p> 設(shè)計(jì)模型機(jī)的所有單元電路,并用VHDL語言(也可使
12、用GDF文件----圖形描述文件)對(duì)模型機(jī)中的各個(gè)部件進(jìn)行編程,并使之成為一個(gè)統(tǒng)一的整體,即形成頂層電路或頂層文件; </p><p> 由給出的題目和設(shè)計(jì)的指令系統(tǒng)編寫相應(yīng)的匯編語言源程序;</p><p> 根據(jù)設(shè)計(jì)的指令格式,將匯編語言源程序手工轉(zhuǎn)換成機(jī)器語言源程序,并將其設(shè)計(jì)到模型機(jī)中的ROM中去;</p><p> 使用EDA軟件進(jìn)行功能仿真,要保證
13、其結(jié)果滿足題目的要求;(其中要利用EDA軟件提供的波形編輯器,選擇合適的輸入輸出信號(hào)及中間信號(hào)進(jìn)行調(diào)試。)</p><p> 系統(tǒng)開發(fā)環(huán)境及平臺(tái)介紹</p><p> EDA軟件(Maxplus版本系列)、Windows操作系統(tǒng)平臺(tái)。</p><p> Max+plusⅡ是Altera公司上一代的PLD開發(fā)軟件,Max+plusⅡ界面友好,使用便捷,被譽(yù)為業(yè)界
14、最易用易學(xué)的EDA軟件。在Max+plusⅡ上可以完成設(shè)計(jì)輸入、元件適配、時(shí)序仿真和功能仿真、編程下載整個(gè)流程,它提供了一種與結(jié)構(gòu)無關(guān)的設(shè)計(jì)環(huán)境,使設(shè)計(jì)者能方便地進(jìn)行設(shè)計(jì)輸入、快速處理和器件編程。Maxplus基本使用介紹:Graphic Editor圖形編輯器;Symbol Editor符號(hào)編輯器;Text Editor文本編輯器;Waveform Editor波形編輯器;Compiler編譯器;Simulator仿真器;File:P
15、roject:Name建立工程名;Save,Compile,Simulator保存,編譯,仿真;New新建文件;Open打開文件;Create Default Symbol創(chuàng)建當(dāng)前模塊圖形符號(hào)。</p><p> 嵌入式CISI模型機(jī)系統(tǒng)總體設(shè)計(jì)</p><p> 嵌入式CISC系統(tǒng)設(shè)計(jì)模型圖</p><p><b> 控制器邏輯結(jié)構(gòu)框圖</b
16、></p><p> 設(shè)計(jì)模型機(jī)指令系統(tǒng)及指令格式</p><p> 基本指令及匯編功能介紹</p><p> 說明:對(duì)Rs和Rd的規(guī)定:</p><p> 模型機(jī)規(guī)定數(shù)據(jù)的表示采用定點(diǎn)整數(shù)補(bǔ)碼表示,單字長為8位,其格式如下:</p><p><b> 指令格式設(shè)計(jì)介紹</b>&l
17、t;/p><p> ?。?)I/O指令(單字節(jié))</p><p><b> IN輸入指令:</b></p><p><b> OUT輸出指令:</b></p><p> ?。?)MOV指令(雙字節(jié))</p><p> MUL指令(單字節(jié))</p><p&
18、gt;<b> 乘法指令:</b></p><p> “Rs”為源寄存器,存放的是源操作數(shù) </p><p> “Rd”為目的寄存器,存放的是目的操作數(shù)所在的地址</p><p> ?。?)ADD(單字節(jié))</p><p><b> 求和指令:</b></p><p&g
19、t; “Rs”為源寄存器,存放的是源操作數(shù) </p><p> “Rd”為目的寄存器,存放的是目的操作數(shù)所在的地址</p><p> (5)INC(單字節(jié))</p><p><b> 自加1指令:</b></p><p> ?。?)TEST指令(單字節(jié))</p><p> ?。?)JS、
20、JMP條件轉(zhuǎn)移指令(雙字節(jié))</p><p> T1、T2、T3、T4與CLR、Q之間的關(guān)系圖</p><p><b> 微程序控制流程圖</b></p><p> 微程序微指令詳細(xì)設(shè)計(jì)</p><p> 微指令設(shè)計(jì)依次從左到右:</p><p> 微地址:(6位) (根據(jù)流程圖設(shè)計(jì)而設(shè)
21、計(jì));</p><p> 微命令字段+P字段:25位:包含后繼微地址:(6位)(根據(jù)流程圖設(shè)計(jì)而設(shè)計(jì))</p><p> 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0</p><p> LOAD LDPC LDAR LDIR LDRi RD_B RS_B S1 S0 ALU_B
22、 LDAC LDDR WR CS SW_B LED_B LDFR P1 P2 </p><p> 地址邏輯轉(zhuǎn)移電路單元</p><p> 地址邏輯轉(zhuǎn)移電路為了實(shí)現(xiàn)微地址的多路轉(zhuǎn)移。</p><p> 微地址寄存器中的觸發(fā)器異步置“1”端低電平有效,與µA4~µA0對(duì)應(yīng)的異步置“1”控制信號(hào)SE5~SE1的邏輯表達(dá)式為:(µA5
23、的異步置“1”端SE6實(shí)際未使用。)其中邏輯表達(dá)式如下:</p><p> SE5=FS·P(2)·T4</p><p> SE4=I7·P(1)·T4</p><p> SE3=I6·P(1)·T4</p><p> SE2=I5·P(1)·T4<
24、/p><p> SE1=I4·P(1)·T4</p><p> 地址轉(zhuǎn)移邏輯電路中異步置“1”信號(hào)SE5~SE1表達(dá)式的確定與P字段測(cè)試時(shí)轉(zhuǎn)移微地址的確定密切相關(guān).地址轉(zhuǎn)移邏輯電路的實(shí)現(xiàn)代碼如下:</p><p> LIBRARY IEEE;</p><p> USE IEEE.STD_LOGIC_1164.ALL;&
25、lt;/p><p> ENTITY ADDR IS</p><p><b> PORT(</b></p><p> I7,I6,I5,I4:IN STD_LOGIC;</p><p> FS,T4,P1,P2:IN STD_LOGIC;</p><p> SE6,SE5,SE4,SE3,SE
26、2,SE1:OUT STD_LOGIC</p><p><b> );</b></p><p><b> END ADDR;</b></p><p> ARCHITECTURE A OF ADDR IS</p><p><b> BEGIN</b></p>
27、<p><b> SE6<='1';</b></p><p> SE5<=NOT(NOT FS AND P2 AND T4);</p><p> SE4<=NOT(I7 AND P1 AND T4);</p><p> SE3<=NOT(I6 AND P1 AND T4);</p
28、><p> SE2<=NOT(I5 AND P1 AND T4);</p><p> SE1<=NOT(I4 AND P1 AND T4);</p><p><b> END A;</b></p><p> 編譯成功通過之后生成圖形符號(hào),地址轉(zhuǎn)移邏輯電路就可以使用了。</p><p&g
29、t;<b> 軟件代碼清單設(shè)計(jì)</b></p><p> 微地址寄存器單元aa</p><p> 由6個(gè)MMM器件單元組成:</p><p> LIBRARY IEEE;</p><p> USE IEEE.STD_LOGIC_1164.ALL;</p><p> ENTITY MMM
30、 IS</p><p><b> PORT(</b></p><p> SE:IN STD_LOGIC;</p><p> T2:IN STD_LOGIC;</p><p> D:IN STD_LOGIC;</p><p> CLR:IN STD_LOGIC;</p>&
31、lt;p> UA:OUT STD_LOGIC</p><p><b> );</b></p><p><b> END MMM;</b></p><p> ARCHITECTURE A OF MMM IS</p><p><b> BEGIN</b><
32、/p><p> PROCESS(CLR,SE,T2)</p><p><b> BEGIN</b></p><p> IF(CLR='0')THEN</p><p> UA<='0';</p><p> ELSIF(SE='0'
33、;)THEN</p><p> UA<='1';</p><p> ELSIF(T2'EVENT AND T2='1') THEN</p><p><b> UA<=D;</b></p><p><b> END IF;<
34、/b></p><p> END PROCESS;</p><p><b> END A; </b></p><p> 編譯成功后生成MMM元器件,生成微地址寄存器單元aa,如圖所示: </p><p> 控制存儲(chǔ)器單元CONTROM</p><p> LIBRARY IEE
35、E;</p><p> USE IEEE.STD_LOGIC_1164.ALL;</p><p> USE IEEE.STD_LOGIC_ARITH.ALL;</p><p> USE IEEE.STD_LOGIC_UNSIGNED.ALL;</p><p> ENTITY CONTROM IS</p><p>
36、; PORT(ADDR: IN STD_LOGIC_VECTOR(5 DOWNTO 0);</p><p> UA:OUT STD_LOGIC_VECTOR(5 DOWNTO 0);</p><p> D:OUT STD_LOGIC_VECTOR(18 DOWNTO 0)</p><p><b> );</b></p>&
37、lt;p> END CONTROM;</p><p> ARCHITECTURE A OF CONTROM IS</p><p> SIGNAL DATAOUT: STD_LOGIC_VECTOR(24 DOWNTO 0);</p><p><b> BEGIN </b></p><p> PROCESS
38、(ADDR)</p><p><b> BEGIN</b></p><p> CASE ADDR IS </p><p> WHEN "000000" => DATAOUT<="1110011001001111000000010";</p><p> WH
39、EN "000010" => DATAOUT<="1001011001001011010000000";</p><p> WHEN "000011" => DATAOUT<="1000111001001011000000000";</p><p> WHEN "00010
40、0" => DATAOUT<="1000011101001111100000000";</p><p> WHEN "000101" => DATAOUT<="1000001001011111000000110";</p><p> WHEN "000110" =>
41、DATAOUT<="1000111010001111000000000";</p><p> WHEN "000111" => DATAOUT<="1000111001001101000000000";</p><p> WHEN "001000" => DATAOUT<=&q
42、uot;1110011001001111000000011";</p><p> WHEN "001001" => DATAOUT<="1000001001011111000000100";</p><p> WHEN "001010" => DATAOUT<="1110011001
43、001111001100000";</p><p> WHEN "001011" => DATAOUT<="1000010001101111000000101";</p><p> WHEN "001100" => DATAOUT<="100001000110111100001001
44、0";</p><p> WHEN "001101" => DATAOUT<="1000001001101111000010100";</p><p> WHEN "001110" => DATAOUT<="1110011001001111000010101";</p
45、><p> WHEN "001111" => DATAOUT<="1000010001000110000000000";</p><p> WHEN "010010" => DATAOUT<="1000001001011111000010011";</p><p>
46、; WHEN "010011" => DATAOUT<="1000111000001111000000000";</p><p> WHEN "010100" => DATAOUT<="1000111110001111000000000";</p><p> WHEN "
47、010101" => DATAOUT<="0100011001001011000000000";</p><p> WHEN "100000" => DATAOUT<="0100011001001011000000000";</p><p> WHEN "110000" =
48、> DATAOUT<="1000011001001111000000000";</p><p> WHEN OTHERS => DATAOUT<="1000011001001111000000000";</p><p><b> END CASE;</b></p><p>
49、 UA(5 DOWNTO 0)<=DATAOUT(5 DOWNTO 0);</p><p> D(18 DOWNTO 0)<=DATAOUT(24 DOWNTO 6);</p><p> END PROCESS;</p><p> END A; </p><p> 微命令寄存器單元MCOMMAND </p&g
50、t;<p> LIBRARY IEEE;</p><p> USE IEEE.STD_LOGIC_1164.ALL;</p><p> USE IEEE.STD_LOGIC_ARITH.ALL;</p><p> USE IEEE.STD_LOGIC_UNSIGNED.ALL;</p><p> ENTITY MCOM
51、MAND IS</p><p><b> PORT(</b></p><p> T2,T3,T4,I3,I2,I1,I0:IN STD_LOGIC;</p><p> O:IN STD_LOGIC_VECTOR(18 DOWNTO 0);</p><p> P1,P2,LOAD,LDPC,LDAR,LDIR,LD
52、R0,LDR1,LDR2,R0_B,R1_B,R2_B,S1,S0,ALU_B,LDAC,LDDR,WR,CS,SW_B,LED_B,LDFR:OUT STD_LOGIC</p><p><b> );</b></p><p> END MCOMMAND;</p><p> ARCHITECTURE A OF MCOMMAND IS<
53、;/p><p> SIGNAL DATAOUT:STD_LOGIC_VECTOR(18 DOWNTO 0);</p><p><b> BEGIN</b></p><p> PROCESS(T2)</p><p><b> BEGIN</b></p><p> IF(T
54、2'EVENT AND T2='1')THEN</p><p> DATAOUT(18 DOWNTO 0)<=O(18 DOWNTO 0);</p><p><b> END IF;</b></p><p> P2<=DATAOUT(0);</p><p> P1<=DA
55、TAOUT(1);</p><p> LDFR<=DATAOUT(2) AND T4;</p><p> LED_B<=DATAOUT(3);</p><p> SW_B<=DATAOUT(4);</p><p> CS<=DATAOUT(5);</p><p> WR<=DAT
56、AOUT(6)OR(NOT T3);</p><p> LDDR<=DATAOUT(7) AND T4;</p><p> LDAC<=DATAOUT(8) AND T4;</p><p> ALU_B<=DATAOUT(9);</p><p> S0<=DATAOUT(10);</p><
57、p> S1<=DATAOUT(11);</p><p> R2_B<=(DATAOUT(13)OR(NOT I1)OR I0)AND(DATAOUT(12)OR(NOT I3)OR I2);</p><p> R1_B<=(DATAOUT(13)OR(NOT I0)OR I1)AND(DATAOUT(12)OR(NOT I2)OR I3);</p>
58、<p> R0_B<=(DATAOUT(13)OR I1 OR I0)AND(DATAOUT(12)OR I3 OR I2);</p><p> LDR2<=T4 AND DATAOUT(14)AND I1 AND (NOT I0); </p><p> LDR1<=T4 AND DATAOUT(14)AND (NOT I1) AND I0;</
59、p><p> LDR0<=T4 AND DATAOUT(14)AND (NOT I1) AND (NOT I0);</p><p> LDIR<=DATAOUT(15)AND T3;</p><p> LDAR<=DATAOUT(16)AND T3;</p><p> LDPC<=DATAOUT(17)AND T4
60、;</p><p> LOAD<=DATAOUT(18);</p><p> END PROCESS;</p><p><b> END A;</b></p><p> 微地址轉(zhuǎn)換器單元(F1、F2、F3)</p><p> LIBRARY IEEE;</p><
61、;p> USE IEEE.STD_LOGIC_1164.ALL;</p><p> ENTITY F1 IS</p><p><b> PORT(</b></p><p> UA5,UA4,UA3,UA2,UA1,UA0:IN STD_LOGIC;</p><p> D:OUT STD_LOGIC_VEC
62、TOR(5 DOWNTO 0)</p><p><b> );</b></p><p><b> END F1;</b></p><p> ARCHITECTURE A OF F1 IS</p><p><b> BEGIN</b></p><p&g
63、t; D(5)<=UA5;</p><p> D(4)<=UA4;</p><p> D(3)<=UA3;</p><p> D(2)<=UA2;</p><p> D(1)<=UA1;</p><p> D(0)<=UA0;</p><p>&l
64、t;b> END A;</b></p><p> LIBRARY IEEE;</p><p> USE IEEE.STD_LOGIC_1164.ALL;</p><p> ENTITY F2 IS</p><p><b> PORT(</b></p><p> UA5
65、,UA4,UA3,UA2,UA1,UA0:OUT STD_LOGIC;</p><p> D:IN STD_LOGIC_VECTOR(5 DOWNTO 0)</p><p><b> );</b></p><p><b> END F2;</b></p><p> ARCHITECTURE
66、A OF F2 IS</p><p><b> BEGIN</b></p><p> UA5<=D(5);</p><p> UA4<=D(4);</p><p> UA3<=D(3);</p><p> UA2<=D(2);</p><p&g
67、t; UA1<=D(1);</p><p> UA0<=D(0);</p><p><b> END A;</b></p><p> LIBRARY IEEE;</p><p> USE IEEE.STD_LOGIC_1164.ALL;</p><p> ENTITY F3
68、 IS</p><p><b> PORT(</b></p><p> UA7,UA6,UA5,UA4,UA3,UA2,UA1,UA0:OUT STD_LOGIC;</p><p> D:IN STD_LOGIC_VECTOR(7 DOWNTO 0)</p><p><b> );</b>&
69、lt;/p><p><b> END F3;</b></p><p> ARCHITECTURE A OF F3 IS</p><p><b> BEGIN</b></p><p> UA7<=D(7);</p><p> UA6<=D(6);</p&
70、gt;<p> UA5<=D(5);</p><p> UA4<=D(4);</p><p> UA3<=D(3);</p><p> UA2<=D(2);</p><p> UA1<=D(1);</p><p> UA0<=D(0);</p>
71、<p><b> END A;</b></p><p> 微程序操作器單元CROM</p><p> 由地址轉(zhuǎn)移邏輯電路單元ADDR、微地址寄存器單元aa、控制存儲(chǔ)器單元CONTROM、微命令寄存器單元組成MCOMMAND等幾部分組成。</p><p> 算術(shù)邏輯運(yùn)算執(zhí)行單元ALU</p><p>
72、 LIBRARY IEEE;</p><p> USE IEEE.STD_LOGIC_1164.ALL;</p><p> USE IEEE.STD_LOGIC_ARITH.ALL;</p><p> USE IEEE.STD_LOGIC_UNSIGNED.ALL;</p><p> ENTITY ALU IS</p>
73、<p><b> PORT(</b></p><p> A:IN STD_LOGIC_VECTOR(7 DOWNTO 0);</p><p> B:IN STD_LOGIC_VECTOR(7 DOWNTO 0);</p><p> S1,S0:IN STD_LOGIC;</p><p> BCDOUT
74、:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);</p><p> F: OUT STD_LOGIC</p><p><b> );</b></p><p><b> END ALU;</b></p><p> ARCHITECTURE A OF ALU IS</p
75、><p> SIGNAL TEMP:STD_LOGIC_VECTOR(7 DOWNTO 0);</p><p><b> BEGIN</b></p><p> PROCESS(S1,S0)</p><p><b> BEGIN</b></p><p> IF(S1=
76、39;0' AND S0='0')THEN</p><p> BCDOUT<=A+B;</p><p> ELSIF(S1='0' AND S0='1')THEN</p><p> BCDOUT<=A*B;</p><p> ELSIF(S1='1'
77、AND S0='0')THEN</p><p><b> F<=B(7);</b></p><p> ELSIF(S1='1' AND S0='1')THEN</p><p> BCDOUT<=A-1;</p><p><b> END IF;
78、</b></p><p> END PROCESS;</p><p><b> END A;</b></p><p> 狀態(tài)條件寄存器單元LS74</p><p> LIBRARY IEEE;</p><p> USE IEEE.STD_LOGIC_1164.ALL;<
79、/p><p> ENTITY LS74 IS</p><p><b> PORT(</b></p><p> LDFR:IN STD_LOGIC;</p><p> F:IN STD_LOGIC;</p><p> FS:OUT STD_LOGIC</p><p>&
80、lt;b> );</b></p><p><b> END LS74;</b></p><p> ARCHITECTURE A OF LS74 IS</p><p><b> BEGIN</b></p><p> PROCESS(LDFR)</p><
81、p><b> BEGIN</b></p><p> IF(LDFR'EVENT AND LDFR='1')THEN</p><p><b> FS<=F;</b></p><p><b> END IF;</b></p><p>
82、END PROCESS;</p><p><b> END A;</b></p><p> 公共寄存器單元LS273</p><p> 累加器AC、數(shù)據(jù)寄存器DR、通用寄存器(R0、R1、R2)、地址寄存器AR</p><p> LIBRARY IEEE;</p><p> USE IE
83、EE.STD_LOGIC_1164.ALL;</p><p> ENTITY LS273 IS</p><p><b> PORT(</b></p><p> D:IN STD_LOGIC_VECTOR(7 DOWNTO 0);</p><p> CLK:IN STD_LOGIC;</p><
84、p> O:OUT STD_LOGIC_VECTOR(7 DOWNTO 0)</p><p><b> );</b></p><p> END LS273;</p><p> ARCHITECTURE A OF LS273 IS</p><p><b> BEGIN</b></p
85、><p> PROCESS(CLK)</p><p><b> BEGIN</b></p><p> IF(CLK'EVENT AND CLK='1')THEN</p><p><b> O<=D;</b></p><p><b>
86、 END IF;</b></p><p> END PROCESS;</p><p><b> END A;</b></p><p> 1:2分配器FEN2單元</p><p> LIBRARY IEEE;</p><p> USE IEEE.STD_LOGIC_1164.
87、ALL;</p><p> ENTITY FEN2 IS</p><p><b> PORT(</b></p><p> WR,LED_B:IN STD_LOGIC;</p><p> X:IN STD_LOGIC_VECTOR(7 DOWNTO 0);</p><p> W1,W2:O
88、UT STD_LOGIC_VECTOR(7 DOWNTO 0)</p><p><b> );</b></p><p><b> END FEN2;</b></p><p> ARCHITECTURE A OF FEN2 IS</p><p><b> BEGIN</b>
89、;</p><p> PROCESS(LED_B,WR)</p><p><b> BEGIN</b></p><p> IF(LED_B='0' AND WR='0')THEN</p><p><b> W2<=X;</b></p>&l
90、t;p><b> ELSE</b></p><p><b> W1<=X;</b></p><p><b> END IF;</b></p><p> END PROCESS;</p><p><b> END A;</b></
91、p><p> 3選1數(shù)據(jù)選擇器MUX3單元</p><p> LIBRARY IEEE;</p><p> USE IEEE.STD_LOGIC_1164.ALL;</p><p> ENTITY MUX3 IS</p><p><b> PORT(</b></p><p
92、> ID:IN STD_LOGIC_VECTOR(7 DOWNTO 0);</p><p> SW_B,CS:IN STD_LOGIC;</p><p> N1,N2:IN STD_LOGIC_VECTOR(7 DOWNTO 0);</p><p> EW:OUT STD_LOGIC_VECTOR(7 DOWNTO 0)</p><
93、p><b> );</b></p><p><b> END MUX3;</b></p><p> ARCHITECTURE A OF MUX3 IS</p><p><b> BEGIN</b></p><p> PROCESS(SW_B,CS)</p&
94、gt;<p><b> BEGIN</b></p><p> IF(SW_B='0')THEN</p><p><b> EW<=ID;</b></p><p> ELSIF(CS='0')THEN</p><p><b> E
95、W<=N2;</b></p><p><b> ELSE</b></p><p><b> EW<=N1;</b></p><p><b> END IF;</b></p><p> END PROCESS;</p><p&g
96、t;<b> END A;</b></p><p> 4選1數(shù)據(jù)選擇器MUX4單元</p><p> LIBRARY IEEE;</p><p> USE IEEE.STD_LOGIC_1164.ALL;</p><p> ENTITY MUX4 IS</p><p><b>
97、 PORT(</b></p><p> C,D,E,F: IN STD_LOGIC;</p><p> X1,X2,X3,X4: IN STD_LOGIC_VECTOR(7 DOWNTO 0);</p><p> W: out STD_LOGIC_VECTOR(7 DOWNTO 0)</p><p><b>
98、);</b></p><p><b> END MUX4;</b></p><p> ARCHITECTURE A OF MUX4 IS</p><p> SIGNAL SEL: STD_LOGIC_VECTOR(3 DOWNTO 0);</p><p><b> BEGIN</b&g
99、t;</p><p> SEL<=F&E&D&C;</p><p> PROCESS(SEL)</p><p><b> BEGIN </b></p><p> IF(SEL="1110") THEN --R0_out</p><p&g
100、t;<b> W<=X1;</b></p><p> ELSIF(SEL="1101") THEN --R1_out</p><p><b> W<=X2;</b></p><p> ELSIF(SEL="1011") THEN --R2-out</p&
101、gt;<p><b> W<=X3;</b></p><p> ELSIF(SEL="0111") THEN --ALU_out</p><p><b> W<=X4;</b></p><p><b> ELSE</b></p>&
102、lt;p><b> NULL;</b></p><p><b> END IF;</b></p><p> END PROCESS;</p><p><b> END A;</b></p><p><b> 程序計(jì)數(shù)器PC單元</b><
103、;/p><p> LIBRARY IEEE;</p><p> USE IEEE.STD_LOGIC_1164.ALL;</p><p> USE IEEE.STD_LOGIC_ARITH.ALL;</p><p> USE IEEE.STD_LOGIC_UNSIGNED.ALL;</p><p> ENTITY
104、 PC IS</p><p><b> PORT(</b></p><p> LOAD,LDPC,CLR:IN STD_LOGIC;</p><p> D:IN STD_LOGIC_VECTOR(7 DOWNTO 0);</p><p> O:OUT STD_LOGIC_VECTOR(7 DOWNTO 0)<
105、;/p><p><b> );</b></p><p><b> END PC;</b></p><p> ARCHITECTURE A OF PC IS</p><p> SIGNAL QOUT:STD_LOGIC_VECTOR(7 DOWNTO 0);</p><p>
106、;<b> BEGIN</b></p><p> PROCESS(LDPC,CLR,LOAD)</p><p><b> BEGIN</b></p><p> IF(CLR='0')THEN</p><p> QOUT<="00000000"; -
107、-BUS->PC,將pc清0</p><p> ELSIF(LDPC'EVENT AND LDPC='1')THEN</p><p> IF(LOAD='0')THEN</p><p><b> QOUT<=D;</b></p><p><b> EL
108、SE</b></p><p> QOUT<=QOUT+1;--PC+1</p><p><b> END IF;</b></p><p><b> END IF;</b></p><p> END PROCESS;</p><p><b>
109、 O<=QOUT;</b></p><p><b> END A;</b></p><p> 主存儲(chǔ)器ROM芯片ROM16單元</p><p> LIBRARY IEEE;</p><p> USE IEEE.STD_LOGIC_1164.ALL;</p><p>
110、USE IEEE.STD_LOGIC_ARITH.ALL;</p><p> USE IEEE.STD_LOGIC_UNSIGNED.ALL;</p><p> ENTITY ROM16 IS</p><p><b> PORT(</b></p><p> DOUT:OUT STD_LOGIC_VECTOR(
111、7 DOWNTO 0);</p><p> ADDR:IN STD_LOGIC_VECTOR(7 DOWNTO 0);</p><p> CS:IN STD_LOGIC</p><p><b> );</b></p><p> END ROM16;</p><p> ARCHITECTU
112、RE A OF ROM16 IS</p><p><b> BEGIN</b></p><p> DOUT<= "10000000" WHEN ADDR="00000000" AND CS='0' ELSE--MOV R0,FB</p><p> "11111011
113、" WHEN ADDR="00000001" AND CS='0' ELSE</p><p> "10000001" WHEN ADDR="00000010" AND CS='0' ELSE--MOV R1,00</p><p> "00000000" WHEN A
114、DDR="00000011" AND CS='0'ELSE</p><p> "01110010" WHEN ADDR="00000100" AND CS='0' ELSE--L1:IN R2</p><p> "10010010" WHEN ADDR="00000
115、101" AND CS='0' ELSE--TEST R2</p><p> "10100000" WHEN ADDR="00000110" AND CS='0' ELSE--JS L2</p><p> "00001010" WHEN ADDR="00000111"
116、; AND CS='0' ELSE</p><p> "10111010" WHEN ADDR="00001000" AND CS='0' ELSE--MUL R2,R2</p><p> "11001001" WHEN ADDR="00001001" AND CS='
117、;0' ELSE--ADD R2,R1</p><p> "11010000" WHEN ADDR="00001010" AND CS='0' ELSE--L2:INC R0</p><p> "10010000" WHEN ADDR="00001011" AND CS='0
118、' ELSE--TEST R0</p><p> "10100000" WHEN ADDR="00001100" AND CS='0' ELSE--JS L1</p><p> "00000100" WHEN ADDR="00001101" AND CS='0' EL
119、SE</p><p> "11110100" WHEN ADDR="00001110" AND CS='0' ELSE--L3:OUT R1</p><p> "11100100" WHEN ADDR="00001111" AND CS='0' ELSE--JMP L3<
120、;/p><p> "00001110" WHEN ADDR="00010000" AND CS='0' ELSE</p><p> "00000000";</p><p><b> END A;</b></p><p> 時(shí)序產(chǎn)生器COUNT
121、ER單元</p><p> LIBRARY IEEE;</p><p> USE IEEE.STD_LOGIC_1164.ALL;</p><p> USE IEEE.STD_LOGIC_ARITH.ALL;</p><p> USE IEEE.STD_LOGIC_UNSIGNED.ALL;</p><p>
122、 ENTITY COUNTER IS</p><p><b> PORT(</b></p><p> Q,CLR:IN STD_LOGIC;</p><p> T2,T3,T4:OUT STD_LOGIC</p><p><b> );</b></p><p> E
123、ND COUNTER;</p><p> ARCHITECTURE A OF COUNTER IS</p><p> SIGNAL X:STD_LOGIC_VECTOR(1 DOWNTO 0);</p><p><b> BEGIN</b></p><p> PROCESS(Q,CLR)</p>&
124、lt;p><b> BEGIN</b></p><p> IF(CLR='0')THEN</p><p><b> T2<='0';</b></p><p><b> T3<='0';</b></p><p&
125、gt;<b> T4<='0';</b></p><p><b> X<="00";</b></p><p> ELSIF(Q'EVENT AND Q='1')THEN</p><p><b> X<=X+1;</b>
126、;</p><p> T2<=(NOT X(1)) AND X(0);</p><p> T3<=X(1) AND (NOT X(0));</p><p> T4<=X(1) AND X(0);</p><p><b> END IF;</b></p><p> END
127、 PROCESS;</p><p><b> END A;</b></p><p> 嵌入式CISC模型機(jī)頂層電路單元</p><p><b> 匯編語言源程序設(shè)計(jì)</b></p><p> 機(jī)器語言源程序代碼設(shè)計(jì)</p><p> 功能仿真及波形圖結(jié)果分析<
128、/p><p> 從外部輸入5個(gè)有符號(hào)整數(shù),分別是03、FE(-2)、01、FF(-1)、FB(-5);</p><p> 1、當(dāng)執(zhí)行MOV R0,F(xiàn)B時(shí),R0為FB(-5),用于計(jì)數(shù),每輸入一個(gè)就自加1;當(dāng)執(zhí)行MOV R1,00時(shí),R1為00;輸入第一個(gè)數(shù):03,執(zhí)行IN R2指令,R2為03;對(duì)應(yīng)的AR的地址為輸入指令I(lǐng)N的地址:04;PC程序計(jì)數(shù)器為05,執(zhí)行了5次;微地址的04表示測(cè)
129、試目的寄存器的數(shù)值的符號(hào)位,并鎖存,來判斷是否要執(zhí)行跳轉(zhuǎn),對(duì)應(yīng)的指令為TEST Rd。如果是正數(shù)就不用跳轉(zhuǎn),就接著執(zhí)行下一條指令,如果是負(fù)數(shù),就跳轉(zhuǎn)到對(duì)應(yīng)的目標(biāo)子程序,執(zhí)行對(duì)應(yīng)的指令。如圖所示:</p><p> 輸入第一個(gè)數(shù)的結(jié)果為09,如圖所示:</p><p> 輸入第二個(gè)數(shù)FE(-2),存入R2,對(duì)應(yīng)的地址AR為07(輸入指令I(lǐng)N的地址),由于是負(fù)數(shù),跳轉(zhuǎn)到INC執(zhí)行,如圖所示
130、:</p><p> 第一個(gè)數(shù)03和第二個(gè)數(shù)FE輸出的結(jié)果為09,如圖所示:</p><p> 依次輸入5個(gè)有符號(hào)整數(shù),分別是03、FE(-2)、01、FF(-1)、FB(-5); 03*03+01*01=0A,正確。結(jié)果如圖所示:</p><p> 嵌入式CISC模型機(jī)的故障現(xiàn)象分析</p><p> 在設(shè)計(jì)的過程中,出現(xiàn)過以下問題
131、:</p><p> 第一個(gè)問題就是循環(huán)中斷,當(dāng)R0計(jì)數(shù)的FB只能加到FD,這就意味著,從外部只能輸入3個(gè)數(shù),心想是不是微地址有問題,于是就按照老師的方法從里到外地查找控制存儲(chǔ)器單元CONTROM,一一對(duì)應(yīng)的波形圖和微程序控制設(shè)計(jì)流程圖,沒發(fā)現(xiàn)什么問題;難道是主存儲(chǔ)器單元ROM16有問題嗎?于是帶著疑問去檢查自己的機(jī)器源程序代碼設(shè)計(jì),一一對(duì)應(yīng)器件上的VDHL語言,結(jié)果發(fā)現(xiàn),是有一個(gè)跳轉(zhuǎn)有問題,于是對(duì)應(yīng)機(jī)器代碼設(shè)
132、計(jì),把它修改了過來。再重新生成ROM16主存儲(chǔ)器,再重新生成頂層電路單元,選定當(dāng)前波形仿真文件,然后模擬仿真測(cè)試,結(jié)果R0計(jì)數(shù)的FB可以自加到00了,于是就可以輸入5個(gè)有符號(hào)整數(shù)了。</p><p> 第二個(gè)問題就是判斷符號(hào)位SF,當(dāng)每次輸入一個(gè)有符號(hào)整數(shù)存入R2時(shí),這時(shí)就需要怎么去判斷它的符號(hào)位,才能執(zhí)行下一條指令,我用了測(cè)試指令TEST,測(cè)試它的最高位,鎖存了它的符號(hào)位。但是由于沒有改ALU和ADDR的位置
133、,不管是輸入正數(shù)還是負(fù)數(shù),它都要去計(jì)算平方,這就達(dá)不到課設(shè)的要求。于是查找資料,ALU的算法不變,在S1=1和S0=0的時(shí)候,賦值給FS;這就需要修改ADDR 器件里修改為SE5<=NOT(NOT FS AND P2 AND T4);于是按照步驟重新仿真就可以正確判斷符號(hào)位了。</p><p><b> 課設(shè)總結(jié)心得體會(huì)</b></p><p> 對(duì)于計(jì)算機(jī)
134、組成原理課程設(shè)計(jì),一開始上第一節(jié)課的時(shí)候,聽得一頭霧水,之后以為是一件很簡(jiǎn)單的事情,想憑著自己對(duì)軟件的熟悉使用和以前做Web的經(jīng)驗(yàn)去做。但是實(shí)踐下來,發(fā)現(xiàn)里面存在很多問題,比如什么是微地址,什么是微程序,什么是后繼微地址,機(jī)器代碼要與什么關(guān)聯(lián)起來,控制器產(chǎn)生單元又是什么,一大堆問題暴露在我的面前。于是就去復(fù)印店復(fù)印了一份計(jì)算機(jī)組成原理課設(shè)教材。一頁一頁地研究,發(fā)現(xiàn)里面的邏輯很清晰,雖然第一次看不懂,但是里面的代碼很直觀,比如算術(shù)執(zhí)行單元
135、ALU的幾種運(yùn)算,需要什么運(yùn)算就設(shè)計(jì)什么運(yùn)算,還有要設(shè)置控制信號(hào),與狀態(tài)寄存器關(guān)聯(lián),與暫存器關(guān)聯(lián),與輸出總線關(guān)聯(lián)。按照課本的步驟,首先設(shè)計(jì)指令系統(tǒng)和指令格式,然后設(shè)計(jì)匯編及機(jī)器代碼,接著設(shè)計(jì)微程序流程圖和微指令字段,最后生成器件和模擬仿真。最讓我頭疼的是為什么會(huì)模擬仿真頻頻會(huì)出現(xiàn)循環(huán)中斷,也就是只能輸入兩三個(gè)數(shù),又為什么輸入的數(shù)不管是正數(shù)還是負(fù)數(shù),仿真測(cè)試都通過了,并且都算了平方和。于是就去檢查匯編,改了又改,還是沒有結(jié)果,還沒有改到正
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 組成原理課程設(shè)計(jì)-設(shè)計(jì)一臺(tái)模型計(jì)算機(jī)
- 計(jì)算機(jī)組成原理課程設(shè)計(jì)--一臺(tái)模型計(jì)算機(jī)的設(shè)計(jì)與調(diào)試
- 計(jì)算機(jī)組成原理課程設(shè)計(jì)--一臺(tái)模型計(jì)算機(jī)的設(shè)計(jì)與調(diào)試
- 計(jì)算機(jī)組成原理課程設(shè)計(jì)---一臺(tái)模型計(jì)算機(jī)的設(shè)計(jì)與調(diào)試
- 計(jì)算機(jī)組成原理課程設(shè)計(jì)---一臺(tái)模型計(jì)算機(jī)的設(shè)計(jì)與調(diào)試
- 計(jì)算機(jī)組成原理課程設(shè)計(jì)---一臺(tái)模型計(jì)算機(jī)的設(shè)計(jì)與調(diào)試
- 計(jì)算機(jī)組成原理課程設(shè)計(jì)--一臺(tái)模型計(jì)算機(jī)設(shè)計(jì)與測(cè)試
- 計(jì)算機(jī)組成原理課程設(shè)計(jì)---一臺(tái)模型計(jì)算機(jī)的設(shè)計(jì)與調(diào)試
- 計(jì)算機(jī)組成原理課程設(shè)計(jì)---一臺(tái)模型計(jì)算機(jī)的設(shè)計(jì)與調(diào)試
- 計(jì)算機(jī)組成原理課程設(shè)計(jì)--研制一臺(tái)性能簡(jiǎn)單的實(shí)驗(yàn)計(jì)算機(jī)
- 計(jì)算機(jī)組成原理課程設(shè)計(jì)---模型機(jī)組成設(shè)計(jì)
- 計(jì)算機(jī)組成原理課程設(shè)計(jì)---設(shè)計(jì)求負(fù)數(shù)平方和的cisc模型計(jì)算機(jī)
- 計(jì)算機(jī)組成原理課程設(shè)計(jì)的實(shí)驗(yàn)報(bào)告--設(shè)計(jì)一臺(tái)性能簡(jiǎn)單的計(jì)算機(jī)
- 組成原理課程設(shè)計(jì)---嵌入式的8位cisc模型機(jī)設(shè)計(jì)
- 計(jì)算機(jī)組成原理課程設(shè)計(jì)--模型計(jì)算機(jī)設(shè)計(jì)
- 計(jì)算機(jī)組成原理課程設(shè)計(jì)--基本模型計(jì)算機(jī)
- 計(jì)算機(jī)組成原理課程設(shè)計(jì)---復(fù)雜模型機(jī)的設(shè)計(jì)
- 計(jì)算機(jī)組成原理課程設(shè)計(jì)--- 模型機(jī)設(shè)計(jì)
- 組成原理課程設(shè)計(jì)報(bào)告---嵌入式的8位cisc模型機(jī)設(shè)計(jì)
- 《計(jì)算機(jī)組成原理》課程設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論