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

下載本文檔

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

文檔簡介

1、<p>  嵌入式的8位CISC模型機設計</p><p><b>  目錄</b></p><p><b>  實驗目的</b></p><p><b>  二、設計題目及要求</b></p><p><b>  三、設計方案:</b><

2、/p><p>  1.模型機的總體設計</p><p>  2. 微程序控制器的組成原理框圖 </p><p>  3. 模型機機器指令格式和指令系統 </p><p>  4. 時序產生器的設計原理及時序波形圖 </p><p>  5. 微程序流程圖 </p><p>  6. 匯編語言源程序

3、</p><p>  四、設計的過程與步驟 </p><p>  五、模型機的各單元VHDL源程序</p><p>  模型機系統頂層電路圖</p><p>  七、模型機的時序仿真波形圖</p><p><b>  八、設計總結</b></p><p><b>

4、  九、參考文獻</b></p><p>  嵌入式的8位CISC模型機設計</p><p><b>  實驗目的:</b></p><p>  1. 通過課程設計加深對計算機各功能部件的理解;掌握數據信息流和控制信息流的流動和實現過程,建立起整機概念;培養(yǎng)設計、開發(fā)和調試計算機的能力。 </p><p> 

5、 2. 提高使用EDA工具軟件和可編程器件芯片的基本技能。 </p><p>  3. 培養(yǎng)科學研究的獨立工作能力,取得工程設計與組裝調試的實踐和經驗。 </p><p>  二、設計題目及要求:</p><p>  設計一臺8位的CISC模型機,要求具有以下驗證程序所要求的功能:</p><p>  求出1到任意一個整數N之間的所有奇數之和

6、并輸出顯示,和單字節(jié)長。說明:N從開關輸入,和數碼管輸出,然后輸出顯示停止。</p><p><b>  三、設計方案:</b></p><p>  1.模型機的總體設計</p><p>  模型機的總體設計的內容包括確定各種部件的設置以及它們之間的數據通路結構。CISC模型機由CISC微處理器、地址寄存器AR、ROM和RAM存儲器等組成。微處

7、理器由算術邏輯運算單元ALU、狀態(tài)條件寄存器、累加器AC、數據暫存器DR、通用寄存器R0~R2、程序計數器PC、指令寄存器IR、操作控制器和時序產生器組成。CISC模型機的操作控制器采用微程序控制器。根據模型機功能要求,畫出如圖1所示模型機數據通路框圖。 </p><p>  圖1 模型機數據通路框圖</p><p>  2. 微程序控制器的組成原理框圖 </p><

8、p>  微程序控制器組成原理框圖如圖2所示。它主要由控制器、微指令寄存器和地址轉移邏輯電路三大部分組成,其中微指令寄存器分為微地址寄存器和微命令寄存器兩部分。 </p><p>  圖2 微程序控制器組成原理框圖 </p><p>  3. 模型機機器指令格式和指令系統 </p><p>  CISC模型機的指令系統采用復雜的指令格式、多種指令字長度和多種

9、尋址方式,但指令功能強大,單條指令的執(zhí)行速度較慢。為了完成題目所要求的功能,模型機的指令系統共設計了8條不同的功能指令。指令字長度有單字長(1個字節(jié))和雙字長(2個字節(jié))兩種;尋址方式有三種,分別是寄存器尋址、直接尋址和立即尋址。這8條指令是IN1(輸入),MOV(將一個數送入寄存器),CMP(比較),JB(小于跳轉),ADD(兩數相加),INC(自增1),JMP(無條件跳轉),OUT1(輸出)。 </p><p&g

10、t;  下面分別介紹這些指令的格式: </p><p><b> ?。?)、I/O指令</b></p><p>  輸入(IN1)采用單字節(jié)指令,其格式如下: </p><p>  輸入(OUT1)采用單字節(jié)指令,其格式如下: </p><p>  說明:RS 為源寄存器, RD為目的寄存器。</p>&l

