計(jì)算機(jī)組成原理課設(shè)論文_第1頁
計(jì)算機(jī)組成原理課設(shè)論文_第2頁
計(jì)算機(jī)組成原理課設(shè)論文_第3頁
計(jì)算機(jī)組成原理課設(shè)論文_第4頁
計(jì)算機(jī)組成原理課設(shè)論文_第5頁
已閱讀5頁,還剩33頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、計(jì)算機(jī)組成原理課程設(shè)計(jì)題 目: 計(jì)算機(jī)原理課程設(shè)計(jì) 學(xué) 院: 計(jì)算機(jī)科學(xué)與工程學(xué)院 專 業(yè): 計(jì)算機(jī)科學(xué)與技術(shù) 姓 名: 孤狼 學(xué) 號: 1100310315 指導(dǎo)教師: 2014年03月 20 日目錄一.課程設(shè)計(jì)選題和完成內(nèi)容2二、系統(tǒng)的總體設(shè)計(jì)22.1 嵌入式CISC模型機(jī)的數(shù)據(jù)通路框圖22.2 系統(tǒng)的操作控制器的邏輯框圖22.3模型機(jī)的指令格式32.4編寫匯編源程序52.5最終機(jī)器碼.5三、時(shí)序產(chǎn)生器5四、 微程序控制器的設(shè)計(jì)64.1設(shè)計(jì)微指令流程圖64.2 設(shè)計(jì)微指令格式和微指令代碼表84.3設(shè)計(jì)地址轉(zhuǎn)移邏輯電路10五、單元電路設(shè)計(jì)105.1模型機(jī)頂層電路設(shè)計(jì).115.2模型機(jī)crom

2、單元電路設(shè)計(jì).12六、設(shè)計(jì)過程所遇到的問題及解決記錄136.1JNS無法完成循環(huán)跳轉(zhuǎn).136.2 STO( STO R2 (R0) )存儲(chǔ)位置每次都為00H.13七、測試及結(jié)果分析錯(cuò)誤!未定義書簽。八、心得體會(huì)總結(jié)16九、附錄16 各個(gè)單元的電路設(shè)計(jì)或VHDL源文件36一.課程設(shè)計(jì)選題和完成內(nèi)容選題:本設(shè)計(jì)選擇題目為A類第一題題目:設(shè)計(jì)一臺(tái)嵌入式CISC模型計(jì)算機(jī) 采用定長CPU周期、聯(lián)合控制方式,并運(yùn)行能完成一定功能的機(jī)器語言源程序進(jìn)行驗(yàn)證,機(jī)器語言源程序功能如下: A類(最高成績?yōu)椤皟?yōu)”): 輸入包含5個(gè)整數(shù)(有符號數(shù))的數(shù)組M,輸出所有負(fù)數(shù)的平方和。(非卓越班) 輸入包含5個(gè)整數(shù)(有符號

3、數(shù))的數(shù)組M,輸出最大負(fù)數(shù)的絕對值。(非卓越班) 輸入包含10個(gè)整數(shù)(無符號數(shù))的數(shù)組M,輸出眾數(shù)(出現(xiàn)次數(shù)最多的數(shù))及其出現(xiàn)的次數(shù)。(卓越班) 輸入包含10個(gè)整數(shù)(無符號數(shù))的數(shù)組M,輸出中位數(shù)。(卓越班) 說明:A類題目的嵌入式模型計(jì)算機(jī)內(nèi)必須設(shè)計(jì)和使用RAM存儲(chǔ)器讀寫數(shù)據(jù),相應(yīng)地需要設(shè)計(jì)對RAM存儲(chǔ)器數(shù)據(jù)的讀寫指令,以及對RAM中數(shù)組操作必須的寄存器間接尋址方式等。 B類(最高成績?yōu)椤傲肌保?輸入5個(gè)整數(shù)(有符號數(shù)),輸出所有負(fù)數(shù)的平方和。(非卓越班) 輸入5個(gè)整數(shù)(有符號數(shù)),輸出最大負(fù)數(shù)的絕對值。(非卓越班) 輸入5個(gè)整數(shù)(有符號數(shù)),輸出它們的平均值,以及小于此平均值的數(shù)的個(gè)數(shù)。

