組成原理課設(shè)A類題RAM(共31頁(yè))_第1頁(yè)
組成原理課設(shè)A類題RAM(共31頁(yè))_第2頁(yè)
組成原理課設(shè)A類題RAM(共31頁(yè))_第3頁(yè)
組成原理課設(shè)A類題RAM(共31頁(yè))_第4頁(yè)
組成原理課設(shè)A類題RAM(共31頁(yè))_第5頁(yè)
已閱讀5頁(yè),還剩26頁(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、精選優(yōu)質(zhì)文檔-傾情為你奉上計(jì)算機(jī)組成原理課程設(shè)計(jì)題 目: 設(shè)計(jì)求負(fù)數(shù)平方和的CISC模型計(jì)算機(jī) 院 (系): 計(jì)算機(jī)科學(xué)與工程學(xué)院 專 業(yè): 網(wǎng)絡(luò)工程 學(xué)生姓名: 學(xué) 號(hào): 指導(dǎo)教師: 專心-專注-專業(yè)目 錄1、 課程設(shè)計(jì)的題目和內(nèi)容: 設(shè)計(jì)一臺(tái)嵌入式CISC模型計(jì)算機(jī)(采用定長(zhǎng)CPU周期、聯(lián)合控制方式),并運(yùn)行能完成一定功能的機(jī)器語(yǔ)言程序進(jìn)行驗(yàn)證。 要求連續(xù)輸入5個(gè)有符號(hào)整數(shù)(用8位二進(jìn)制補(bǔ)碼表示,十六進(jìn)制數(shù)輸入)求所有負(fù)數(shù)的平方和并輸出顯示。說(shuō)明:5個(gè)有符號(hào)數(shù)從外部輸入; 一定要使用符號(hào)位(比如說(shuō)SF),并且要使用負(fù)的時(shí)候轉(zhuǎn)移(比如 說(shuō)JS)或不為負(fù)的時(shí)候轉(zhuǎn)移(比如說(shuō)JNS)指令。課程設(shè)計(jì)

2、完成的內(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ì)操作控制器單元;在CISC模型計(jì)算機(jī)中,設(shè)計(jì)的內(nèi)容包括微指令格式(建議采用全水平型微指令)、微指令代碼表(根據(jù)微程序流程圖和微指令格式來(lái)設(shè)計(jì))和微程序控制器硬件電路(包括地址轉(zhuǎn)移邏輯電路、微地址寄存器、微命令寄存器和控制存儲(chǔ)器等。具體電路根據(jù)微程序控制器的邏輯結(jié)構(gòu)框圖、微指令格式和微指令代碼來(lái)設(shè)計(jì))。 7.設(shè)計(jì)模型機(jī)的所有單元電路,并用VHDL語(yǔ)言(也可使用GDF文件-

3、圖形描述文件)對(duì)模型機(jī)中的各個(gè)部件進(jìn)行編程,并使之成為一個(gè)統(tǒng)一的整體,即形成頂層電路或頂層文件; 8.由給出的題目和設(shè)計(jì)的指令系統(tǒng)編寫相應(yīng)的匯編語(yǔ)言源程序; 9.根據(jù)設(shè)計(jì)的指令格式,將匯編語(yǔ)言源程序手工轉(zhuǎn)換成機(jī)器語(yǔ)言源程序,并將其設(shè)計(jì)到模型機(jī)中的ROM中去; 10.使用EDA軟件進(jìn)行功能仿真,要保證其結(jié)果滿足題目的要求;(其中要利用EDA軟件提供的波形編輯器,選擇合適的輸入輸出信號(hào)及中間信號(hào)進(jìn)行調(diào)試。)2、 系統(tǒng)的總體設(shè)計(jì):整個(gè)系統(tǒng)數(shù)據(jù)通路如下所示:本模型機(jī)中的指令系統(tǒng)中共有9條基本指令,下表列出了每條指令的格式、匯編符號(hào)和指令功能。1、 模型機(jī)的指令系統(tǒng)和所有指令的指令格式1)I/O指令輸入

4、指令(IN1)格式:15 14 13 12 11 109 87 6 5 4 3 2 1操作碼X XRdX X X X X X X X輸入指令(OUT1)格式:15 14 13 1211 109 87 6 5 4 3 2 1操作碼RsX XX X X X X X X X2)轉(zhuǎn)移指令條件轉(zhuǎn)移指令(JS)和無(wú)條件跳轉(zhuǎn)指令(JMP)格式:15 14 13 1211 109 87 6 5 4 3 2 1操作碼X X X Xaddr3)TEST指令15 14 13 1211 109 87 6 5 4 3 2 1操作碼X XRdX X X X X X X X4)MOV指令MOV指令格式:15 14 13 1