11、t;p><b> ?。?)、轉移指令</b></p><p>  條件轉移指令(JB)和無條件轉移指令(JMP)采用雙字節(jié)指令,其格式如下: </p><p>  “addr”中的值就是要轉移的地址值。 </p><p>  (3)、比較指令和相加指令</p><p>  比較(CMP)指令和相加指令(ADD)采用

12、單字節(jié)指令,其格式如下: </p><p><b>  (4)、MOV指令</b></p><p>  MOV指令采用雙字節(jié)指令,其格式如下: </p><p>  說明:“data”為立即數。 </p><p><b>  (5)、自增指令</b></p><p>  自增

13、1指令(INC)指令采用單字節(jié)指令,其格式如下: </p><p>  以下是對Rs和Rd的規(guī)定: </p><p>  模型機規(guī)定數據的表示采用定點整數補碼表示,單字長為8位,其格式如下: </p><p>  模型機的指令系統中共有8條基本指令,表1列出每條指令的助記符號、指令格式和功能。 </p><p>  表1 8條機器指令的助記

14、符號、指令格式和功能 </p><p>  4. 時序產生器的設計原理及時序波形圖 </p><p>  CISC微處理器的時鐘信號Q和清除信號CLR由外部輸入,節(jié)拍脈沖信號Ti由時序產生器產生。圖4-14描述了節(jié)拍脈沖信號與外部時鐘信號、清除信號的時序關系。 </p><p>  由圖3可以看出,節(jié)拍脈沖信號T1、T2、T3、T4實際上是以Q為時鐘輸入信號的計數狀

15、態(tài)經過譯碼器譯碼后生成的,因此可寫出節(jié)拍脈沖信號的邏輯表達式,并用VHDL語言實現之,然后將它創(chuàng)建為一個元件符號,供頂層電路調用。 </p><p>  圖3 T1、T2、T3、T4與CLR、Q之間的時序關系圖 </p><p>  如果系統的時鐘控制信號(即工作脈沖P)是在T1、T2、T3或T4的中間產生,且上升沿有效,則它產生方法是:先將Q取反,再和節(jié)拍脈沖信號Ti相“與”得到。如圖

16、4所示。</p><p>  圖4 時鐘控制信號的形成方法 </p><p>  5. 微程序流程圖 </p><p>  根據模型機的數據通路圖(圖1)以及所有指令在CISC模型機中的操作過程,畫出所有機器指令的微程序流程圖,如圖5所示。圖中每個框為一個CPU周期(包含T1~T4共4個節(jié)拍脈沖周期)對應于一條微指令??蛑猩厦娴氖M制數表示的是當前微指令在控制

17、存儲器中的微地址;框中下面的十六進制數表示的是當前微指令的后續(xù)微坡地。在編寫微指令時,圖中的菱形框從屬于它上面的方框。 </p><p>  圖5 CISC模型機中所有機器指令的微程序流程圖 </p><p>  6. 匯編語言源程序 </p><p>  算法思想為:采用R0寄存器存放從開關輸入的任意一個整數,R1存放準備參加累加運算的奇數,R2存放累加的和,

18、用一個循環(huán)程序實現如下: </p><p><b>  功能</b></p><p>  IN1 R0 從開關輸入任意一個整數n→R0 </p><p>  MOV R1,1 將立即數1→R1(R1用于存放參與運算的奇數) </p><p>  MOV R2,0 將立即數0→

19、R2 (R2用于存放累加和) </p><p>  L1:CMP R0,R1 將R0的整數n與R1的奇數進行比較,鎖存CY和ZI </p><p>  JB L2 小于,則轉到L2處執(zhí)行 </p><p>  ADD R1,R2 否則,累加求和,并將R1的內容加2,形成下一個奇數 </p><p>

20、<b>  INC R1 </b></p><p><b>  INC R1 </b></p><p>  JMP L1 無條件跳轉到L1處繼續(xù)執(zhí)行 </p><p>  L2: OUT R2 輸出累加和 </p><p>  JMP L2 循環(huán)顯

