計算機組成原理課程設計報告_第1頁
已閱讀1頁,還剩43頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、<p><b>  計算機組成原理</b></p><p><b>  課程設計</b></p><p>  指導教師: XXXX </p><p>  學生班級: XXX </p><p>  學生姓名: XX </p><p>  

2、學 號: XX </p><p>  班內序號: XX </p><p>  課設日期:2012/12/17~2012/12/28</p><p><b>  目 錄</b></p><p>  設計目的·····&#

3、183;·································1</p><p

4、>  設計要求···································

5、····1</p><p>  設計方案····························

6、···········1</p><p>  較詳細的設計過程····················&#

7、183;··········2</p><p>  編程與調試程序方法的介紹····················

8、···19</p><p>  結果及分析····························

9、3;········20</p><p>  收獲、體會及建議·······················

10、;········21</p><p><b>  一、設計目的</b></p><p>  1. 主要掌握微程序控制結構計算機的設計方法,通過對機器指令和相對應微程序的設計,加深對微程序控制器的理解,加深對微程序設計特點的了解,加深對計算機各部件的理解以及對整機結構的理解。</p&

11、gt;<p>  2.掌握幾種尋址方式的控制執(zhí)行過程。</p><p>  3.了解多累加器計算機的特點。</p><p>  4.熟悉VHDL語言的編程。</p><p><b>  設計要求</b></p><p>  1.硬件設計,包括運算器、寄存器、寄存器、微程序控制器的VHDL描述。</p&

12、gt;<p>  2.軟件設計,包括指令系統(tǒng)設計及應用程序的設計。</p><p>  3.硬件和軟件聯(lián)合調試,利用設計的模型計算機執(zhí)行應用程序,通過數(shù)碼管顯示結果。 </p><p><b>  三、設計方案</b></p><p>  1.首先設計整機邏輯框圖,并分析各主要部件中所使用的關鍵器件,徹底理解主要芯片的工作原理。&

13、lt;/p><p>  根據(jù)設計要求,對實驗儀硬件模塊進行邏輯剪輯組合,便可設計出該實驗計算機的整機邏輯框圖。為利于調試,應在邏輯框圖上表明各器件的控制信號及必要的輸出信號。</p><p>  2.指令系統(tǒng)和指令執(zhí)行流程設計</p><p><b> ?、?指令系統(tǒng)</b></p><p>  需確定實驗計算機的指令系統(tǒng)具

14、體由哪里指令組成,包括哪幾種類型指令,指令操作數(shù)有哪幾種尋址方式,以及指令編碼等。</p><p><b> ?、?指令執(zhí)行流程</b></p><p>  應根據(jù)實驗計算機整機邏輯圖來設計指令系統(tǒng)中每條指令的執(zhí)行流程。</p><p>  一條指令從內存取出到執(zhí)行完,需要若干個機器周期(節(jié)拍)。任何指令的第一個機器周期都是“取指令周期”,或稱

15、為公操作周期。而一條指令共需幾個機器周期取決于指令在機內實現(xiàn)的復雜程度。</p><p>  3.微操作控制信號和微程序設計</p><p> ?、?微操作控制信號及其實現(xiàn)方法</p><p>  綜合實驗計算機指令系統(tǒng)各指令執(zhí)行流程中所涉及到的微操作控制信號,統(tǒng)計總共需要多少個微控制信號,每個信號的有效性,決定這些信號中哪些由軟件(微指令)直接產生,哪些需用硬件實

16、現(xiàn)。</p><p> ?、?設計微指令格式,微指令由32位組成,設計出每位微操作的定義。</p><p> ?、?確定微程序控制方式</p><p>  設計任務包括設計各微程序入口地址的形成方法和控存的順序控制(即下地址形成)方法。</p><p><b>  編寫各指令的微程序</b></p><

17、;p>  根據(jù)指令流程和微指令格式仔細地逐條填寫微指令各碼位。</p><p>  為減少填寫錯誤,可邊把本條微指令用到的微碼(微操作控制信號)按預定的有效性填入,檢查無誤后,再對本條微指令用不到的微碼(微操作控制信號)填入與預定的有效性相反的代碼,核對無誤后,最后將這32位微碼縮寫成8位十六進制微指令。</p><p><b>  4.設計接線表</b><