4、(卓越班) 要完成的內(nèi)容:1. 完成系統(tǒng)的總體設(shè)計(jì),畫出模型機(jī)數(shù)據(jù)通路框圖;2. 設(shè)計(jì)微程序控制器(CISC模型計(jì)算機(jī))的邏輯結(jié)構(gòu)框圖; 3. 設(shè)計(jì)機(jī)器指令格式和指令系統(tǒng); 4. 設(shè)計(jì)時(shí)序產(chǎn)生器電路; 5. 設(shè)計(jì)所有機(jī)器指令的微程序流程圖; 6. 設(shè)計(jì)操作7. 的所有單元電路,并用VHDL語言(也可使用GDF文件-圖形描述文件)8. 對模型機(jī)中控制器單元;設(shè)計(jì)模型機(jī)的各個(gè)部件進(jìn)行編程,并使之成為一個(gè)統(tǒng)一的整體,即形成頂層電路。9. 由給出的題目和設(shè)計(jì)的指令系統(tǒng)編寫相應(yīng)的匯編語言源程序;9. 根據(jù)設(shè)計(jì)的指令格式,將匯編語言源程序手工轉(zhuǎn)換成機(jī)器語言源程序,并將其設(shè)計(jì) 到模型機(jī)中的 ROM中去; 1

5、0. 使用EDA軟件進(jìn)行功能仿真,要保證其結(jié)果滿足題目的要求;(其中要利用EDA軟 件提供的波形編輯器,選擇合適的輸入輸出信號及中間信號進(jìn)行調(diào)試。)二、系統(tǒng)的總體設(shè)計(jì)2.1 嵌入式CISC模型機(jī)的數(shù)據(jù)通路框圖 圖2-12.2 系統(tǒng)的操作控制器的邏輯框圖2.3模型機(jī)的指令格式這里,計(jì)算機(jī)數(shù)據(jù)通路的控制將由微程序控制器來完成,CPU從內(nèi)存中取出一條機(jī)器指令到指令執(zhí)行結(jié)束的一個(gè)指令周期全部由微指令組成的序列來完成,即一條機(jī)器指令對應(yīng)一個(gè)微程序。 此模型的系統(tǒng)共設(shè)計(jì)了共有10 條指令,分別為:IN,MOV,LAD,STO,INC,JNS, ADD,MUL, OUT,TEST。2.3.1具體指令格式如下

6、:微地址助記符號指令格式指令功能15-1211 109 87 -0000001MOV Rd,im0001xxRdim立即數(shù)imRd000010INT Rd0010xxRdxx將輸入數(shù)據(jù)存到Rd寄存器000011STO Rs,(Rd)0011RsRdxx(Rs)->(Rd)將Rs的內(nèi)容存到Rd地址中000100INC Rd0100xxRdxx(Rd)+1Rd鎖存SF和ZF000101DEC Rd0101xxRdxx(Rd)-1Rd鎖存SF和ZF000110TEST Rd0110xxRdxx 測試 (Rd)是否為負(fù),鎖存SF000111JNS addr0111xxxxaddr若不為負(fù)數(shù),則a

7、ddrPC001000LAD(Rs),Rd1000RsRdxx(Rs)->Rd 將Rs地址的內(nèi)容讀到Rd 001001MUL Rs Rd1001RsRdxx(Rs)*(Rd)->Rd001010ADD Rs,Rd1010RsRdaddr(Rs)+(Rd)->Rd001011OUT Rs1011Rsxxxx(Rs)OUTBUS 2.3.2對Rs和Rd的規(guī)定:Rs或Rd選定的寄存器0 0R00 1R1 1 0R2 1 1 R3 2.3.3模型機(jī)規(guī)定數(shù)據(jù)的表示采用定點(diǎn)整數(shù)補(bǔ)碼表示,單字長為8位,其格式如下: 7 6 5 4 3 2 1 0符號位 尾數(shù) 2.4編寫匯編源程序我們要實(shí)現(xiàn)