21、示 </p><p>  四、設計的過程與步驟 </p><p><b>  1、設計各單元電路</b></p><p>  首先設計出模型機中所有的單元部件,可以使用VHDL語言文件(.vhd)或者電路圖形描述文件(.gdf)對模型機中的各個部件進行設計,并使之成為可供系統調用的元件符號。</p><p> ?。?)、

22、ALU單元 </p><p>  算術邏輯運算單元ALU可執(zhí)行三種運算,即加、比較和加1運算。ALU的三種運算受S0、S1控制,具體如表3所示。 </p><p>  表3 算術邏輯運算單元ALU的功能表 </p><p>  ALU單元文本設計實驗操作方法提示: </p><p>  a. 在MAX+plusII的文本編輯方式下完成ALU

23、部件的VHDL源程序編輯,用ALU.vhd為文件名存入工程目錄(D :\CISC)中。</p><p>  b. 在MAX+plus II窗口下,選擇File→Project→Set Project to Current File命令,將設計文件設置當前工程。然后執(zhí)行MAX+plus II菜單下“Compiler”命令對設計文件進行編譯, 檢查設計文件中的錯誤。 </p><p>  c.

24、 在MAX+plus II窗口下,執(zhí)行“File”菜單中的“Create Default Symbol”命令,可為通過編譯的文本設計文件創(chuàng)建一個元件符號,并保存在工程目錄中。 </p><p> ?。?)、狀態(tài)條件寄存器單元 </p><p>  狀態(tài)條件寄存器用來在進行比較運算時鎖存借位標志(FC/CY)和零標志(FZ/ZI),在進行條件轉移時其內容作為判斷的依據。</p>

25、<p>  狀態(tài)條件寄存器單元設計實驗操作方法與ALU單元設計實驗操作方法相同,以后的單元設計實驗操作方法不再重復說明。</p><p> ?。?)、暫存寄存器、通用寄存器、地址寄存器、指令寄存器單元 </p><p>  模型機中暫存寄存器、通用寄存器、地址寄存器、指令寄存器都采用8位數據寄存器LS273元件,只是上述各個寄存器實體的命名分別為:AC,DR,R0,R1,R2,

26、AR,IR。</p><p> ?。?)、1:2分配器單元 </p><p>  1:2分配器單元用來將ALU的運算結果或通用寄存器的內容(經3選1多路選擇器)回送到數據總線,或者將ALU的運算結果或通用寄存器的內容送往輸出設備顯示。1:2分配器單元的功能描述見表4。1:2分配器單元元件符號如圖9所示。 </p><p>  (5)、3選1數據選擇器單元 </

27、p><p>  3選1數據選擇器單元MUX3在數據輸入控制信號SW_B、只讀存儲器片選控制信號CS的控制下,用來從外部輸入數據端ID[7..0]、4選1多路選擇器的輸出端N1[7..0]和只讀存儲器ROM的輸出端N2[7..0]選擇一個8位的數據進入內部數據總線。3選1數據選擇器單元的功能表見表5。3選1數據選擇器單元元件符號如圖10所示。 </p><p>  (6)、4選1數據選擇器單元

28、</p><p>  4選1數據選擇器單元MUX4在數據輸入控制信號C(R0_B)、D(R1_B)、E(R2_B)、F(ALU_B)的控制下,用來從有三個通用寄存器的數據輸出端和ALU的數據輸出端選擇一個8位的數據輸入1:2分配器的數據輸入端。4選1數據選擇器單元的功能表6,4選1數據選擇器單元元件符號如圖11所示。 </p><p> ?。?)、程序計數器單元 </p>&

29、lt;p>  程序計數器單元的元件符號如圖12,它在控制信號的控制下具有清“0”,置計數初值和加1功能,其作用是保證程序的順序執(zhí)行,在執(zhí)行跳轉指令時,通過修改PC的值達到程序轉移分支的目的。程序計數器PC的輸出直接送往地址寄存器AR(LS273芯片)。</p><p>  表7 程序計數器PC的功能表 </p><p> ?。?)、主存儲器單元 </p><p&