5、211 109 87 6 5 4 3 2 1操作碼X XRdData5)乘法指令乘法指令MUL格式:15 14 13 1211 109 87 6 5 4 3 2 1操作碼RsRdX X X X X X X X6)自加指令自加1指令(INC)格式:15 14 13 1211 109 87 6 5 4 3 2 1操作碼RsX XX X X X X X X X7)存取指令取數(shù)指令(LAD)格式和存數(shù)指令(STOI)格式如下:15 14 13 1211 109 87 6 5 4 3 2 1操作碼RsRdX X X X X X X X其中,對(duì)Rs和Rd的規(guī)定:Rs或Rd選定的寄存器0 0R00 1R11

6、 0R21 1R3模型機(jī)規(guī)定數(shù)據(jù)的表示采用定點(diǎn)整數(shù)補(bǔ)碼表示,單字長(zhǎng)為8位,其格式如下:76 5 4 3 2 1 0符號(hào)位尾數(shù)T1、T2、T3、T4與CLR、Q之間的關(guān)系圖QCLRT1T2T3T4一個(gè)CPU周期現(xiàn)在,我們開始微程序控制器的設(shè)計(jì),它包括以下幾部分工作: (1)根據(jù)指令格式和指令系統(tǒng)設(shè)計(jì)所有機(jī)器指令的微程序流程圖,并確定每條微指令的微地址和后繼微地址;(2)設(shè)計(jì)微指令格式和微指令代碼表;(3)設(shè)計(jì)地址轉(zhuǎn)移邏輯電路;(4)設(shè)計(jì)微程序控制器中的其它邏輯單元電路,包括微地址寄存器、微命令寄存器和控制存儲(chǔ)器; (5)設(shè)計(jì)微程序控制器的頂層電路。 首先做第一步,根據(jù)指令格式和指令系統(tǒng)設(shè)計(jì)所有機(jī)

7、器指令的微程序流程圖.對(duì)于我設(shè)計(jì)的模型機(jī),對(duì)應(yīng)的指令流程圖如下所示: 第二步,指令流程圖設(shè)計(jì)完成后,開始設(shè)計(jì)微指令格式和微指令代碼表,按照要求,CISC模型機(jī)系統(tǒng)使用的微指令采用全水平型微指令,字長(zhǎng)為25位,其中微命令字段為17位,P字段為2位,后繼微地址為6位,其格式如下: 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 LOAD LDPC LDAR LDIR LDRi LDPSW RS_B S2 S1 S0 ALU_B SW_B LED_B RD_D CS_D RAM_B CS_I ADDR_B P1

8、P2 后繼微地址按照這個(gè)格式,再根據(jù)我設(shè)計(jì)的指令流程圖,可以得到:由微指令格式和微程序流程圖編寫的微指令代碼表如下所示,在微指令的代碼表中微命令字段從左邊到右代表的微命令信號(hào)依次為:LOAD、LDPC、LDAR、LDIR、LDRi、LDPSW、RS_B、S2、S1、S0、ALU_B、SW_B、LED_B、RD_D、CS_D、RAM_B、CS_I、ADDR_B。微地址P1P2uA5uA000110100100011111101100001100010100010111111000002100010100011111110000003101000000011111111000D0410001110

9、0001111111000005100011101101111111000006100000100011111111010007101000111001111111000E0801000010001111111000000910001111110111111100000a10000010001111111101000b10000110010111111100000c10000000001101111100000D10001010001111001100000E1000000000111001110000100100001000111111100000第三步:設(shè)計(jì)好了微指令代碼表之后,我們可以開

10、始設(shè)計(jì)地址轉(zhuǎn)移邏輯電路地址轉(zhuǎn)移邏輯電路是根據(jù)微程序流程圖3-2中的棱形框部分及多個(gè)分支微地址,利用微地址寄存器的異步置“1”端,實(shí)現(xiàn)微地址的多路轉(zhuǎn)移。由于微地址寄存器中的觸發(fā)器異步置“1”端低電平有效,與µA4µA0對(duì)應(yīng)的異步置“1”控制信號(hào)SE5SE1的邏輯表達(dá)式為:(µA5的異步置“1”端SE6實(shí)際未使用)SE5=SF·P(2)·T4SE4=I7·P(1)·T4SE3=I6·P(1)·T4SE2=I5·P(1)·T4SE1=I4·P(1)·T4需要注意的是:地址