18、;/p><p>  要仔細設計接線表,因為它是組裝計算機的依據(jù)。</p><p> ?、?為了避免遺漏,應按模塊逐個歸納整理,明確各模塊中器件各控制信號的處理方法。</p><p>  ② 對于模塊中不用的器件,也應有所處理。</p><p><b>  較詳細的設計過程</b></p><p>  

19、先熟悉課程設計任務。</p><p>  實現(xiàn)基本門電路。利用如右圖所示軟件,啟動,建立</p><p>  一個新工程。具體操作步驟,參考《第二章 電路生成與下載</p><p><b>  步驟.ppt》</b></p><p>  最后,我們可以得到如下圖。</p><p>  電路生成結束

20、,再來實現(xiàn)電路的下載。啟動桌面圖標,</p><p>  選擇下載配置,加載下載文件,再實現(xiàn)電路下載。</p><p><b>  可得下圖:</b></p><p>  熟練掌握VHDL語言。</p><p>  用VHDL描述計算機各部件,包括存儲器的VHDL描述、寄存器的VHDL描述、運算器的VHDL描述以及總線的

21、VHDL描述。</p><p>  存儲器的VHDL描述</p><p>  a.存儲器的硬件描述圖</p><p>  b.存儲器實驗過程與信號</p><p>  首先利用開關S0~S7設置一個8位的數(shù)據(jù),用于寫入內存時使用。</p><p>  第二步,利用開關S8、S9的組合生成一個4個字節(jié)的內存,內存地址如下

22、:</p><p>  第三步,當S10=0 AND S11=1時,發(fā)出寫內存信號,將開關S0~S7設置的8位數(shù)據(jù)寫入由開關S8、S9的組合指定的內存地址單元。</p><p>  第四步,當S10=1 AND S11=0時,發(fā)出讀內存信號,將由開關S8、S9的組合指定的內存地址單元中的數(shù)據(jù)讀出,由發(fā)光二極管L9~L12顯示。</p><p>  c.存儲器的VHD

23、L描述</p><p>  Library IEEE;</p><p>  use IEEE.std_logic_1164.all;</p><p>  use IEEE.std_logic_unsigned.all;</p><p>  use IEEE.std_logic_arith.all; </p><p>

24、  entity busv1 is</p><p><b>  Port (</b></p><p>  CI: buffer std_logic_vector(19 downto 0);</p><p>  CO: in std_logic_vector(11 downto 0)</p><p><b>  

25、);</b></p><p>  end busv1;</p><p>  architecture busv1_behav of busv1 is</p><p>  signal mux:std_logic_vector(1 downto 0);</p><p>  signal WR,RD:std_logic;</p&

26、gt;<p><b>  begin</b></p><p>  mux <= CO(9 downto 8);</p><p>  RD <= CO(11);</p><p>  WR <= CO(10);</p><p>  CI( 11 downto 0 ) <= CO(11 d

27、ownto 0);</p><p>  process (WR,RD) </p><p>  VARIABLE TMP1,TMP2,TMP3,TMP4:std_logic_vector(7 downto 0);</p><p><b>  begin</b></p><p>  if (WR='0'and

28、 RD='1') then --寫內存</p><p>  case mux is </p><p>  when "00" => TMP1 := CO(7 downto 0);--寫入地址0號</p><p>  when "01" => TMP2 := CO(7 downto 0);

29、--寫入地址1號</p><p>  when "10" => TMP3 := CO(7 downto 0);--寫入地址2號</p><p>  when others => TMP4 := CO(7 downto 0);--寫入地址3號</p><p><b>  end case;</b><

30、/p><p>  elsif (WR='1' and RD='0') then --讀內存</p><p>  case mux is</p><p>  when "00" => CI(19 downto 12) <= TMP1;--讀地址0號</p><p>  when

