版權(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><b> 實(shí)驗(yàn)?zāi)康?lt;/b></p><p><b> 二、設(shè)計(jì)題目及要求</b></p><p><b> 三、設(shè)計(jì)方案:</b><
2、/p><p> 1.模型機(jī)的總體設(shè)計(jì)</p><p> 2. 微程序控制器的組成原理框圖 </p><p> 3. 模型機(jī)機(jī)器指令格式和指令系統(tǒng) </p><p> 4. 時(shí)序產(chǎn)生器的設(shè)計(jì)原理及時(shí)序波形圖 </p><p> 5. 微程序流程圖 </p><p> 6. 匯編語(yǔ)言源程序
3、</p><p> 四、設(shè)計(jì)的過(guò)程與步驟 </p><p> 五、模型機(jī)的各單元VHDL源程序</p><p> 模型機(jī)系統(tǒng)頂層電路圖</p><p> 七、模型機(jī)的時(shí)序仿真波形圖</p><p><b> 八、設(shè)計(jì)總結(jié)</b></p><p><b>
4、 九、參考文獻(xiàn)</b></p><p> 嵌入式的8位CISC模型機(jī)設(shè)計(jì)</p><p><b> 實(shí)驗(yàn)?zāi)康模?lt;/b></p><p> 1. 通過(guò)課程設(shè)計(jì)加深對(duì)計(jì)算機(jī)各功能部件的理解;掌握數(shù)據(jù)信息流和控制信息流的流動(dòng)和實(shí)現(xiàn)過(guò)程,建立起整機(jī)概念;培養(yǎng)設(shè)計(jì)、開發(fā)和調(diào)試計(jì)算機(jī)的能力。 </p><p>
5、 2. 提高使用EDA工具軟件和可編程器件芯片的基本技能。 </p><p> 3. 培養(yǎng)科學(xué)研究的獨(dú)立工作能力,取得工程設(shè)計(jì)與組裝調(diào)試的實(shí)踐和經(jīng)驗(yàn)。 </p><p> 二、設(shè)計(jì)題目及要求:</p><p> 設(shè)計(jì)一臺(tái)8位的CISC模型機(jī),要求具有以下驗(yàn)證程序所要求的功能:</p><p> 求出1到任意一個(gè)整數(shù)N之間的所有奇數(shù)之和
6、并輸出顯示,和單字節(jié)長(zhǎng)。說(shuō)明:N從開關(guān)輸入,和數(shù)碼管輸出,然后輸出顯示停止。</p><p><b> 三、設(shè)計(jì)方案:</b></p><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ǔ)器等組成。微處
7、理器由算術(shù)邏輯運(yùn)算單元ALU、狀態(tài)條件寄存器、累加器AC、數(shù)據(jù)暫存器DR、通用寄存器R0~R2、程序計(jì)數(shù)器PC、指令寄存器IR、操作控制器和時(shí)序產(chǎn)生器組成。CISC模型機(jī)的操作控制器采用微程序控制器。根據(jù)模型機(jī)功能要求,畫出如圖1所示模型機(jī)數(shù)據(jù)通路框圖。 </p><p> 圖1 模型機(jī)數(shù)據(jù)通路框圖</p><p> 2. 微程序控制器的組成原理框圖 </p><
8、p> 微程序控制器組成原理框圖如圖2所示。它主要由控制器、微指令寄存器和地址轉(zhuǎn)移邏輯電路三大部分組成,其中微指令寄存器分為微地址寄存器和微命令寄存器兩部分。 </p><p> 圖2 微程序控制器組成原理框圖 </p><p> 3. 模型機(jī)機(jī)器指令格式和指令系統(tǒng) </p><p> CISC模型機(jī)的指令系統(tǒng)采用復(fù)雜的指令格式、多種指令字長(zhǎng)度和多種
9、尋址方式,但指令功能強(qiáng)大,單條指令的執(zhí)行速度較慢。為了完成題目所要求的功能,模型機(jī)的指令系統(tǒng)共設(shè)計(jì)了8條不同的功能指令。指令字長(zhǎng)度有單字長(zhǎng)(1個(gè)字節(jié))和雙字長(zhǎng)(2個(gè)字節(jié))兩種;尋址方式有三種,分別是寄存器尋址、直接尋址和立即尋址。這8條指令是IN1(輸入),MOV(將一個(gè)數(shù)送入寄存器),CMP(比較),JB(小于跳轉(zhuǎn)),ADD(兩數(shù)相加),INC(自增1),JMP(無(wú)條件跳轉(zhuǎn)),OUT1(輸出)。 </p><p&g
10、t; 下面分別介紹這些指令的格式: </p><p><b> ?。?)、I/O指令</b></p><p> 輸入(IN1)采用單字節(jié)指令,其格式如下: </p><p> 輸入(OUT1)采用單字節(jié)指令,其格式如下: </p><p> 說(shuō)明:RS 為源寄存器, RD為目的寄存器。</p>&l
11、t;p><b> ?。?)、轉(zhuǎn)移指令</b></p><p> 條件轉(zhuǎn)移指令(JB)和無(wú)條件轉(zhuǎn)移指令(JMP)采用雙字節(jié)指令,其格式如下: </p><p> “addr”中的值就是要轉(zhuǎn)移的地址值。 </p><p> ?。?)、比較指令和相加指令</p><p> 比較(CMP)指令和相加指令(ADD)采用
12、單字節(jié)指令,其格式如下: </p><p><b> ?。?)、MOV指令</b></p><p> MOV指令采用雙字節(jié)指令,其格式如下: </p><p> 說(shuō)明:“data”為立即數(shù)。 </p><p><b> (5)、自增指令</b></p><p> 自增
13、1指令(INC)指令采用單字節(jié)指令,其格式如下: </p><p> 以下是對(duì)Rs和Rd的規(guī)定: </p><p> 模型機(jī)規(guī)定數(shù)據(jù)的表示采用定點(diǎn)整數(shù)補(bǔ)碼表示,單字長(zhǎng)為8位,其格式如下: </p><p> 模型機(jī)的指令系統(tǒng)中共有8條基本指令,表1列出每條指令的助記符號(hào)、指令格式和功能。 </p><p> 表1 8條機(jī)器指令的助記
14、符號(hào)、指令格式和功能 </p><p> 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)生。圖4-14描述了節(jié)拍脈沖信號(hào)與外部時(shí)鐘信號(hào)、清除信號(hào)的時(shí)序關(guān)系。 </p><p> 由圖3可以看出,節(jié)拍脈沖信號(hào)T1、T2、T3、T4實(shí)際上是以Q為時(shí)鐘輸入信號(hào)的計(jì)數(shù)狀
15、態(tài)經(jīng)過(guò)譯碼器譯碼后生成的,因此可寫出節(jié)拍脈沖信號(hào)的邏輯表達(dá)式,并用VHDL語(yǔ)言實(shí)現(xiàn)之,然后將它創(chuàng)建為一個(gè)元件符號(hào),供頂層電路調(diào)用。 </p><p> 圖3 T1、T2、T3、T4與CLR、Q之間的時(shí)序關(guān)系圖 </p><p> 如果系統(tǒng)的時(shí)鐘控制信號(hào)(即工作脈沖P)是在T1、T2、T3或T4的中間產(chǎn)生,且上升沿有效,則它產(chǎn)生方法是:先將Q取反,再和節(jié)拍脈沖信號(hào)Ti相“與”得到。如圖
16、4所示。</p><p> 圖4 時(shí)鐘控制信號(hào)的形成方法 </p><p> 5. 微程序流程圖 </p><p> 根據(jù)模型機(jī)的數(shù)據(jù)通路圖(圖1)以及所有指令在CISC模型機(jī)中的操作過(guò)程,畫出所有機(jī)器指令的微程序流程圖,如圖5所示。圖中每個(gè)框?yàn)橐粋€(gè)CPU周期(包含T1~T4共4個(gè)節(jié)拍脈沖周期)對(duì)應(yīng)于一條微指令??蛑猩厦娴氖M(jìn)制數(shù)表示的是當(dāng)前微指令在控制
17、存儲(chǔ)器中的微地址;框中下面的十六進(jìn)制數(shù)表示的是當(dāng)前微指令的后續(xù)微坡地。在編寫微指令時(shí),圖中的菱形框從屬于它上面的方框。 </p><p> 圖5 CISC模型機(jī)中所有機(jī)器指令的微程序流程圖 </p><p> 6. 匯編語(yǔ)言源程序 </p><p> 算法思想為:采用R0寄存器存放從開關(guān)輸入的任意一個(gè)整數(shù),R1存放準(zhǔn)備參加累加運(yùn)算的奇數(shù),R2存放累加的和,
18、用一個(gè)循環(huán)程序?qū)崿F(xiàn)如下: </p><p><b> 功能</b></p><p> IN1 R0 從開關(guān)輸入任意一個(gè)整數(shù)n→R0 </p><p> MOV R1,1 將立即數(shù)1→R1(R1用于存放參與運(yùn)算的奇數(shù)) </p><p> MOV R2,0 將立即數(shù)0→
19、R2 (R2用于存放累加和) </p><p> L1:CMP R0,R1 將R0的整數(shù)n與R1的奇數(shù)進(jìn)行比較,鎖存CY和ZI </p><p> JB L2 小于,則轉(zhuǎn)到L2處執(zhí)行 </p><p> ADD R1,R2 否則,累加求和,并將R1的內(nèi)容加2,形成下一個(gè)奇數(shù) </p><p>
20、<b> INC R1 </b></p><p><b> INC R1 </b></p><p> JMP L1 無(wú)條件跳轉(zhuǎn)到L1處繼續(xù)執(zhí)行 </p><p> L2: OUT R2 輸出累加和 </p><p> JMP L2 循環(huán)顯
21、示 </p><p> 四、設(shè)計(jì)的過(guò)程與步驟 </p><p><b> 1、設(shè)計(jì)各單元電路</b></p><p> 首先設(shè)計(jì)出模型機(jī)中所有的單元部件,可以使用VHDL語(yǔ)言文件(.vhd)或者電路圖形描述文件(.gdf)對(duì)模型機(jī)中的各個(gè)部件進(jìn)行設(shè)計(jì),并使之成為可供系統(tǒng)調(diào)用的元件符號(hào)。</p><p> (1)、
22、ALU單元 </p><p> 算術(shù)邏輯運(yùn)算單元ALU可執(zhí)行三種運(yùn)算,即加、比較和加1運(yùn)算。ALU的三種運(yùn)算受S0、S1控制,具體如表3所示。 </p><p> 表3 算術(shù)邏輯運(yùn)算單元ALU的功能表 </p><p> ALU單元文本設(shè)計(jì)實(shí)驗(yàn)操作方法提示: </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命令,將設(shè)計(jì)文件設(shè)置當(dāng)前工程。然后執(zhí)行MAX+plus II菜單下“Compiler”命令對(duì)設(shè)計(jì)文件進(jìn)行編譯, 檢查設(shè)計(jì)文件中的錯(cuò)誤。 </p><p> c.
24、 在MAX+plus II窗口下,執(zhí)行“File”菜單中的“Create Default Symbol”命令,可為通過(guò)編譯的文本設(shè)計(jì)文件創(chuàng)建一個(gè)元件符號(hào),并保存在工程目錄中。 </p><p> ?。?)、狀態(tài)條件寄存器單元 </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>
25、<p> 狀態(tài)條件寄存器單元設(shè)計(jì)實(shí)驗(yàn)操作方法與ALU單元設(shè)計(jì)實(shí)驗(yàn)操作方法相同,以后的單元設(shè)計(jì)實(shí)驗(yàn)操作方法不再重復(fù)說(shuō)明。</p><p> (3)、暫存寄存器、通用寄存器、地址寄存器、指令寄存器單元 </p><p> 模型機(jī)中暫存寄存器、通用寄存器、地址寄存器、指令寄存器都采用8位數(shù)據(jù)寄存器LS273元件,只是上述各個(gè)寄存器實(shí)體的命名分別為:AC,DR,R0,R1,R2,
26、AR,IR。</p><p> ?。?)、1:2分配器單元 </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è)備顯示。1:2分配器單元的功能描述見表4。1:2分配器單元元件符號(hào)如圖9所示。 </p><p> (5)、3選1數(shù)據(jù)選擇器單元 </
27、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ù)總線。3選1數(shù)據(jù)選擇器單元的功能表見表5。3選1數(shù)據(jù)選擇器單元元件符號(hào)如圖10所示。 </p><p> (6)、4選1數(shù)據(jù)選擇器單元
28、</p><p> 4選1數(shù)據(jù)選擇器單元MUX4在數(shù)據(jù)輸入控制信號(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ù)輸入端。4選1數(shù)據(jù)選擇器單元的功能表6,4選1數(shù)據(jù)選擇器單元元件符號(hào)如圖11所示。 </p><p> ?。?)、程序計(jì)數(shù)器單元 </p>&
29、lt;p> 程序計(jì)數(shù)器單元的元件符號(hào)如圖12,它在控制信號(hào)的控制下具有清“0”,置計(jì)數(shù)初值和加1功能,其作用是保證程序的順序執(zhí)行,在執(zhí)行跳轉(zhuǎn)指令時(shí),通過(guò)修改PC的值達(dá)到程序轉(zhuǎn)移分支的目的。程序計(jì)數(shù)器PC的輸出直接送往地址寄存器AR(LS273芯片)。</p><p> 表7 程序計(jì)數(shù)器PC的功能表 </p><p> ?。?)、主存儲(chǔ)器單元 </p><p&
30、gt; CISC模型機(jī)由于只運(yùn)行完成一定功能的程序而不需要進(jìn)行數(shù)據(jù)處理,所以只采用ROM芯片作為它的主存儲(chǔ)器單元,沒有配置讀寫存儲(chǔ)器RAM芯片。它的主存儲(chǔ)器單元是一片256×8位的ROM芯片,如圖13所示。ADDR[7..0]為8位坡地輸入端,CS為片選信號(hào),DOUT[7..0] 為8位數(shù)據(jù)輸出端,它的功能表見表8。 </p><p> 表8 主存儲(chǔ)器ROM16的功能表 </p>&
31、lt;p> 在CISC模型機(jī)中,ROM芯片的讀操作時(shí)序如圖6所示,ROM的讀操作僅與片選信號(hào)CS有關(guān),CS為低電平有效,有效電平的范圍為一個(gè)CPU周期。</p><p> 圖6 CISC模型機(jī)中ROM芯片的讀操作時(shí)序圖 </p><p> 在圖13中,主存儲(chǔ)器的地址輸入端直接與地址寄存器的輸出相連,數(shù)據(jù)輸出端經(jīng)3選1數(shù)據(jù)選擇器送往數(shù)據(jù)總線。主存儲(chǔ)器單元的VHDL程序</p
32、><p> (9)、時(shí)序產(chǎn)生器單元 </p><p> 時(shí)序產(chǎn)生器主要用來(lái)產(chǎn)生節(jié)拍脈沖信號(hào)(T1、T2、T3、T4),對(duì)各種控制信號(hào)實(shí)施時(shí)間上控制。時(shí)序產(chǎn)生器單元元件符號(hào)如圖15所示,它內(nèi)容采用一個(gè)2位普通計(jì)數(shù)器,計(jì)數(shù)值譯碼后產(chǎn)生節(jié)拍脈沖信號(hào)(T1、T2、T3、T4),Q為外部時(shí)鐘輸入信號(hào)。時(shí)序產(chǎn)生器單元的功能表如表9所示。 </p><p> 表9 時(shí)序產(chǎn)生器
33、單元COUNTER的功能表 </p><p> ?。?0)、微程序控制器單元 </p><p> 微程序控制器器由地址轉(zhuǎn)移邏輯電路ADDR、微地址寄存器aa、控制存儲(chǔ)器CONTROM和微命令寄存器MCOMMAND等幾部分組成。為了方便電路的設(shè)計(jì)與連線,在進(jìn)行本模型機(jī)微程序控制器單元內(nèi)部結(jié)構(gòu)設(shè)計(jì)時(shí),增加了F1、F2和F3共三個(gè)用于多根單線與總線之間轉(zhuǎn)換的器件。 </p>&l
34、t;p> 微程序控制器單元的內(nèi)部結(jié)構(gòu)如圖7所示,微程序控制器單元元件符號(hào)如圖7所示。 </p><p> 圖7 微程序控制器的內(nèi)部結(jié)構(gòu)圖 </p><p> a、 地址轉(zhuǎn)換邏輯電路 </p><p> 地址轉(zhuǎn)換邏輯電路ADDR設(shè)計(jì)原理在前面設(shè)計(jì)方案中作了詳細(xì)介紹,這里不再說(shuō)明。</p><p> b、 微地址寄存器 </
35、p><p> 微地址寄存器aa的內(nèi)部結(jié)構(gòu)如圖8所示, 微地址寄存器aa的元件符號(hào)如圖20所示。 </p><p> 圖8 微地址寄存器aa的內(nèi)部結(jié)構(gòu) </p><p> 微地址寄存器aa設(shè)計(jì)的實(shí)驗(yàn)操作方法說(shuō)明:它需要采用MAX+plusII的VHDL文本設(shè)計(jì)法和電路圖形設(shè)計(jì)法相結(jié)合的方法完成。首先用VHDL文本設(shè)計(jì)法完成觸發(fā)器MMM元件符號(hào)的創(chuàng)建,然后用圖形輸入
36、設(shè)計(jì)法完成微地址寄存器aa元件符號(hào)創(chuàng)建。 </p><p><b> c、 控制存儲(chǔ)器 </b></p><p> 控制存儲(chǔ)器中存放的所有微指令和對(duì)應(yīng)的微地址均來(lái)自設(shè)計(jì)方案的微指令列表(即表2)。 </p><p> d、 微命令寄存器 </p><p> 說(shuō)明:在上述程序設(shè)計(jì)中,為了實(shí)現(xiàn)對(duì)源寄存器和目標(biāo)寄存器的
37、選擇,采用了寄存器邏輯譯碼功能。表10為寄存器邏輯譯碼功能表(一),表11為寄存器邏輯譯碼功能表(二)。 </p><p> 表10 寄存器邏輯譯碼功能表(一) </p><p> 表11 寄存器邏輯譯碼功能表(二) </p><p> 18個(gè)單元元件符號(hào)如下圖9</p><p> 圖9 各單元元件符號(hào)</p>&l
38、t;p> 微程序控制器單元crom設(shè)計(jì)的實(shí)驗(yàn)操作方法說(shuō)明:首先用MAX+plusII的VHDL文本設(shè)計(jì)法完成地址轉(zhuǎn)換邏輯電路ADDR、控制存儲(chǔ)器CONTROM、微命令寄存器MCOMMAND、微地址轉(zhuǎn)換器F1、微地址轉(zhuǎn)換器F2和微地址轉(zhuǎn)換器F3等元件符號(hào)的創(chuàng)建;然后用MAX+plusII的文本輸入法和圖形輸入設(shè)計(jì)法相結(jié)合的方法完成微地址寄存器aa元件符號(hào)創(chuàng)建;最后用圖形輸入設(shè)計(jì)法完成微程序控制器單元crom編譯和元件符號(hào)創(chuàng)建。 &
39、lt;/p><p> 2、設(shè)計(jì)CISC模型機(jī)的頂層電路圖 </p><p> 在完成了CISC模型機(jī)的所有單元元件的設(shè)計(jì)后,就可以進(jìn)行CISC模型機(jī)的頂層電路或頂層文件設(shè)計(jì)工作。在MAX+plusII下設(shè)計(jì)的CISC模型機(jī)的頂層電路如圖27所示,其頂層電路的功能也可直接采用VHDL語(yǔ)言程序來(lái)描述。 </p><p> 五、模型機(jī)的各單元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單元設(shè)計(jì)的VHDL語(yǔ)言程序------------------------</p>
59、<p> -- 8位數(shù)據(jù)寄存器的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數(shù)據(jù)選擇器單元
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數(shù)據(jù)選擇器單元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> ---------------------程序計(jì)數(shù)器單元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> -----------------------主存儲(chǔ)器單元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> --------------時(shí)序產(chǎn)生器單元的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> ------------------地址轉(zhuǎn)換邏輯
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> ---------------控制存儲(chǔ)器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. 本站所有資源如無(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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 組成原理課程設(shè)計(jì)---嵌入式的8位cisc模型機(jī)設(shè)計(jì)
- 課程設(shè)計(jì)---嵌入式的8位cisc模型機(jī)設(shè)計(jì)報(bào)告
- 嵌入式的8位cisc模型機(jī)設(shè)計(jì) 課程設(shè)計(jì)
- 嵌入式的8位cisc模型機(jī)設(shè)計(jì) 課程設(shè)計(jì)
- 嵌入式的8位CISC模型機(jī)設(shè)計(jì) 課程設(shè)計(jì).doc
- 計(jì)算機(jī)組成原理課程設(shè)計(jì)--設(shè)計(jì)一臺(tái)嵌入式cisc模型機(jī)
- 《嵌入式系統(tǒng)設(shè)計(jì)》課程設(shè)計(jì)報(bào)告
- 嵌入式課程設(shè)計(jì)報(bào)告2
- 嵌入式課程設(shè)計(jì)報(bào)告 (2)
- 嵌入式課程設(shè)計(jì)報(bào)告91452
- 嵌入式課程設(shè)計(jì)
- 嵌入式課程設(shè)計(jì)
- 計(jì)算機(jī)組成原理課程設(shè)計(jì)--復(fù)雜模型機(jī)設(shè)計(jì)報(bào)告
- 嵌入式課程設(shè)計(jì)報(bào)告---嵌入式文件鎖應(yīng)用
- 計(jì)算機(jī)組成原理課程設(shè)計(jì)--- 模型機(jī)設(shè)計(jì)
- 嵌入式課程設(shè)計(jì)
- 嵌入式課程設(shè)計(jì)
- 嵌入式課程設(shè)計(jì)
- 嵌入式課程設(shè)計(jì)
- 嵌入式課程設(shè)計(jì)報(bào)告--數(shù)字相框
評(píng)論
0/150
提交評(píng)論