版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、<p> 嵌入式的8位CISC模型機設(shè)計</p><p><b> 目錄</b></p><p> 一、設(shè)計目的- 2 -</p><p> 二、設(shè)計題目及要求- 2 -</p><p> 三、設(shè)計方案- 2 -</p><p> 1.模型機的總體設(shè)計- 2 -<
2、;/p><p> 3. 模型機機器指令格式和指令系統(tǒng)- 3 -</p><p> 4.時序產(chǎn)生器的設(shè)計原理及時序波形圖- 3 -</p><p> 5. 微程序流程圖- 4 -</p><p> 6、微程序控制器單元- 5 -</p><p> 8、機器語言的源程序- 6 -</p>&l
3、t;p> 四、設(shè)計的過程與步驟- 6 -</p><p> 1、設(shè)計各單元電路- 6 -</p><p> ALU單元- 6 -</p><p> 狀態(tài)條件寄存器單元- 6 -</p><p> 暫存寄存器、通用寄存器、地址寄存器、指令寄存器單元- 7 -</p><p> 1:2分配器單元
4、- 7 -</p><p> 3選1數(shù)據(jù)選擇器單元- 7 -</p><p> 4選1數(shù)據(jù)選擇器單元- 7 -</p><p> 程序計數(shù)器單元- 7 -</p><p> 主存儲器單元- 7 -</p><p> 時序產(chǎn)生器單元- 7 -</p><p> 微程序控制器
5、單元- 7 -</p><p> 2、設(shè)計CISC模型機的頂層電路圖- 8 -</p><p> 五、模型機的各單元VHDL源程序- 8 -</p><p> --ALU的VHDL源程序ALU.vhd- 8 -</p><p> --狀態(tài)條件寄存器的VHDL源程序LS74.vhd- 9 -</p><p&
6、gt; -- 8位數(shù)據(jù)寄存器的VHDL源程序LS273.vhd- 10 -</p><p> -- 1:2分配器的VHDL源程序FEN2.vhd- 10 -</p><p> --3選1數(shù)據(jù)選擇器單元VHDL源程序MUX3.vhd- 11 -</p><p> --4選1數(shù)據(jù)選擇器單元VHDL源程序MUX4.vhd- 11 -</p>
7、<p> --程序計數(shù)器單元VHDL源程序PC.vhd- 12 -</p><p> --主存儲器單元VHDL源程序ROM16.vhd- 13 -</p><p> --時序產(chǎn)生器單元的VHDL源程序COUNTER.vhd- 13 -</p><p> --控制存儲器CONTROM的VHDL源程序CONTROM.vhd- 15 -</
8、p><p> --微命令寄存器MCOMMAND的VHDL源程序MCOMMAND.vhd- 16 -</p><p> --微地址轉(zhuǎn)換器F2的VHDL源程序F2.vhd- 17 -</p><p> --微地址轉(zhuǎn)換器F3的VHDL源程序F3.vhd- 18 -</p><p> 六、模型機的單元電路圖及系統(tǒng)頂層電路圖- 18 -&l
9、t;/p><p> 七、模型機的功能仿真和硬件驗證- 24 -</p><p> 1、功能仿真波形圖- 24 -</p><p> 2、硬件驗證- 25 -</p><p> 八、設(shè)計總結(jié)- 25 -</p><p> 九、參考文獻- 25 -</p><p> 課程設(shè)計題目:
10、組成原理課程設(shè)計</p><p> 嵌入式的8位CISC模型機設(shè)計</p><p><b> 一、設(shè)計目的</b></p><p> 通過課程設(shè)計加深對計算機各功能部件的理解;掌握數(shù)據(jù)信息流和控制信息流的流動和實現(xiàn)過程,建立起整機概念;培養(yǎng)設(shè)計、開發(fā)和調(diào)試計算機的能力。 </p><p> 提高使用EDA工具軟件
11、和可編程器件芯片的基本技能。 </p><p> 培養(yǎng)科學研究的獨立工作能力,取得工程設(shè)計與組裝調(diào)試的實踐和經(jīng)驗。 </p><p><b> 二、設(shè)計題目及要求</b></p><p> 設(shè)計一臺8位的CISC模型機,要求具有以下驗證程序所要求的功能: </p><p> 求出1到任意一個整數(shù)N之間的所有奇數(shù)之
12、和并輸出顯示,和為單字長。說明:N從開關(guān)輸入,和從數(shù)碼管輸出,然后輸出顯示停止。</p><p> 要求學生掌握CISC模型機的組成和工作原理,學會Quertus EDA軟件的使用,能用VHDL硬件描述語言設(shè)計一個能完成一定功能的模型計算機,并通過仿真一個程序的執(zhí)行來驗證模型機設(shè)計的正確性。</p><p><b> 三、設(shè)計方案</b></p>
13、<p> 1.模型機的總體設(shè)計 </p><p> 模型機的總體設(shè)計的內(nèi)容包括確定各種部件的設(shè)置以及它們之間的數(shù)據(jù)通路結(jié)構(gòu)。CISC模型機由CISC微處理器、地址寄存器AR、ROM和RAM存儲器等組成。微處理器由算術(shù)邏輯運算單元ALU、狀態(tài)條件寄存器、累加器AC、數(shù)據(jù)暫存器DR、通用寄存器R0~R2、程序計數(shù)器PC、指令寄存器IR、操作控制器和時序產(chǎn)生器組成。CISC模型機的操作控制器采用微程序控制
14、器。根據(jù)模型機功能要求,畫出如圖1所示模型機數(shù)據(jù)通路框圖。</p><p> 圖1 模型機數(shù)據(jù)通路框圖 </p><p> 2. 微程序控制器的組成原理框圖 </p><p> 微程序控制器組成原理框圖如圖2。它主要由控制器、微指令寄存器和地址轉(zhuǎn)移邏輯電路三大部分組成,其中微指令寄存器分為微地址寄存器和微命令寄存器兩部分。 </p><p
15、> 圖2 微程序控制器組成原理框圖</p><p> 3. 模型機機器指令格式和指令系統(tǒng) </p><p> CISC模型機的指令系統(tǒng)采用復(fù)雜的指令格式、多種指令字長度和多種尋址方式,但指令功能強大,單條指令的執(zhí)行速度較慢。根據(jù)所要求的功能,模型機的指令系統(tǒng)共設(shè)計了8條不同的功能指令。指令字長度有單字長(1個字節(jié))和雙字長(2個字節(jié))兩種;尋址方式有三種,分別是寄存器尋址、直
16、接尋址和立即尋址。這8條指令是IN1(輸入),MOV(將一個數(shù)送入寄存器),CMP(比較),JB(小于跳轉(zhuǎn)),ADD(兩數(shù)相加),INC(自增1),JMP(無條件跳轉(zhuǎn)),OUT1(輸出)。 </p><p> 模型機的指令系統(tǒng)中共有8條基本指令,表1出每條指令的助記符號、指令格式和功能。</p><p> 表1 8條機器指令的助記符號、指令格式和功能</p><p
17、> 4.時序產(chǎn)生器的設(shè)計原理及時序波形圖 </p><p> CISC微處理器的時鐘信號Q和清除信號CLR由外部輸入,節(jié)拍脈沖信號Ti由時序產(chǎn)生器產(chǎn)生。圖3述了節(jié)拍脈沖信號與外部時鐘信號、清除信號的時序關(guān)系。 </p><p> 圖3 T1、T2、T3、T4與CLR、Q之間的時序關(guān)系圖</p><p> 由圖3看出,節(jié)拍脈沖信號T1、T2、T3、T4
18、實際上是以Q為時鐘輸入信號的計數(shù)狀態(tài)經(jīng)過譯碼器譯碼后生成的,因此可寫出節(jié)拍脈沖信號的邏輯表達式,并用VHDL語言實現(xiàn)之,然后將它創(chuàng)建為一個元件符號,供頂層電路調(diào)用。 </p><p> 如果系統(tǒng)的時鐘控制信號(即工作脈沖P)是在T1、T2、T3或T4的中間產(chǎn)生,且上升沿有效,則它產(chǎn)生方法是:先將Q取反,再和節(jié)拍脈沖信號Ti相“與”得到。</p><p><b> 5. 微程序
19、流程圖</b></p><p> 根據(jù)模型機的數(shù)據(jù)通路圖(圖4)以及所有指令在CISC模型機中的操作過程,畫出所有機器指令的微程序流程圖,如圖4所示。圖中每個框為一個CPU周期(包含T1~T4共4個節(jié)拍脈沖周期)對應(yīng)于一條微指令??蛑猩厦娴氖M制數(shù)表示的是當前微指令在控制存儲器中的微地址;框中下面的十六進制數(shù)表示的是當前微指令的后續(xù)微坡地。在編寫微指令時,圖中的菱形框從屬于它上面的方框。 <
20、/p><p> 圖4 CISC模型機中所有機器指令的微程序流程圖</p><p> 6、微程序控制器單元</p><p> 1) 設(shè)計微指令格式和微指令代碼表</p><p> CISC模型機系統(tǒng)使用的微指令采用全水平型微指令,字長25位,其中微指令字段17位,P字段2位,后續(xù)微地址6位。</p><p> 由微
21、指令格式和微程序流程圖編寫的微指令代碼表2所示</p><p><b> 表2 微指令代碼表</b></p><p> 2) 設(shè)計地址轉(zhuǎn)移邏輯電路</p><p> 地址轉(zhuǎn)移邏輯電路是根據(jù)微程序流程圖4中的菱形部分及多個分支微地址,利用微地址寄存器的異步置“1”端,實現(xiàn)微地址的多路轉(zhuǎn)移。在圖4中進行P(1)(高電平有效)測試時,根據(jù)指令的
22、操作碼I7~I4強制修改后繼微地址的低4位,在P(2)(高電平有效)測試時,根據(jù)借位標志FC和零標志FZ進行兩路分支,并且都在T4內(nèi)形成后繼微指令的微地址。 </p><p> 由于微地址寄存器中的觸發(fā)器異步置“1”端低電平有效,與üA4~üA0對應(yīng)的異步置“1”控制信號SE5~SE1的邏輯表達式為:(üA5的異步置“1”端SE6實際未使用): </p><p&
23、gt; 7.匯編語言源程序 </p><p> 算法思想為:采用R0寄存器存放從開關(guān)輸入的任意一個整數(shù),R1存放準備參加累加運算的奇數(shù),R2存放累加的和,用一個循環(huán)程序?qū)崿F(xiàn)如下: </p><p><b> 功能</b></p><p> IN1 R0 從開關(guān)輸入任意一個整數(shù)n→R0 </p>&
24、lt;p> MOV R1,1 將立即數(shù)1→R1(R1用于存放參與運算的奇數(shù)) </p><p> MOV R2,0 將立即數(shù)0→R2 (R2用于存放累加和) </p><p> L1:CMP R0,R1 將R0的整數(shù)n與R1的奇數(shù)進行比較,鎖存CY和ZI </p><p> JB L2 小于
25、,則轉(zhuǎn)到L2處執(zhí)行 </p><p> ADD R1,R2 否則,累加求和,并將R1的內(nèi)容加2,形成下一個奇數(shù) </p><p> INC R1</p><p> INC R1</p><p> JMP L1 無條件跳轉(zhuǎn)到L1處繼續(xù)執(zhí)行</p><p
26、> L2: OUT R2 輸出累加和 </p><p> JMP L2 循環(huán)顯示</p><p> 8、機器語言的源程序</p><p> 根據(jù)設(shè)計的指令格式,將匯編語言源程序手工轉(zhuǎn)換成機器語言源程序,并將其設(shè)計到模型機的ROM中去。 </p><p> 與匯編語言源程序?qū)?yīng)的機器語言源程序如下:</p
27、><p> 助記符 地址(十六進制) 機器代碼 功能</p><p> IN1 R0 00 10000000 (SW)→R0</p><p> MOV R1,1 01 10010001 1→R1&l
28、t;/p><p> 02 00000001</p><p> MOV R2,0 03 10010010 0→R2</p><p> 04 00000000</p><p> L1:CMP R0,R1 05
29、 10100001 (R0)-(R1),鎖存CY和ZI</p><p> JB L2 06 10110000 若小于,則L2→PC</p><p> 07 00001101</p><p> ADD R1,R2
30、 08 11000110 (R1)+(R2)→R2</p><p> INC R1 09 11010001 (R1)+1→R1</p><p> INC R1 0A 11010001 (R1)+1→R1<
31、/p><p> JMP L1 0B 11100000 L1→PC</p><p> 0C 00000101</p><p> L2: OUT R2 0D 11111000 (R2)→LED</p>
32、<p> JMP L2 0E 11100000 L2→PC</p><p> 0F 00001101</p><p> 四、設(shè)計的過程與步驟</p><p> 1、設(shè)計各單元電路 </p><p> 首先設(shè)計出模型機中所有的單
33、元部件,可以使用VHDL語言文件(.vhd)或者電路圖形描述文件(.gdf)對模型機中的各個部件進行設(shè)計,并使之成為可供系統(tǒng)調(diào)用的元件符號。 </p><p><b> ALU單元</b></p><p> 算術(shù)邏輯運算單元ALU可執(zhí)行三種運算,即加、比較和加1運算。ALU的三種運算受S0、S1控制。</p><p><b>
34、狀態(tài)條件寄存器單元</b></p><p> 狀態(tài)條件寄存器用來在進行比較運算時鎖存借位標志(FC/CY)和零標志(FZ/ZI),在進行條件轉(zhuǎn)移時其內(nèi)容作為判斷的依據(jù)。</p><p> 暫存寄存器、通用寄存器、地址寄存器、指令寄存器單元</p><p> 模型機中暫存寄存器、通用寄存器、地址寄存器、指令寄存器都采用8位數(shù)據(jù)寄存器LS273元件,只
35、是上述各個寄存器實體的命名分別為:AC,DR,R0,R1,R2,AR,IR</p><p><b> 1:2分配器單元</b></p><p> 1:2分配器單元用來將ALU的運算結(jié)果或通用寄存器的內(nèi)容(經(jīng)3選1多路選擇器)回送到數(shù)據(jù)總線,或者將ALU的運算結(jié)果或通用寄存器的內(nèi)容送往輸出設(shè)備顯示。</p><p> 3選1數(shù)據(jù)選擇器單元&
36、lt;/p><p> 3選1數(shù)據(jù)選擇器單元MUX3在數(shù)據(jù)輸入控制信號SW_B、只讀存儲器片選控制信號CS的控制下,用來從外部輸入數(shù)據(jù)端ID[7..0]、4選1多路選擇器的輸出端N1[7..0]和只讀存儲器ROM的輸出端N2[7..0]選擇一個8位的數(shù)據(jù)進入內(nèi)部數(shù)據(jù)總線</p><p> 4選1數(shù)據(jù)選擇器單元</p><p> 4選1數(shù)據(jù)選擇器單元MUX4在數(shù)據(jù)輸入
37、控制信號C(R0_B)、D(R1_B)、E(R2_B)、F(ALU_B)的控制下,用來從有三個通用寄存器的數(shù)據(jù)輸出端和ALU的數(shù)據(jù)輸出端選擇一個8位的數(shù)據(jù)輸入1:2分配器的數(shù)據(jù)輸入端。</p><p><b> 程序計數(shù)器單元</b></p><p> 程序計數(shù)器單元的元件符號如圖4-24,它在控制信號的控制下具有清“0”,置計數(shù)初值和加1功能,其作用是保證程序的
38、順序執(zhí)行,在執(zhí)行跳轉(zhuǎn)指令時,通過修改PC的值達到程序轉(zhuǎn)移分支的目的。程序計數(shù)器PC的輸出直接送往地址寄存器AR(LS273芯片)</p><p><b> 主存儲器單元</b></p><p> CISC模型機由于只運行完成一定功能的程序而不需要進行數(shù)據(jù)處理,所以只采用ROM芯片作為它的主存儲器單元,沒有配置讀寫存儲器RAM芯片。它的主存儲器單元是一片256
39、15;8位的ROM芯片,如圖4-25所示。ADDR[7..0]為8位坡地輸入端,CS為片選信號,DOUT[7..0] 為8位數(shù)據(jù)輸出端。在CISC模型機中,ROM芯片的讀操作時序如圖4-26所示。ROM的讀操作僅與片選信號CS有關(guān),CS為低電平有效,有效電平的范圍為一個CPU周期。</p><p><b> 時序產(chǎn)生器單元</b></p><p> 時序產(chǎn)生器主要
40、用來產(chǎn)生節(jié)拍脈沖信號(T1、T2、T3、T4),對各種控制信號實施時間上控制。時序產(chǎn)生器單元元件符號如圖4-27所示,它內(nèi)容采用一個2位普通計數(shù)器,計數(shù)值譯碼后產(chǎn)生節(jié)拍脈沖信號(T1、T2、T3、T4),Q為外部時鐘輸入信號。</p><p><b> 微程序控制器單元</b></p><p> 微程序控制器器由地址轉(zhuǎn)移邏輯電路ADDR、微地址寄存器aa、控制存儲
41、器CONTROM和微命令寄存器MCOMMAND等幾部分組成。為了方便電路的設(shè)計與連線,在進行本模型機微程序控制器單元內(nèi)部結(jié)構(gòu)設(shè)計時,增加了F1、F2和F3共三個用于多根單線與總線之間轉(zhuǎn)換的器件。</p><p> 地址轉(zhuǎn)換邏輯電路(ADDR)</p><p> 微地址寄存器(aa)</p><p> 微地址寄存器aa設(shè)計的實驗操作方法說明:它需要采用Quert
42、usⅡ的VHDL文本設(shè)計法和電路圖形設(shè)計法相結(jié)合的方法完成。首先用VHDL文本設(shè)計法完成觸發(fā)器MMM元件符號的創(chuàng)建,然后用圖形輸入設(shè)計法完成微地址寄存器aa元件符號創(chuàng)建。 </p><p> 控制存儲器(CONTROM)</p><p> 微命令寄存器(MCOMMAND)</p><p><b> 微地址轉(zhuǎn)換器F1</b></p&g
43、t;<p><b> 地址轉(zhuǎn)換器F2 </b></p><p><b> 地址轉(zhuǎn)換器F2 </b></p><p> h.微程序控制器單元crom設(shè)計的實驗操作方法說明:首先用QuertusⅡ文本設(shè)計法完成地址轉(zhuǎn)換邏輯電路ADDR、控制存儲器CONTROM、微命令寄存器MCOMMAND、微地址轉(zhuǎn)換器F1、微地址轉(zhuǎn)換器F2和微地
44、址轉(zhuǎn)換器F3等元件符號的創(chuàng)建;然后用QuertusII的文本輸入法和圖形輸入設(shè)計法相結(jié)合的方法完成微地址寄存器aa元件符號創(chuàng)建;最后用圖形輸入設(shè)計法完成微程序控制器單元crom編譯和元件符號創(chuàng)建。</p><p> 2、設(shè)計CISC模型機的頂層電路圖</p><p> 在完成了CISC模型機的所有單元元件的設(shè)計后,就可以進行CISC模型機的頂層電路或頂層文件設(shè)計工作。其頂層電路的功能也
45、可直接采用VHDL語言程序來描述。</p><p> 五、模型機的各單元VHDL源程序</p><p> --ALU的VHDL源程序ALU.vhd</p><p> LIBRARY IEEE;</p><p> USE IEEE.STD_LOGIC_1164.ALL;</p><p> USE IEEE.ST
46、D_LOGIC_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
47、><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><p
48、><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><b
49、> 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<='0'&am
50、p;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 (TEMP="100
51、000000") THEN</p><p><b> ZI<='1';</b></p><p><b> ELSE</b></p><p><b> ZI<='0';</b></p><p><b> EN
52、D 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> CY<='1'
53、;</b></p><p><b> ZI<='0';</b></p><p> ELSIF(A=B) THEN</p><p><b> CY<='0';</b></p><p><b> ZI<='1'
54、;;</b></p><p><b> ELSE</b></p><p><b> CY<='0';</b></p><p><b> ZI<='0';</b></p><p><b> END IF;&
55、lt;/b></p><p> ELSIF(S1='1' AND S0='0') THEN --INC</p><p> AA<='0'&A;</p><p> TEMP<=A+1;</p><p> BCDOUT<=TEMP(7 DOWNTO 0);&l
56、t;/p><p> CY<=TEMP(8);</p><p> IF (TEMP="100000000") THEN</p><p><b> ZI<='1';</b></p><p><b> ELSE</b></p><p&
57、gt;<b> ZI<='0';</b></p><p><b> END IF;</b></p><p><b> ELSE</b></p><p> BCDOUT<="00000000" ;</p><p><b
58、> CY<='0';</b></p><p><b> ZI<='0';</b></p><p><b> END IF;</b></p><p> END PROCESS;</p><p><b> END A;&l
59、t;/b></p><p> --狀態(tài)條件寄存器的VHDL源程序LS74.vhd</p><p> LIBRARY IEEE;</p><p> USE IEEE.STD_LOGIC_1164.ALL;</p><p> ENTITY LS74 IS</p><p><b> PORT(<
60、;/b></p><p> 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;
61、</b></p><p> ARCHITECTURE A OF LS74 IS</p><p><b> BEGIN</b></p><p> PROCESS(LDFR)</p><p><b> BEGIN</b></p><p> IF(LDFR
62、39;EVENT AND LDFR='1') THEN</p><p><b> FC<=CY;</b></p><p><b> FZ<=ZI;</b></p><p><b> END IF;</b></p><p> END PROCE
63、SS;</p><p><b> END A;</b></p><p> -- 8位數(shù)據(jù)寄存器的VHDL源程序LS273.vhd</p><p> LIBRARY IEEE;</p><p> USE IEEE.STD_LOGIC_1164.ALL;</p><p> ENTITY LS
64、273 IS</p><p><b> 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>
65、<p><b> );</b></p><p> END LS273;</p><p> ARCHITECTURE A OF LS273 IS</p><p><b> BEGIN</b></p><p> PROCESS(CLK)</p><p>&
66、lt;b> BEGIN</b></p><p> IF(CLK'EVENT AND CLK='1') THEN</p><p><b> O<=D;</b></p><p><b> END IF;</b></p><p> END PROC
67、ESS;</p><p><b> END A;</b></p><p> -- 1:2分配器的VHDL源程序FEN2.vhd</p><p> LIBRARY IEEE;</p><p> USE IEEE.STD_LOGIC_1164.ALL;</p><p> ENTITY FEN
68、2 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:OUT STD_LOGIC_VECTOR(7 DOWNTO 0)</p
69、><p><b> );</b></p><p><b> END FEN2;</b></p><p> ARCHITECTURE A OF FEN2 IS</p><p><b> BEGIN</b></p><p> PROCESS(LED_B
70、,WR)</p><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><
71、/p><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數(shù)據(jù)選擇器單元VHDL源程
72、序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><p> ID:IN STD_LOGIC_V
73、ECTOR(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><p><b> );</
74、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><p><b>
75、 BEGIN</b></p><p> IF(SW_B='0') THEN</p><p><b> EW<=ID;</b></p><p> ELSIF(CS='0')THEN</p><p><b> EW<=N2;</b><
76、;/p><p><b> ELSE</b></p><p><b> EW<=N1;</b></p><p><b> END IF;</b></p><p> END PROCESS;</p><p><b> END A;<
77、;/b></p><p> --4選1數(shù)據(jù)選擇器單元VHDL源程序MUX4.vhd</p><p> LIBRARY IEEE;</p><p> USE IEEE.STD_LOGIC_1164.ALL;</p><p> ENTITY MUX4 IS</p><p><b> PORT(&l
78、t;/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> );</b&
79、gt;</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></p&
80、gt;<p> SEL<=F&E&D&C;</p><p> PROCESS(SEL)</p><p><b> BEGIN</b></p><p> -- CASE SEL IS</p><p> -- WHEN "1110"=></
81、p><p><b> -- W<=X1;</b></p><p> -- WHEN "1101"=></p><p><b> -- W<=X2;</b></p><p> -- WHEN "1011"=></p>&
82、lt;p><b> -- W<=X3;</b></p><p> -- WHEN "0111"=></p><p><b> -- W<=X4;</b></p><p> -- WHEN OTHERS =></p><p><b>
83、 -- 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
84、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="0111&
85、quot;) 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></p
86、><p> END PROCESS;</p><p><b> END A;</b></p><p> --程序計數(shù)器單元VHDL源程序PC.vhd</p><p> LIBRARY IEEE;</p><p> USE IEEE.STD_LOGIC_1164.ALL;</p>
87、<p> USE IEEE.STD_LOGIC_ARITH.ALL;</p><p> USE IEEE.STD_LOGIC_UNSIGNED.ALL;</p><p> ENTITY PC IS</p><p><b> PORT(</b></p><p> load,LDPC,CLR: IN S
88、TD_LOGIC;</p><p> D: IN STD_LOGIC_VECTOR(7 DOWNTO 0);</p><p> O: OUT STD_LOGIC_VECTOR(7 DOWNTO 0)</p><p><b> );</b></p><p><b> END PC;</b>&l
89、t;/p><p> ARCHITECTURE A OF PC IS</p><p> SIGNAL QOUT: STD_LOGIC_VECTOR(7 DOWNTO 0);</p><p><b> BEGIN</b></p><p> PROCESS(LDPC,CLR,load)</p><p&g
90、t;<b> BEGIN</b></p><p> IF(CLR='0') THEN</p><p> QOUT<="00000000";</p><p> ELSIF(LDPC'EVENT AND LDPC='1') THEN</p><p>
91、 IF(load='0') THEN</p><p> QOUT<=D; --BUS->PC</p><p><b> ELSE</b></p><p> QOUT<=QOUT+1; --PC+1</p><p><b> END IF;</b></p
92、><p><b> END IF;</b></p><p> END PROCESS;</p><p><b> O<=QOUT;</b></p><p><b> END A;</b></p><p> --主存儲器單元VHDL源程序ROM
93、16.vhd</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>
94、; ENTITY ROM16 IS</p><p><b> PORT(</b></p><p> DOUT:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);</p><p> ADDR:IN STD_LOGIC_VECTOR(7 DOWNTO 0);</p><p> CS:IN STD_L
95、OGIC</p><p><b> );</b></p><p> END ROM16;</p><p> ARCHITECTURE A OF ROM16 IS</p><p><b> BEGIN</b></p><p> DOUT<="10000
96、000" WHEN ADDR="00000000" AND CS='0' ELSE</p><p> "10010001" WHEN ADDR="00000001" AND CS='0' ELSE</p><p> "00000001" WHEN ADDR=&quo
97、t;00000010" AND CS='0' ELSE</p><p> "10010010" WHEN ADDR="00000011" AND CS='0' ELSE</p><p> "00000000" WHEN ADDR="00000100" AND CS=
98、'0' ELSE</p><p> "10100001" WHEN ADDR="00000101" AND CS='0' ELSE</p><p> "10110000" WHEN ADDR="00000110" AND CS='0' ELSE</p&g
99、t;<p> "00001101" WHEN ADDR="00000111" AND CS='0' ELSE</p><p> "11000110" WHEN ADDR="00001000" AND CS='0' ELSE</p><p> "110
100、10001" WHEN ADDR="00001001" AND CS='0' ELSE</p><p> "11010001" WHEN ADDR="00001010" AND CS='0' ELSE</p><p> "11100000" WHEN ADDR=&q
101、uot;00001011" AND CS='0' ELSE</p><p> "00000101" WHEN ADDR="00001100" AND CS='0' ELSE</p><p> "11111000" WHEN ADDR="00001101" AND C
102、S='0' ELSE</p><p> "11100000" WHEN ADDR="00001110" AND CS='0' ELSE</p><p> "00001101" WHEN ADDR="00001111" AND CS='0' ELSE</p
103、><p> "00000000";</p><p><b> END A;</b></p><p> --時序產(chǎn)生器單元的VHDL源程序COUNTER.vhd</p><p> LIBRARY IEEE;</p><p> USE IEEE.STD_LOGIC_1164.
104、ALL;</p><p> USE IEEE.STD_LOGIC_ARITH.ALL;</p><p> USE IEEE.STD_LOGIC_UNSIGNED.ALL;</p><p> ENTITY COUNTER IS</p><p><b> PORT(</b></p><p>
105、 Q,CLR: IN STD_LOGIC;</p><p> T2,T3,T4: OUT STD_LOGIC</p><p><b> );</b></p><p> END COUNTER;</p><p> ARCHITECTURE A OF COUNTER IS</p><p>
106、SIGNAL X: STD_LOGIC_VECTOR(1 DOWNTO 0);</p><p><b> BEGIN</b></p><p> PROCESS(Q,CLR)</p><p><b> BEGIN</b></p><p> IF(CLR='0') THEN<
107、;/p><p><b> T2<='0';</b></p><p><b> T3<='0';</b></p><p><b> T4<='0';</b></p><p><b> X<=&q
108、uot;00";</b></p><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
109、(1) AND (NOT X(0));</p><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> --
110、地址轉(zhuǎn)換邏輯電路的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><p> I7
111、,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><b> END ADDR;&
112、lt;/b></p><p> ARCHITECTURE A OF ADDR IS</p><p><b> BEGIN</b></p><p><b> SE6<='1';</b></p><p> SE5<=NOT((NOT FC OR FZ)AND P
113、2 AND T4);</p><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
114、);</p><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><p> ENTITY MMM IS&
115、lt;/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><p&
116、gt; 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></p>
117、<p> PROCESS(CLR,SE,T2)</p><p><b> BEGIN</b></p><p> IF(CLR='0') THEN</p><p><b> UA<='0';</b></p><p> ELSIF(SE=
118、9;0')THEN</p><p><b> UA<='1';</b></p><p> ELSIF(T2'EVENT AND T2='1') THEN</p><p><b> UA<=D;</b></p><p><b>
119、; END IF;</b></p><p> END PROCESS;</p><p><b> END A;</b></p><p> --控制存儲器CONTROM的VHDL源程序CONTROM.vhd</p><p> LIBRARY IEEE;</p><p> US
120、E 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_
121、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><p> END CONTROM;</
122、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(ADDR)</p><p>&
123、lt;b> BEGIN</b></p><p> CASE ADDR IS</p><p> WHEN "000000" => DATAOUT<="1110011001001111000000010";</p><p> WHEN "000010" => DATA
124、OUT<="1001011001001011010001000";</p><p> WHEN "000011" => DATAOUT<="1000111001001011000000000";</p><p> WHEN "000100" => DATAOUT<="
125、1000001001011111000000101";</p><p> WHEN "000101" => DATAOUT<="1000011011001111100000000";</p><p> WHEN "000110" => DATAOUT<="10000010010111
126、11000000111";</p><p> WHEN "000111" => DATAOUT<="1000111000001111000000000";</p><p> WHEN "001000" => DATAOUT<="1000111001001101000000000&qu
127、ot;;</p><p> WHEN "001001" => DATAOUT<="1110011001001111000000011";</p><p> WHEN "001010" => DATAOUT<="1000010001101111000000100";</p>
128、<p> WHEN "001011" => DATAOUT<="1110011001001111001100000";</p><p> WHEN "001100" => DATAOUT<="1000010001101111000000110";</p><p> W
129、HEN "001101" => DATAOUT<="1000001001101111000010010";</p><p> WHEN "001110" => DATAOUT<="1110011001001111000010011";</p><p> WHEN "0011
130、11" => DATAOUT<="1000010001000110000000000";</p><p> WHEN "010010" => DATAOUT<="1000111100001111000000000";</p><p> WHEN "010011" =>
131、 DATAOUT<="0100011001001011000000000";</p><p> WHEN "100000" => DATAOUT<="0100011001001011000000000";</p><p> WHEN "110000" => DATAOUT<=&
132、quot;1000011001001111000000000";</p><p> WHEN OTHERS => DATAOUT<="1000011001001111000000000";</p><p><b> END CASE;</b></p><p> UA(5 DOWNTO 0)<
133、=DATAOUT(5 DOWNTO 0);</p><p> D(18 DOWNTO 0)<=DATAOUT(24 DOWNTO 6);</p><p> END PROCESS;</p><p><b> END A;</b></p><p> --微命令寄存器MCOMMAND的VHDL源程序MCOMMA
134、ND.vhd</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>
135、; ENTITY MCOMMAND 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,LDP
136、C,LDAR,LDIR,LDR0,LDR1,LDR2,R0_B,R1_B,R2_B,S1,S0,</p><p> ALU_B,LDAC,LDDR,WR,CS,SW_B,LED_B,LDFR:OUT STD_LOGIC</p><p><b> );</b></p><p> END MCOMMAND;</p><p&
137、gt; ARCHITECTURE A OF MCOMMAND IS</p><p> SIGNAL DATAOUT:STD_LOGIC_VECTOR(18 DOWNTO 0);</p><p><b> BEGIN</b></p><p> PROCESS(T2)</p><p><b> BEGIN
138、</b></p><p> IF(T2'EVENT AND T2='1') THEN</p><p> DATAOUT(18 DOWNTO 0)<=O(18 DOWNTO 0);</p><p><b> END IF;</b></p><p> P2<=DATAO
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 嵌入式的8位cisc模型機設(shè)計 課程設(shè)計
- 課程設(shè)計---嵌入式的8位cisc模型機設(shè)計報告
- 嵌入式的8位CISC模型機設(shè)計 課程設(shè)計.doc
- 組成原理課程設(shè)計---嵌入式的8位cisc模型機設(shè)計
- 組成原理課程設(shè)計報告---嵌入式的8位cisc模型機設(shè)計
- 計算機組成原理課程設(shè)計--設(shè)計一臺嵌入式cisc模型機
- 嵌入式課程設(shè)計
- 嵌入式課程設(shè)計
- 嵌入式課程設(shè)計
- 嵌入式課程設(shè)計
- 嵌入式課程設(shè)計
- 嵌入式課程設(shè)計
- 課程設(shè)計---嵌入式系統(tǒng)項目設(shè)計
- 《嵌入式系統(tǒng)設(shè)計》課程設(shè)計報告
- 嵌入式課程設(shè)計--串口通信
- 嵌入式課程設(shè)計報告2
- 嵌入式課程設(shè)計大作業(yè)
- 嵌入式系統(tǒng)綜述課程設(shè)計
- 嵌入式課程設(shè)計---嵌入式網(wǎng)絡(luò)視頻監(jiān)控系統(tǒng)
- 嵌入式課程設(shè)計報告---嵌入式文件鎖應(yīng)用
評論
0/150
提交評論