31、"01" => CI(19 downto 12)<= TMP2;--讀地址1號</p><p>  when "10" => CI(19 downto 12) <= TMP3;--讀地址2號</p><p>  when others => CI(19 downto 12)<= TMP4;--讀地址3號

32、</p><p><b>  end case;</b></p><p><b>  end if;</b></p><p>  end process; </p><p>  end busv1_behav;</p><p>  寄存器的VHDL描述</p>

33、<p>  a.寄存器的硬件描述圖</p><p>  b.寄存器實驗過程與信號</p><p>  首先利用開關S0~S7設置一個8位的數(shù)據(jù),寄存在74LS244A,使開關S13(U244AOE)為低電平,使寄存在74LS244中的數(shù)據(jù)向總線輸出。</p><p>  第二步,利用S8~S10的組合在R~0R7中選擇一個寄存器,選擇表如下:</p

34、><p>  第三步,當WRE(寫寄存器)脈沖信號從0變1時,將總線上的數(shù)據(jù)寫入某寄存器。</p><p>  第四步,當RDE(讀寄存器)脈沖信號從0變1時,將某寄存器的值輸出到74LS244B。</p><p>  c.計算機部件實驗之寄存器的VHDL描述</p><p>  library IEEE;</p><p>

35、;  use IEEE.STD_LOGIC_1164.ALL;</p><p>  use IEEE.STD_LOGIC_ARITH.ALL;</p><p>  use IEEE.STD_LOGIC_UNSIGNED.ALL;</p><p>  -- Uncomment the following lines to use the declarations t

36、hat are</p><p>  -- provided for instantiating Xilinx primitive components.</p><p>  --library UNISIM;</p><p>  --use UNISIM.VComponents.all;</p><p>  entity jicunqi i

37、s</p><p><b>  port(</b></p><p>  CI: inout std_logic_vector(12 downto 0);</p><p>  CO: in std_logic_vector(14 downto 0)</p><p><b>  );</b></p

38、><p>  end jicunqi;</p><p>  architecture Behavioral of jicunqi is</p><p>  signal RS:std_logic_vector(2 downto 0);</p><p>  signal R0,R1,R2,R3,R4,R5,R6,R7:std_logic_vecto

39、r(7 downto 0);</p><p>  signal WRE,RDE,U244AOE,U244BOE:std_logic;</p><p>  signal U244A,U244B:std_logic_vector(7 downto 0);</p><p>  signal DBB,DBX:std_logic_vector(7 downto 0);<

40、/p><p>  constant bz:std_logic_vector:="ZZZZZZZZ";</p><p>  Function sizeIt(a:std_logic;len:integer)return std_logic_vector is</p><p>  variable rep:std_logic_vector(len-1 do

41、wnto 0);</p><p>  begin for i in rep'range loop rep(i):=a;end loop; return rep;</p><p>  end sizeIt;</p><p><b>  begin</b></p><p>  --Define three-state