8、的功能是對連續(xù)輸入的5個(gè)數(shù)據(jù)并存儲(chǔ)到RAM的連續(xù)的存儲(chǔ)單元中,然后再從RAM中將這5個(gè)數(shù)據(jù)依次讀取出來并作判斷是否為數(shù),將5個(gè)數(shù)中所有的負(fù)數(shù)其求平方和,并對其結(jié)果進(jìn)行顯示等功能,從而得到一個(gè)簡單的復(fù)雜指令模型機(jī)所實(shí)現(xiàn)的功能和結(jié)果/根據(jù)要求編寫如下匯編源程序:MOV R0,00H ;數(shù)據(jù)存放在RAM中的地址MOV R1,4H ;計(jì)數(shù) 從4H(4)開始,到-1時(shí)結(jié)束 L1: INT R2 ;輸入一個(gè)數(shù)到R2STO R2,(R0) ;將輸入的數(shù)存放到RAM的(R0)地址INC R0 ;RAM地址指針+1DEC R1 ;計(jì)數(shù)-1TEST R1 ;測試計(jì)數(shù)是否到達(dá)5次,(R1)是否為負(fù)數(shù)JNS L1 ;

9、根據(jù)SF符號標(biāo)志的判斷,若不為負(fù)數(shù),則跳轉(zhuǎn) MOV R0 00H ;當(dāng)5個(gè)數(shù)輸入存儲(chǔ)完成后,重新初始化RAM指針MOV R1 4H ;重置計(jì)數(shù) L2: LAD (R0) R2 ;將(R0)地址的數(shù)取出送到R2中TEST R2 ;測試取出的數(shù)是否為負(fù)數(shù) JNS L3 ;若不為負(fù)數(shù),則跳轉(zhuǎn)到L3MUL R2,R2 ;若為負(fù)數(shù),則求平方 ADD R2,R3 ;再求平方和,把結(jié)果送到R3 L3: INC R0 ;RAM地址+1 DEC R1 ;計(jì)數(shù)-1+TST R1 ;測試計(jì)數(shù)是否到達(dá)5次,(R1)是否為負(fù)數(shù)JNS L2 ;為正數(shù),計(jì)數(shù)還不到5次,則跳轉(zhuǎn)到L2 OUT R3 ;計(jì)數(shù)到達(dá)5次,則將最后結(jié)

10、果輸出2.5 最終機(jī)器碼為:地址助記符(匯編)機(jī)器代碼作用00 MOV R0,00H0001000000000000數(shù)據(jù)存放在RAM中的地址00H開始01 MOV R1,4H0001000100000100計(jì)數(shù) 從4H(4)開始,到-1時(shí)結(jié)束02L1:INT R20010001000000000輸入一個(gè)數(shù)到R203 STO R2,(R0)0011100000000000將輸入的數(shù)存放到RAM的(R0)地址04 INC R00100000000000000RAM地址指針+105 DEC R10101000100000000計(jì)數(shù)-106 TEST R10110000100000000測試計(jì)數(shù)是否到

11、達(dá)5次,(R1)是否為負(fù)數(shù),鎖存SF07 JNS L1 0111000000000010根據(jù)SF符號標(biāo)志的判斷,若不為負(fù)數(shù),則跳轉(zhuǎn)08 MOV R0,00H0001000000000000當(dāng)5個(gè)數(shù)輸入存儲(chǔ)完成后,重新初始化RAM指針09 MOV R1,4H0001000100000100重置計(jì)數(shù)0AL2:LAD(R0),R21000001000000000將(R0)地址的數(shù)取出送到R2中0B TEST R20110001000000000測試取出的數(shù)是否為負(fù)數(shù),鎖存SF0C JNS L30111000000001111若不為負(fù)數(shù),則跳轉(zhuǎn)到L30D MUL R2,R210011010000000

12、00若為負(fù)數(shù),則求平方0E ADD R2,R31010101100000000再求平方和,把結(jié)果送到R30FL3:INC R00100000000000000RAM地址+110 DEC R10101000100000000計(jì)數(shù)-1+11 TEST R10110000100000000測試計(jì)數(shù)是否到達(dá)5次,(R1)是否為負(fù)數(shù),鎖存SF12 JNS L20111000000001010為正數(shù),計(jì)數(shù)還不到5次,則跳轉(zhuǎn)到L213 OUT R31011110000000000計(jì)數(shù)到達(dá)5次,則將最后結(jié)果輸出三時(shí)序產(chǎn)生器 T1、T2、T3、T4與CLR、Q之間的關(guān)系圖如下:四微程序控制器的設(shè)計(jì) 微程序控制器

