2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩24頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、<p>  計算機(jī)組成原理課程設(shè)計說明書</p><p>  題 目: 設(shè)計求負(fù)數(shù)平方和的CISC模型計算機(jī) </p><p>  院 (系): 計算機(jī)科學(xué)與工程學(xué)院 </p><p>  專 業(yè): 計算機(jī)科學(xué)與技術(shù) </p><p>  學(xué)生姓名:

2、 </p><p>  學(xué) 號: </p><p>  指導(dǎo)教師: </p><p>  1、課程設(shè)計的題目和內(nèi)容:設(shè)計一臺嵌入式CISC模型計算機(jī)(采用定長CPU周期、聯(lián)合控制方式),并運(yùn)行能完成一定功能的機(jī)器語言程序進(jìn)行驗證。</p><p>  要求

3、連續(xù)輸入5個有符號整數(shù)(用8位二進(jìn)制補(bǔ)碼表示,十六進(jìn)制數(shù)輸入)求所有負(fù)數(shù)的平方和并輸出顯示。</p><p>  說明:①5個有符號數(shù)從外部輸入;</p><p> ?、谝欢ㄒ褂梅栁唬ū热缯fSF),并且要使用負(fù)的時候轉(zhuǎn)移(比如 說JS)或不為負(fù)的時候轉(zhuǎn)移(比如說JNS)指令。</p><p><b>  課程設(shè)計完成的內(nèi)容</b>&l

4、t;/p><p>  1.完成系統(tǒng)的總體設(shè)計,畫出模型機(jī)數(shù)據(jù)通路框圖;</p><p>  2.設(shè)計微程序控制器(CISC模型計算機(jī))的邏輯結(jié)構(gòu)框圖; </p><p>  3.設(shè)計機(jī)器指令格式和指令系統(tǒng); </p><p>  4.設(shè)計時序產(chǎn)生器電路; </p><p>  5.設(shè)計所有機(jī)器指令的微程序流程圖; <

5、/p><p>  6.設(shè)計操作控制器單元;</p><p>  在CISC模型計算機(jī)中,設(shè)計的內(nèi)容包括微指令格式(建議采用全水平型微指令)、微指令代碼表(根據(jù)微程序流程圖和微指令格式來設(shè)計)和微程序控制器硬件電路(包括地址轉(zhuǎn)移邏輯電路、微地址寄存器、微命令寄存器和控制存儲器等。具體電路根據(jù)微程序控制器的邏輯結(jié)構(gòu)框圖、微指令格式和微指令代碼來設(shè)計)。</p><p>  

6、7.設(shè)計模型機(jī)的所有單元電路,并用VHDL語言(也可使用GDF文件----圖形描述文件)對模型機(jī)中的各個部件進(jìn)行編程,并使之成為一個統(tǒng)一的整體,即形成頂層電路或頂層文件; </p><p>  8.由給出的題目和設(shè)計的指令系統(tǒng)編寫相應(yīng)的匯編語言源程序;</p><p>  9.根據(jù)設(shè)計的指令格式,將匯編語言源程序手工轉(zhuǎn)換成機(jī)器語言源程序,并將其設(shè)計到模型機(jī)中的ROM中去;</p>

7、;<p>  10.使用EDA軟件進(jìn)行功能仿真,要保證其結(jié)果滿足題目的要求;(其中要利用EDA軟件提供的波形編輯器,選擇合適的輸入輸出信號及中間信號進(jìn)行調(diào)試。)</p><p><b>  系統(tǒng)的總體設(shè)計:</b></p><p>  整個系統(tǒng)數(shù)據(jù)通路如下所示:</p><p>  本模型機(jī)中的指令系統(tǒng)中共有9條基本指令,下表列出

8、了每條指令的格式、匯編符號和指令功能。</p><p>  模型機(jī)的指令系統(tǒng)和所有指令的指令格式</p><p><b>  1)I/O指令</b></p><p>  輸入指令(IN1)格式:</p><p>  輸入指令(OUT1)格式:</p><p><b>  2)轉(zhuǎn)移指令&l

9、t;/b></p><p>  條件轉(zhuǎn)移指令(JB)和無條件跳轉(zhuǎn)指令(JMP)格式:</p><p>  3)比較指令和相加指令</p><p>  比較指令(CMP)和相加指令(ADD)的格式:</p><p><b>  4)MOV指令</b></p><p><b>  MO

10、V指令格式:</b></p><p><b>  5)乘法指令</b></p><p>  乘法指令MUL格式:</p><p><b>  6)自減指令</b></p><p>  自減1指令(DEC)格式:</p><p>  其中,對Rs和Rd的規(guī)定:<