42、 ports</p><p>  U244A <= CO(7 downto 0);</p><p>  DBX<= (SizeIt(U244AOE,8) and U244A) or (SizeIt(U244BOE,8) and U244B);</p><p>  CI(7 downto 0) <= DBX when ((U244AOE or U2

43、44BOE)='1') else bz;</p><p>  DBB <= CI(7 downto 0);</p><p>  RS <= CO(10 downto 8);</p><p>  process (WRE,RDE) begin</p><p>  if(WRE'event and WRE=&#

44、39;1') then-- 寫寄存器</p><p>  case RS is</p><p>  when "000"=>R0<=DBB(7 downto 0);</p><p>  when "001"=>R1<=DBB(7 downto 0);</p><p&g

45、t;  when "010"=>R2<=DBB(7 downto 0);</p><p>  when "011"=>R3<=DBB(7 downto 0);</p><p>  when "100"=>R4<=DBB(7 downto 0);</p><p>  

46、when "101"=>R5<=DBB(7 downto 0);</p><p>  when "110"=>R6<=DBB(7 downto 0);</p><p>  when others=>R7<=DBB(7 downto 0); </p><

47、p><b>  end case;</b></p><p><b>  end if;</b></p><p>  if (RDE'event and RDE='1') then-- 讀寄存器</p><p>  case RS is</p><p>  when

48、"000" => U244B <= R0;</p><p>  when "001" => U244B <= R1;</p><p>  when "010" => U244B <= R2;</p><p>  when "011" => U24

49、4B <= R3;</p><p>  when "100" => U244B <= R4;</p><p>  when "101" => U244B <= R5;</p><p>  when "110" => U244B <= R6;</p>&

50、lt;p>  when others => U244B <= R7; </p><p><b>  end case;</b></p><p><b>  end if;</b></p><p>  end process; </p><p>  U244BOE <=

51、CO(14);</p><p>  U244AOE <= CO(13);</p><p>  WRE <= CO(11);</p><p>  RDE <= CO(12);</p><p>  CI(12 downto 8) <= CO(12 downto 8);</p><p>  end

52、 Behavioral;</p><p>  運算器的VHDL描述</p><p>  a.運算器的硬件描述圖</p><p>  b.運算器實驗過程與信號</p><p>  首先利用開關S0~S7設置一個8位的數(shù)據(jù),寄存在74LS244A,使開關S13(U244AOE)為低電平,使寄存在74LS244中的數(shù)據(jù)向總線輸出。L13反映S13的

53、狀態(tài)。在總線上的數(shù)據(jù)可以通過L0~L7看到。</p><p>  第二步,把總線上的數(shù)據(jù)送入74LS377保存,當S14為低電平(U377EN=0)并且S15有一個脈沖信號時從它輸出送ALU的A端。</p><p>  第三步,利用開關S0~S7設置一個8位的數(shù)據(jù),寄存在74LS244A,使開關S13(U244AOE)為低電平,使寄存在74LS244中的數(shù)據(jù)向總線輸出。L13反映S13的狀

54、態(tài)。在總線上的數(shù)據(jù)可以通過L0~L7看到。</p><p>  第四步,當S16、S17都為1時,控制74LS373從總線接收數(shù)據(jù),寄存。當當S16為1、S17為0時,控制74LS373中的數(shù)據(jù)送ALU的B端。</p><p>  第五步,利用S8~S10的組合在8種計算中選擇一個進行計算,選擇表如下:(L8~L10反映S8~S10的狀態(tài),CIN由開關S11確定,L11反映S11的值)。&

55、lt;/p><p>  計算結束后,運算結果F送74LS244B,L15反映向高位的進位COUT。</p><p>  第六步,當S12為0時(L12反映S11的值),將74LS244B中的值送總線,一次運算結束。</p><p>  c.計算機部件實驗之運算器的VHDL描述</p><p>  library IEEE;</p>

56、<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>  -- Uncomment the following lines to use the declar

57、ations that are</p><p>  -- provided for instantiating Xilinx primitive components.</p><p>  --library UNISIM;</p><p>  --use UNISIM.VComponents.all;</p><p>  entity y

58、unsuan is</p><p><b>  port(</b></p><p>  --DB:inout std_logic_vector(7 downto 0);</p><p>  CI: inout std_logic_vector(15 downto 0);</p><p>  CO: in std_logi

59、c_vector(17 downto 0)</p><p><b>  );</b></p><p>  end yunsuan;</p><p>  architecture Behavioral of yunsuan is</p><p>  signal U377Q:std_logic_vector(7 downt

60、o 0);</p><p>  signal U373Q,U244A,U244B:std_logic_vector(7 downto 0);</p><p>  signal DBB,DBX:std_logic_vector(7 downto 0);</p><p>  signal U377CLK,U377EN,U373GT,U373OE,U244AOE,U244

61、BOE: std_logic;</p><p>  signal FA,FB,FF:std_logic_vector(8 downto 0);</p><p>  signal S:std_logic_vector(2 downto 0);</p><p>  signal CIN,COUT:std_logic;</p><p>  co

62、nstant bz:std_logic_vector:="ZZZZZZZZ";</p><p>  -- sizeIt replicates a value to an array of specific length.</p><p>  Function sizeIt(a: std_Logic; len: integer) return std_logic_vect

63、or is</p><p>  variable rep: std_logic_vector( len-1 downto 0);</p><p>  begin for i in rep'range loop rep(i) := a; end loop; return rep;</p><p>  end sizeIt;</p><p&

64、gt;<b>  begin</b></p><p>  --Define 74377</p><p>  process (U377CLK) begin</p><p>  if (U377CLK'event and U377CLK='0') then</p><p>  if (U377EN=

65、'0') then U377Q <= DBB;</p><p><b>  end if;</b></p><p><b>  end if;</b></p><p>  end process;</p><p>  --Define 74373</p><

66、p>  U373Q <= DBB when (U373GT='1'and U373OE='0') else ("11111111" and U373Q);</p><p>  --define the ALU </p><p>  FA<= '0'&U377Q;</p>

67、<p>  FB<= '0'&U373Q; </p><p>  FF<= FA + CIN when S ="000" else </p><p>  FA - CIN when S ="001" else</p><p>  FA or FB when S =&q

68、uot;010" else</p><p>  FA and FB when S ="011" else</p><p>  FA + FB + CIN when S ="100" else</p><p>  FA - FB - CIN when S ="101" else </p

69、><p>  FA * FB when S ="110" else</p><p>  FA xor FB when S ="111"; </p><p>  COUT<=FF(8);</p><p>  U244B <= FF(7 downto 0); </p>&l

70、t;p>  --Define three-state ports</p><p>  U244A <= CO(7 downto 0);</p><p>  DBX<= (SizeIt(U244AOE,8) and U244A) or (SizeIt(U244BOE,8) and U244B);</p><p>  CI(7 downto 0) &

71、lt;= DBX when ((U244AOE or U244BOE)='1') else bz;</p><p>  DBB <= CI(7 downto 0);</p><p>  --CI(7 downto 0) is the BUS</p><p>  CIN <= CO(11);</p><p&g

72、t;  U244BOE <= CO(12);</p><p>  U244AOE <= CO(13);</p><p>  U377EN<= CO(14);</p><p>  U377CLK<= not CO(15) or U377EN;</p><p>  U373OE<= CO(16);&l

73、t;/p><p>  U373GT<= CO(17);</p><p>  S(2 downto 0) <= CO(10 downto 8);</p><p>  CI(14 downto 8) <= CO(14 downto 8);</p><p>  CI(15) <= COUT;</p><

74、p>  end Behavioral;</p><p><b>  總線的VHDL描述</b></p><p>  a.總線的硬件描述圖</p><p>  b.總線實驗過程與信號</p><p><b>  實驗設計:</b></p><p>  使用VHDL來完成本

75、實驗時,需注意以下問題:</p><p>  1).透明鎖存7應使用組合電路實現(xiàn)。</p><p>  2).XC2S150的RAM應外加三態(tài)門。</p><p>  3).RAM,244,373,374四個三態(tài)門可用一個多路開關加一個三態(tài)門構成。</p><p><b>  實驗步驟</b></p>&l