13、的設(shè)計(jì)過程包括: (1)根據(jù)微處理器結(jié)構(gòu)圖、指令格式和功能設(shè)計(jì)所有機(jī)器指令的微程序流程圖,并確定每 條微指令的微地址和后繼微地址; (2)設(shè)計(jì)微指令格式和微指令代碼表; (3)設(shè)計(jì)地址轉(zhuǎn)移邏輯電路; (4)設(shè)計(jì)微程序控制器中的其它邏輯單元電路,包括微地址寄存器、微命令寄存器和控制 存儲(chǔ)器; (5)設(shè)計(jì)微程序控制器的頂層電路(由多個(gè)模塊組成)。4.1設(shè)計(jì)微指令流程圖根據(jù)微處理器結(jié)構(gòu)圖、指令格式和功能設(shè)計(jì)所有機(jī)器指令的微程序流程圖,并確定每條微指令的微地址和后繼微地址; 00PC->ABUS( I ) ,RD ROMIBUS->IR ,PC +1 P(1 )MOV INT STO IN

14、C DEC TEST JNS LAD MUL ADD OUT 01 02 03 04 05 06 07 08 09 0A 0BRd->YY+1->Rd鎖存SF,ZF測試Rd的最高位,鎖存到SF中Rs->XRd->YX*Y->Rd鎖存SF,ZFRs->XRd->YX+Y ->Rd鎖ZF,SFROM->BUSBUS->PCIR(A)->RdSW->RdRd->ARRs->ARRd->YY+1->Rd鎖存SF,ZF 0E 0C RD RAMDBUS->RdP(2)00Rs->DBUSWE RA

15、M 00 00 00 00 00 00 00 00 SF=1 SF=0 00 10IR(A)->Rd 00 004.2 設(shè)計(jì)微指令格式和微指令代碼表指令流程圖設(shè)計(jì)完成后,開始設(shè)計(jì)微指令格式和微指令代碼表,按照要求,CISC模型機(jī)系統(tǒng)使用的微指令采用全水平型微指令,字長為26位,其中微命令字段為18位,P字段為2位,后繼微地址為6位,其格式如下:按照此格式并根據(jù)設(shè)計(jì)的指令流程圖,可以得到:由微指令格式和微程序流程圖編寫的微指令代碼表如下所示,在微指令的代碼表中微命令字段從左邊到右代表的微命令信號依次為:LOAD、LDPC、LDAR、LDIR、LDRi、LDPSW、RS_B、S2、S1、S0

16、、ALU_B、SW_B、LED_B、RD_B、CS_B、RAM_B、CS_I、ADDR_B。CLRLOADLDPC功能0XX將PC清010BUS->PC110不裝入,不計(jì)數(shù)11PC+1S2S1S0功能000X+Y,修改ZF,SF010Y+1,修改ZF,SF011Y-1,修改ZF,SF111X*Y,修改ZF,SF1000&Y,修改ZF,SF110->Y4.3設(shè)計(jì)地址轉(zhuǎn)移邏輯電路地址轉(zhuǎn)移邏輯電路是根據(jù)微程序流程圖中的棱形框部分及多個(gè)分支微地址,利用微地址寄存器的異步置“1”端,實(shí)現(xiàn)微地址的多路轉(zhuǎn)移。地址轉(zhuǎn)移邏輯電路中異步置“1”信號SE6SE1表達(dá)式的確定與P字段測試時(shí)轉(zhuǎn)移微地

17、址的確定密切相關(guān).由于微地址寄存器中的觸發(fā)器異步置“1”端低電平有效,與µA4µA0對應(yīng)的異步置“1”控制信號SE5SE1的邏輯表達(dá)式為:(µA5的異步置“1”端SE6實(shí)際未使用)SE6 <= '1'SE5 <= NOT(NOT(SF) AND P2 AND T4);SE4 <= NOT(I4 AND P1 AND T4);SE3 <= NOT(I3 AND P1 AND T4);SE2 <= NOT(I2 AND P1 AND T4);SE1 <= NOT(I1 AND P1 AND T4);五、單元電路設(shè)計(jì)設(shè)