11、;/p><p>  模型機(jī)規(guī)定數(shù)據(jù)的表示采用定點(diǎn)整數(shù)補(bǔ)碼表示,單字長為8位,其格式如下:</p><p>  T1、T2、T3、T4與CLR、Q之間的關(guān)系圖</p><p>  現(xiàn)在,我們開始微程序控制器的設(shè)計,它包括以下幾部分工作:</p><p>  (1)根據(jù)指令格式和指令系統(tǒng)設(shè)計所有機(jī)器指令的微程序流程圖,并確定每條微指令的微地址和后繼微

12、地址;</p><p> ?。?)設(shè)計微指令格式和微指令代碼表;</p><p>  (3)設(shè)計地址轉(zhuǎn)移邏輯電路;</p><p>  (4)設(shè)計微程序控制器中的其它邏輯單元電路,包括微地址寄存器、微命令寄存器和控制存儲器;</p><p> ?。?)設(shè)計微程序控制器的頂層電路。</p><p>  首先做第一步,根據(jù)

13、指令格式和指令系統(tǒng)設(shè)計所有機(jī)器指令的微程序流程圖.對于我設(shè)計的模型機(jī),對應(yīng)的指令流程圖如下所示:</p><p>  第二步,指令流程圖設(shè)計完成后,開始設(shè)計微指令格式和微指令代碼表,按照要求,CISC模型機(jī)系統(tǒng)使用的微指令采用全水平型微指令,字長為25位,其中微命令字段為17位,P字段為2位,后繼微地址為6位,其格式如下:</p><p>  24 23 22 21 20

14、 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 LDAC LDDR WR CS SW_B LED_B LDFR P1 P2 后繼微地址</p><p>  按照這個格式,再

15、根據(jù)我設(shè)計的指令流程圖,可以得到:</p><p>  由微指令格式和微程序流程圖編寫的微指令代碼表如下所示,在微指令的代碼表中微命令字段從左邊到右代表的微命令信號依次為:LOAD、LDPC、LDAR、LDIR、LDRi、RD_B、RS_B、S1、S0、ALU_B、LDAC、LDDR、WR、CS、SW_B、LED_B、LDFR。</p><p>  第三步:設(shè)計好了微指令代碼表之后,我們可

16、以開始設(shè)計地址轉(zhuǎn)移邏輯電路</p><p>  地址轉(zhuǎn)移邏輯電路是根據(jù)微程序流程圖3-2中的棱形框部分及多個分支微地址,利用微地址寄存器的異步置“1”端,實現(xiàn)微地址的多路轉(zhuǎn)移。</p><p>  由于微地址寄存器中的觸發(fā)器異步置“1”端低電平有效,與µA4~µA0對應(yīng)的異步置“1”控制信號SE5~SE1的邏輯表達(dá)式為:(µA5的異步置“1”端SE6實際未使用

17、)</p><p>  SE5=(FC+FZ)·P(2)·T4</p><p>  SE4=I7·P(1)·T4</p><p>  SE3=I6·P(1)·T4</p><p>  SE2=I5·P(1)·T4</p><p>  SE1

18、=I4·P(1)·T4</p><p>  需要注意的是:地址轉(zhuǎn)移邏輯電路中異步置“1”信號SE5~SE1表達(dá)式的確定與P字段測試時轉(zhuǎn)移微地址的確定密切相關(guān).地址轉(zhuǎn)移邏輯電路的實現(xiàn)代碼如下:</p><p>  LIBRARY IEEE;</p><p>  USE IEEE.STD_LOGIC_1164.ALL;</p><

19、p>  ENTITY ADDR IS </p><p><b>  PORT(</b></p><p>  I7,I6,I5,I4:IN STD_LOGIC;</p><p>  FZ,FC,T4,P1,P2:IN STD_LOGIC;</p><p>  SE6,SE5,SE4,SE3,SE2,SE1:OUT S

20、TD_LOGIC</p><p><b>  );</b></p><p><b>  END ADDR;</b></p><p>  ARCHITECTURE A OF ADDR IS</p><p><b>  BEGIN</b></p><p>&

21、lt;b>  SE6<='1';</b></p><p>  SE5<=NOT ((NOT FC OR FZ ) AND P2 AND T4); </p><p>  SE4<=NOT(I7 AND P1 AND T4);</p><p>  SE3<=NOT(I6 AND P1 AND T4);</p