76、t;p>  1).輸入并編譯生成BIT文件,下載到XC2S150中。</p><p>  2).從開關通過244把數(shù)據(jù)(如10010110)輸入到373中。</p><p>  3). 從開關通過244把數(shù)據(jù)(如10100101)輸入到374中。</p><p>  4).把373的數(shù)據(jù)傳送到RAM中。</p><p>  5).把37

77、4的數(shù)據(jù)寫到373中。</p><p>  6).把RAM的數(shù)據(jù)傳送到374中。</p><p>  7).通過377檢查373和374的內容。</p><p>  首先利用開關S0~S7設置一個8位的數(shù)據(jù),寄存在74LS244A,使開關S13(U244AOE)為低電平,使寄存在74LS244中的數(shù)據(jù)向總線輸出。</p><p>  第二步,

78、利用S8~S10的組合在R~0R7中選擇一個寄存器,選擇表如下:</p><p>  第三步,當WRE(寫寄存器)脈沖信號從0變1時,將總線上的數(shù)據(jù)寫入某寄存器。</p><p>  第四步,當RDE(讀寄存器)脈沖信號從0變1時,將某寄存器的值輸出到74LS244B。</p><p>  c.計算機部件實驗之總線的VHDL描述</p><p&g

79、t;  Library IEEE;</p><p>  use IEEE.std_logic_1164.all;</p><p>  use IEEE.std_logic_unsigned.all;</p><p>  use IEEE.std_logic_arith.all; </p><p>  entity busv1 is</