30、gt;  CISC模型機由于只運行完成一定功能的程序而不需要進行數據處理,所以只采用ROM芯片作為它的主存儲器單元,沒有配置讀寫存儲器RAM芯片。它的主存儲器單元是一片256×8位的ROM芯片,如圖13所示。ADDR[7..0]為8位坡地輸入端,CS為片選信號,DOUT[7..0] 為8位數據輸出端,它的功能表見表8。 </p><p>  表8 主存儲器ROM16的功能表 </p>&

31、lt;p>  在CISC模型機中,ROM芯片的讀操作時序如圖6所示,ROM的讀操作僅與片選信號CS有關,CS為低電平有效,有效電平的范圍為一個CPU周期。</p><p>  圖6 CISC模型機中ROM芯片的讀操作時序圖 </p><p>  在圖13中,主存儲器的地址輸入端直接與地址寄存器的輸出相連,數據輸出端經3選1數據選擇器送往數據總線。主存儲器單元的VHDL程序</p

32、><p>  (9)、時序產生器單元 </p><p>  時序產生器主要用來產生節(jié)拍脈沖信號(T1、T2、T3、T4),對各種控制信號實施時間上控制。時序產生器單元元件符號如圖15所示,它內容采用一個2位普通計數器,計數值譯碼后產生節(jié)拍脈沖信號(T1、T2、T3、T4),Q為外部時鐘輸入信號。時序產生器單元的功能表如表9所示。 </p><p>  表9 時序產生器

33、單元COUNTER的功能表 </p><p> ?。?0)、微程序控制器單元 </p><p>  微程序控制器器由地址轉移邏輯電路ADDR、微地址寄存器aa、控制存儲器CONTROM和微命令寄存器MCOMMAND等幾部分組成。為了方便電路的設計與連線,在進行本模型機微程序控制器單元內部結構設計時,增加了F1、F2和F3共三個用于多根單線與總線之間轉換的器件。 </p>&l

34、t;p>  微程序控制器單元的內部結構如圖7所示,微程序控制器單元元件符號如圖7所示。 </p><p>  圖7 微程序控制器的內部結構圖 </p><p>  a、 地址轉換邏輯電路 </p><p>  地址轉換邏輯電路ADDR設計原理在前面設計方案中作了詳細介紹,這里不再說明。</p><p>  b、 微地址寄存器 </

35、p><p>  微地址寄存器aa的內部結構如圖8所示, 微地址寄存器aa的元件符號如圖20所示。 </p><p>  圖8 微地址寄存器aa的內部結構 </p><p>  微地址寄存器aa設計的實驗操作方法說明:它需要采用MAX+plusII的VHDL文本設計法和電路圖形設計法相結合的方法完成。首先用VHDL文本設計法完成觸發(fā)器MMM元件符號的創(chuàng)建,然后用圖形輸入

36、設計法完成微地址寄存器aa元件符號創(chuàng)建。 </p><p><b>  c、 控制存儲器 </b></p><p>  控制存儲器中存放的所有微指令和對應的微地址均來自設計方案的微指令列表(即表2)。 </p><p>  d、 微命令寄存器 </p><p>  說明:在上述程序設計中,為了實現對源寄存器和目標寄存器的

37、選擇,采用了寄存器邏輯譯碼功能。表10為寄存器邏輯譯碼功能表(一),表11為寄存器邏輯譯碼功能表(二)。 </p><p>  表10 寄存器邏輯譯碼功能表(一) </p><p>  表11 寄存器邏輯譯碼功能表(二) </p><p>  18個單元元件符號如下圖9</p><p>  圖9 各單元元件符號</p>&l