11、轉(zhuǎn)移邏輯電路中異步置“1”信號(hào)SE5SE1表達(dá)式的確定與P字段測(cè)試時(shí)轉(zhuǎn)移微地址的確定密切相關(guān).地址轉(zhuǎn)移邏輯電路的實(shí)現(xiàn)代碼如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY ADDR IS PORT( I7,I6,I5,I4:IN STD_LOGIC; FZ,FC,T4,P1,P2:IN STD_LOGIC; SE6,SE5,SE4,SE3,SE2,SE1:OUT STD_LOGIC);END ADDR;ARCHITECTURE A OF ADDR ISBEGIN SE6<='1' SE5<=NOT (SF AND P

12、2 AND T4); SE4<=NOT(I7 AND P1 AND T4); SE3<=NOT(I6 AND P1 AND T4); SE2<=NOT(I5 AND P1 AND T4); SE1<=NOT(I4 AND P1 AND T4);END A;編譯通過之后生成圖形符號(hào),我們的地址轉(zhuǎn)移邏輯電路就完成了。接下來(lái)繼續(xù)生成微控制器里面的其他器件和電路:我們先看看微地址寄存器aa的設(shè)計(jì),它的內(nèi)部電路圖如下所示: 可以看得出,AA中帶有異步清“0”和異步置“1”功能的觸發(fā)器MMM,它的實(shí)現(xiàn)代碼如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164

13、.ALL;ENTITY MMM IS PORT( SE:IN STD_LOGIC; T2:IN STD_LOGIC; D:IN STD_LOGIC; CLR:IN STD_LOGIC; UA:OUT STD_LOGIC );END MMM;ARCHITECTURE A OF MMM ISBEGIN PROCESS(CLR,SE,T2) BEGIN IF(CLR='0') THEN UA<='0' ELSIF(SE='0')THEN UA<='1' ELSIF(T2'EVENT AND T2='1'

14、;) THEN UA<=D; END IF; END PROCESS;END A; 編譯成功后生成MMM元器件,然后連接個(gè)個(gè)觸發(fā)器并添加輸入輸出端,完成后的圖形文件如下所示: 生成了AA之后,在分別生成CONTROM MCOMMAND F1 F2 F3等5個(gè)器件即可生成一個(gè)完整的微程序控制器CROM,其內(nèi)部電路如下所示: 接下來(lái)該做的是控制存儲(chǔ)器CONTROM,實(shí)現(xiàn)它的VHDL源程序如下所示:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.A

15、LL;ENTITY CONTROM ISPORT(ADDR: IN STD_LOGIC_VECTOR(5 DOWNTO 0); UA:OUT STD_LOGIC_VECTOR(5 DOWNTO 0); O:OUT STD_LOGIC_VECTOR(19 DOWNTO 0) );END CONTROM;ARCHITECTURE A OF CONTROM ISSIGNAL DATAOUT: STD_LOGIC_VECTOR(25 DOWNTO 0);BEGIN PROCESS BEGIN CASE ADDR IS WHEN "" => DATAOUT<="

16、0000" WHEN "" => DATAOUT<="0000" -IN WHEN "" => DATAOUT<="0000" -MOV WHEN "" => DATAOUT<="1101" -LAD WHEN "" => DATAOUT<="0000" -ADD WHEN "" => DATAOUT<="0000" -INC

17、WHEN "" => DATAOUT<="0000" -JS WHEN "" => DATAOUT<="1110" -STOI WHEN "" => DATAOUT<="0000" -JMP WHEN "" => DATAOUT<="0000" -MUL WHEN "" => DATAOUT<="0000" -JNS WHEN "

18、;" => DATAOUT<="0000" -TEST WHEN "" => DATAOUT<="0000" -OUT WHEN "" => DATAOUT<="0000" WHEN "" => DATAOUT<="0000" WHEN "" => DATAOUT<="0000" WHEN OTHERS => DATAOUT<=&quo