80、p><p><b>  Port (</b></p><p>  DB:inout std_logic_vector(15 downto 0);</p><p>  AB:buffer std_logic_vector(15 downto 0);</p><p>  MUX: in std_logic_vector(0 to

81、 2);</p><p>  CLKG,CLK,RESET,RUN: in std_logic;</p><p>  CI: inout std_logic_vector(31 downto 0);</p><p>  CO: in std_logic_vector(31 downto 0);</p><p>  CWR,CRD,IOW,IO

82、R,CTRL1,CTRL2,CTRL3,CTRL4,MCLK: buffer std_logic;</p><p>  PRIX,KRIX:in std_logic</p><p><b>  );</b></p><p>  end busv1;</p><p>  architecture busv1_behav o

83、f busv1 is</p><p>  signal U377Q:std_logic_vector(7 downto 0);</p><p>  signal U374Q:std_logic_vector(7 downto 0);</p><p>  signal U373Q,U244B:std_logic_vector(7 downto 0);</p&g

84、t;<p>  signal TADR:std_logic_vector(8 downto 0);</p><p>  signal DBB,DBX,DBY:std_logic_vector(7 downto 0);</p><p>  signal U377CLK,U377EN,U374CLK,U374OE,U373GT,U373OE,U244OE: std_logic;

85、</p><p>  signal TCLK,MWR,MEN,logic0,CLKX,MOE: std_logic;</p><p>  constant bz: std_logic_vector:="ZZZZZZZZ";</p><p>  -- sizeIt replicates a value to an array of specific

86、 length.</p><p>  Function sizeIt(a: std_Logic; len: integer) return std_logic_vector is</p><p>  variable rep: std_logic_vector( len-1 downto 0);</p><p>  begin for i in rep'ra

87、nge loop rep(i) := a; end loop; return rep;</p><p>  end sizeIt;</p><p>  component RAMB4_S8</p><p>  port (WE,EN,RST,CLK: in std_logic;</p><p>  ADDR: in std_logic_ve

88、ctor(0 to 8);</p><p>  DI: in std_logic_vector(0 to 7);</p><p>  DO: out std_logic_vector(0 to 7));</p><p>  end component;</p><p>  component IBUFG</p><p>

89、;  port (I:in std_logic;O:out std_logic);</p><p>  end component;</p><p><b>  begin</b></p><p>  CLKD:IBUFG</p><p>  port map (I => CLKG,O => CLKX);&l

90、t;/p><p>  --Define RAM</p><p>  TADR(8)<= '0';</p><p>  TADR(7)<= '0';</p><p>  TADR(6) <= '0';</p><p>  TADR(5 downto 0)

91、 <= CO(22 downto 17);</p><p>  TCLK<= CLKX;</p><p>  logic0 <= '0';</p><p>  TRAM1: RAMB4_S8</p><p>  port map (WE =>MWR, EN=>MEN,RST=>logic0

92、,CLK=>TCLK,</p><p>  ADDR=>TADR,DI=>DBB(7 downto 0),DO=>DBY(7 downto 0));</p><p>  --Define 74377</p><p>  process (U377CLK) begin</p><p>  if (U377CLK'

93、event and U377CLK='0') then</p><p>  if (U377EN='0') then U377Q <= DBB;</p><p><b>  end if;</b></p><p><b>  end if;</b></p><p&g