18、計(jì)模型機(jī)中的所有單元電路,并用VHDL語言(也可使用GDF文件-圖形描述文件)對模型機(jī)中的各個(gè)部件進(jìn)行編程,并使之成為一個(gè)統(tǒng)一的整體,即形成頂層電路或頂層文件。具體設(shè)計(jì)方法見附錄。重點(diǎn)設(shè)計(jì)單元電路為:CR0M,ALU,ROM.CROM內(nèi)部重點(diǎn)單元:COUNTROM,ADDR,MCOMMAND5.1模型機(jī)(頂層)電路:5.2模型機(jī)crom單元電路:六.設(shè)計(jì)測試過程所遇到的問題及解決記錄6.1 JNS (JNS L2JNS L3)無法實(shí)現(xiàn)循環(huán)跳轉(zhuǎn) 問題所在:沒有認(rèn)真注意到P測試的返回地址與指令I(lǐng)R->PC地址的關(guān)系,開始時(shí)隨便設(shè)置了IR->PC的地址問題解決:后來了解到改地址與P(2)

19、測試相關(guān),改為010000后,跳轉(zhuǎn)成功。6.2 STO( STO R2 (R0) )存儲(chǔ)位置每次都為00H 問題所在:STO指令中開啟ADDR_B,關(guān)ALU_B,導(dǎo)致取地址來自于ROM內(nèi)的機(jī)器碼后八位addr,該機(jī)器碼后八位為00H。 問題解決:微指令中關(guān)ADDR_B,開ALU_B,ALU設(shè)置直接輸出Y,此時(shí)Y值來源于(R0),即為目的地址。七、測試及結(jié)果分析根據(jù)設(shè)計(jì)的匯編程序和對應(yīng)的機(jī)器代碼,對設(shè)計(jì)的模型機(jī)進(jìn)行仿真測試,并分析結(jié)果:7.1下圖顯示了RAM地址的初值設(shè)置00H,循環(huán)計(jì)數(shù)設(shè)置04H,第一個(gè)循環(huán)讀入40H至R2并存進(jìn)RAM的過程。 7.2下圖截取了其中3個(gè)循環(huán),分別讀進(jìn)數(shù)40H,F

20、CH,FEH.7.3下圖為5次循環(huán)后讀進(jìn)的5個(gè)數(shù),如圖從地址00H開始存放。7.4下圖為一次從RAM中讀取負(fù)數(shù),并計(jì)算平方并加到R3的過程7.5下圖為3個(gè)負(fù)數(shù)從RAM中讀取判斷,求得平方并求和的過程。FC*FC+FE*FE+FF*FF=15H.九、心得體會(huì)通過課程設(shè)計(jì)的學(xué)習(xí)設(shè)計(jì)過程,我從對CISC模型機(jī)的組成和工作原理毫不了解,到慢慢的獨(dú)立設(shè)計(jì)完成,并實(shí)現(xiàn)了預(yù)期功能。這次課程設(shè)計(jì)我學(xué)會(huì)Altera MAX+plus EDA軟件的使用,熟悉了VHDL語言,并能使用其進(jìn)行期間的編程,當(dāng)然,也能用圖形描述文件(.Gdf)進(jìn)行頂層電路的設(shè)計(jì)。最終能用EDA軟件設(shè)計(jì)一個(gè)能完成一定功能的模型計(jì)算機(jī),并通過

21、功能仿真和在EDA實(shí)驗(yàn)平臺(tái)上運(yùn)行一個(gè)程序來驗(yàn)證模型機(jī)設(shè)計(jì)的正確性。在設(shè)計(jì)的過程中,我了解了每個(gè)機(jī)器碼,每個(gè)微指令的作用,懂得模型機(jī)的原理。此次的課程設(shè)計(jì)讓我收獲的不單單有課程的知識(shí),也學(xué)會(huì)了自主學(xué)習(xí)、學(xué)會(huì)了細(xì)心解決問題,培養(yǎng)了自己做事的耐心活認(rèn)真的態(tài)度,培養(yǎng)了調(diào)試糾錯(cuò)的良好素養(yǎng),更有的就是加強(qiáng)了自己的實(shí)踐動(dòng)手能力。 十、附錄(VHDL源文件)8.1ROM的設(shè)計(jì)(保存匯編源代碼對應(yīng)的機(jī)器碼以及地址)程序:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED

22、.ALL;ENTITY ROM ISPORT(DOUT:OUT STD_LOGIC_VECTOR(15 DOWNTO 0);ADDR:IN STD_LOGIC_VECTOR(7 DOWNTO 0);CS_I:IN STD_LOGIC);END ROM;ARCHITECTURE A OF ROM ISBEGINDOUT <="0001000000000000" WHEN ADDR="00000000" AND CS_I = '0' ELSE-MOV R0,10H "0001000100000100" WHEN AD

23、DR="00000001" AND CS_I = '0' ELSE-MOV R1,4H "0010001000000000" WHEN ADDR="00000010" AND CS_I = '0' ELSE-L1:INT R2 "0011100000000000" WHEN ADDR="00000011" AND CS_I = '0' ELSE-STO R2,(R0) "0100000000000000" WHEN ADDR=&

24、quot;00000100" AND CS_I = '0' ELSE-INC R0 "0101000100000000" WHEN ADDR="00000101" AND CS_I = '0' ELSE-DEC R1 "0110000100000000" WHEN ADDR="00000110" AND CS_I = '0' ELSE-TEST R1"0111000000000010" WHEN ADDR="00000111&q

25、uot; AND CS_I = '0' ELSE-JNS L1 "0001000000000000" WHEN ADDR="00001000" AND CS_I = '0' ELSE-MOV R0 10H "0001000100000100" WHEN ADDR="00001001" AND CS_I = '0' ELSE-MOV R1 4H "1000001000000000" WHEN ADDR="00001010" AND

26、 CS_I = '0' ELSE-L2:LAD(R0) R2 "0110001000000000" WHEN ADDR="00001011" AND CS_I = '0' ELSE-TEST R2 "0111000000001111" WHEN ADDR="00001100" AND CS_I = '0' ELSE-JNS L3 "1001101000000000" WHEN ADDR="00001101" AND CS_I =

27、 '0' ELSE-MUL R2,R2 "1010101100000000" WHEN ADDR="00001110" AND CS_I = '0' ELSE-ADD R2,R3 "0100000000000000" WHEN ADDR="00001111" AND CS_I = '0' ELSE-L3:INC R0 "0101000100000000" WHEN ADDR="00010000" AND CS_I = '

28、0' ELSE-DEC R1 "0110000100000000" WHEN ADDR="00010001" AND CS_I = '0' ELSE-TEST R1 "0111000000001010" WHEN ADDR="00010010" AND CS_I = '0' ELSE-JNS L2 "1011110000000000" WHEN ADDR="00010011" AND CS_I = '0' ELSE-OU

29、T R3 "0000000000000000"END A;8.2 ALU(運(yùn)算器)LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;1USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY ALU ISPORT( X: IN STD_LOGIC_VECTOR(7 DOWNTO 0); Y: IN STD_LOGIC_VECTOR(7 DOWNTO 0); S2,S1,S0: IN STD_LOGIC; ALUOUT: OUT STD_LOGIC_VECTOR(7

30、DOWNTO 0) ; SF: OUT STD_LOGIC );END ALU;ARCHITECTURE A OF ALU ISSIGNAL AA,BB,TEMP:STD_LOGIC_VECTOR(8 DOWNTO 0);BEGIN PROCESS BEGIN IF(S2='0' AND S1='0' AND S0='0') THEN-ADD AA<='0'&X; BB<='0'&Y; TEMP<=AA+BB; ALUOUT<=TEMP(7 DOWNTO 0); SF<