19、t;0000" END CASE; UA(5 DOWNTO 0)<=DATAOUT(5 DOWNTO 0); O(19 DOWNTO 0)<=DATAOUT(25 DOWNTO 6); END PROCESS;END A; 程序中的25位控制信號(hào)就是按照上面確定的微指令代碼表確定的。編譯通過后生成了控制存儲(chǔ)器,接下來(lái)該生成微命令寄存器MCOMMAND,同樣也是通過VHDL來(lái)描述即可,它的實(shí)現(xiàn)代碼如下所示:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LO

20、GIC_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,CS_D,RAM_B,CS_I,ADDR_B,P1,P2:OUT STD_LOGIC );END MCOMMAND;ARCHITECTURE A OF MCOMMAND ISSIGNAL DATAOUT:STD_LOGIC_VECTOR

21、(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; LDAR<=DATAOUT(17) AND T3; LDIR<=DATAOUT(16) AND T3; LDRI<=DATAOUT(15) AND T4; LDPSW<=DATAOUT(14) AND T4; RS_B

22、<=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 T3); CS_D<=NOT(NOT DATAOUT(5) AND T3); RAM_B<=DATAOUT(4); CS_I<=DATAOUT(3); ADDR_B<=DATAOUT(2); P1<=DAT

23、AOUT(1); P2<=DATAOUT(0); END PROCESS;END A;編譯成功后創(chuàng)建圖形文件即可以生成微命令寄存器MCOMMAND,然后再分別生成微地址轉(zhuǎn)換器F1、F2、F3,三個(gè)器件代碼分別如下所示:F1:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.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 ISBEGIN D(5)<=UA5; D

24、(4)<=UA4; D(3)<=UA3; D(2)<=UA2; D(1)<=UA1; D(0)<=UA0;END A;F2:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY F2 IS PORT( D:IN STD_LOGIC_VECTOR(5 DOWNTO 0); UA5,UA4,UA3,UA2,UA1,UA0: OUT STD_LOGIC );END F2;ARCHITECTURE A OF F2 ISBEGIN UA5<=D(5); UA4<=D(4); UA3<=D(3); UA2<=D

25、(2); UA1<=D(1); UA0<=D(0);END A;F3:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY F3 IS PORT( D:IN STD_LOGIC_VECTOR(7 DOWNTO 0);UA7,UA6,UA5,UA4,UA3,UA2,UA1,UA0: OUT std_logic );END F3;ARCHITECTURE A OF F3 ISBEGINUA7<=D(7);UA6<=D(6);UA5<=D(5);UA4<=D(4);UA3<=D(3);UA2<=D(2);UA1

26、<=D(1);UA0<=D(0);END A;這些器件都生成玩后,可以進(jìn)行下一步設(shè)計(jì),也就是設(shè)計(jì)頂級(jí)電路,頂層電路是這樣的:我們已經(jīng)生成了CROM,我們還需要:算數(shù)邏輯單元ALU;狀態(tài)條件寄存器LS74;暫存器LS273;通用寄存器LS273;1:2分配器FEN2;3選1數(shù)據(jù)選擇器MUX3;5選1數(shù)據(jù)選擇器MUX5;程序計(jì)數(shù)器PC;地址寄存器LS273;ROM芯片ROM16;指令寄存器IR;時(shí)序產(chǎn)生器COUNTER。各個(gè)部件對(duì)應(yīng)的VHDL語(yǔ)言描述如下所示:ALU:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_

27、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 DOWNTO 0) ; SF,ZF: OUT STD_LOGIC );END ALU;ARCHITECTURE A OF ALU ISSIGNAL AA,BB,TEMP:STD_LOGIC_VECTOR(8 DOWNTO 0

28、);SIGNAL TEMP1:STD_LOGIC_VECTOR(7 DOWNTO 0);BEGIN PROCESSBEGIN 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); -CF<=TEMP(8); IF (TEMP="" OR TEMP="") THEN ZF<=&#

29、39;1' ELSE ZF<='0' END IF;ELSIF(S2='0' AND S1='0' AND S0='1') THEN -TEST TEMP1<=Y; SF<=TEMP1(7); ELSIF(S2='0' AND S1='1' AND S0='0') THEN -INC AA<='0'&Y; TEMP<=AA+1; ALUOUT<=TEMP(7 DOWNTO 0); -CF<=TEMP(8); I

30、F (TEMP="") THEN ZF<='1' ELSE ZF<='0' END IF; ELSIF(S2='0' AND S1='1' AND S0='1') THEN -DEC AA<='0'&Y; TEMP<=AA-1; ALUOUT<=TEMP(7 DOWNTO 0); -CF<=TEMP(8); IF (TEMP="") THEN ZF<='1' ELSE ZF<='0