22、><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>  編譯通過之后生成圖形符號,我們的地址轉(zhuǎn)移邏輯電路就完成了。</p><p>

23、;  接下來繼續(xù)生成微控制器里面的其他器件和電路:我們先看看微地址寄存器aa的設(shè)計,它的內(nèi)部電路圖如下所示:</p><p>  可以看得出,AA中帶有異步清“0”和異步置“1”功能的觸發(fā)器MMM,它的實現(xiàn)代碼如下:</p><p>  LIBRARY IEEE;</p><p>  USE IEEE.STD_LOGIC_1164.ALL;</p>&

24、lt;p>  ENTITY MMM 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>

25、;  CLR:IN STD_LOGIC; </p><p>  UA:OUT STD_LOGIC </p><p><b>  );</b></p><p><b>  END MMM;</b></p><p>  ARCHITECTURE A OF MMM IS</p>&

26、lt;p><b>  BEGIN</b></p><p>  PROCESS(CLR,SE,T2)</p><p><b>  BEGIN</b></p><p>  IF(CLR='0') THEN </p><p><b>  UA<='0'

27、;</b></p><p>  ELSIF(SE='0')THEN </p><p><b>  UA<='1';</b></p><p>  ELSIF(T2'EVENT AND T2='1') THEN </p><p><b>  

28、UA<=D;</b></p><p><b>  END IF;</b></p><p>  END PROCESS;</p><p><b>  END A;</b></p><p>  編譯成功后生成MMM元器件,然后連接個個觸發(fā)器并添加輸入輸出端,完成后的圖形文件如下所示:&

29、lt;/p><p>  生成了AA之后,在分別生成CONTROM MCOMMAND F1 F2 F3等5個器件即可生成一個完整的微程序控制器CROM,其內(nèi)部電路如下所示:</p><p>  接下來該做的是控制存儲器CONTROM,實現(xiàn)它的VHDL源程序如下所示:</p><p>  LIBRARY IEEE;</p><p>  USE

30、 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>  PORT(ADDR: IN STD_LOGIC_V

31、ECTOR(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><p>  END CONTROM;</p

32、><p>  ARCHITECTURE A OF CONTROM IS</p><p>  SIGNAL DATAOUT: STD_LOGIC_VECTOR(24 DOWNTO 0);</p><p><b>  BEGIN </b></p><p>  PROCESS(ADDR)</p><p>&

33、lt;b>  BEGIN</b></p><p>  CASE ADDR IS </p><p>  WHEN "000000" => DATAOUT<="1110011001001111000000010";</p><p>  WHEN "000001" =>

34、DATAOUT<="1000010001101111000100100";</p><p>  WHEN "000010" => DATAOUT<="1001011001001011010000000";</p><p>  WHEN "000011" => DATAOUT<=&q

35、uot;1000111001001011000000000";</p><p>  WHEN "000100" => DATAOUT<="1000001001011111000000101";</p><p>  WHEN "000101" => DATAOUT<="1000011011

36、001111100000000";</p><p>  WHEN "000110" => DATAOUT<="1000001001011111000000111";</p><p>  WHEN "000111" => DATAOUT<="100011100000111100000000

37、0";</p><p>  WHEN "001000" => DATAOUT<="1000111001001101000000000";</p><p>  WHEN "001001" => DATAOUT<="1110011001001111000000011";</p

38、><p>  WHEN "001010" => DATAOUT<="1000010001101111000000100";</p><p>  WHEN "001011" => DATAOUT<="1110011001001111001100000";</p><p>

39、;  WHEN "001100" => DATAOUT<="1000010001101111000000110";</p><p>  WHEN "001101" => DATAOUT<="1000001001101111000010010";</p><p>  WHEN "

40、001110" => DATAOUT<="1110011001001111000010011";</p><p>  WHEN "001111" => DATAOUT<="1000010001000110000000000";</p><p>  WHEN "010010" =

41、> DATAOUT<="1000111100001111000000000";</p><p>  WHEN "010011" => DATAOUT<="0100011001001011000000000";</p><p>  WHEN "100000" => DATAOUT&l

42、t;="0100011001001011000000000";</p><p>  WHEN "110000" => DATAOUT<="1000011001001111000000000";</p><p>  WHEN "100100" => DATAOUT<="10000

43、01001011111000100101";</p><p>  WHEN "100101" => DATAOUT<="1000111110001111000000000";</p><p>  WHEN OTHERS => DATAOUT<="1110011001001111000000010&quo

44、t;;</p><p><b>  END CASE;</b></p><p>  UA(5 DOWNTO 0)<=DATAOUT(5 DOWNTO 0);</p><p>  D(18 DOWNTO 0)<=DATAOUT(24 DOWNTO 6);</p><p>  END PROCESS;</p

45、><p><b>  END A;</b></p><p>  程序中的25位控制信號就是按照上面確定的微指令代碼表確定的。編譯通過后生成了控制存儲器,接下來該生成微命令寄存器MCOMMAND,同樣也是通過VHDL來描述即可,它的實現(xiàn)代碼如下所示:</p><p>  LIBRARY IEEE;</p><p>  USE

46、IEEE.STD_LOGIC_1164.ALL;</p><p>  USE IEEE.STD_LOGIC_ARITH.ALL;</p><p>  USE IEEE.STD_LOGIC_UNSIGNED.ALL;</p><p>  ENTITY MCOMMAND IS</p><p><b>  PORT(</b>&

47、lt;/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,LDR0,LDR1,LDR2,LDR3,R0_B,R1_B,R2_B,R3_B,S1,S0,ALU_B,LDAC,

48、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</p><p>  SIGNAL DATAOUT:STD_LOGIC_

49、VECTOR(18 DOWNTO 0);</p><p><b>  BEGIN</b></p><p>  PROCESS(T2)</p><p><b>  BEGIN</b></p><p>  IF(T2'EVENT AND T2='1')THEN</p>

50、<p>  DATAOUT(18 DOWNTO 0)<=O(18 DOWNTO 0);</p><p><b>  END IF;</b></p><p>  P2<=DATAOUT(0);</p><p>  P1<=DATAOUT(1);</p><p>  LDFR<=DATA

51、OUT(2) AND T4;</p><p>  LED_B<=DATAOUT(3);</p><p>  SW_B<=DATAOUT(4);</p><p>  CS<=DATAOUT(5);</p><p>  WR<=DATAOUT(6)OR(NOT T3);</p><p>  LDDR

52、<=DATAOUT(7) AND T4;</p><p>  LDAC<=DATAOUT(8) AND T4;</p><p>  ALU_B<=DATAOUT(9);</p><p>  S0<=DATAOUT(10);</p><p>  S1<=DATAOUT(11);</p><p&g

53、t;  R3_B<=(DATAOUT(13)OR(NOT I1)OR (NOT I0))AND(DATAOUT(12)OR(NOT I3)OR (NOT I2));</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

54、)OR(NOT I0)OR I1)AND(DATAOUT(12)OR(NOT I2)OR I3);</p><p>  R0_B<=(DATAOUT(13)OR I1 OR I0)AND(DATAOUT(12)OR I3 OR I2);</p><p>  LDR3<=T4 AND DATAOUT(14)AND I1 AND I0;</p><p>  

55、LDR2<=T4 AND DATAOUT(14)AND I1 AND (NOT I0); </p><p>  LDR1<=T4 AND DATAOUT(14)AND (NOT I1) AND I0;</p><p>  LDR0<=T4 AND DATAOUT(14)AND (NOT I1) AND (NOT I0);</p><p>  LDI

56、R<=DATAOUT(15)AND T3;</p><p>  LDAR<=DATAOUT(16)AND T3;</p><p>  LDPC<=DATAOUT(17)AND T4;</p><p>  LOAD<=DATAOUT(18);</p><p>  END PROCESS;</p><p

57、><b>  END A;</b></p><p>  編譯成功后創(chuàng)建圖形文件即可以生成微命令寄存器MCOMMAND,然后再分別生成微地址轉(zhuǎn)換器F1、F2、F3,三個器件代碼分別如下所示:</p><p>  F1:LIBRARY IEEE;</p><p>  USE IEEE.STD_LOGIC_1164.ALL;</p>

58、<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_VECTOR(5 DOWNTO 0)</p><p><b>

59、;  );</b></p><p><b>  END F1;</b></p><p>  ARCHITECTURE A OF F1 IS</p><p><b>  BEGIN</b></p><p>  D(5)<=UA5;</p><p>  D(4)

60、<=UA4;</p><p>  D(3)<=UA3;</p><p>  D(2)<=UA2;</p><p>  D(1)<=UA1;</p><p>  D(0)<=UA0;</p><p><b>  END A;</b></p><p&g

61、t;  F2:LIBRARY IEEE;</p><p>  USE IEEE.STD_LOGIC_1164.ALL;</p><p>  ENTITY F2 IS </p><p><b>  PORT(</b></p><p>  D:IN STD_LOGIC_VECTOR(5 DOWNTO 0);</p>

62、;<p>  UA5,UA4,UA3,UA2,UA1,UA0: OUT STD_LOGIC</p><p><b>  );</b></p><p><b>  END F2;</b></p><p>  ARCHITECTURE A OF F2 IS</p><p><b>

63、;  BEGIN</b></p><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> 

64、 UA0<=D(0);</p><p><b>  END A;</b></p><p>  F3:LIBRARY IEEE;</p><p>  USE IEEE.STD_LOGIC_1164.ALL;</p><p>  ENTITY F3 IS </p><p><b>  

65、PORT(</b></p><p>  D:IN STD_LOGIC_VECTOR(7 DOWNTO 0);</p><p>  UA7,UA6,UA5,UA4,UA3,UA2,UA1,UA0: OUT std_logic</p><p><b>  );</b></p><p><b>  END

66、 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><p>  UA5<=D(5);</

67、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><p><b>  END A;</b&

68、gt;</p><p>  這些器件都生成玩后,可以進(jìn)行下一步設(shè)計,也就是設(shè)計頂級電路,頂層電路是這樣的:</p><p>  我們已經(jīng)生成了CROM,我們還需要:算數(shù)邏輯單元ALU;狀態(tài)條件寄存器LS74;暫存器LS273;通用寄存器LS273;1:2分配器FEN2;3選1數(shù)據(jù)選擇器MUX3;5選1數(shù)據(jù)選擇器MUX5;程序計數(shù)器PC;地址寄存器LS273;ROM芯片ROM16;指令寄存器

69、IR;時序產(chǎn)生器COUNTER。各個部件對應(yīng)的VHDL語言描述如下所示:</p><p><b>  ALU:</b></p><p>  LIBRARY IEEE;</p><p>  USE IEEE.STD_LOGIC_1164.ALL;</p><p>  USE IEEE.STD_LOGIC_ARITH.ALL

70、;</p><p>  USE IEEE.STD_LOGIC_UNSIGNED.ALL;</p><p>  ENTITY ALU IS</p><p><b>  PORT(</b></p><p>  A:IN STD_LOGIC_VECTOR(7 DOWNTO 0);</p><p>  B

71、:IN STD_LOGIC_VECTOR(7 DOWNTO 0);</p><p>  S1,S0:IN STD_LOGIC;</p><p>  BCDOUT:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);</p><p>  CY,ZI:OUT STD_LOGIC</p><p><b>  );</b

72、></p><p><b>  END ALU;</b></p><p>  ARCHITECTURE A OF ALU IS</p><p>  SIGNAL AA,BB,TEMP:STD_LOGIC_VECTOR(8 DOWNTO 0);</p><p><b>  BEGIN</b>&l

73、t;/p><p>  PROCESS(S1,S0)</p><p><b>  BEGIN</b></p><p>  IF(S1='0' AND S0='0')THEN </p><p>  AA<='0'&A;</p><p>  

74、BB<='0'&B;</p><p>  TEMP<=AA+BB;</p><p>  BCDOUT<=TEMP(7 DOWNTO 0);</p><p>  CY<=TEMP(8);</p><p>  IF(TEMP="100000000"OR TEMP="00

75、0000000")THEN </p><p><b>  ZI<='1';</b></p><p><b>  ELSE</b></p><p><b>  ZI<='0';</b></p><p><b> 

76、 END IF;</b></p><p>  ELSIF(S1='0' AND S0='1')THEN </p><p>  BCDOUT<=A-B; </p><p>  IF(A<B)THEN</p><p><b>  CY<='

77、1';</b></p><p><b>  ZI<='0';</b></p><p>  ELSIF(A=B)THEN</p><p><b>  CY<='0';</b></p><p><b>  ZI<='

78、1';</b></p><p><b>  ELSE</b></p><p><b>  CY<='0';</b></p><p><b>  ZI<='0';</b></p><p><b>  END

79、 IF;</b></p><p>  ELSIF(S1='1' AND S0='1')THEN </p><p>  AA<='0'&A;</p><p>  BB<='0'&B;</p><p>  TEMP<=AA*BB;&l

80、t;/p><p>  BCDOUT<=TEMP(7 DOWNTO 0);</p><p>  CY<=TEMP(8);</p><p>  IF(TEMP="100000000"OR TEMP="000000000")THEN </p><p><b>  ZI<='

81、1';</b></p><p><b>  ELSE</b></p><p><b>  ZI<='0';</b></p><p><b>  END IF;</b></p><p>  ELSIF(S1='1' AND

82、 S0='0')THEN </p><p>  AA<='0'&A;</p><p>  TEMP<=AA+1;</p><p>  BCDOUT<=TEMP(7 DOWNTO 0);</p><p>  CY<=TEMP(8);</p>

83、;<p>  IF(TEMP="100000000"OR TEMP="000000000")THEN </p><p><b>  ZI<='1';</b></p><p><b>  ELSE</b></p><p><b> 

84、 ZI<='0';</b></p><p><b>  END IF;</b></p><p><b>  ELSE</b></p><p>  BCDOUT<="00000000";</p><p><b>  CY<=&

85、#39;0';</b></p><p><b>  ZI<='0';</b></p><p><b>  END IF;</b></p><p>  END PROCESS;</p><p><b>  END A;</b></p

86、><p>  狀態(tài)條件寄存器LS74:</p><p>  LIBRARY IEEE;</p><p>  USE IEEE.STD_LOGIC_1164.ALL;</p><p>  ENTITY LS74 IS</p><p><b>  PORT(</b></p><p>

87、;  LDFR:IN STD_LOGIC;</p><p>  CY,ZI:IN STD_LOGIC;</p><p>  FC,FZ:OUT STD_LOGIC</p><p><b>  );</b></p><p><b>  END LS74;</b></p><p>

88、;  ARCHITECTURE A OF LS74 IS</p><p><b>  BEGIN</b></p><p>  PROCESS(LDFR)</p><p><b>  BEGIN</b></p><p>  IF(LDFR'EVENT AND LDFR='1')

89、THEN</p><p><b>  FC<=CY;</b></p><p><b>  FZ<=ZI;</b></p><p><b>  END IF;</b></p><p>  END PROCESS;</p><p><b&g

90、t;  END A;</b></p><p>  暫存器、通用寄存器、地址寄存器LS273:</p><p>  LIBRARY IEEE;</p><p>  USE IEEE.STD_LOGIC_1164.ALL;</p><p>  ENTITY LS273 IS</p><p><b> 

91、 PORT(</b></p><p>  D:IN STD_LOGIC_VECTOR(7 DOWNTO 0);</p><p>  CLK:IN STD_LOGIC;</p><p>  O:OUT STD_LOGIC_VECTOR(7 DOWNTO 0)</p><p><b>  );</b></p

92、><p>  END LS273;</p><p>  ARCHITECTURE A OF LS273 IS</p><p><b>  BEGIN</b></p><p>  PROCESS(CLK)</p><p><b>  BEGIN </b></p>

93、<p>  IF(CLK'EVENT AND CLK='1') THEN</p><p><b>  O<=D;</b></p><p><b>  END IF;</b></p><p>  END PROCESS;</p><p><b>  E

94、ND A;</b></p><p>  1:2分配器FEN2:</p><p>  LIBRARY IEEE;</p><p>  USE IEEE.STD_LOGIC_1164.ALL;</p><p>  ENTITY FEN2 IS</p><p><b>  PORT(</b>

95、</p><p>  X:IN STD_LOGIC_VECTOR(7 DOWNTO 0);</p><p>  WR,LED_B:IN STD_LOGIC;</p><p>  W1,W2:OUT STD_LOGIC_VECTOR(7 DOWNTO 0)</p><p><b>  );</b></p>&

96、lt;p><b>  END FEN2;</b></p><p>  ARCHITECTURE A OF FEN2 IS</p><p><b>  BEGIN</b></p><p>  PROCESS(LED_B,WR)</p><p><b>  BEGIN </b&

97、gt;</p><p>  IF(LED_B='0' AND WR='0') THEN</p><p><b>  W2<=X;</b></p><p><b>  ELSE </b></p><p><b>  W1<=X;</b>

98、</p><p><b>  END IF;</b></p><p>  END PROCESS;</p><p><b>  END A;</b></p><p>  3選1數(shù)據(jù)選擇器MUX3:</p><p>  LIBRARY IEEE;</p><

99、p>  USE IEEE.STD_LOGIC_1164.ALL;</p><p>  ENTITY MUX3 IS</p><p><b>  PORT(</b></p><p>  ID:IN STD_LOGIC_VECTOR(7 DOWNTO 0);</p><p>  SW_B,CS:IN STD_LOGIC

100、;</p><p>  N1,N2:IN STD_LOGIC_VECTOR(7 DOWNTO 0);</p><p>  EW:OUT STD_LOGIC_VECTOR(7 DOWNTO 0)</p><p><b>  );</b></p><p><b>  END MUX3;</b></

101、p><p>  ARCHITECTURE A OF MUX3 IS</p><p><b>  BEGIN</b></p><p>  PROCESS(SW_B,CS)</p><p><b>  BEGIN </b></p><p>  IF(SW_B='0')

102、 THEN </p><p><b>  EW<=ID;</b></p><p>  ELSIF(CS='0')THEN </p><p>  EW<=N2;</p><p><b>  ELSE</b></p><p><

103、;b>  EW<=N1;</b></p><p><b>  END IF;</b></p><p>  END PROCESS;</p><p><b>  END A;</b></p><p>  5選1數(shù)據(jù)選擇器MUX5:</p><p>  L

104、IBRARY IEEE;</p><p>  USE IEEE.STD_LOGIC_1164.ALL;</p><p>  ENTITY MUX5 IS</p><p><b>  PORT(</b></p><p>  C,D,E,F,G: IN STD_LOGIC;</p><p>  X1,

105、X2,X3,X4,x5: IN STD_LOGIC_VECTOR(7 DOWNTO 0);</p><p>  W: out STD_LOGIC_VECTOR(7 DOWNTO 0)</p><p><b>  );</b></p><p><b>  END MUX5;</b></p><p> 

106、 ARCHITECTURE A OF MUX5 IS</p><p>  SIGNAL SEL: STD_LOGIC_VECTOR(4 DOWNTO 0);</p><p><b>  BEGIN</b></p><p>  SEL<=G&F&E&D&C;</p><p>  PRO

107、CESS(SEL)</p><p><b>  BEGIN </b></p><p>  IF(SEL="11110") THEN --R0_out</p><p><b>  W<=X1;</b></p><p>  ELSIF(SEL="11101&q

108、uot;) THEN --R1_out</p><p><b>  W<=X2;</b></p><p>  ELSIF(SEL="11011") THEN --R2-out</p><p><b>  W<=X3;</b></p><p>  ELSIF(SEL

109、="10111") THEN --R3_out</p><p><b>  W<=X4;</b></p><p>  ELSIF(SEL="01111") THEN --ALU_out</p><p><b>  W<=X5;</b></p><p

110、><b>  ELSE</b></p><p><b>  null;</b></p><p><b>  END IF;</b></p><p>  END PROCESS;</p><p><b>  END A;</b></p>

111、<p><b>  程序計數(shù)器PC:</b></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_U

112、NSIGNED.ALL;</p><p>  ENTITY 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

113、>  O: OUT STD_LOGIC_VECTOR(7 DOWNTO 0)</p><p><b>  );</b></p><p><b>  END PC;</b></p><p>  ARCHITECTURE A OF PC IS</p><p>  SIGNAL QOUT: STD_

114、LOGIC_VECTOR(7 DOWNTO 0);</p><p><b>  BEGIN</b></p><p>  PROCESS(LDPC,CLR,load)</p><p><b>  BEGIN </b></p><p>  IF(CLR='0') THEN</p&g

115、t;<p>  QOUT<="00000000";</p><p>  ELSIF(LDPC'EVENT AND LDPC='1') THEN</p><p>  IF(load='0') THEN</p><p>  QOUT<=D; --BUS->PC</p>

116、;<p><b>  ELSE</b></p><p>  QOUT<=QOUT+1; --PC+1</p><p><b>  END IF;</b></p><p><b>  END IF;</b></p><p>  END PROCESS;<

117、/p><p><b>  O<=QOUT;</b></p><p><b>  END A;</b></p><p>  ROM芯片ROM16:</p><p>  LIBRARY IEEE;</p><p>  USE IEEE.STD_LOGIC_1164.ALL;&l

118、t;/p><p>  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:O

119、UT STD_LOGIC_VECTOR(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>&

120、lt;p>  ARCHITECTURE A OF ROM16 IS</p><p><b>  BEGIN</b></p><p>  DOUT<="10010010" WHEN ADDR="00000000" AND CS='0' ELSE --</p><p>  &q

121、uot;00000000" WHEN ADDR="00000001" AND CS='0' ELSE</p><p>  "10000000" WHEN ADDR="00000010" AND CS='0' ELSE --</p><p>  "10010011"

122、WHEN ADDR="00000011" AND CS='0' ELSE --</p><p>  "00000000" WHEN ADDR="00000100" AND CS='0' ELSE </p><p>  "10100011" WHEN ADDR="00

123、000101" AND CS='0' ELSE --</p><p>  "10110000" WHEN ADDR="00000110" AND CS='0' ELSE</p><p>  "00001010" WHEN ADDR="00000111" AND CS

124、='0' ELSE --</p><p>  "00010000" WHEN ADDR="00001000" AND CS='0' ELSE --</p><p>  "11000001" WHEN ADDR="00001001" AND CS='0' E

125、LSE </p><p>  "11010010" WHEN ADDR="00001010" AND CS='0' ELSE --</p><p>  "10010011" WHEN ADDR="00001011" AND CS='0' ELSE</p>&

126、lt;p>  "00000101" WHEN ADDR="00001100" AND CS='0' ELSE --</p><p>  "10101011" WHEN ADDR="00001101" AND CS='0' ELSE --</p><p>  &quo

127、t;10110000" WHEN ADDR="00001110" AND CS='0' ELSE </p><p>  "00000010" WHEN ADDR="00001111" AND CS='0' ELSE </p><p>  "11110100" WH

128、EN ADDR="00010000" AND CS='0' ELSE </p><p>  "00000000";</p><p><b>  END A;</b></p><p>  時序產(chǎn)生器COUNTER:</p><p>  LIBRARY IEEE;&l

129、t;/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 COUNTER IS</p><p><

130、;b>  PORT(</b></p><p>  Q,CLR: IN STD_LOGIC;</p><p>  T1, T2,T3,T4: OUT STD_LOGIC</p><p><b>  );</b></p><p>  END COUNTER;</p><p>  AR

131、CHITECTURE 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><p><b>  BEGIN</b>&

132、lt;/p><p>  IF(CLR='0') THEN</p><p><b>  T1<='0';</b></p><p><b>  T2<='0';</b></p><p><b>  T3<='0';&

133、lt;/b></p><p><b>  T4<='0';</b></p><p><b>  X<="00";</b></p><p>  ELSIF(Q'EVENT AND Q='1') THEN</p><p>&l

134、t;b>  X<=X+1;</b></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&

135、gt;</p><p>  END PROCESS;</p><p><b>  END A;</b></p><p>  各個器件生成后,開始用自己設(shè)計的指令編寫匯編程序,程序如下所示:</p><p>  MOV R1,0 ;寄存器R1用來存放最后的結(jié)果</p><p>  MOV R2,0

136、 ;寄存器R2放了一個立即數(shù)0,用來做是否負(fù)數(shù)判讀以及做輸入是 ;否達(dá)到5次的比較標(biāo)準(zhǔn)</p><p>  MOV R3,5 ;記錄輸入次數(shù),從5開始遞減</p><p><b>  INPUT:</b></p><p>  IN1 R0 ;寄存器R0用來存放輸入的數(shù)據(jù)</p>

137、<p>  DEC R3 ;每輸入一次則R3遞減1,遞減到0說明剛好輸入5個數(shù)據(jù)</p><p>  CMP R0,R2 ;判斷輸入的數(shù)據(jù)是否是負(fù)數(shù)</p><p>  JB L1 ;如果是負(fù)數(shù),則轉(zhuǎn)到標(biāo)號L1執(zhí)行</p><p>  CMP R2,R3 ;如果不是負(fù)數(shù),則判斷輸入是否夠5次</p><p>  JB IN

138、PUT ;若不夠5次則跳轉(zhuǎn)到INPUT</p><p>  JMP L2 ;若夠5次就跳轉(zhuǎn)到L2執(zhí)行</p><p><b>  L1:</b></p><p>  MUL R0,R0 ;負(fù)數(shù)球平方和</p><p>  ADD R0,R1 ;求得的平方放入R1中</p><p>

139、  CMP R2,R3 ;比較是否夠5次輸入</p><p>  JB INPUT ;若不夠則跳轉(zhuǎn)到INPUT</p><p><b>  L2:</b></p><p>  OUT1 R1 ;若輸入夠5次,則結(jié)束輸入,輸出最后結(jié)果</p><p><b>  END</b></p

140、><p><b>  機(jī)器語言源程序</b></p><p>  根據(jù)設(shè)計的指令格式,將匯編語言源程序手工轉(zhuǎn)換成機(jī)器語言源程序,并將其設(shè)計到模型機(jī)中的ROM中去:</p><p>  助記符 地址(十六進(jìn)制) 機(jī)器代碼 </p><p>  MOV R1,0 001

141、0010001</p><p>  0100000000</p><p>  MOV R2,00210010010</p><p>  0300000000</p><p>  MOV R3,50410010011</p><p>  0500000101<

142、;/p><p>  INPUT:IN1 R00610000000</p><p>  DEC R30701110011</p><p>  CMP R0,R20810100010</p><p>  JB L10910110000</p><p>  0A000

溫馨提示

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

評論

0/150

提交評論