94、t;  end process;</p><p>  --Define 74374</p><p>  process (U374CLK) begin</p><p>  if (U374CLK'event and U374CLK='0') then U374Q <= DBB;</p><p><b>

95、  end if;</b></p><p>  end process;</p><p>  --Define 74373</p><p>  U373Q <= DBB when (U373GT='1') else ("11111111" and U373Q); </p><p>  --

96、U373Q <= (SizeIt(U373GT,8) and DBB) or (SizeIt(not U373GT,8) and U373Q);</p><p>  --Define three-state ports</p><p>  U244B <= CO(7 downto 0);</p><p>  DBX<= (SizeIt(U374O

97、E,8) and U374Q) or (SizeIt(U373OE,8) and U373Q)</p><p>  or (SizeIt(U244OE,8) and U244B) or (SizeIt(MOE,8) and DBY);</p><p>  CI(7 downto 0) <= DBX when ((U374OE or U373OE or U244OE or MOE)=&

98、#39;1') else bz;</p><p>  DBB <= CI(7 downto 0);</p><p>  --CI(7 downto 0) is the BUS</p><p>  --Display 74377</p><p>  CI(15 downto 8) <= U377Q;</p>&

99、lt;p>  --Control signals</p><p>  MOE <= CO(23);</p><p>  MWR<= CO(16);</p><p>  MEN<= CO(15);</p><p>  U377EN<= CO(14);</p><p>  U244O

100、E<= CO(13);</p><p>  U373OE<= CO(12);</p><p>  U373GT<= CO(11);</p><p>  U374CLK<= not CO(10) or CLK;</p><p>  U374OE<= CO(9);</p><p>

101、  U377CLK<= not CO(8) or U377EN;</p><p>  --Display control signals</p><p>  --CI(24 downto 16) <= CO(16 downto 8);</p><p>  CI(23 downto 16) <= DBY(7 downto 0);</p&

102、gt;<p>  CI(24) <= CO(8);</p><p>  --Connect all unused pins</p><p>  IOR <= '1';</p><p>  IOW<= '1';</p><p>  CRD<= '1'

103、;;</p><p>  CWR<= '1';</p><p>  MCLK <=CLK;</p><p>  CTRL2 <= '1';</p><p>  CTRL3 <= '1';</p><p>  CTRL4 <= '

104、1';</p><p>  CTRL1 <= '1';</p><p><b>  AB <= DB;</b></p><p>  CI(31 downto 29) <= MUX;</p><p>  CI(28) <= RESET;</p><p>

105、;  CI(27) <= PRIX;</p><p>  CI(26) <= KRIX;</p><p>  CI(25) <= RUN or CO(31) or CO(30) or CO(29) or CO(28) </p><p>  or CO(27) or CO(26) or CO(25) or CO(24);</p><

106、;p>  end busv1_behav;</p><p><b>  電路設計</b></p><p><b>  模型計算機電路設計</b></p><p>  本次模型計算機結構框圖見下:</p><p><b>  指令系統(tǒng)設計</b></p>&l

107、t;p>  本次模型計算機的指令系統(tǒng)設計如下:</p><p>  本次課程設計中使用的軟件</p><p>  根據(jù)ppt,經(jīng)操作,可生成目標代碼文件。</p><p>  然后進行編輯、編譯。</p><p><b>  微指令設計</b></p><p><b>  微指令設

108、計如下圖:</b></p><p><b>  程序設計</b></p><p><b>  應用程序設計概述</b></p><p>  本次課程設計使用的指令文件(CPU8B.DEF)</p><p><b>  目標代碼生成</b></p>&l

109、t;p>  應用程序實現(xiàn)(編輯,匯編)</p><p>  找到桌面上的圖標,, </p><p><b>  啟動 。</b></p><p>  加載指令定義文件CPU8B.DEF。</p><p>  檢查加載的指令定義文件CPU8B.DEF。</p><p><b>  匯

110、編生成目標文件。</b></p><p><b>  系統(tǒng)調試</b></p><p><b>  電路生成和下載。</b></p><p>  應用程序目標碼和微程序目標碼下載。</p><p><b>  調試。</b></p><p>

111、  注:在開始調試之前,必須保證:</p><p>  1.打開實驗儀電源開關。</p><p>  2.確保電路文件CPU8B.BIT已經(jīng)下載到實驗儀器的U3芯片。</p><p>  3.確保目標文件TEST.S19已經(jīng)生成。</p><p>  4.找到桌面上的圖標,啟動。</p><p>  5.注意該程序只能

112、啟動它的一個實例,</p><p>  否則聯(lián)機通信行失敗。</p><p>  打開界面后,設置串行口參數(shù)。</p><p>  選擇工具欄”系統(tǒng)”按鈕設置試驗模式。</p><p>  設置完畢后,先不加載文件,點擊”確定”,會依此出現(xiàn)下面5個窗口。</p><p>  再次選擇工具欄”系統(tǒng)”按鈕設置試驗模式,加載

113、三個文件。下圖是加載顯示配置文件。</p><p><b>  加載程序目標文件。</b></p><p>  等待程序和微程序目標碼下載完畢。</p><p>  執(zhí)行程序,在微機上執(zhí)行或是在實驗儀器上執(zhí)行。</p><p>  運行結束,看到結果后,復位,否則不能再次運行。</p><p> 

114、 編程與調試程序方法的介紹</p><p>  要將所設計機器指令對應的微程序裝入到控制存儲器中,還要將調試程序(匯編程序)裝入到內部存儲器中。各有兩種裝入方法,一種是通過實驗箱鍵盤輸入,另一種是通過編程下載實現(xiàn)。在調試過程中,往往會發(fā)現(xiàn)設計中的問題,需要修改設計,再根據(jù)修改后的設計進行調試,直到完全成功為止。調試成功后,整理出最后的設計文件。</p><p><b>  結果及

115、分析</b></p><p>  電路下載后的執(zhí)行效果(1)</p><p><b>  S0=1,S1=1</b></p><p>  電路下載后的執(zhí)行效果(2)</p><p><b>  S0=0,S1=1</b></p><p><b>  S0

116、=1,S1=0</b></p><p><b>  S0=0,S1=0</b></p><p>  本次課程設計的任務的硬件部分用VHDL描述,包括運算器、寄存器、寄存器、微程序控制器的VHDL描述,實現(xiàn)一個VHDL描述的模型計算機。</p><p><b>  收獲、體會及建議</b></p>

117、<p>  這次課程設計主要是掌握微程序控制結構計算機的設計方法,通過對機器指令和相對應微程序的設計,加深對微程序控制器的理解,加深對微程序設計特點的了解,加深對計算機各部件的理解以及對整機結構的理解。目的是綜合運用前面所學內容,加深對計算機系統(tǒng)各模塊的工作原理及相互聯(lián)系的認識,取得工和設計與組裝調試的實踐和經(jīng)驗。這次的課程設計讓我對計算機組成原理這門課程有了一個新的認識:軟件與硬件的統(tǒng)一、程序與電路的融合。讓我對“硬件是軟件

118、的身軀、軟件是硬件的靈魂”有了更進一步的理解。</p><p>  課設的第一天,我感覺自己就像一個“無頭蒼蠅”似的,沒有任何方向,沒有任何目標,就是一頭霧水。后來,認真聽了老師們給我們臨時的補課,我才漸漸理解了這次課設的目標。有了頭緒之后,整個人也就豁然開朗了,就開始付之于實踐了!漸漸地,從實踐中我領悟到只有將所學知識真正應用到實際操作中,才能更好地掌握,才能不斷發(fā)現(xiàn)自已存在的問題,從而不斷進步。實驗最難的部分

119、就是調試了,這也是最麻煩的。所以最好的辦法就是每一個模塊設計好后都進行驗證,保證正確性。但很多時候我以為我那樣做是對的,其實卻是有邏輯錯誤的,這個錯誤還好,只要多和同學討論,請教老師就比較容易發(fā)現(xiàn)。</p><p>  課程設計是培養(yǎng)學生綜合運用所學知識,發(fā)現(xiàn),提出,分析和解決實際問題,鍛煉實踐能力的重要環(huán)節(jié),是對學生實際工作能力的具體訓練和考察過程。通過這次課程設計使我懂得了理論與實際相結合是很重要的,只有理論

溫馨提示

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

評論

0/150

提交評論