




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
EDA技術實用教程第7章有限狀態(tài)機設計7.1一般有限狀態(tài)機的設計7.1.1用戶自定義數(shù)據(jù)類型定義語句TYPE語句用法如下:TYPE數(shù)據(jù)類型名IS數(shù)據(jù)類型定義OF基本數(shù)據(jù)類型;或TYPE數(shù)據(jù)類型名IS數(shù)據(jù)類型定義;以下列出了兩種不同的定義方式:TYPEst1ISARRAY(0TO10
)OFSTD_LOGIC;TYPEweekIS(sun,mon,tue,wed,thu,fri,sat);TYPEPCIbusstate
is(idle,busbusy,write,read);7.1一般有限狀態(tài)機的設計枚舉類型TYPEm_stateIS(st0,st1,st2,st3,st4,st5);SIGNALpresent_state,next_state:m_state;布爾數(shù)據(jù)類型的定義語句是:TYPEBOOLEANIS(FALSE,TRUE);TYPEmy_logicIS('1','Z','U','0');SIGNALs1:my_logic;s1<='Z';7.1一般有限狀態(tài)機的設計7.1.1用戶自定義數(shù)據(jù)類型定義語句子類型SUBTYPE的語句格式如下:SUBTYPE子類型名IS基本數(shù)據(jù)類型RANGE約束范圍;
SUBTYPEdigitsISINTEGERRANGE0to9;7.1.2為什么要使用狀態(tài)機7.1一般有限狀態(tài)機的設計
有限狀態(tài)機克服了純硬件數(shù)字系統(tǒng)順序方式控制不靈活的缺點。
狀態(tài)機的結(jié)構(gòu)模式相對簡單。
狀態(tài)機容易構(gòu)成性能良好的同步時序邏輯模塊。
狀態(tài)機的VHDL表述豐富多樣。
在高速運算和控制方面,狀態(tài)機更有其巨大的優(yōu)勢。
就可靠性而言,狀態(tài)機的優(yōu)勢也是十分明顯的。7.1.3一般有限狀態(tài)機的設計7.1一般有限狀態(tài)機的設計1.說明部分2.主控時序進程ARCHITECTURE...IS
TYPEFSM_STIS(s0,s1,s2,s3);
SIGNAL
current_state,next_state:FSM_ST;...負責狀態(tài)機運轉(zhuǎn)和在時鐘驅(qū)動下負責狀態(tài)轉(zhuǎn)換的進程3.主控組合進程7.1.3一般有限狀態(tài)機的設計
主控組合進程的任務是根據(jù)外部輸入的控制信號(包括來自狀態(tài)機外部的信號和來自狀態(tài)機內(nèi)部其它非主控的組合或時序進程的信號),或(和)當前狀態(tài)的狀態(tài)值確定下一狀態(tài)(next_state)的取向,即next_state的取值內(nèi)容,以及確定對外輸出或?qū)?nèi)部其它組合或時序進程輸出控制信號的內(nèi)容。4.輔助進程7.1.3一般有限狀態(tài)機的設計圖7-1
一般狀態(tài)機結(jié)構(gòu)框圖工作示意圖用于配合狀態(tài)機工作的組合進程或時序進程【例7-1】LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYs_machineISPORT(clk,reset:INSTD_LOGIC;state_inputs:INSTD_LOGIC_VECTOR(0TO1);comb_outputs:OUTINTEGERRANGE0TO15);ENDs_machine;ARCHITECTUREbehvOFs_machineISTYPEFSM_STIS(s0,s1,s2,s3);SIGNALcurrent_state,next_state:FSM_ST;BEGINREG:PROCESS(reset,clk)BEGINIFreset='1'THENcurrent_state<=s0;ELSIFclk='1'ANDclk'EVENTTHENcurrent_state<=next_state;ENDIF;ENDPROCESS;COM:PROCESS(current_state,state_Inputs)BEGINCASEcurrent_stateISWHENs0=>comb_outputs<=5;IFstate_inputs="00"THENnext_state<=s0;ELSEnext_state<=s1;ENDIF;WHENs1=>comb_outputs<=8;IFstate_inputs="00"THENnext_state<=s1;ELSEnext_state<=s2;ENDIF;WHENs2=>comb_outputs<=12;IFstate_inputs="11"THENnext_state<=s0;ELSEnext_state<=s3;ENDIF;WHENs3=>comb_outputs<=14;IFstate_inputs="11"THENnext_state<=s3;ELSEnext_state<=s0;ENDIF;ENDcase;ENDPROCESS;ENDbehv;圖7-2例7-1狀態(tài)機的工作時序圖7.1.3一般有限狀態(tài)機的設計有限狀態(tài)機finitestatemachine(FSM)狀態(tài)圖statediagram狀態(tài)表statetable7.2Moore型有限狀態(tài)機的設計7.2.1三進程有限狀態(tài)機CE CSRCK12/8A0 工作狀態(tài)
0 X X X X 禁止
X 1 X X X 禁止
1 0 0 X 0 啟動12位轉(zhuǎn)換
1 0 0 X 1 啟動8位轉(zhuǎn)換
1 0 1 1 X 12位并行輸出有效
1 0 1 0 0 高8位并行輸出有效
1 0 1 0 1 低4位加上尾隨4個0有效表7-1AD574邏輯控制真值表(X表示任意)7.2.1三進程有限狀態(tài)機圖7-3AD574工作時序7.2.1三進程有限狀態(tài)機圖7-4AD574工作時序PROCESSREG時序進程PROCESSCOM組合進程PROCESSLATCH鎖存器current_statenext_stateLOCK狀態(tài)機FSMFPGA/CPLDCLK
CSA0RCK12/8STATUSD[11..0]AD574Q[11..0]模擬信號輸入采樣數(shù)據(jù)輸出【例7-2】LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYAD574ISPORT(D:INSTD_LOGIC_VECTOR(11DOWNTO0);CLK,STATUS:INSTD_LOGIC;--狀態(tài)機時鐘CLK,AD574狀態(tài)信號STATUSLOCK0:OUTSTD_LOGIC;--內(nèi)部鎖存信號LOCK的測試信號
CS,A0,RC,K12X8:OUTSTD_LOGIC;--AD574控制信號
Q:OUTSTD_LOGIC_VECTOR(11DOWNTO0));--鎖存數(shù)據(jù)輸出ENDAD574;ARCHITECTUREbehavOFAD574ISTYPEstatesIS(st0,st1,st2,st3,st4);SIGNALcurrent_state,next_state:states:=st0;SIGNALREGL:STD_LOGIC_VECTOR(11DOWNTO0);SIGNALLOCK:STD_LOGIC;BEGINK12X8<='1';LOCK0<=LOCK;COM1:PROCESS(current_state,STATUS)--決定轉(zhuǎn)換狀態(tài)的進程
接下頁7.2.1三進程有限狀態(tài)機BEGINCASEcurrent_stateISWHENst0=>next_state<=st1;WHENst1=>next_state<=st2;WHENst2=>IF(STATUS='1')THENnext_state<=st2;ELSEnext_state<=st3;ENDIF;WHENst3=>next_state<=st4;WHENst4=>next_state<=st0;WHENOTHERS=>next_state<=st0;ENDCASE;ENDPROCESSCOM1;COM2:PROCESS(current_state)--輸出控制信號的進程
BEGINCASEcurrent_stateISWHENst0=>CS<='1';A0<='1';RC<='1';LOCK<='0';--初始化WHENst1=>CS<='0';A0<='0';RC<='0';LOCK<='0';--啟動12位轉(zhuǎn)換WHENst2=>CS<='0';A0<='0';RC<='0';LOCK<='0';--等待轉(zhuǎn)換WHENst3=>CS<='0';A0<='0';RC<='1';LOCK<='0';--12位并行輸出有效WHENst4=>CS<='0';A0<='0';RC<='1';LOCK<='1';--鎖存數(shù)據(jù)WHENOTHERS=>CS<='1';A0<='1';RC<='1';LOCK<='0';--其它情況返回初始態(tài)
接下頁接上頁ENDCASE;ENDPROCESSCOM2;REG:PROCESS(CLK)--時序進程
BEGINIF(CLK'EVENTANDCLK='1')THENcurrent_state<=next_state;ENDIF;ENDPROCESSREG;LATCH1:PROCESS(LOCK)--數(shù)據(jù)鎖存器進程
BEGINIFLOCK='1'ANDLOCK'EVENTTHENREGL<=D;ENDIF;ENDPROCESS;Q<=REGL;ENDbehav;接上頁7.2.1三進程有限狀態(tài)機圖7-6AD574采樣狀態(tài)機工作時序單進程有限狀態(tài)機【例7-3】
COM:PROCESS(current_state,STATUS)BEGINCASEcurrent_stateISWHENst0=>next_state<=st1;CS<='1';A0<='1';RC<='1';LOCK<='0';WHENst1=>next_state<=st2;CS<='0';A0<='0';RC<='0';LOCK<='0';WHENst2=>IF(STATUS='1')THENnext_state<=st2;ELSEnext_state<=st3;ENDIF;CS<='0';A0<='0';RC<='0';LOCK<='0';WHENst3=>next_state<=st4;CS<='0';A0<='0';RC<='1';LOCK<='0';WHENst4=>next_state<=st0;CS<='0';A0<='0';RC<='1';LOCK<='1';WHENOTHERS=>next_state<=st0;ENDCASE;ENDPROCESSCOM;7.2.2單進程Moore型有限狀態(tài)機【例7-4】LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYMOORE1ISPORT(DATAIN:INSTD_LOGIC_VECTOR(1DOWNTO0);CLK,RST:INSTD_LOGIC;Q:OUTSTD_LOGIC_VECTOR(3DOWNTO0));ENDMOORE1;ARCHITECTUREbehavOFMOORE1ISTYPEST_TYPEIS(ST0,ST1,ST2,ST3,ST4);SIGNALC_ST:ST_TYPE;BEGINPROCESS(CLK,RST)BEGINIFRST='1'THENC_ST<=ST0;Q<="0000";ELSIFCLK'EVENTANDCLK='1'THEN
接下頁CASEC_STISWHENST0=>IFDATAIN="10"THENC_ST<=ST1;ELSEC_ST<=ST0;ENDIF;Q<="1001";WHENST1=>IFDATAIN="11"THENC_ST<=ST2;ELSEC_ST<=ST1;ENDIF;Q<="0101";WHENST2=>IFDATAIN="01"THENC_ST<=ST3;ELSEC_ST<=ST0;ENDIF;Q<="1100";WHENST3=>IFDATAIN="00"THENC_ST<=ST4;ELSEC_ST<=ST2;ENDIF;Q<="0010";WHENST4=>IFDATAIN="11"THENC_ST<=ST0;ELSEC_ST<=ST3;ENDIF;Q<="1001";WHENOTHERS=>C_ST<=ST0;ENDCASE;ENDIF;ENDPROCESS;ENDbehav;接上頁圖7-7例7-4狀態(tài)機綜合后的RTL電路模塊圖7.2.2單進程Moore型有限狀態(tài)機7.2.2單進程Moore型有限狀態(tài)機圖7-8例7-4單進程狀態(tài)機工作時序ARCHITECTUREbehavOFMOORE1ISTYPEST_TYPEIS(ST0,ST1,ST2,ST3,ST4);SIGNALC_ST,N_ST:ST_TYPE;BEGINREG:PROCESS(reset,clk)BEGINIFreset='1'THENC_ST<=sT0;ELSIFclk='1'ANDclk'EVENTTHENC_ST<=N_ST;ENDIF;ENDPROCESS;
PROCESS(CLK,RST)BEGINCASEC_STISWHENST0=>IFDATAIN="10"THENN_ST<=ST1;ELSEN_ST<=ST0;ENDIF;Q<="1001";WHENST1=>IFDATAIN="11"THENN_ST<=ST2;ELSEN_ST<=ST1;ENDIF;Q<="0101";WHENST2=>IFDATAIN="01"THENN_ST<=ST3;ELSEN_ST<=ST0;ENDIF;Q<="1100";WHENST3=>IFDATAIN="00"THENN_ST<=ST4;ELSEN_ST<=ST2;ENDIF;Q<="0010";WHENST4=>IFDATAIN=“11”THENN_ST<=ST0;ELSEN_ST<=ST3;ENDIF;Q<="1001";WHENOTHERS=>N_ST<=ST0;ENDCASE;ENDIF;ENDPROCESS;ENDbehav;7.2.2單進程Moore型有限狀態(tài)機圖7-9對應于例7-4的2進程狀態(tài)機工作時序圖7.3Mealy型有限狀態(tài)機的設計【例7-5】LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYMEALY1ISPORT(CLK,DATAIN,RESET:INSTD_LOGIC;Q:OUTSTD_LOGIC_VECTOR(4DOWNTO0));ENDMEALY1;ARCHITECTUREbehavOFMEALY1ISTYPEstatesIS(st0,st1,st2,st3,st4);SIGNALSTX:states;BEGINCOMREG:PROCESS(CLK,RESET)BEGIN--決定轉(zhuǎn)換狀態(tài)的進程
IFRESET='1'THENSTX<=ST0;ELSIFCLK'EVENTANDCLK='1'THEN
接下頁CASESTXISWHENst0=>IFDATAIN='1'THENSTX<=st1;ENDIF;WHENst1=>IFDATAIN='0'THENSTX<=st2;ENDIF;WHENst2=>IFDATAIN='1'THENSTX<=st3;ENDIF;WHENst3=>IFDATAIN='0'THENSTX<=st4;ENDIF;WHENst4=>IFDATAIN='1'THENSTX<=st0;ENDIF;WHENOTHERS=>STX<=st0;ENDCASE;ENDIF;ENDPROCESSCOMREG;COM1:PROCESS(STX,DATAIN)BEGIN--輸出控制信號的進程
CASESTXISWHENst0=>IFDATAIN='1'THENQ<="10000";ELSEQ<="01010";ENDIF;WHENst1=>IFDATAIN='0'THENQ<="10111";ELSEQ<="10100";ENDIF;WHENst2=>IFDATAIN='1'THENQ<="10101";ELSEQ<="10011";ENDIF;WHENst3=>IFDATAIN='0'THENQ<="11011";ELSEQ<="01001";ENDIF;
WHENst4=>IFDATAIN='1'THENQ<="11101";ELSEQ<="01101";ENDIF;WHENOTHERS=>Q<="00000";ENDCASE;ENDPROCESSCOM1;ENDbehav;接上頁圖7-10例7-5狀態(tài)機工作時序圖【例7-6】MEALY2LIBRARYIEEE;--MEALYFSMUSEIEEE.STD_LOGIC_1164.ALL;ENTITYMEALY2ISPORT(CLK,DATAIN,RESET:INSTD_LOGIC;Q:OUTSTD_LOGIC_VECTOR(4DOWNTO0));ENDMEALY2;ARCHITECTUREbehavOFMEALY2ISTYPEstatesIS(st0,st1,st2,st3,st4);SIGNALSTX:states;SIGNALQ1:STD_LOGIC_VECTOR(4DOWNTO0);BEGINCOMREG:PROCESS(CLK,RESET)--決定轉(zhuǎn)換狀態(tài)的進程
BEGINIFRESET='1'THENSTX<=ST0;ELSIFCLK'EVENTANDCLK='1'THENCASESTXISWHENst0=>IFDATAIN='1'THENSTX<=st1;ENDIF;WHENst1=>IFDATAIN='0'THENSTX<=st2;ENDIF;WHENst2=>IFDATAIN='1'THENSTX<=st3;ENDIF;WHENst3=>IFDATAIN='0'THENSTX<=st4;ENDIF;WHENst4=>IFDATAIN='1'THENSTX<=st0;ENDIF;WHENOTHERS=>STX<=st0;ENDCASE;接下頁ENDIF;ENDPROCESSCOMREG;COM1:PROCESS(STX,DATAIN,CLK)--輸出控制信號的進程
VARIABLEQ2:STD_LOGIC_VECTOR(4DOWNTO0);BEGINCASESTXISWHENst0=>IFDATAIN='1'THENQ2:="10000";ELSEQ2:="01010";ENDIF;WHENst1=>IFDATAIN='0'THENQ2:="10111";ELSEQ2:="10100";ENDIF;WHENst2=>IFDATAIN='1'THENQ2:="10101";ELSEQ2:="10011";ENDIF;WHENst3=>IFDATAIN='0'THENQ2:="11011";ELSEQ2:="01001";ENDIF;WHENst4=>IFDATAIN='1'THENQ2:="11101";ELSEQ2:="01101";ENDIF;WHENOTHERS=>Q2:="00000";ENDCASE;接下頁IFCLK'EVENTANDCLK='1'THENQ1<=Q2;ENDIF;ENDPROCESSCOM1;Q<=Q1;ENDbehav;接上頁圖7-11例7-6狀態(tài)機工作時序圖7.4狀態(tài)編碼7.4.1狀態(tài)位直接輸出型編碼
典型應用為計數(shù)器實現(xiàn),將狀態(tài)編碼直接輸出作為控制信號,但要求對狀態(tài)機各狀態(tài)的編碼作特殊的選擇,以適應控制時序的要求。又稱為直接輸出型狀態(tài)機PROCESSREG時序進程PROCESSCOM組合進程PROCESSLATCH鎖存器current_statenext_stateLOCK狀態(tài)機FSMFPGA/CPLDCLK
CSA0RCK12/8STATUSD[11..0]AD574Q[11..0]模擬信號輸入采樣數(shù)據(jù)輸出每一位的編碼值都賦予了實際的控制功能,即:CS=current_state(4);A0=current_state(3);RC=current_state(2);LOCK=current_state(1)。表7-2控制信號狀態(tài)編碼表【例7-7】LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYAD574AISPORT(D:INSTD_LOGIC_VECTOR(11DOWNTO0);CLK,STATUS:INSTD_LOGIC;OUT4:OUTSTD_LOGIC_VECTOR(3DOWNTO0);Q:OUTSTD_LOGIC_VECTOR(11DOWNTO0));ENDAD574A;ARCHITECTUREbehavOFAD574AISSIGNALcurrent_state,next_state:STD_LOGIC_VECTOR(4DOWNTO0);CONSTANTst0:STD_LOGIC_VECTOR(4DOWNTO0):="11100";CONSTANTst1:STD_LOGIC_VECTOR(4DOWNTO0):="00001";CONSTANTst2:STD_LOGIC_VECTOR(4DOWNTO0):="00000";CONSTANTst3:STD_LOGIC_VECTOR(4DOWNTO0):="00100";CONSTANTst4:STD_LOGIC_VECTOR(4DOWNTO0):="00110";SIGNALREGL:STD_LOGIC_VECTOR(11DOWNTO0);SIGNALLK:STD_LOGIC;BEGINCOM1:PROCESS(current_state,STATUS)--決定轉(zhuǎn)換狀態(tài)的進程
接下頁BEGINCASEcurrent_stateISWHENst0=>next_state<=st1;WHENst1=>next_state<=st2;WHENst2=>IF(STATUS='1')THENnext_state<=st2;ELSEnext_state<=st3;ENDIF;WHENst3=>next_state<=st4;WHENst4=>next_state<=st0;WHENOTHERS=>next_state<=st0;ENDCASE;OUT4<=current_state(4DOWNTO1);ENDPROCESSCOM1;REG:PROCESS(CLK)--時序進程
BEGINIF(CLK'EVENTANDCLK='1')THENcurrent_state<=next_state;ENDIF;ENDPROCESSREG;LK<=current_state(1);LATCH1:PROCESS(LK)--數(shù)據(jù)鎖存器進程
BEGINIFLK='1'ANDLK'EVENTTHENREGL<=D;接下頁ENDIF;ENDPROCESS;Q<=REGL;ENDbehav;接上頁圖7-12例7-7狀態(tài)機工作時序圖7.4.2順序編碼表7-3編碼方式【例7-8】...SIGNALCRURRENT_STATE,NEXT_STATE:STD_LOGIC_VECTOR(2DOWNTO0);CONSTANTST0:STD_LOGIC_VECTOR(2DOWNTO0):="000";CONSTANTST1:STD_LOGIC_VECTOR(2DOWNTO0):="001";CONSTANTST2:STD_LOGIC_VECTOR(2DOWNTO0):="010";CONSTANTST3:STD_LOGIC_VECTOR(2DOWNTO0):="011";CONSTANTST4:STD_LOGIC_VECTOR(2DOWNTO0):="100";BEGINCASEcurrent_stateISWHENst0=>next_state<=st1;WHENst1=>next_state<=st2;WHENst2=>IF(STATUS='1')THENnext_state<=st2;ELSEnext_state<=st3;ENDIF;WHENst3=>next_state<=st4;WHENst4=>next_state<=st0;WHENOTHERS=>next_state<=st0;ENDCASE;ENDPROCESSCOM1;COM2:PROCESS(current_state)--輸出控制信號的進程
BEGINCASEcurrent_stateISWHENst0=>CS<='1';A0<='1';RC<='1';LOCK<='0';--初始化WHENst1=>CS<='0';A0<='0';RC<='0';LOCK<='0';--啟動12位轉(zhuǎn)換WHENst2=>CS<='0';A0<='0';RC<='0';LOCK<='0';--等待轉(zhuǎn)換WHENst3=>CS<='0';A0<='0';RC<='1';LOCK<='0';--12位并行輸出有效WHENst4=>CS<='0';A0<='0';RC<='1';LOCK<='1';--鎖存數(shù)據(jù)WHENOTHERS=>CS<='1';A0<='1';RC<='1';LOCK<='0';--其它情況返回初始態(tài)
接下頁ENDCASE;ENDPROCESSCOM2;REG:PROCESS(CLK)--時序進程
BEGINIF(CLK'EVENTANDCLK='1')THENcurrent_state<=next_state;ENDIF;ENDPROCESSREG;LATCH1:PROCESS(LOCK)--數(shù)據(jù)鎖存器進程
BEGINIFLOCK='1'ANDLOCK'EVENTTHENREGL<=D;ENDIF;ENDPROCESS;Q<=REGL;ENDbehav;7.4.3一位熱碼編碼(One-hotencoding)一位熱碼編碼方式就是用n個觸發(fā)器來實現(xiàn)具有n個狀態(tài)的狀態(tài)機,狀態(tài)機中的每一個狀態(tài)都由其中一個觸發(fā)器的狀態(tài)表示。圖7-13一位熱碼編碼方式選擇窗狀態(tài)機編碼方式設置7.5狀態(tài)機剩余狀態(tài)處理未被定義的編碼組合,稱為非法狀態(tài)。采用容錯技術對非法狀態(tài)進行處理,基本步驟為:1)首先確定非法狀態(tài)的數(shù)目2)在枚舉類型中定義這個非法狀態(tài)3)定義轉(zhuǎn)移出非法狀態(tài)的代碼采用狀態(tài)設置Whenst_ilg1=>next_state<=st0;Whenst_ilg2=>nect_state<=st1;……【例7-9】采用Others語句...TYPEstatesIS(st0,st1,st2,st3,st4,st_ilg1,st_ilg2,st_ilg3);SIGNALcurrent_state,next_state:states;...COM:PROCESS(current_state,state_Inputs)--組合邏輯進程BEGINCASEcurrent_stateIS--確定當前狀態(tài)的狀態(tài)值...
WHENOTHERS=>next_state<=st0;ENDcase;【例7-10】采用一位熱碼編碼時...alarm<=(st0AND(st1ORst2ORst3ORst4ORst5))OR(st1AND(st0ORst2ORst3ORst4ORst5))OR(st2AND(st0ORst1ORst3ORst4ORst5))OR(st3AND(st0ORst1ORst2ORst4ORst5))OR(st4AND(st0ORst1ORst2ORst3ORst5))OR(st5AND(st0ORst1ORst2ORst3ORst4));7.6.1AD采樣系統(tǒng)頂層電路設計圖ADC0809采樣電路系統(tǒng)7.6LPM模塊的VHDL文本方式調(diào)用7.6.2編輯定制LPM_RAM模塊利用LPM模塊LPM_RAM生成元件的方法1選菜單file—Megawizardpluginmanager,選擇“createanew….”2選擇模塊,鍵入文件名3選擇數(shù)據(jù)寬度,地址線寬度4選擇初始配置5完成定制【例】
LIBRARYieee;USEieee.std_logic_1164.all;ENTITYRAM9ISPORT(address:INSTD_LOGIC_VECTOR(7DOWNTO0);--8位地址輸入
inclock:INSTD_LOGIC;--數(shù)據(jù)寫入時鐘
we:INSTD_LOGIC;--寫允許信號
data:INSTD_LOGIC_VECTOR(7DOWNTO0);--8位寫入數(shù)據(jù)q:OUTSTD_LOGIC_VECTOR(7DOWNTO0));--8位RAM數(shù)據(jù)輸出ENDRAM1;ARCHITECTURESYNOFRAM1ISSIGNALsub_wire0:STD_LOGIC_VECTOR(7DOWNTO0);COMPONENTlpm_ram_dqGENERIC(lpm_width:NATURAL;--類屬RAM數(shù)據(jù)寬度自然數(shù)數(shù)據(jù)類型
lpm_widthad:NATURAL;--類屬RAM地址線位寬自然數(shù)數(shù)據(jù)類型
lpm_indata,lpm_address_control,lpm_outdata,lpm_hint:STRING);PORT(address:INSTD_LOGIC_VECTOR(7DOWNTO0);
we,inclock:INSTD_LOGIC;q:OUTSTD_LOGIC_VECTOR(7DOWNTO0);data:INSTD_LOGIC_VECTOR(7DOWNTO0));ENDCOMPONENT;接下頁BEGINq<=sub_wire0(7DOWNTO0);
lpm_ram_dq_component:lpm_ram_dqGENERICMAP--類屬映射語句(LPM_WIDTH=>8,--8位數(shù)據(jù)寬度自然數(shù)數(shù)據(jù)類型
LPM_WIDTHAD=>8,--8位地址線寬度自然數(shù)數(shù)據(jù)類型
LPM_INDATA=>"REGISTERED",--寄存器鎖存方式寫入數(shù)據(jù),字符串數(shù)據(jù)類型
LPM_ADDRESS_CONTROL=>"REGISTERED",--寄存器鎖存方式寫入地址,字符串數(shù)據(jù)類型
LPM_OUTDATA=>"UNREGISTERED",--非寄存器鎖存方式輸出數(shù)據(jù)
LPM_HINT=>"USE_EAB=ON")-–允許使用FPGA中的EABPORTMAP(address=>address,inclock=>inclock,data=>data,we=>we,q=>sub_wire0);ENDSYN;接上頁生成的元件圖7.6.3雙口RAM定制讀寫控制RAM7.6.4正弦信號發(fā)生器設計與LPMROM定制1正弦信號發(fā)生器結(jié)構(gòu)計數(shù)器正弦波數(shù)據(jù)存儲ROMD/A芯片VHDL頂層設計1)計數(shù)器實現(xiàn)libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entitycount64isport(clk:instd_logic;q:outstd_logic_vector(5downto0));endcount64;architecturearchofcount64issignalm:std_logic_vector(5downto0);begin
process(clk)begin
if(clk'eventandclk='1')thenm<=m+1;endif;q<=m;endprocess;endarch;2)正弦信號數(shù)據(jù)文件建立sindata.mifwidth=8;depth=64;address_radix=hex;data_radix=dec;contentbegin00:255;01:254;02:252;03:249;04:245;05:239;06:233;07:225;08:217;09:207;0A:197;0B:186;0C:174;0D:162;0E:150;0F:137;10:124;11:112;12:99;13:87;14:75;15:64;16:53;17:43;18:34;19:26;1A:19;1B:13;1C:8;1D:4;1E:1;1F:0;20:0;21:1;22:4;23:8;24:13;25:19;26:26;27:34;28:43;29:53;2A:64;2B:75;2C:87;2D:99;2E:112;2F:124;30:137;31:150;32:162;33:174;34:186;35:197;36:207;37:217;38:225;39:233;3A:239;3B:245;3C:249;3D:252;3E:254;2F:255;end;正弦波發(fā)生器模塊3)頂層設計原理圖輸入文本輸入libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entitysingtisport(clk:instd_logic;q:outstd_logic_vector(7downto0));end;architecturearchofsingtiscomponentsinwaveport(address:instd_logic_vector(5downto0);
inclock:instd_logic;q:outstd_logic_vector(7downto0));endcomponent;signalq1:std_logic_vector(5downto0);begin
process(clk)begin
if(clk'eventandclk='1')thenq1<=q1+1;endif;endprocess;u1:sinwaveportmap(address=>q1,q=>q,inclock=>clk);end;7.6.5編輯定制LPM_FIFO模塊圖生成或修改一定制的巨功能塊選擇LPM巨功能塊編輯器選擇建立一個巨功能塊最后按鍵NEXT圖用VHDL定制LPM_FIFO,文件名:fifo2.vhd選擇功能塊類型選擇建立FIFO功能塊選擇巨功能表達語言為VHDL在選定的目錄中確定生成的功能塊的文件名:fifo2.vhd圖選擇FIFO數(shù)據(jù)位寬為8,深度為512圖fifo端口設置選擇含溢出標志輸出含異步清零圖選擇在讀請求信號有效后數(shù)據(jù)輸出選擇同步工作模式圖選擇Area優(yōu)化方式選擇優(yōu)化方式選擇使用EAB設計fifo圖單擊“Finish”后完成fifo2.vhd的定制
LPM_FIFO定制文件仿真測試將編制好的輸出文件設置成工程打開文件原文件選目標器件LPM_FIFO定制文件仿真測試【例】
LIBRARYieee;USEieee.std_logic_1164.all;ENTITYfifo2ISPORT(data:INSTD_LOGIC_VECTOR(7DOWNTO0);--輸入數(shù)據(jù)
wrreq:INSTD_LOGIC;--寫入請求
rdreq:INSTD_LOGIC;--讀出請求
clock:INSTD_LOGIC;--工作時鐘
aclr:INSTD_LOGIC;--異步清0
q:OUTSTD_LOGIC_VECTOR(7DOWNTO0);--數(shù)據(jù)輸出
full:OUTSTD_LOGIC);--溢出標志ENDfifo2;ARCHITECTURESYNOFfifo2ISSIGNALsub_wire0:STD_LOGIC_VECTOR(7DOWNTO0);SIGNALsub_wire1:STD_LOGIC;COMPONENTlpm_fifo--調(diào)用LPM_FIFO聲明
GENERIC(lpm_width:NATURAL;--類屬數(shù)據(jù)寬度自然數(shù)數(shù)據(jù)類型
lpm_numwords:NATURAL;--類屬數(shù)據(jù)深度自然數(shù)數(shù)據(jù)類型
接下頁lpm_w
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 重慶文化藝術職業(yè)學院《建筑工程質(zhì)量控制》2023-2024學年第二學期期末試卷
- 江西新能源科技職業(yè)學院《視頻特技與非線性編輯》2023-2024學年第二學期期末試卷
- 中國石油大學(華東)《參展實務》2023-2024學年第二學期期末試卷
- 遼寧裝備制造職業(yè)技術學院《單片機原理課程設計》2023-2024學年第二學期期末試卷
- 可克達拉職業(yè)技術學院《社會調(diào)查原理與方法》2023-2024學年第二學期期末試卷
- 濰坊環(huán)境工程職業(yè)學院《物聯(lián)網(wǎng)通信技術》2023-2024學年第二學期期末試卷
- 湖南城市學院《MBA運營管理》2023-2024學年第二學期期末試卷
- 永城職業(yè)學院《音樂教學與技能訓練》2023-2024學年第二學期期末試卷
- 第11課 有序的世界 教學設計 2024-2025學年四年級上冊 浙教版(2023)信息科技
- 上海建橋?qū)W院《建筑安裝設備與施工》2023-2024學年第二學期期末試卷
- 2025書記員招聘考試題庫及參考答案
- 2024-2025年第二學期數(shù)學教研組工作計劃
- 2025輔警招聘公安基礎知識題庫附含參考答案
- GB/T 44927-2024知識管理體系要求
- 2025年環(huán)衛(wèi)工作計劃
- 品質(zhì)巡檢培訓課件
- 初驗整改報告格式范文
- 2023青島版數(shù)學三年級下冊全冊教案
- 建設工程總承包EPC建設工程項目管理方案1
- T-CSUS 69-2024 智慧水務技術標準
- (2024)竹產(chǎn)業(yè)生產(chǎn)建設項目可行性研究報告(一)
評論
0/150
提交評論