31、' END IF; ELSIF(S2='1' AND S1='0' AND S0='0') THEN -AND TEMP1<=X AND Y; ALUOUT<=TEMP1; -CF<='0' IF (TEMP1="") THEN ZF<='1' ELSE ZF<='0' END IF; ELSIF(S2='1' AND S1='0' AND S0='1') THEN -OR TEMP1<=

32、X OR Y; ALUOUT<=TEMP1; -CF<='0' IF (TEMP1="") THEN ZF<='1' ELSE ZF<='0' END IF; ELSIF(S2='1' AND S1='1' AND S0='0') THEN -Rd->BUS ALUOUT<=Y;ELSIF(S2='1' AND S1='1' AND S0='1') THEN -MUL AA<='0&

33、#39;&X; BB<='0'&Y; TEMP<=AA*BB; ALUOUT<=TEMP(7 DOWNTO 0); IF(TEMP="" OR TEMP="") THEN ZF<='1' ELSE ZF<='0' END IF; ELSE ALUOUT<="" ; ZF<='0' END IF; END PROCESS;END A;狀態(tài)條件寄存器PSW:LIBRARY IEEE;USE IEEE.STD_LOGIC

34、_1164.ALL;ENTITY PSW ISPORT( C,Z,LDPSW: IN STD_LOGIC; ZF,SF: OUT STD_LOGIC );END PSW;ARCHITECTURE A OF PSW ISBEGIN PROCESS(LDPSW) BEGIN IF(LDPSW'EVENT AND LDPSW='1') THEN SF<=C; ZF<=Z; END IF; END PROCESS;END A;暫存器、通用寄存器、地址寄存器LS273:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY LS

35、273 ISPORT( D:IN STD_LOGIC_VECTOR(7 DOWNTO 0); CLK:IN STD_LOGIC; O:OUT STD_LOGIC_VECTOR(7 DOWNTO 0) );END LS273;ARCHITECTURE A OF LS273 ISBEGIN PROCESS(CLK) BEGIN IF(CLK'EVENT AND CLK='1') THEN O<=D; END IF; END PROCESS;END A;1:2分配器FEN2:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY

36、FEN2 ISPORT( X:IN STD_LOGIC_VECTOR(7 DOWNTO 0); WR,LED_B:IN STD_LOGIC; W1,W2:OUT STD_LOGIC_VECTOR(7 DOWNTO 0) );END FEN2;ARCHITECTURE A OF FEN2 ISBEGIN PROCESS(LED_B,WR) BEGIN IF(LED_B='0' AND WR='0') THEN W2<=X; ELSE W1<=X; END IF; END PROCESS;END A;3選1數(shù)據(jù)選擇器MUX3:LIBRARY IEEE;U

37、SE IEEE.STD_LOGIC_1164.ALL;ENTITY MUX3 ISPORT(ID:IN STD_LOGIC_VECTOR(7 DOWNTO 0);SW_B,CS:IN STD_LOGIC;N1,N2:IN STD_LOGIC_VECTOR(7 DOWNTO 0);EW:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);END MUX3;ARCHITECTURE A OF MUX3 ISBEGIN PROCESS(SW_B,CS) BEGIN IF(SW_B='0') THEN EW<=ID; ELSIF(CS='0')THE

38、N EW<=N2; ELSEEW<=N1;END IF; END PROCESS;END A;4選1數(shù)據(jù)選擇器MUX4:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY MUX4 ISPORT(R0,R1,R2,R3:IN STD_LOGIC_VECTOR(7 DOWNTO 0);X:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);I11,I10:IN STD_LOGIC);END MUX4;ARCHITECTURE A OF MUX4_1 ISBEGIN PROCESS BEGIN IF(I11='0'

39、; AND I10='0') THEN X<=R0; ELSIF(I11='0' AND I10='1')THEN X<=R1; ELSIF(I11='1' AND I10='0')THEN X<=R2; ELSEX<=R3; END IF; END PROCESS;END A;程序計(jì)數(shù)器PC:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.AL

40、L;ENTITY PC ISPORT( load,LDPC,CLR: IN STD_LOGIC; D: IN STD_LOGIC_VECTOR(7 DOWNTO 0); O: OUT STD_LOGIC_VECTOR(7 DOWNTO 0) );END PC;ARCHITECTURE A OF PC ISSIGNAL QOUT: STD_LOGIC_VECTOR(7 DOWNTO 0);BEGIN PROCESS(LDPC,CLR,load) BEGIN IF(CLR='0') THEN QOUT<="" ELSIF(LDPC'EVENT AN

41、D LDPC='1') THEN IF(load='0') THEN QOUT<=D; -BUS->PC ELSE QOUT<=QOUT+1; -PC+1 END IF; END IF; END PROCESS; O<=QOUT;END A;ROM芯片ROM:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY ROM IS PORT(DOUT:OUT STD_LOGIC_VE

42、CTOR(15 DOWNTO 0);ADDR:IN STD_LOGIC_VECTOR(7 DOWNTO 0);CS_I:IN STD_LOGIC);END ROM;ARCHITECTURE A OF ROM ISBEGINDOUT<="11011" WHEN ADDR="" AND CS_I='0' ELSE "00000" WHEN ADDR="" AND CS_I='0' ELSE "00000" WHEN ADDR="" AND C

43、S_I='0' ELSE "00000" WHEN ADDR="" AND CS_I='0' ELSE "00000" WHEN ADDR="" AND CS_I='0' ELSE "00000" WHEN ADDR="" AND CS_I='0' ELSE "00000" WHEN ADDR="" AND CS_I='0' ELSE "00000

44、" WHEN ADDR="" AND CS_I='0' ELSE "00100" WHEN ADDR="" AND CS_I='0' ELSE "11011" WHEN ADDR="" AND CS_I='0' ELSE "00000" WHEN ADDR="" AND CS_I='0' ELSE "00000" WHEN ADDR="" AN

45、D CS_I='0' ELSE "00000" WHEN ADDR="" AND CS_I='0' ELSE "10001" WHEN ADDR="" AND CS_I='0' ELSE "00000" WHEN ADDR="" AND CS_I='0' ELSE "01010" WHEN ADDR="" AND CS_I='0' ELSE "10

46、101" WHEN ADDR="" AND CS_I='0' ELSE "00000" WHEN ADDR="" AND CS_I='0' ELSE "00000" WHEN ADDR="" AND CS_I='0' ELSE "00000" WHEN ADDR="" AND CS_I='0' ELSE "01010" WHEN ADDR=""

47、 AND CS_I='0' ELSE "00000" WHEN ADDR="" AND CS_I='0' ELSE "10101" WHEN ADDR="" AND CS_I='0' ELSE "00000"END A;時(shí)序產(chǎn)生器COUNTER:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;E

48、NTITY COUNTER ISPORT( Q,CLR: IN STD_LOGIC; T1, T2,T3,T4: OUT STD_LOGIC );END COUNTER;ARCHITECTURE A OF COUNTER ISSIGNAL X: STD_LOGIC_VECTOR(1 DOWNTO 0);BEGIN PROCESS(Q,CLR) BEGIN IF(CLR='0') THEN T1<='0' T2<='0' T3<='0' T4<='0' X<="00"

49、 ELSIF(Q'EVENT AND Q='1') THEN X<=X+1; T2<=(NOT X(1) AND X(0); T3<=X(1) AND (NOT X(0); T4<=X(1) AND X(0); END IF; END PROCESS; END A;各個(gè)器件生成后,開始用自己設(shè)計(jì)的指令編寫匯編程序,程序如下所示: MOV R0,FBH ;記錄輸入次數(shù),從FBH開始遞加,同時(shí)作為指向RAM地址的指針 MOV R1,OOH ;R1寄存器初始化,用于存入輸入設(shè)備輸入的數(shù)據(jù) MOV R2,00H ;R2寄存器初始化,用于存儲(chǔ)平方和運(yùn)算的結(jié)果 MOV R3,00H ;R3寄存器初始化,用于儲(chǔ)存RAM取出的數(shù)據(jù)L1:IN1 R1 ;輸入數(shù)據(jù)存入R1STOI R1,(R0) ;將R1內(nèi)的數(shù)據(jù)存入RAM地址(R0)中INC R0 ;R0內(nèi)容加1TEST R0 ;對(duì)R0進(jìn)行測(cè)試,看其是否為負(fù)數(shù)JS L1 ;如果是負(fù)數(shù),說(shuō)明輸入不到5次,跳轉(zhuǎn)到L1繼續(xù)輸入數(shù)據(jù)

溫馨提示

  • 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ù)網(wǎng)僅提供信息存儲(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)論