38、t;p>  微程序控制器單元crom設計的實驗操作方法說明:首先用MAX+plusII的VHDL文本設計法完成地址轉換邏輯電路ADDR、控制存儲器CONTROM、微命令寄存器MCOMMAND、微地址轉換器F1、微地址轉換器F2和微地址轉換器F3等元件符號的創(chuàng)建;然后用MAX+plusII的文本輸入法和圖形輸入設計法相結合的方法完成微地址寄存器aa元件符號創(chuàng)建;最后用圖形輸入設計法完成微程序控制器單元crom編譯和元件符號創(chuàng)建。 &

39、lt;/p><p>  2、設計CISC模型機的頂層電路圖 </p><p>  在完成了CISC模型機的所有單元元件的設計后,就可以進行CISC模型機的頂層電路或頂層文件設計工作。在MAX+plusII下設計的CISC模型機的頂層電路如圖27所示,其頂層電路的功能也可直接采用VHDL語言程序來描述。 </p><p>  五、模型機的各單元VHDL源程序</p&

40、gt;<p>  ------------------------ALU的VHDL源程序ALU.vhd --------------------------------</p><p>  LIBRARY IEEE; </p><p>  USE IEEE.STD_LOGIC_1164.ALL; </p><p>  USE IEEE.STD_LOGI

41、C_ARITH.ALL; </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&

42、gt;<p>  B: 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>&l

43、t;p><b>  ); </b></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&g

44、t;<b>  BEGIN </b></p><p>  PROCESS(S1,S0) </p><p><b>  BEGIN </b></p><p>  IF(S1='0' AND S0='0') THEN --ADD </p><p>  AA<=

45、9;0'&A; </p><p>  BB<='0'&B; </p><p>  TEMP<=AA+BB; </p><p>  BCDOUT<=TEMP(7 DOWNTO 0); </p><p>  CY<=TEMP(8); </p><p>  IF

46、 (TEMP="100000000") THEN </p><p><b>  ZI<='1'; </b></p><p><b>  ELSE </b></p><p><b>  ZI<='0'; </b></p>&l

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

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

49、<b>  ZI<='1'; </b></p><p><b>  ELSE </b></p><p><b>  CY<='0'; </b></p><p><b>  ZI<='0'; </b></p&g

50、t;<p><b>  END IF; </b></p><p>  ELSIF(S1='1' AND S0='0') THEN --INC </p><p>  AA<='0'&A; </p><p>  TEMP<=A+1; </p><p

51、>  BCDOUT<=TEMP(7 DOWNTO 0); </p><p>  CY<=TEMP(8); </p><p>  IF (TEMP="100000000") THEN </p><p><b>  ZI<='1'; </b></p><p><

52、;b>  ELSE </b></p><p><b>  ZI<='0'; </b></p><p><b>  END IF; </b></p><p><b>  ELSE </b></p><p>  BCDOUT<=&quo

53、t;00000000" ; </p><p><b>  CY<='0'; </b></p><p><b>  ZI<='0'; </b></p><p><b>  END IF; </b></p><p>  END

54、PROCESS; </p><p><b>  END A; </b></p><p>  -------------------狀態(tài)條件寄存器的VHDL源程序LS74.vhd -----------</p><p>  LIBRARY IEEE; </p><p>  USE IEEE.STD_LOGIC_1164.A

55、LL; </p><p>  ENTITY LS74 IS </p><p><b>  PORT( </b></p><p>  LDFR: IN STD_LOGIC; </p><p>  CY,ZI: IN STD_LOGIC; </p><p>  FC,FZ: OUT STD_LOGIC

56、 </p><p><b>  ); </b></p><p>  END LS74; </p><p>  ARCHITECTURE A OF LS74 IS </p><p><b>  BEGIN </b></p><p>  PROCESS(LDFR) </p&

