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

下載本文檔

版權(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論