




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、. 課程設(shè)計報告實踐課題: VHDL與數(shù)字系統(tǒng)課程設(shè)計 學(xué) 生:*指導(dǎo)教師:*、*系 別: 電子信息與電氣工程系 專 業(yè):電子科學(xué)與技術(shù) 班 級:*學(xué) 號:*一、設(shè)計任務(wù)用VHDL設(shè)計一個簡單的處理器,并完成相關(guān)的仿真測試。.設(shè)計要求:圖1是一個處理器的原理圖,它包含了一定數(shù)量的存放器、一個復(fù)用器、一個加法/減法器Addsub,一個計數(shù)器和一個控制單元。圖1 簡單處理器的電路圖數(shù)據(jù)傳輸實現(xiàn)過程:16位數(shù)據(jù)從DIN輸入到系統(tǒng)中,可以通過復(fù)用器分配給R0R7和A,復(fù)用器也允許數(shù)據(jù)從一個存放器傳通過Bus送到另外一個存放器。加法和減法的實現(xiàn)過程:復(fù)用器先將一個數(shù)據(jù)通過總線放到存放器A中,然后將另一個
2、數(shù)據(jù)放到總線上,加法/減法器對這兩個數(shù)據(jù)進展運算,運算結(jié)果存入存放器G中,G中的數(shù)據(jù)又可根據(jù)要求通過復(fù)用器轉(zhuǎn)存到其他存放器中。下表是該處理所支持的指令。操作功能mv R*, Rymvi R*, #Dadd R*, Rysub R*, RyR* RyR* DataR* R* + RyR* R* - RyR* Ry :將存放器Ry中的容復(fù)制到R*;Mvi R*,#D :將立即數(shù)存入存放器R*中去。 所有指令都按9位編碼取自DIN的高9位存儲在指令存儲器IR中,編編碼規(guī)則為III*YYY,III表示指令,*表示R*存放器,YYY表示Ry存放器。立即數(shù)#D是在mvi指令存儲到IR中之后,通過16位DI
3、N輸入的。 有一些指令,如加法指令和減法指令,需要在總線上屢次傳輸數(shù)據(jù),因此需要多個時鐘周期才能完成??刂茊卧褂昧艘粋€兩位計數(shù)器來區(qū)分這些指令執(zhí)行的每一個階段。當(dāng)Run信號置位時,處理器開場執(zhí)行DIN輸入指令。當(dāng)指令執(zhí)行完畢后,Done信號置位,下表列出四個指令在執(zhí)行過程中每一個時間段置位的控制信號。時間指令T0T1T2T3(mv):I0(mvi):I1(add):I2(sub):I3IRinIRinIRinIRinRYout,R*in,DoneDINout,R*in,DoneR*out,AinR*out,Ain-RYout,Gin,AddsubRYout,Gin,Addsub-Gout,R
4、*in,DoneGout,R*in,Done二、實現(xiàn)功能說明2.1 mv R*,Ry實現(xiàn)的功能:將存放器R*的值賦給存放器Ry以mv R0, R5為例1 計數(shù)器為00時,指令存放器的置位控制信號輸入端IRin=1有效,將DIN輸入的數(shù)據(jù)的高9位鎖存。置位的控制信號如圖3加粗黑線所示。圖32計數(shù)器為01時,首先控制單元根據(jù)設(shè)計器為00時輸入的指令,向復(fù)用器發(fā)出選通控制信號,復(fù)用器根據(jù)該控制信號讓R5的值輸出到總線上,然后控制單元控制存放器R0將總線上的值鎖存,完成整個存放器對存放器的賦值過程。置位的控制信號和數(shù)據(jù)流如圖4加粗黑線所示。圖42.2 mvi R*,#D實現(xiàn)的功能:將的立即數(shù)#D賦給存
5、放器R*以mv R0, #D為例1計數(shù)器為00時,指令存放器的置位控制信號輸入端IRin=1有效,將DIN輸入的數(shù)據(jù)的高9位鎖存。置位的控制信號如圖5加粗黑線所示。圖52計數(shù)器為01時,首先控制單元根據(jù)設(shè)計器為00時輸入的指令,向復(fù)用器發(fā)出選通控制信號,復(fù)用器根據(jù)該控制信號讓DIN的值輸出到總線上,然后控制單元控制存放器R0將總線上的值鎖存,完成整個立即數(shù)對存放器的賦值過程。置位的控制信號和數(shù)據(jù)流如圖6加粗黑線所示。圖62.3 add R*,Ry和sub R*,Ry實現(xiàn)的功能:將存放器Ry的值加上/減去存放器R*的值并賦給存放器R*以add/sub R0,R1為例。1計數(shù)器為00時,指令存放器
6、的置位控制信號輸入端IRin=1有效,將DIN輸入的數(shù)據(jù)的高9位鎖存。置位的控制信號如圖7加粗黑線所示。圖72計數(shù)器為01時,首先控制單元根據(jù)設(shè)計器為00時輸入的指令,向復(fù)用器發(fā)出選通控制信號,復(fù)用器根據(jù)該控制信號讓R0的值輸出到總線上,然后控制單元控制存放器A將總線上的值鎖存。置位的控制信號和數(shù)據(jù)流如圖8加粗黑線所示。圖83計數(shù)器為10時,首先控制單元根據(jù)設(shè)計器為00時輸入的指令,向復(fù)用器發(fā)出選通控制信號,復(fù)用器根據(jù)該控制信號讓R1的值輸出到總線上,然后控制單元控制加法/減法器addsub將存放器A的值和總線上的值相加/相減并輸出,接著存放器G將加法/減法器addsub的計算結(jié)果鎖存。置位的
7、控制信號和數(shù)據(jù)流如圖9加粗黑線所示。圖94計數(shù)器為11時,首先控制單元向復(fù)用器發(fā)出選通控制信號,復(fù)用器根據(jù)該控制信號讓存放器G的值輸出到總線上,存放器R0將總線上的值進展鎖存,完成整個存放器與對存放器見加減法的運算過程。置位的控制信號和數(shù)據(jù)流如圖10加粗黑線所示。圖10三、單元模塊設(shè)計說明4.1存放器Registe存放器R0R7、存放器A或存放器G : 用于數(shù)據(jù)的存儲。當(dāng)時鐘輸入clk的上升沿到來且rin=1時,將數(shù)據(jù)輸入端r*in15.0的數(shù)據(jù)鎖存到存放器中并從數(shù)據(jù)輸出端r*out15.0輸出;當(dāng)rin=0時,輸出端保持原來的值不變。存放器Registe的VHDL代碼:LIBRARY IEE
8、E;USE IEEE.STD_LOGIC_1164.ALL;ENTITY registe isport( clk:in std_logic; rin:in std_logic; r*in:in std_logic_vector(15 downto 0); r*out:out std_logic_vector(15 downto 0);end entity registe;architecture one of registe isbegin process(clk) begin if clkevent and clk=1 then if rin=1 then r*out=r*in; end i
9、f; end if; end process;end one;4.2指令存放器IR指令存放器IR用于對輸入的16為指令進展處理,取其高9位。當(dāng)時鐘輸入clk的上升沿到來且rin=1時,取數(shù)據(jù)輸入端r*in15.0的高9位將其鎖存到存放器中并從數(shù)據(jù)輸出端r*out8.0輸出;當(dāng)rin=0時,輸出端保持原來的值不變。指令存放器IR的VHDL代碼:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY IR isport( clk:in std_logic; rin:in std_logic; r*in:in std_logic_vector(15 downt
10、o 0); r*out:out std_logic_vector(8 downto 0);end entity IR;architecture one of IR isbegin process(clk) begin if clkevent and clk=1 then if rin=1 then r*out=r*in(15 downto 7); end if; end if; end process;end one;4.3加/減法器addsub加/減法器addsub用于處理兩個輸入的數(shù)據(jù)datain215.0 和datain115.0,當(dāng)控制端Addsub=1時,兩個數(shù)據(jù)輸入端datain2
11、15.0 和datain115.0相加并從數(shù)據(jù)輸出端dataout15.0輸出;當(dāng)控制端Addsub=0時,數(shù)據(jù)輸入端datain215.0 減去datain115.0,結(jié)果從數(shù)據(jù)輸出端dataout15.0輸出。加/減法器addsub的VHDL代碼:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;use ieee.std_logic_unsigned.all;ENTITY addsub isport( ain:in std_logic_vector(15 downto 0); bin:in std_logic_vector(15 downto 0); ads
12、ub:in bit; about:out std_logic_vector(15 downto 0);end entity addsub;architecture one of addsub issignal a,b:std_logic_vector(15 downto 0);beginprocess(adsub,ain,bin)beginif adsub=0 then about=ain+bin;elsif adsub=1 then about01101100不斷循環(huán);當(dāng)clear=1時清零端clear有效,對輸出Q1.0同步清零,與時鐘有關(guān)。計數(shù)器counter的VHDL代碼:librar
13、y ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity counter isport( clk:in std_logic; clear:in std_logic; count:out std_logic_vector(1 downto 0);end counter;architecture one of counter issignal c:std_logic_vector(1 downto 0);beginprocess(clk,clear)begin if clkevent and clk=1 th
14、en if(clear=1)then c=00; else c=c+1;end if; end if;end process; count=c;end one;4.5 復(fù)用器 multiple*ers復(fù)用器根據(jù)控制單元的控制信號將指定的輸入數(shù)據(jù)輸出到總線上。來自控制單元的控制信號為R0outR7out、Gout、DINout,輸入數(shù)據(jù)位來自存放器R0R7、存放器A、數(shù)據(jù)輸入端DIN,當(dāng)控制信號的*一位為1時,將其對應(yīng)的輸入數(shù)據(jù)輸出到總線上。復(fù)用器 multiple*ers的VHDl代碼:library ieee;use ieee.std_logic_1164.all;entity multip
15、le*ers isport ( din:in std_logic_vector(15 downto 0); gin:in std_logic_vector(15 downto 0); r0:in std_logic_vector(15 downto 0);r1:in std_logic_vector(15 downto 0);r2:in std_logic_vector(15 downto 0);r3:in std_logic_vector(15 downto 0);r4:in std_logic_vector(15 downto 0);r5:in std_logic_vector(15 do
16、wnto 0);r6:in std_logic_vector(15 downto 0);r7:in std_logic_vector(15 downto 0); ren:in bit_vector(7 downto 0); gen:in bit; dinen:in bit; dout:out std_logic_vector(15 downto 0);end multiple*ers;architecture bhv of multiple*ers isbegindout=gin when gen=1 else r0 when ren(0)=1 else r1 when ren(1)=1 el
17、se r2 when ren(2)=1 else r3 when ren(3)=1 else r4 when ren(4)=1 else r5 when ren(5)=1 else r6 when ren(6)=1 else r7 when ren(7)=1 else din when dinen=1 else 0000000000000000;end bhv;4.6控制單元control控制單元根據(jù)計數(shù)器發(fā)出的脈沖和DIN輸入的操作指令對整個系統(tǒng)的其他模塊進展控制,完成指定的操作??刂茊卧猚ontrol的VHDL代碼:library ieee;use ieee.std_logic_1164.
18、all;use ieee.std_logic_unsigned.all;entity control isport( reset:in std_logic; run:in std_logic; clk:in std_logic_vector(1 downto 0); irin:in std_logic_vector(8 downto 0); clear:out std_logic; irout:out std_logic; gout:out std_logic; dinout:out std_logic; rout:out std_logic_vector(7 downto 0); r0in:
19、out std_logic; r1in:out std_logic; r2in:out std_logic; r3in:out std_logic; r4in:out std_logic; r5in:out std_logic; r6in:out std_logic; r7in:out std_logic; ain:out std_logic; addsub:out std_logic; gin:out std_logic; done:out std_logic);end control;architecture one of control isbeginprocess(clk,run,re
20、set,irin)begin if(reset=0)then clear=1; irout=0; gout=0; dinout=0; rout=00000000; r0in=0; r1in=0; r2in=0; r3in=0; r4in=0; r5in=0; r6in=0; r7in=0; ain=0; addsub=0; gin=0; done clear=0; irout=1; gout=0; dinout=1; rout=00000000; r0in=0; r1in=0; r2in=0; r3in=0; r4in=0; r5in=0; r6in=0; r7in=0; ain=0; add
21、sub=0; gin=0; done=0; if run=0 then irout=1; else irout if(irin(8 downto 6)=000)then clear=1; irout=0; gout=0; dinout=0; ain=0; addsub=0; gin=0; doner0in=1;r1in=0;r2in=0;r3in=0;r4in=0;r5in=0;r6in=0;r7inr1in=1;r0in=0;r2in=0;r3in=0;r4in=0;r5in=0;r6in=0;r7inr2in=1;r0in=0;r1in=0;r3in=0;r4in=0;r5in=0;r6i
22、n=0;r7inr3in=1;r0in=0;r1in=0;r2in=0;r4in=0;r5in=0;r6in=0;r7inr4in=1;r0in=0;r1in=0;r2in=0;r3in=0;r5in=0;r6in=0;r7inr5in=1;r0in=0;r1in=0;r2in=0;r3in=0;r4in=0;r6in=0;r7inr6in=1;r0in=0;r1in=0;r2in=0;r3in=0;r4in=0;r5in=0;r7inr7in=1;r0in=0;r1in=0;r2in=0;r3in=0;r4in=0;r5in=0;r6innull;end case;case irin(2 d
23、ownto 0)is when000=routroutroutroutroutroutroutroutnull;end case; elsif(irin(8 downto 6)=001)then clear=1; irout=0; gout=0; dinout=1; rout=00000000; ain=0; addsub=0; gin=0; doner0in=1;r1in=0;r2in=0;r3in=0;r4in=0;r5in=0;r6in=0;r7inr1in=1;r0in=0;r2in=0;r3in=0;r4in=0;r5in=0;r6in=0;r7inr2in=1;r0in=0;r1i
24、n=0;r3in=0;r4in=0;r5in=0;r6in=0;r7inr3in=1;r0in=0;r1in=0;r2in=0;r4in=0;r5in=0;r6in=0;r7inr4in=1;r0in=0;r1in=0;r2in=0;r3in=0;r5in=0;r6in=0;r7inr5in=1;r0in=0;r1in=0;r2in=0;r3in=0;r4in=0;r6in=0;r7inr6in=1;r0in=0;r1in=0;r2in=0;r3in=0;r4in=0;r5in=0;r7inr7in=1;r0in=0;r1in=0;r2in=0;r3in=0;r4in=0;r5in=0;r6i
25、nnull;end case;elsif(irin(8 downto 6)=010 or irin(8 downto 6)=011)then clear=0; irout=0; gout=0; dinout=0; r0in=0; r1in=0; r2in=0; r3in=0; r4in=0; r5in=0; r6in=0; r7in=0; ain=1; addsub=0; gin=0; doneroutroutroutroutroutroutroutroutnull;end case; else clear=1; irout=0; gout=0; dinout=0; rout=00000000
26、; r0in=0; r1in=0; r2in=0; r3in=0; r4in=0; r5in=0; r6in=0; r7in=0; ain=0; addsub=0; gin=0; done if(irin(8 downto 6)=010)then clear=0; irout=0; gout=0; dinout=0; r0in=0; r1in=0; r2in=0; r3in=0; r4in=0; r5in=0; r6in=0; r7in=0; ain=0; addsub=0; gin=1; doneroutroutroutroutroutroutroutroutnull;end case; e
27、lsif(irin(8 downto 6)=011)then clear=0; irout=0; gout=0; dinout=0; r0in=0; r1in=0; r2in=0; r3in=0; r4in=0; r5in=0; r6in=0; r7in=0; ain=0; addsub=1; gin=1; doneroutroutroutroutroutroutroutroutnull;end case; else clear=1; irout=0; gout=0; dinout=0; rout=00000000; r0in=0; r1in=0; r2in=0; r3in=0; r4in=0
28、; r5in=0; r6in=0; r7in=0; ain=0; addsub=0; gin=0; done if(irin(8 downto 6)=010 or irin(8 downto 6)=011)then clear=0; irout=0; gout=1; dinout=0; rout=00000000; ain=0; addsub=0; gin=0; doner0in=1;r1in=0;r2in=0;r3in=0;r4in=0;r5in=0;r6in=0;r7inr1in=1;r0in=0;r2in=0;r3in=0;r4in=0;r5in=0;r6in=0;r7inr2in=1;
29、r0in=0;r1in=0;r3in=0;r4in=0;r5in=0;r6in=0;r7inr3in=1;r0in=0;r1in=0;r2in=0;r4in=0;r5in=0;r6in=0;r7inr4in=1;r0in=0;r1in=0;r2in=0;r3in=0;r5in=0;r6in=0;r7inr5in=1;r0in=0;r1in=0;r2in=0;r3in=0;r4in=0;r6in=0;r7inr6in=1;r0in=0;r1in=0;r2in=0;r3in=0;r4in=0;r5in=0;r7inr7in=1;r0in=0;r1in=0;r2in=0;r3in=0;r4in=0;
30、r5in=0;r6innull;end case; else clear=0; irout=0; gout=0; dinout=0; rout=00000000; r0in=0; r1in=0; r2in=0; r3in=0; r4in=0; r5in=0; r6in=0; r7in=0; ain=0; addsub=0; gin=0; donenull;end case; end if;end process;end one; 4.7 數(shù)碼管顯示led 采集存放器R0R7的值作為led的輸入,將各存放器值的低四位以19、AF分別顯示在8個數(shù)碼管,從而觀察各存放器值的變化。ledout6.0
31、為數(shù)碼管段碼輸出端,control2.0 為第幾個數(shù)碼管有效的數(shù)碼管選擇端輸出。數(shù)碼管顯示led的VHDL代碼:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity led isport( clk:in std_logic; reg_0:in std_logic_vector(15 downto 0); reg_1:in std_logic_vector(15 downto 0); reg_2:in std_logic_vector(15 downto 0); reg_3:in std_l
32、ogic_vector(15 downto 0); reg_4:in std_logic_vector(15 downto 0); reg_5:in std_logic_vector(15 downto 0); reg_6:in std_logic_vector(15 downto 0); reg_7:in std_logic_vector(15 downto 0); ledout:out std_logic_vector(6 downto 0); control:out std_logic_vector(2 downto 0);end led;architecture one of led
33、issignal controls:std_logic_vector(2 downto 0);signal led0,led1,led2,led3,led4,led5,led6,led7,outer:std_logic_vector(3 downto 0);beginled0=reg_0(3 downto 0);led1=reg_1(3 downto 0);led2=reg_2(3 downto 0);led3=reg_3(3 downto 0);led4=reg_4(3 downto 0);led5=reg_5(3 downto 0);led6=reg_6(3 downto 0);led7=
34、reg_7(3 downto 0);process(clk)begin if clkevent and clk=1 then if controls=111 then controls=000; else controls=controls+1; end if;end if;controlouterouterouterouterouterouterouterouterouter ledout ledout ledout ledout ledout ledout ledout ledout ledout ledout ledout ledout ledout ledout ledout ledo
35、ut ledout=*;end case;end process;end one;四、處理器各個模塊的連接采用原理圖連接的方法進展各個模塊間的連接,連接后的原理圖見附錄1。五、操作說明及功能、時序仿真效果 5.1 功能仿真將R0- 6 , R0R1 , R0 R1R0 , R0+ R1R0 . 仿真結(jié)果如下: 5.2 時序仿真 1、按設(shè)計說明書的仿真圖中的數(shù)據(jù)進展設(shè)置,仿真結(jié)果如下: 2、將R3 - 1 , R5 - 6 , R5 R3R2 , R5 + R3R5 . 仿真結(jié)果如下: 5.3 操作說明Clock 接的是數(shù)字時鐘 1KHz,DIN15.0管腳分配到開關(guān)K1K12、按鍵S5S8,Resetn管腳分配到按鍵S1,Run管腳分配到S2,R0R7的低四位值分別顯示在led1led8數(shù)碼管中。將Run改為低電平有效因為按鍵按下為低電平,如此更好操作。Busout15.0高12位管腳分配到二極管L1L12。1、mvi R0,#D D=5 先將DIN置為0010 0000 0000 FFFF只與高六位有關(guān)即K3向上撥為高電平,其余開關(guān)向下
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 【正版授權(quán)】 ISO/TR 24589-1:2024 EN Examples of good practice for the management of assets of water supply and wastewater systems - Part 1: Water supply
- 【正版授權(quán)】 ISO 24591-1:2024 EN Smart water management - Part 1: General guidelines and governance
- 2025貝殼房產(chǎn)中介加盟店客戶滿意度調(diào)查及提升措施合同
- 2025年房屋拆除工程環(huán)境保護與監(jiān)測合同
- 教學(xué)理念與實踐探索計劃
- 課堂游戲與學(xué)習(xí)效果的關(guān)系計劃
- 圖書發(fā)行渠道拓展計劃
- 主管年度工作方案計劃
- 公司企業(yè)文化建設(shè)的年度工作計劃
- 七年級下冊《垂線》課件與練習(xí)
- 中國高血壓防治指南(2024年修訂版)
- 春節(jié)后復(fù)工安全教育培訓(xùn)考試試題及答案
- GB/T 4340.1-2024金屬材料維氏硬度試驗第1部分:試驗方法
- 義務(wù)教育物理課程標(biāo)準(zhǔn)(2022年版)測試題文本版(附答案)
- 拆遷征收代理服務(wù)投標(biāo)方案
- Q∕CR 562.2-2017 鐵路隧道防排水材料 第2部分:止水帶
- (完整版)倉儲客戶需求調(diào)研表.doc
- 鍋爐檢修培訓(xùn)計劃
- 焊接專業(yè)監(jiān)理實施細則
- 孕產(chǎn)婦配偶艾滋病、梅毒檢測服務(wù)流程
- 《醫(yī)療機構(gòu)基本標(biāo)準(zhǔn)(試行)》2017版
評論
0/150
提交評論