57、gt;<p><b>  BEGIN </b></p><p>  IF(LDFR'EVENT AND LDFR='1') THEN </p><p><b>  FC<=CY; </b></p><p><b>  FZ<=ZI; </b></

58、p><p><b>  END IF; </b></p><p>  END PROCESS; </p><p><b>  END A; </b></p><p>  --------------LS273單元設計的VHDL語言程序------------------------</p>

59、<p>  -- 8位數據寄存器的VHDL源程序LS273.vhd </p><p>  LIBRARY IEEE; </p><p>  USE IEEE.STD_LOGIC_1164.ALL; </p><p>  ENTITY LS273 IS </p><p><b>  PORT( </b><

60、/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><p&g

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

62、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>  END A; &

63、lt;/b></p><p>  -------------------- 1:2分配器的VHDL源程序FEN2.vhd ------------------</p><p>  LIBRARY IEEE; </p><p>  USE IEEE.STD_LOGIC_1164.ALL; </p><p>  ENTITY FEN2 IS

64、 </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:OUT STD_LOGIC_VECTOR(7 DOWNTO 0) </

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

66、;<p><b>  BEGIN </b></p><p>  IF(LED_B='0' AND WR='0') THEN </p><p><b>  W2<=X; </b></p><p><b>  ELSE </b></p>&

67、lt;p><b>  W1<=X; </b></p><p><b>  END IF; </b></p><p>  END PROCESS; </p><p><b>  END A; </b></p><p>  -------------3選1數據選擇器單元

68、VHDL源程序MUX3.vhd ---------------------</p><p>  LIBRARY IEEE; </p><p>  USE IEEE.STD_LOGIC_1164.ALL; </p><p>  ENTITY MUX3 IS </p><p><b>  PORT( </b></p&g

69、t;<p>  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) <

70、;/p><p><b>  ); </b></p><p>  END MUX3; </p><p>  ARCHITECTURE A OF MUX3 IS </p><p><b>  BEGIN </b></p><p>  PROCESS(SW_B,CS) </p&g

71、t;<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>

72、;  EW<=N2; </b></p><p><b>  ELSE </b></p><p><b>  EW<=N1; </b></p><p><b>  END IF; </b></p><p>  END PROCESS; </p>

73、<p><b>  END A; </b></p><p>  ------------------4選1數據選擇器單元VHDL源程序MUX4.vhd -----------------</p><p>  LIBRARY IEEE; </p><p>  USE IEEE.STD_LOGIC_1164.ALL; </p&g

74、t;<p>  ENTITY MUX4 IS </p><p><b>  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: o

75、ut STD_LOGIC_VECTOR(7 DOWNTO 0) </p><p><b>  ); </b></p><p>  END MUX4; </p><p>  ARCHITECTURE A OF MUX4 IS </p><p>  SIGNAL SEL: STD_LOGIC_VECTOR(3 DOWNTO

76、0); </p><p><b>  BEGIN </b></p><p>  SEL<=F&E&D&C; </p><p>  PROCESS(SEL) </p><p><b>  BEGIN </b></p><p>  -- CASE S

77、EL IS </p><p>  -- WHEN "1110"=> </p><p>  -- W<=X1; </p><p>  -- WHEN "1101"=> </p><p>  -- W<=X2; </p><p>  -- WHEN "

78、;1011"=> </p><p>  -- W<=X3; </p><p>  -- WHEN "0111"=> </p><p>  -- W<=X4; </p><p>  -- WHEN OTHERS => </p><p><b>  --

79、 NULL; </b></p><p>  --END CASE; </p><p>  IF(SEL="1110") THEN --R0_out </p><p><b>  W<=X1; </b></p><p>  ELSIF(SEL="1101") THE

80、N --R1_out </p><p><b>  W<=X2; </b></p><p>  ELSIF(SEL="1011") THEN --R2-out </p><p><b>  W<=X3; </b></p><p>  ELSIF(SEL="0

81、111") THEN --ALU_out </p><p><b>  W<=X4; </b></p><p><b>  ELSE </b></p><p><b>  null; </b></p><p><b>  END IF; </b&

82、gt;</p><p>  END PROCESS; </p><p><b>  END A; </b></p><p>  ---------------------程序計數器單元VHDL源程序PC.vhd ------------------</p><p>  LIBRARY IEEE; </p>

83、<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 PC IS </p><p><b>  POR

84、T( </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) </p><p><b>  ); &l

85、t;/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><b>  BEGIN </b>&

