版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> 嵌入式的8位CISC模型機(jī)設(shè)計(jì)</p><p><b> 目錄</b></p><p> 一、設(shè)計(jì)目的- 2 -</p><p> 二、設(shè)計(jì)題目及要求- 2 -</p><p> 三、設(shè)計(jì)方案- 2 -</p><p> 1.模型機(jī)的總體設(shè)計(jì)- 2 -<
2、;/p><p> 3. 模型機(jī)機(jī)器指令格式和指令系統(tǒng)- 3 -</p><p> 4.時(shí)序產(chǎn)生器的設(shè)計(jì)原理及時(shí)序波形圖- 3 -</p><p> 5. 微程序流程圖- 4 -</p><p> 6、微程序控制器單元- 5 -</p><p> 8、機(jī)器語(yǔ)言的源程序- 6 -</p>&l
3、t;p> 四、設(shè)計(jì)的過(guò)程與步驟- 6 -</p><p> 1、設(shè)計(jì)各單元電路- 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> 程序計(jì)數(shù)器單元- 7 -</p><p> 主存儲(chǔ)器單元- 7 -</p><p> 時(shí)序產(chǎn)生器單元- 7 -</p><p> 微程序控制器
5、單元- 7 -</p><p> 2、設(shè)計(jì)CISC模型機(jī)的頂層電路圖- 8 -</p><p> 五、模型機(jī)的各單元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> --程序計(jì)數(shù)器單元VHDL源程序PC.vhd- 12 -</p><p> --主存儲(chǔ)器單元VHDL源程序ROM16.vhd- 13 -</p><p> --時(shí)序產(chǎn)生器單元的VHDL源程序COUNTER.vhd- 13 -</p><p> --控制存儲(chǔ)器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> 六、模型機(jī)的單元電路圖及系統(tǒng)頂層電路圖- 18 -&l
9、t;/p><p> 七、模型機(jī)的功能仿真和硬件驗(yàn)證- 24 -</p><p> 1、功能仿真波形圖- 24 -</p><p> 2、硬件驗(yàn)證- 25 -</p><p> 八、設(shè)計(jì)總結(jié)- 25 -</p><p> 九、參考文獻(xiàn)- 25 -</p><p> 課程設(shè)計(jì)題目:
10、組成原理課程設(shè)計(jì)</p><p> 嵌入式的8位CISC模型機(jī)設(shè)計(jì)</p><p><b> 一、設(shè)計(jì)目的</b></p><p> 通過(guò)課程設(shè)計(jì)加深對(duì)計(jì)算機(jī)各功能部件的理解;掌握數(shù)據(jù)信息流和控制信息流的流動(dòng)和實(shí)現(xiàn)過(guò)程,建立起整機(jī)概念;培養(yǎng)設(shè)計(jì)、開(kāi)發(fā)和調(diào)試計(jì)算機(jī)的能力。 </p><p> 提高使用EDA工具軟件
11、和可編程器件芯片的基本技能。 </p><p> 培養(yǎng)科學(xué)研究的獨(dú)立工作能力,取得工程設(shè)計(jì)與組裝調(diào)試的實(shí)踐和經(jīng)驗(yàn)。 </p><p><b> 二、設(shè)計(jì)題目及要求</b></p><p> 設(shè)計(jì)一臺(tái)8位的CISC模型機(jī),要求具有以下驗(yàn)證程序所要求的功能: </p><p> 求出1到任意一個(gè)整數(shù)N之間的所有奇數(shù)之
12、和并輸出顯示,和為單字長(zhǎng)。說(shuō)明:N從開(kāi)關(guān)輸入,和從數(shù)碼管輸出,然后輸出顯示停止。</p><p> 要求學(xué)生掌握CISC模型機(jī)的組成和工作原理,學(xué)會(huì)Quertus EDA軟件的使用,能用VHDL硬件描述語(yǔ)言設(shè)計(jì)一個(gè)能完成一定功能的模型計(jì)算機(jī),并通過(guò)仿真一個(gè)程序的執(zhí)行來(lái)驗(yàn)證模型機(jī)設(shè)計(jì)的正確性。</p><p><b> 三、設(shè)計(jì)方案</b></p>
13、<p> 1.模型機(jī)的總體設(shè)計(jì) </p><p> 模型機(jī)的總體設(shè)計(jì)的內(nèi)容包括確定各種部件的設(shè)置以及它們之間的數(shù)據(jù)通路結(jié)構(gòu)。CISC模型機(jī)由CISC微處理器、地址寄存器AR、ROM和RAM存儲(chǔ)器等組成。微處理器由算術(shù)邏輯運(yùn)算單元ALU、狀態(tài)條件寄存器、累加器AC、數(shù)據(jù)暫存器DR、通用寄存器R0~R2、程序計(jì)數(shù)器PC、指令寄存器IR、操作控制器和時(shí)序產(chǎn)生器組成。CISC模型機(jī)的操作控制器采用微程序控制
14、器。根據(jù)模型機(jī)功能要求,畫(huà)出如圖1所示模型機(jī)數(shù)據(jù)通路框圖。</p><p> 圖1 模型機(jī)數(shù)據(jù)通路框圖 </p><p> 2. 微程序控制器的組成原理框圖 </p><p> 微程序控制器組成原理框圖如圖2。它主要由控制器、微指令寄存器和地址轉(zhuǎn)移邏輯電路三大部分組成,其中微指令寄存器分為微地址寄存器和微命令寄存器兩部分。 </p><p
15、> 圖2 微程序控制器組成原理框圖</p><p> 3. 模型機(jī)機(jī)器指令格式和指令系統(tǒng) </p><p> CISC模型機(jī)的指令系統(tǒng)采用復(fù)雜的指令格式、多種指令字長(zhǎng)度和多種尋址方式,但指令功能強(qiáng)大,單條指令的執(zhí)行速度較慢。根據(jù)所要求的功能,模型機(jī)的指令系統(tǒng)共設(shè)計(jì)了8條不同的功能指令。指令字長(zhǎng)度有單字長(zhǎng)(1個(gè)字節(jié))和雙字長(zhǎng)(2個(gè)字節(jié))兩種;尋址方式有三種,分別是寄存器尋址、直
16、接尋址和立即尋址。這8條指令是IN1(輸入),MOV(將一個(gè)數(shù)送入寄存器),CMP(比較),JB(小于跳轉(zhuǎn)),ADD(兩數(shù)相加),INC(自增1),JMP(無(wú)條件跳轉(zhuǎn)),OUT1(輸出)。 </p><p> 模型機(jī)的指令系統(tǒng)中共有8條基本指令,表1出每條指令的助記符號(hào)、指令格式和功能。</p><p> 表1 8條機(jī)器指令的助記符號(hào)、指令格式和功能</p><p
17、> 4.時(shí)序產(chǎn)生器的設(shè)計(jì)原理及時(shí)序波形圖 </p><p> CISC微處理器的時(shí)鐘信號(hào)Q和清除信號(hào)CLR由外部輸入,節(jié)拍脈沖信號(hào)Ti由時(shí)序產(chǎn)生器產(chǎn)生。圖3述了節(jié)拍脈沖信號(hào)與外部時(shí)鐘信號(hào)、清除信號(hào)的時(shí)序關(guān)系。 </p><p> 圖3 T1、T2、T3、T4與CLR、Q之間的時(shí)序關(guān)系圖</p><p> 由圖3看出,節(jié)拍脈沖信號(hào)T1、T2、T3、T4
18、實(shí)際上是以Q為時(shí)鐘輸入信號(hào)的計(jì)數(shù)狀態(tài)經(jīng)過(guò)譯碼器譯碼后生成的,因此可寫(xiě)出節(jié)拍脈沖信號(hào)的邏輯表達(dá)式,并用VHDL語(yǔ)言實(shí)現(xiàn)之,然后將它創(chuàng)建為一個(gè)元件符號(hào),供頂層電路調(diào)用。 </p><p> 如果系統(tǒng)的時(shí)鐘控制信號(hào)(即工作脈沖P)是在T1、T2、T3或T4的中間產(chǎn)生,且上升沿有效,則它產(chǎn)生方法是:先將Q取反,再和節(jié)拍脈沖信號(hào)Ti相“與”得到。</p><p><b> 5. 微程序
19、流程圖</b></p><p> 根據(jù)模型機(jī)的數(shù)據(jù)通路圖(圖4)以及所有指令在CISC模型機(jī)中的操作過(guò)程,畫(huà)出所有機(jī)器指令的微程序流程圖,如圖4所示。圖中每個(gè)框?yàn)橐粋€(gè)CPU周期(包含T1~T4共4個(gè)節(jié)拍脈沖周期)對(duì)應(yīng)于一條微指令??蛑猩厦娴氖M(jìn)制數(shù)表示的是當(dāng)前微指令在控制存儲(chǔ)器中的微地址;框中下面的十六進(jìn)制數(shù)表示的是當(dāng)前微指令的后續(xù)微坡地。在編寫(xiě)微指令時(shí),圖中的菱形框從屬于它上面的方框。 <
20、/p><p> 圖4 CISC模型機(jī)中所有機(jī)器指令的微程序流程圖</p><p> 6、微程序控制器單元</p><p> 1) 設(shè)計(jì)微指令格式和微指令代碼表</p><p> CISC模型機(jī)系統(tǒng)使用的微指令采用全水平型微指令,字長(zhǎng)25位,其中微指令字段17位,P字段2位,后續(xù)微地址6位。</p><p> 由微
21、指令格式和微程序流程圖編寫(xiě)的微指令代碼表2所示</p><p><b> 表2 微指令代碼表</b></p><p> 2) 設(shè)計(jì)地址轉(zhuǎn)移邏輯電路</p><p> 地址轉(zhuǎn)移邏輯電路是根據(jù)微程序流程圖4中的菱形部分及多個(gè)分支微地址,利用微地址寄存器的異步置“1”端,實(shí)現(xiàn)微地址的多路轉(zhuǎn)移。在圖4中進(jìn)行P(1)(高電平有效)測(cè)試時(shí),根據(jù)指令的
22、操作碼I7~I(xiàn)4強(qiáng)制修改后繼微地址的低4位,在P(2)(高電平有效)測(cè)試時(shí),根據(jù)借位標(biāo)志FC和零標(biāo)志FZ進(jìn)行兩路分支,并且都在T4內(nèi)形成后繼微指令的微地址。 </p><p> 由于微地址寄存器中的觸發(fā)器異步置“1”端低電平有效,與üA4~üA0對(duì)應(yīng)的異步置“1”控制信號(hào)SE5~SE1的邏輯表達(dá)式為:(üA5的異步置“1”端SE6實(shí)際未使用): </p><p&
23、gt; 7.匯編語(yǔ)言源程序 </p><p> 算法思想為:采用R0寄存器存放從開(kāi)關(guān)輸入的任意一個(gè)整數(shù),R1存放準(zhǔn)備參加累加運(yùn)算的奇數(shù),R2存放累加的和,用一個(gè)循環(huán)程序?qū)崿F(xiàn)如下: </p><p><b> 功能</b></p><p> IN1 R0 從開(kāi)關(guān)輸入任意一個(gè)整數(shù)n→R0 </p>&
24、lt;p> MOV R1,1 將立即數(shù)1→R1(R1用于存放參與運(yùn)算的奇數(shù)) </p><p> MOV R2,0 將立即數(shù)0→R2 (R2用于存放累加和) </p><p> L1:CMP R0,R1 將R0的整數(shù)n與R1的奇數(shù)進(jìn)行比較,鎖存CY和ZI </p><p> JB L2 小于
25、,則轉(zhuǎn)到L2處執(zhí)行 </p><p> ADD R1,R2 否則,累加求和,并將R1的內(nèi)容加2,形成下一個(gè)奇數(shù) </p><p> INC R1</p><p> INC R1</p><p> JMP L1 無(wú)條件跳轉(zhuǎn)到L1處繼續(xù)執(zhí)行</p><p
26、> L2: OUT R2 輸出累加和 </p><p> JMP L2 循環(huán)顯示</p><p> 8、機(jī)器語(yǔ)言的源程序</p><p> 根據(jù)設(shè)計(jì)的指令格式,將匯編語(yǔ)言源程序手工轉(zhuǎn)換成機(jī)器語(yǔ)言源程序,并將其設(shè)計(jì)到模型機(jī)的ROM中去。 </p><p> 與匯編語(yǔ)言源程序?qū)?yīng)的機(jī)器語(yǔ)言源程序如下:</p
27、><p> 助記符 地址(十六進(jìn)制) 機(jī)器代碼 功能</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è)計(jì)的過(guò)程與步驟</p><p> 1、設(shè)計(jì)各單元電路 </p><p> 首先設(shè)計(jì)出模型機(jī)中所有的單
33、元部件,可以使用VHDL語(yǔ)言文件(.vhd)或者電路圖形描述文件(.gdf)對(duì)模型機(jī)中的各個(gè)部件進(jìn)行設(shè)計(jì),并使之成為可供系統(tǒng)調(diào)用的元件符號(hào)。 </p><p><b> ALU單元</b></p><p> 算術(shù)邏輯運(yùn)算單元ALU可執(zhí)行三種運(yùn)算,即加、比較和加1運(yùn)算。ALU的三種運(yùn)算受S0、S1控制。</p><p><b>
34、狀態(tài)條件寄存器單元</b></p><p> 狀態(tài)條件寄存器用來(lái)在進(jìn)行比較運(yùn)算時(shí)鎖存借位標(biāo)志(FC/CY)和零標(biāo)志(FZ/ZI),在進(jìn)行條件轉(zhuǎn)移時(shí)其內(nèi)容作為判斷的依據(jù)。</p><p> 暫存寄存器、通用寄存器、地址寄存器、指令寄存器單元</p><p> 模型機(jī)中暫存寄存器、通用寄存器、地址寄存器、指令寄存器都采用8位數(shù)據(jù)寄存器LS273元件,只
35、是上述各個(gè)寄存器實(shí)體的命名分別為:AC,DR,R0,R1,R2,AR,IR</p><p><b> 1:2分配器單元</b></p><p> 1:2分配器單元用來(lái)將ALU的運(yùn)算結(jié)果或通用寄存器的內(nèi)容(經(jīng)3選1多路選擇器)回送到數(shù)據(jù)總線,或者將ALU的運(yùn)算結(jié)果或通用寄存器的內(nèi)容送往輸出設(shè)備顯示。</p><p> 3選1數(shù)據(jù)選擇器單元&
36、lt;/p><p> 3選1數(shù)據(jù)選擇器單元MUX3在數(shù)據(jù)輸入控制信號(hào)SW_B、只讀存儲(chǔ)器片選控制信號(hào)CS的控制下,用來(lái)從外部輸入數(shù)據(jù)端ID[7..0]、4選1多路選擇器的輸出端N1[7..0]和只讀存儲(chǔ)器ROM的輸出端N2[7..0]選擇一個(gè)8位的數(shù)據(jù)進(jìn)入內(nèi)部數(shù)據(jù)總線</p><p> 4選1數(shù)據(jù)選擇器單元</p><p> 4選1數(shù)據(jù)選擇器單元MUX4在數(shù)據(jù)輸入
37、控制信號(hào)C(R0_B)、D(R1_B)、E(R2_B)、F(ALU_B)的控制下,用來(lái)從有三個(gè)通用寄存器的數(shù)據(jù)輸出端和ALU的數(shù)據(jù)輸出端選擇一個(gè)8位的數(shù)據(jù)輸入1:2分配器的數(shù)據(jù)輸入端。</p><p><b> 程序計(jì)數(shù)器單元</b></p><p> 程序計(jì)數(shù)器單元的元件符號(hào)如圖4-24,它在控制信號(hào)的控制下具有清“0”,置計(jì)數(shù)初值和加1功能,其作用是保證程序的
38、順序執(zhí)行,在執(zhí)行跳轉(zhuǎn)指令時(shí),通過(guò)修改PC的值達(dá)到程序轉(zhuǎn)移分支的目的。程序計(jì)數(shù)器PC的輸出直接送往地址寄存器AR(LS273芯片)</p><p><b> 主存儲(chǔ)器單元</b></p><p> CISC模型機(jī)由于只運(yùn)行完成一定功能的程序而不需要進(jìn)行數(shù)據(jù)處理,所以只采用ROM芯片作為它的主存儲(chǔ)器單元,沒(méi)有配置讀寫(xiě)存儲(chǔ)器RAM芯片。它的主存儲(chǔ)器單元是一片256
39、15;8位的ROM芯片,如圖4-25所示。ADDR[7..0]為8位坡地輸入端,CS為片選信號(hào),DOUT[7..0] 為8位數(shù)據(jù)輸出端。在CISC模型機(jī)中,ROM芯片的讀操作時(shí)序如圖4-26所示。ROM的讀操作僅與片選信號(hào)CS有關(guān),CS為低電平有效,有效電平的范圍為一個(gè)CPU周期。</p><p><b> 時(shí)序產(chǎn)生器單元</b></p><p> 時(shí)序產(chǎn)生器主要
40、用來(lái)產(chǎn)生節(jié)拍脈沖信號(hào)(T1、T2、T3、T4),對(duì)各種控制信號(hào)實(shí)施時(shí)間上控制。時(shí)序產(chǎn)生器單元元件符號(hào)如圖4-27所示,它內(nèi)容采用一個(gè)2位普通計(jì)數(shù)器,計(jì)數(shù)值譯碼后產(chǎn)生節(jié)拍脈沖信號(hào)(T1、T2、T3、T4),Q為外部時(shí)鐘輸入信號(hào)。</p><p><b> 微程序控制器單元</b></p><p> 微程序控制器器由地址轉(zhuǎn)移邏輯電路ADDR、微地址寄存器aa、控制存儲(chǔ)
41、器CONTROM和微命令寄存器MCOMMAND等幾部分組成。為了方便電路的設(shè)計(jì)與連線,在進(jìn)行本模型機(jī)微程序控制器單元內(nèi)部結(jié)構(gòu)設(shè)計(jì)時(shí),增加了F1、F2和F3共三個(gè)用于多根單線與總線之間轉(zhuǎn)換的器件。</p><p> 地址轉(zhuǎn)換邏輯電路(ADDR)</p><p> 微地址寄存器(aa)</p><p> 微地址寄存器aa設(shè)計(jì)的實(shí)驗(yàn)操作方法說(shuō)明:它需要采用Quert
42、usⅡ的VHDL文本設(shè)計(jì)法和電路圖形設(shè)計(jì)法相結(jié)合的方法完成。首先用VHDL文本設(shè)計(jì)法完成觸發(fā)器MMM元件符號(hào)的創(chuàng)建,然后用圖形輸入設(shè)計(jì)法完成微地址寄存器aa元件符號(hào)創(chuàng)建。 </p><p> 控制存儲(chǔ)器(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è)計(jì)的實(shí)驗(yàn)操作方法說(shuō)明:首先用QuertusⅡ文本設(shè)計(jì)法完成地址轉(zhuǎn)換邏輯電路ADDR、控制存儲(chǔ)器CONTROM、微命令寄存器MCOMMAND、微地址轉(zhuǎn)換器F1、微地址轉(zhuǎn)換器F2和微地
44、址轉(zhuǎn)換器F3等元件符號(hào)的創(chuàng)建;然后用QuertusII的文本輸入法和圖形輸入設(shè)計(jì)法相結(jié)合的方法完成微地址寄存器aa元件符號(hào)創(chuàng)建;最后用圖形輸入設(shè)計(jì)法完成微程序控制器單元crom編譯和元件符號(hào)創(chuàng)建。</p><p> 2、設(shè)計(jì)CISC模型機(jī)的頂層電路圖</p><p> 在完成了CISC模型機(jī)的所有單元元件的設(shè)計(jì)后,就可以進(jìn)行CISC模型機(jī)的頂層電路或頂層文件設(shè)計(jì)工作。其頂層電路的功能也
45、可直接采用VHDL語(yǔ)言程序來(lái)描述。</p><p> 五、模型機(jī)的各單元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> --程序計(jì)數(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> --主存儲(chǔ)器單元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> --時(shí)序產(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> --控制存儲(chǔ)器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. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 嵌入式的8位cisc模型機(jī)設(shè)計(jì) 課程設(shè)計(jì)
- 課程設(shè)計(jì)---嵌入式的8位cisc模型機(jī)設(shè)計(jì)報(bào)告
- 嵌入式的8位CISC模型機(jī)設(shè)計(jì) 課程設(shè)計(jì).doc
- 組成原理課程設(shè)計(jì)---嵌入式的8位cisc模型機(jī)設(shè)計(jì)
- 組成原理課程設(shè)計(jì)報(bào)告---嵌入式的8位cisc模型機(jī)設(shè)計(jì)
- 計(jì)算機(jī)組成原理課程設(shè)計(jì)--設(shè)計(jì)一臺(tái)嵌入式cisc模型機(jī)
- 嵌入式課程設(shè)計(jì)
- 嵌入式課程設(shè)計(jì)
- 嵌入式課程設(shè)計(jì)
- 嵌入式課程設(shè)計(jì)
- 嵌入式課程設(shè)計(jì)
- 嵌入式課程設(shè)計(jì)
- 課程設(shè)計(jì)---嵌入式系統(tǒng)項(xiàng)目設(shè)計(jì)
- 《嵌入式系統(tǒng)設(shè)計(jì)》課程設(shè)計(jì)報(bào)告
- 嵌入式課程設(shè)計(jì)--串口通信
- 嵌入式課程設(shè)計(jì)報(bào)告2
- 嵌入式課程設(shè)計(jì)大作業(yè)
- 嵌入式系統(tǒng)綜述課程設(shè)計(jì)
- 嵌入式課程設(shè)計(jì)---嵌入式網(wǎng)絡(luò)視頻監(jiān)控系統(tǒng)
- 嵌入式課程設(shè)計(jì)報(bào)告---嵌入式文件鎖應(yīng)用
評(píng)論
0/150
提交評(píng)論