31、=TEMP(7); ELSIF(S2='0' AND S1='1' AND S0='0') THEN -INC AA<='0'&Y; TEMP<=AA+1; ALUOUT<=TEMP(7 DOWNTO 0); SF<=TEMP(7); ELSIF(S2='0' AND S1='1' AND S0='1') THEN -DEC AA<='0'&Y; TEMP<=AA-1; ALUOUT<=TEMP(7 DOWNT

32、O 0); SF<=TEMP(7);ELSIF(S2='1' AND S1='1' AND S0='1') THEN-MULAA<='0'&X;BB<='0'&Y;TEMP<=AA*BB;ALUOUT<=TEMP(7 DOWNTO 0);ELSIF(S2='1' AND S1='0' AND S0='0') THEN-TESTAA<='0'&Y;SF<=AA(7); ELSIF(S2=&

33、#39;1' AND S1='1' AND S0='0') THEN -Rd->BUS ALUOUT<=Y; ELSE ALUOUT<="00000000" ; SF<='0' END IF; END PROCESS;END A;8.3狀態(tài)條件寄存器只保留了用到的SFLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY PSW ISPORT( S,LDPSW: IN STD_LOGIC; SF: OUT STD_LOGIC );END PSW;ARCHI

34、TECTURE A OF PSW ISBEGIN PROCESS(LDPSW) BEGIN IF(LDPSW'EVENT AND LDPSW='1') THEN SF<=S; END IF; END PROCESS;END A;8.4微程序控制器內(nèi)部結(jié)構(gòu):( 1 ) 地址轉(zhuǎn)移邏輯電路程序:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY ADDR ISPORT(I4,I3,I2,I1: IN STD_LOGIC;SF,P2,P1,T4: IN STD_LOGIC;SE6,SE5,SE4,SE3,SE2,SE1: OUT

35、 STD_LOGIC);END ADDR;ARCHITECTURE A OF ADDR ISBEGINSE6 <= '1'SE5 <= NOT(NOT(SF) AND P2 AND T4);SE4 <= NOT(I4 AND P1 AND T4);SE3 <= NOT(I3 AND P1 AND T4);SE2 <= NOT(I2 AND P1 AND T4);SE1 <= NOT(I1 AND P1 AND T4);END A;(2)微地址寄存器微地址寄存器uar的內(nèi)部結(jié)構(gòu):程序:LIBRARY IEEE;USE IEEE.STD_LOGI

36、C_1164.ALL;ENTITY MMM ISPORT(SE,T2,D,CLR: IN STD_LOGIC;UA: OUT STD_LOGIC);END MMM;ARCHITECTURE A OF MMM ISBEGINPROCESS(CLR,SE,T2)BEGINIF(CLR='0') THENUA <= '0'ELSIF(SE='0') THENUA <= '1'ELSIF(T2'EVENT AND T2='1') THENUA <= D;END IF;END PROCESS;(3)

37、微地址轉(zhuǎn)換器F1程序:LIBRARY IEEE; USE IEEE.STD_LOGIC_116 ALL; ENTITY F1 IS PORT( UA5,UA4,UA3,UA2,UA1,UA0:IN STD_LOGIC; D:OUT STD_LOGIC_VECTOR(5 DOWNTO 0) ); END F1; ARCHITECTURE A OF F1 IS BEGIN D(5)<=UA5; D(4)<=UA4; D(3)<=UA3; D(2)<=UA2; D(1)<=UA1; D(0)<=UA0; END A;(4) 控制存儲(chǔ)器程序:LIBRARY IEEE

38、;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY COUNTROM ISPORT(ADDR: IN STD_LOGIC_VECTOR(5 DOWNTO 0); UA:OUT STD_LOGIC_VECTOR(5 DOWNTO 0); D:OUT STD_LOGIC_VECTOR(19 DOWNTO 0) );END COUNTROM;ARCHITECTURE A OF COUNTROM ISSIGNAL DATAOUT: STD_LOGIC_VECTO

39、R(25 DOWNTO 0);BEGIN PROCESS BEGIN CASE ADDR IS WHEN "000000" => DATAOUT<="11010010001111110110000000"-OP->IR PC+1WHEN "000001" => DATAOUT<="10001010001111111000000000"-MOVWHEN "000010" => DATAOUT<="1000101000101111110000000

40、0"-INTWHEN "000011" => DATAOUT<="10100011100111111100001110"-STOWHEN "000100" => DATAOUT<="10001110100111111100000000"-INCWHEN "000101" => DATAOUT<="10001110110111111100000000"-DECWHEN "000110" => DATAOUT

41、<="10000111000111111100000000"-TESTWHEN "000111" => DATAOUT<="10000010001111111101000000"-JNSWHEN "001000" => DATAOUT<="10100000001111111100001100"-LADWHEN "001001" => DATAOUT<="10001111110111111100000000"-MUL

42、WHEN "001010" => DATAOUT<="10001110000111111100000000"-ADDWHEN "001011" => DATAOUT<="10000000001101111100000000"-OUTWHEN "001100" => DATAOUT<="10001010001111001100000000"-RDRAM,DBUS-RdWHEN "010000" => DATAOUT&

43、lt;="01000010001111111000000000"-IR-PCWHEN "001110" => DATAOUT<="10000000001110011100000000"-WERAM,DBUS-RAMWHEN OTHERS => DATAOUT<="11010011111111110110000000" END CASE; UA(5 DOWNTO 0)<=DATAOUT(5 DOWNTO 0); D(19 DOWNTO 0)<=DATAOUT(25 DOWNTO 6

44、); END PROCESS;END A;(5)微命令寄存器程序:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY MCOMMAND ISPORT( T2,T3,T4:IN STD_LOGIC; D:IN STD_LOGIC_VECTOR(19 DOWNTO 0); LOAD,LDPC,LDAR,LDIR,LDRI,LDPSW,RS_B,S2,S1,S0:OUT STD_LOGIC; ALU_B,SW_B,LED_B,RD_D,

45、CS_D,RAM_B,CS_I,ADDR_B,P1,P2:OUT STD_LOGIC );END MCOMMAND;ARCHITECTURE A OF MCOMMAND ISSIGNAL DATAOUT:STD_LOGIC_VECTOR(19 DOWNTO 0);BEGIN PROCESS(T2) BEGIN IF(T2'EVENT AND T2='1') THEN DATAOUT(19 DOWNTO 0)<=D(19 DOWNTO 0); END IF; LOAD<=DATAOUT(19); LDPC<=DATAOUT(18) AND T4; LDA

46、R<=DATAOUT(17) AND T3; LDIR<=DATAOUT(16) AND T3; LDRI<=DATAOUT(15) AND T4; LDPSW<=DATAOUT(14) AND T4; RS_B<=DATAOUT(13); S2<=DATAOUT(12); S1<=DATAOUT(11); S0<=DATAOUT(10); ALU_B<=DATAOUT(9); SW_B<=DATAOUT(8); LED_B<=DATAOUT(7); RD_D<=NOT(NOT DATAOUT(6) AND (T2 OR

47、T3); CS_D<=NOT(NOT DATAOUT(5) AND T3); RAM_B<=DATAOUT(4); CS_I<=DATAOUT(3); ADDR_B<=DATAOUT(2); P1<=DATAOUT(1); P2<=DATAOUT(0); END PROCESS;END A;(6)微地址轉(zhuǎn)換器F2 程序:LIBRARY IEEE;LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY F2 IS PORT( D:IN STD_LOGIC_VECTOR(5 DOWNTO 0); UA5,UA4,UA3,U

48、A2,UA1,UA0: OUT STD_LOGIC );END F2;ARCHITECTURE A OF F2 ISBEGIN UA5<=D(5); UA4<=D(4); UA3<=D(3); UA2<=D(2); UA1<=D(1); UA0<=D(0);END A;(7)指令代碼轉(zhuǎn)換器F3程序:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY F3 IS PORT( D:IN STD_LOGIC_VECTOR(3 DOWNTO 0); UA3,UA2,UA1,UA0: OUT STD_LOGIC );END

49、F3;ARCHITECTURE A OF F3 ISBEGIN UA3<=D(3); UA2<=D(2); UA1<=D(1); UA0<=D(0);END A;8.5寄存器單元程序:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY LS273 ISPORT(D:IN STD_LOGIC_VECTOR(7 DOWNTO 0);O: OUT STD_LOGIC_VECTOR(7 DOWNTO 0);CLK: IN STD_LOGIC);END LS273;ARCHITECTURE A OF LS273 ISBEGINPROCE

50、SS(CLK)BEGINIF(CLK'EVENT AND CLK='1')THEN O<=D;END IF;END PROCESS;END A;8.6 1:2分配器LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY FEN2 ISPORT(LED_B:IN STD_LOGIC;DBUS:IN STD_LOGIC_VECTOR(7 DOWNTO 0);FENOUT,OUTBUS:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);END FEN2;ARCHITECTURE A OF FEN2 ISBEGIN PROCESS BEGIN IF(LED_B='0') THEN OUTBUS<=DBUS; ELSE FENOUT<=DBUS; END IF; END PROCESS;END A;8.6 選擇器(1) 3選1數(shù)據(jù)選擇器LIBRAR

溫馨提示

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

最新文檔

評論

0/150

提交評論