86、lt;/p><p>  PROCESS(LDPC,CLR,load) </p><p><b>  BEGIN </b></p><p>  IF(CLR='0') THEN </p><p>  QOUT<="00000000"; </p><p>  EL

87、SIF(LDPC'EVENT AND LDPC='1') THEN </p><p>  IF(load='0') THEN </p><p>  QOUT<=D; --BUS->PC </p><p><b>  ELSE </b></p><p>  QOUT<

88、;=QOUT+1; --PC+1 </p><p><b>  END IF; </b></p><p><b>  END IF; </b></p><p>  END PROCESS; </p><p><b>  O<=QOUT; </b></p>&

89、lt;p><b>  END A; </b></p><p>  -----------------------主存儲器單元VHDL源程序ROM16.vhd ------------</p><p>  LIBRARY IEEE; </p><p>  USE IEEE.STD_LOGIC_1164.ALL; </p>&l

90、t;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:OUT STD_LO

91、GIC_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><p

92、>  ARCHITECTURE A OF ROM16 IS </p><p><b>  BEGIN </b></p><p>  DOUT<="10000000" WHEN ADDR="00000000" AND CS='0' ELSE </p><p>  "10

93、010001" WHEN ADDR="00000001" AND CS='0' ELSE </p><p>  "00000001" WHEN ADDR="00000010" AND CS='0' ELSE </p><p>  "10010010" WHEN ADDR

94、="00000011" AND CS='0' ELSE </p><p>  "00000000" WHEN ADDR="00000100" AND CS='0' ELSE </p><p>  "10100001" WHEN ADDR="00000101"

95、AND CS='0' ELSE </p><p>  "10110000" WHEN ADDR="00000110" AND CS='0' ELSE </p><p>  "00001101" WHEN ADDR="00000111" AND CS='0' ELS

96、E </p><p>  "11000110" WHEN ADDR="00001000" AND CS='0' ELSE </p><p>  "11010001" WHEN ADDR="00001001" AND CS='0' ELSE </p><p>

97、;  "11010001" WHEN ADDR="00001010" AND CS='0' ELSE </p><p>  "11100000" WHEN ADDR="00001011" AND CS='0' ELSE </p><p>  "00000101"

98、; WHEN ADDR="00001100" AND CS='0' ELSE </p><p>  "11111000" WHEN ADDR="00001101" AND CS='0' ELSE </p><p>  "11100000" WHEN ADDR="0000

99、1110" AND CS='0' ELSE </p><p>  "00001101" WHEN ADDR="00001111" AND CS='0' ELSE </p><p>  "00000000"; </p><p><b>  END A; &l

100、t;/b></p><p>  --------------時序產生器單元的VHDL源程序COUNTER.vhd ---------------</p><p>  LIBRARY IEEE; </p><p>  USE IEEE.STD_LOGIC_1164.ALL; </p><p>  USE IEEE.STD_LOGIC_AR

101、ITH.ALL; </p><p>  USE IEEE.STD_LOGIC_UNSIGNED.ALL; </p><p>  ENTITY COUNTER IS </p><p><b>  PORT( </b></p><p>  Q,CLR: IN STD_LOGIC; </p><p> 

102、 T2,T3,T4: OUT STD_LOGIC </p><p><b>  ); </b></p><p>  END COUNTER; </p><p>  ARCHITECTURE A OF COUNTER IS </p><p>  SIGNAL X: STD_LOGIC_VECTOR(1 DOWNTO 0);

103、 </p><p><b>  BEGIN </b></p><p>  PROCESS(Q,CLR) </p><p><b>  BEGIN </b></p><p>  IF(CLR='0') THEN </p><p><b>  T2<

104、;='0'; </b></p><p><b>  T3<='0'; </b></p><p><b>  T4<='0'; </b></p><p><b>  X<="00"; </b></p&

105、gt;<p>  ELSIF(Q'EVENT AND Q='1') THEN </p><p><b>  X<=X+1; </b></p><p>  T2<=(NOT X(1)) AND X(0); </p><p>  T3<=X(1) AND (NOT X(0)); </p&

106、gt;<p>  T4<=X(1) AND X(0); </p><p><b>  END IF; </b></p><p>  END PROCESS; </p><p><b>  END A; </b></p><p>  ------------------地址轉換邏輯

107、電路的VHDL源程序ADDR.vhd-------------- </p><p>  LIBRARY IEEE; </p><p>  USE IEEE.STD_LOGIC_1164.ALL; </p><p>  ENTITY ADDR IS </p><p><b>  PORT( </b></p>

108、<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 STD_LOGIC </p><p><b>  ); </b></p><p>  EN

109、D ADDR; </p><p>  ARCHITECTURE A OF ADDR IS </p><p><b>  BEGIN </b></p><p>  SE6<='1'; </p><p>  SE5<=NOT((NOT FC OR FZ)AND P2 AND T4); </p

110、><p>  SE4<=NOT(I7 AND P1 AND T4); </p><p>  SE3<=NOT(I6 AND P1 AND T4); </p><p>  SE2<=NOT(I5 AND P1 AND T4); </p><p>  SE1<=NOT(I4 AND P1 AND T4); </p>

111、<p><b>  END A; </b></p><p>  -------------------觸發(fā)器MMM的VHDL源程序MMM.vhd---------------- </p><p>  LIBRARY IEEE; </p><p>  USE IEEE.STD_LOGIC_1164.ALL; </p>

112、<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>  CLR:I

113、N 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><p>&l

114、t;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'; </

115、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>  UA<

116、;=D; </b></p><p><b>  END IF; </b></p><p>  END PROCESS; </p><p><b>  END A; </b></p><p>  ---------------控制存儲器CONTROM的VHDL源程序CONTROM.vhd

117、-----------</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>

118、<p>  ENTITY CONTROM IS </p><p>  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) <

119、/p><p><b>  ); </b></p><p>  END CONTROM; </p><p>  ARCHITECTURE A OF CONTROM IS </p><p>  SIGNAL DATAOUT: STD_LOGIC_VECTOR(24 DOWNTO 0); </p><p>

