版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
會計學(xué)1D觸發(fā)器電路全加器主要內(nèi)容
DFF的VHDL描述
全加器的VHDL描述第1頁/共46頁libraryieee;useieee.std_logic_1164.all;entitydff1isport(clk,d:
instd_logic;
q:outstd_logic);end;architecturebhvofdff1issignalq1:std_logic;beginprocess(clk)beginif(clk'eventandclk='1')thenq1<=d;endif;endprocess;q<=q1;end;庫、程序包實體結(jié)構(gòu)體第2頁/共46頁STD_LOGIC標(biāo)準(zhǔn)邏輯位數(shù)據(jù)類型STD_LOGIC比BIT包含的內(nèi)容豐富和完整
BIT:’0’、’1’
STD_LOGIC數(shù)據(jù)類型通常在設(shè)計中通常使用std_logic類型這里我們借D觸發(fā)器對這類數(shù)據(jù)類型進(jìn)行一個描述,并非時序電路都要用這類數(shù)據(jù)類型第3頁/共46頁‘U’--Uninitialized(未初始化的)
‘X’--ForcingUnknown(強(qiáng)未知的)
‘0’--Forcing0(強(qiáng)0)
‘1’--Forcing1(強(qiáng)1)
‘Z’--HighImpedance(高阻態(tài))
‘W’--WeakUnknown(弱未知的)
‘L’--Weak0(弱0)
‘H’--Weak1(弱1)
‘-’--Don‘tcare(忽略)返回第4頁/共46頁
庫、程序包
std_logic、std_logic_vector:定義在std_logic_1164.all程序包中,而此包由IEEE定義。所以,使用到這兩種數(shù)據(jù)類型時,需包含
libraryieee;useieee.std_logic_1164.all;返回第5頁/共46頁
SIGNAL信號名:數(shù)據(jù)類型[:=初始值];區(qū)別:
signal:描述實體內(nèi)部節(jié)點(diǎn),不定義輸入輸出方向,在結(jié)構(gòu)體中作為一個數(shù)據(jù)的暫存器,進(jìn)行賦值。端口:描述實體與外界的接口數(shù)據(jù)對象數(shù)據(jù)對象返回第6頁/共46頁
Event信號屬性函數(shù)
s’Event:如果在當(dāng)前一個相當(dāng)小的時間間隔內(nèi),事件發(fā)生了,則函數(shù)將返回”TURE”、否則返回”FLASE”
上升沿:clock’eventandclock=‘1’;
下降沿:clock’eventandclock=‘0’;
上升沿:rising_edge(clock);
下降沿:falling_edge(clock);上升沿檢測表達(dá)方式和信號屬性使用函數(shù)要注意打開相關(guān)程序包第7頁/共46頁時鐘的描述方法上升沿:CP’EVENTANDCP=‘1’下升沿:CP’EVENTANDCP=‘0’Clk=0Clk=0Clk=1Clk=1Clock’EVENTClock’EVENTClock’EVENTClock’EVENT為信號的屬性函數(shù),有事件發(fā)生為“真”,否則為“假”第8頁/共46頁architecturebhvofdff2isbeginprocess(clk)beginif(clk'eventandclk='1')thenq<=d;endif;endprocess;end;時序電路由于這條語句的存在?第9頁/共46頁不完整條件語句與時序電路
if(clk'eventandclk='1')thenq1<=d;endif;此IF語句未利用ELSE指明IF語句不滿足條件時,作何操作(不完整的條件語句);引入時序元件保存q1的原值;不完整語句,綜合器如何處理?第10頁/共46頁上升沿D觸發(fā)器描述方法一:使用信號屬性函數(shù)LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYD_regIS
PORT(D,CP: INSTD_LOGIC; Q: OUTSTD_LOGIC);ENDD_reg;ARCHITECTUREtestOFD_regISSIGNALQ1:STD_LOGICBEGIN
PROCESS(CP)
BEGIN
IF(CP’EVENTANDCP=‘1’)THENQ1<=D;
ENDIF;
ENDPROCESS;Q<=Q1;ENDtest;CP定義的數(shù)據(jù)類型有9種狀態(tài),不能完全代表信號由0跳變到1第11頁/共46頁方法二:使用WAIT語句LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYD_regIS
PORT(D,CP: INSTD_LOGIC; Q: OUTSTD_LOGIC);ENDD_reg;ARCHITECTUREtestOFD_regISBEGIN
PROCESS
BEGIN
WAITUNTILCP=‘1’; Q<=D;
ENDPROCESS;ENDtest;上升沿D觸發(fā)器描述使用waituntil語句后就不用列出敏感信號等效對時鐘信號CP的一個跳變判斷第12頁/共46頁方法三:使用上升沿檢測函數(shù)LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYD_regIS PORT(D,CP: INSTD_LOGIC; Q: OUTSTD_LOGIC);ENDD_reg;ARCHITECTUREtestOFD_regISBEGIN
PROCESS(cp)
BEGIN
IF(rising_edge(cp))THEN Q<=D; ENDIF;
ENDPROCESS;ENDtest;上升沿D觸發(fā)器描述使用函數(shù)要注意打開相關(guān)程序包第13頁/共46頁方法四:使用進(jìn)程的啟動特性LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYD_regIS
PORT(D,CP: INSTD_LOGIC; Q: OUTSTD_LOGIC);ENDD_reg;ARCHITECTUREtestOFD_regISBEGIN PROCESS(CP)
BEGIN
IFCP=‘1’THEN Q<=D; ENDIF;
ENDPROCESS;ENDtest;上升沿D觸發(fā)器描述使用進(jìn)程對敏感信號的檢測,來實現(xiàn)對時鐘信號的邊沿檢測第14頁/共46頁由波形可見,Q的變化發(fā)生在clk的上升沿時刻D的取值。clk=0時,Q值不變。上升沿D觸發(fā)器描述第15頁/共46頁髙電平D觸發(fā)器描述方法:使用進(jìn)程的啟動特性LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYD_regIS PORT(D,CP:INSTD_LOGIC; Q: OUTSTD_LOGIC);ENDD_reg;ARCHITECTUREtestOFD_regISBEGIN PROCESS(CP,D)
BEGIN
IFCP=‘1’THEN Q<=D; ENDIF; ENDPROCESS;ENDtest;注意進(jìn)程的敏感信號第16頁/共46頁由圖可見,當(dāng)CLK=1時,Q隨D變化而變化。clk=0時,Q保持不變。髙電平D觸發(fā)器描述第17頁/共46頁uvw全加器設(shè)計含有層次結(jié)構(gòu)的VHDL程序例化語句的學(xué)習(xí)case語句的認(rèn)識第18頁/共46頁--以下是半加器的描述LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;--以下是半加器的實體描述ENTITYH_adderISPORT(in_a,in_b:INSTD_LOGIC;
out_s,out_co:OUTSTD_LOGIC);END;--以下是半加器結(jié)構(gòu)體描述ARCHITECTURE
one
OFH_adderISBEGIN out_s<=in_aXORin_b; out_co<=in_aANDin_b;END
one;第19頁/共46頁……architecture
one
of
h_adderissignal
P:
std_logic_vector(1downto0);begin
P<=a&b;process
(P)
begin
case
P
is
when"00"=>so<='0';co<='0';
when"01"=>so<='1';co<='0';
when"10"=>so<='1';co<='0';
when"11"=>so<='0';co<='1';
whenothers=>null;endcase;endprocess;
end;--以下是半加器的結(jié)構(gòu)體描述CASE語句當(dāng)a和b分別為‘0’和‘0’時,即P為‘00’不是操作符,含義相當(dāng)于then/“于是”滿足條件后執(zhí)行語句判斷P的值相當(dāng)于寫出真值表第20頁/共46頁--以下是或門描述LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;--以下是或門實體描述ENTITYOr_2ISPORT
(x,y:INSTD_LOGIC;z:OUTSTD_LOGIC);END
Or_2;--以下是或門結(jié)構(gòu)體描述ARCHITECTURE
one
OFOr_2ISBEGIN
Z<='1'WHEN(x='0'ANDy='1')ELSE
'1'WHEN(x='1'ANDy='0')ELSE
'1'WHEN(x='1'ANDy='1')ELSE
'0';ENDbehavioral;第21頁/共46頁.....--以下是或門另一種結(jié)構(gòu)體描述architectureoneofor_2isbeginc<=aorb;end;第22頁/共46頁--以下是一位全加器結(jié)構(gòu)描述的頂層設(shè)計ENTITYfull_adderISPORT(a,b,ci:INSTD_LOGIC;
s,co:OUTSTD_LOGIC);ENDfull_adder;ARCHITECTUREoneOFfull_adderISCOMPONENT
H_adder
-----半加器部件聲明PORT(in_a,in_b:INSTD_LOGIC;
out_s,out_co:OUTSTD_LOGIC);ENDCOMPONENT;COMPONENT
OR_2
----二輸入或門部件聲明PORT(x,y:INSTD_LOGIC;
z:OUTSTD_LOGIC);ENDCOMPONENT;SIGNALu,v,w:STD_LOGIC;------定義內(nèi)部三條連線BEGINU1:H_adderPORTMAP(in_a=>a,in_b=>b,
out_s=>v,out_co=>u);
--端口映射U2:H_adderPORTMAP(in_a=>v,in_b=>ci,
out_s=>s,out_co=>w);U3:Or_2PORTMAP(x=>u,y=>w,z=>co);END;
第23頁/共46頁元件例化語句
元件例化語句:即將從前設(shè)計的實體當(dāng)作本設(shè)計的一個元件,然后用VHDL語句將各元件之間的連接關(guān)系描述出來;VHDL設(shè)計實體、來自FPGA元件庫中的元件、Verilog設(shè)計的實體、IP核、FPGA中的嵌入式硬IP核等;第24頁/共46頁COMPONENT元件名IS【GENERIC(類屬表);】PORT(端口名表);
ENDCOMPONENT元件名;
例化名:元件名PORTMAP([元件端口名=>]連接端口名,…);元件定義語句:將一個現(xiàn)成的設(shè)計實體定義為本設(shè)計的一個元件;與實體的port()一樣。元件例化語句:描述元件與當(dāng)前設(shè)計實體的連接關(guān)系第25頁/共46頁[元件端口名=>]連接端口名其中,元件端口名是元件定義語句中的端口名表中已定義好的;連接端口名是當(dāng)前系統(tǒng)與準(zhǔn)備接入的元件對應(yīng)端口相連的通信端口;端口名和當(dāng)前系統(tǒng)的連接端口名的接口表達(dá)名字關(guān)聯(lián):端口名和關(guān)聯(lián)符號”=>”必須存在位置關(guān)聯(lián):只需列出連接端口U1:H_adderPORTMAP(in_a=>a,in_b=>b,
out_s=>v,out_co=>u);
--端口映射第26頁/共46頁architectureabcofshifteriscomponentdffport(d,clk:inbit;q:outbit);endcomponent;signald:bit_vector(0to4);begind(0)<=din;u0:dffportmap(d=>d(2),clk=>clk,q=>d(3));u1:dffportmap(d=>d(3),clk=>clk,q=>d(4));dout<=d(4);endabc;元件例化(映射)語句的位置:在結(jié)構(gòu)體的BEGIN和END之間;元件定義語句的位置:結(jié)構(gòu)體聲明部分名字關(guān)聯(lián)方式返回第27頁/共46頁CASE語句根據(jù)滿足的條件直接選擇多項順序語句中的一項執(zhí)行;
CASE表達(dá)式ISWHEN值1=>語句A;
WHEN值2=>語句B;
…WHENOTHERS
=>
語句C;ENDCASE;這里的=>不是關(guān)系運(yùn)算符,僅描述:值和對應(yīng)執(zhí)行語句的對應(yīng)關(guān)系,相當(dāng)于THEN的作用返回判斷前面的情況都不存在時,作為最后一種條件取值第28頁/共46頁std_logic標(biāo)準(zhǔn)位類型std_logic_vector標(biāo)準(zhǔn)一維數(shù)組使用std_logic_vector表示多通道端口或者總線。使用std_logic_vector時要注明其數(shù)組寬度:如:B:out
std_logic_vector(7downto0);downto表示最左邊為最高位,位數(shù)向右依次遞減。如:A:outstd_logic_vector(1to4);to表示最左邊為最低位,位數(shù)向右遞增。前例中定義內(nèi)部信號P為兩個元素的std_logic_vector第29頁/共46頁&-------并置操作符:將操作數(shù)或數(shù)組合并起來形成新的數(shù)組;返回P<=a&b;表示P為a和b組成的數(shù)組當(dāng)a,b分別為’0,0‘;P為’00‘’0,1‘;P為’01‘’1,0‘;p為'10'’1,1‘;p為'11'第30頁/共46頁一種計數(shù)器的設(shè)計entitycnt4isport(clk:inbit;Q:buffer
integer
range15downto0);end;architecturebhvofcnt4isbeginprocess(clk)beginifclk’eventandclk=‘1’thenQ<=Q+1;endif;endprocess;endbhv;第31頁/共46頁數(shù)據(jù)對象:Buffer在“<=”的左右兩邊都出現(xiàn)Q,表明Q應(yīng)具有輸入和輸出兩種端口模式,同時它的輸入特性應(yīng)是反饋方式,即傳輸符號“<=”的右邊Q應(yīng)該來自左邊的Q的反饋。BUFFER與INTOUT的區(qū)別在于buffer的輸入來自反饋,所以這里將Q定義為buffer類型最為合適。返回第32頁/共46頁數(shù)據(jù)類型:integer對應(yīng)“+、-”的操作數(shù)必須定義為整數(shù)類型(integer)。表達(dá)式:Q<=Q+1;式中“Q”和“1”都是整數(shù),滿足“<=”左右兩邊都是整數(shù)(類型相同),“+”左右兩邊都是整數(shù)的條件。VHDL綜合器要求必須使用“RANGE”句子為所定義的數(shù)限定范圍,再根據(jù)所定義的范圍來決定表示此信號或變量的二進(jìn)制數(shù)的位數(shù)。Q:bufferintegerranger15downto0;定義了Q的取值范圍是0~15;可以用四位二進(jìn)制數(shù)表示。第33頁/共46頁整數(shù)的表達(dá)式不加引號,如:1,0,25;而邏輯位的數(shù)據(jù)要加引號,如:’1’,’0’,”0”,”1111”。自然數(shù):natural:0~正整數(shù);正整數(shù):positive:比自然數(shù)少個0;返回第34頁/共46頁另一種計數(shù)器表達(dá)方式libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entitycnt4isport(clk:instd_logic;
Q:outstd_logic_vector(3downto0));end;architecturebhvofcnt4issignalQ1:std_logic_vertor(3downto0);beginprocess(clk)beginifclk’eventandclk=‘1’thenQ1<=Q1+1;endif;endprocess;Q<=Q1;endbhv;第35頁/共46頁ieee.std_logic_unsigned.all表達(dá)式:Q1<=Q1+1;加號左右兩個數(shù)據(jù)類型不相同,Q1(邏輯矢量)1(整數(shù));ieee庫中std_logic_unsigned程序包中預(yù)先定義的操作符允許不同數(shù)據(jù)類型的操作數(shù)之間用運(yùn)算符進(jìn)行運(yùn)算。返回第36頁/共46頁Q端口模式是“out”,由于Q沒有輸入的端口模式,因此Q不能如前例那樣直接用表達(dá)式:Q<=Q+1;在計數(shù)器內(nèi)部定義一個信號signal,無需定義方向,所以Q1的方向是不受方向限制的,可以用Q1<=Q1+1;完成累加任務(wù);第37頁/共46頁一般計數(shù)器的設(shè)計方法異步復(fù)位同步時鐘使能變量賦值省略賦值操作符第38頁/共46頁architecturebehofcnt10isbeginprocess(clk,rst,en)variableCQI:std_logic_vector(3downto0);beginifrst=‘1’thenCQI:=(OTHERS=>’0’);
elseifclk’eventandclk=‘1’thenifen=‘1’thenifCQI<9thenCQI:=CQI+1;elseCQI:=(OTHERS=>’0’);endif;endif;ensif;ifCQI=9thencout<=‘1’;els
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 5G游戲娛樂行業(yè)營銷策略方案
- 眼鏡用硅膠鼻托市場發(fā)展前景分析及供需格局研究預(yù)測報告
- 醫(yī)用葉黃素產(chǎn)業(yè)鏈招商引資的調(diào)研報告
- 工業(yè)產(chǎn)權(quán)許可行業(yè)營銷策略方案
- 研磨劑市場分析及投資價值研究報告
- 自拍桿手持單腳架項目運(yùn)營指導(dǎo)方案
- 肌內(nèi)效貼布項目運(yùn)營指導(dǎo)方案
- 卡車用千斤頂產(chǎn)業(yè)鏈招商引資的調(diào)研報告
- 發(fā)動機(jī)用凸輪軸產(chǎn)業(yè)鏈招商引資的調(diào)研報告
- 工業(yè)用水凈化裝置產(chǎn)品供應(yīng)鏈分析
- 經(jīng)修訂的國際救生設(shè)備規(guī)則(LSA)
- 位移觀測記錄表
- 工藝紀(jì)律檢查管理辦法及考核細(xì)則
- 成都關(guān)于成立芯片公司組建方案(模板參考)
- 采購項目驗收管理辦法(共10頁)
- 【燃?xì)庖?guī)范】家用燃?xì)馊紵骶甙惭b及驗收規(guī)程(CJJ12-2013)
- 《工程計量報驗單》
- 小學(xué)文言文實詞虛詞總結(jié)(共16頁)
- 資本的剩余價值
- 黑龍江小學(xué)五年級第5單元第4課第3節(jié)_《就英法聯(lián)軍遠(yuǎn)征中國給巴特勒上尉的信》
- T∕CREA 005-2021 老年人照料設(shè)施與適老居住建筑部品體系標(biāo)準(zhǔn)
評論
0/150
提交評論