120、<b>  BEGIN </b></p><p>  PROCESS(ADDR) </p><p><b>  BEGIN </b></p><p>  CASE ADDR IS </p><p>  WHEN "000000" => DATAOUT<="1

121、110011001001111000000010"; </p><p>  WHEN "000010" => DATAOUT<="1001011001001011010001000"; </p><p>  WHEN "000011" => DATAOUT<="1000111001001

122、011000000000"; </p><p>  WHEN "000100" => DATAOUT<="1000001001011111000000101"; </p><p>  WHEN "000101" => DATAOUT<="1000011011001111100000000

123、"; </p><p>  WHEN "000110" => DATAOUT<="1000001001011111000000111"; </p><p>  WHEN "000111" => DATAOUT<="1000111000001111000000000"; <

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

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

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

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

128、 DATAOUT<="1000111100001111000000000"; </p><p>  WHEN "010011" => DATAOUT<="0100011001001011000000000"; </p><p>  WHEN "100000" => DATAOUT<

129、="0100011001001011000000000"; </p><p>  WHEN "110000" => DATAOUT<="1000011001001111000000000"; </p><p>  WHEN OTHERS => DATAOUT<="10000110010011110

130、00000000"; </p><p>  END CASE; </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&g

131、t;<p><b>  END A; </b></p><p>  -----------------微命令寄存器MCOMMAND的VHDL源程序MCOMMAND.vhd -----</p><p>  LIBRARY IEEE; </p><p>  USE IEEE.STD_LOGIC_1164.ALL; </p>

132、<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></p><p>  T2,T3,T4

133、,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,R0_B,R1_B,R2_B,S1,S0, </p><p>  ALU_B,LDAC,LDDR,WR,CS,SW_

134、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_VECTOR(18

135、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>&l

136、t;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

溫馨提示

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

評論

0/150

提交評論