版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
會(huì)計(jì)學(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;庫、程序包實(shí)體結(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è)計(jì)中通常使用std_logic類型這里我們借D觸發(fā)器對(duì)這類數(shù)據(jù)類型進(jìn)行一個(gè)描述,并非時(shí)序電路都要用這類數(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ù)類型時(shí),需包含
libraryieee;useieee.std_logic_1164.all;返回第5頁/共46頁
SIGNAL信號(hào)名:數(shù)據(jù)類型[:=初始值];區(qū)別:
signal:描述實(shí)體內(nèi)部節(jié)點(diǎn),不定義輸入輸出方向,在結(jié)構(gòu)體中作為一個(gè)數(shù)據(jù)的暫存器,進(jìn)行賦值。端口:描述實(shí)體與外界的接口數(shù)據(jù)對(duì)象數(shù)據(jù)對(duì)象返回第6頁/共46頁
Event信號(hào)屬性函數(shù)
s’Event:如果在當(dāng)前一個(gè)相當(dāng)小的時(shí)間間隔內(nèi),事件發(fā)生了,則函數(shù)將返回”TURE”、否則返回”FLASE”
上升沿:clock’eventandclock=‘1’;
下降沿:clock’eventandclock=‘0’;
上升沿:rising_edge(clock);
下降沿:falling_edge(clock);上升沿檢測(cè)表達(dá)方式和信號(hào)屬性使用函數(shù)要注意打開相關(guān)程序包第7頁/共46頁時(shí)鐘的描述方法上升沿:CP’EVENTANDCP=‘1’下升沿:CP’EVENTANDCP=‘0’Clk=0Clk=0Clk=1Clk=1Clock’EVENTClock’EVENTClock’EVENTClock’EVENT為信號(hào)的屬性函數(shù),有事件發(fā)生為“真”,否則為“假”第8頁/共46頁architecturebhvofdff2isbeginprocess(clk)beginif(clk'eventandclk='1')thenq<=d;endif;endprocess;end;時(shí)序電路由于這條語句的存在?第9頁/共46頁不完整條件語句與時(shí)序電路
if(clk'eventandclk='1')thenq1<=d;endif;此IF語句未利用ELSE指明IF語句不滿足條件時(shí),作何操作(不完整的條件語句);引入時(shí)序元件保存q1的原值;不完整語句,綜合器如何處理?第10頁/共46頁上升沿D觸發(fā)器描述方法一:使用信號(hào)屬性函數(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),不能完全代表信號(hào)由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語句后就不用列出敏感信號(hào)等效對(duì)時(shí)鐘信號(hào)CP的一個(gè)跳變判斷第12頁/共46頁方法三:使用上升沿檢測(cè)函數(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)程的啟動(dòng)特性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)程對(duì)敏感信號(hào)的檢測(cè),來實(shí)現(xiàn)對(duì)時(shí)鐘信號(hào)的邊沿檢測(cè)第14頁/共46頁由波形可見,Q的變化發(fā)生在clk的上升沿時(shí)刻D的取值。clk=0時(shí),Q值不變。上升沿D觸發(fā)器描述第15頁/共46頁髙電平D觸發(fā)器描述方法:使用進(jìn)程的啟動(dòng)特性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)程的敏感信號(hào)第16頁/共46頁由圖可見,當(dāng)CLK=1時(shí),Q隨D變化而變化。clk=0時(shí),Q保持不變。髙電平D觸發(fā)器描述第17頁/共46頁uvw全加器設(shè)計(jì)含有層次結(jié)構(gòu)的VHDL程序例化語句的學(xué)習(xí)case語句的認(rèn)識(shí)第18頁/共46頁--以下是半加器的描述LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;--以下是半加器的實(shí)體描述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’時(shí),即P為‘00’不是操作符,含義相當(dāng)于then/“于是”滿足條件后執(zhí)行語句判斷P的值相當(dāng)于寫出真值表第20頁/共46頁--以下是或門描述LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;--以下是或門實(shí)體描述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è)計(jì)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è)計(jì)的實(shí)體當(dāng)作本設(shè)計(jì)的一個(gè)元件,然后用VHDL語句將各元件之間的連接關(guān)系描述出來;VHDL設(shè)計(jì)實(shí)體、來自FPGA元件庫中的元件、Verilog設(shè)計(jì)的實(shí)體、IP核、FPGA中的嵌入式硬IP核等;第24頁/共46頁COMPONENT元件名IS【GENERIC(類屬表);】PORT(端口名表);
ENDCOMPONENT元件名;
例化名:元件名PORTMAP([元件端口名=>]連接端口名,…);元件定義語句:將一個(gè)現(xiàn)成的設(shè)計(jì)實(shí)體定義為本設(shè)計(jì)的一個(gè)元件;與實(shí)體的port()一樣。元件例化語句:描述元件與當(dāng)前設(shè)計(jì)實(shí)體的連接關(guān)系第25頁/共46頁[元件端口名=>]連接端口名其中,元件端口名是元件定義語句中的端口名表中已定義好的;連接端口名是當(dāng)前系統(tǒng)與準(zhǔn)備接入的元件對(duì)應(yīng)端口相連的通信端口;端口名和當(dāng)前系統(tǒng)的連接端口名的接口表達(dá)名字關(guān)聯(lián):端口名和關(guān)聯(lián)符號(hào)”=>”必須存在位置關(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ù)滿足的條件直接選擇多項(xiàng)順序語句中的一項(xiàng)執(zhí)行;
CASE表達(dá)式ISWHEN值1=>語句A;
WHEN值2=>語句B;
…WHENOTHERS
=>
語句C;ENDCASE;這里的=>不是關(guān)系運(yùn)算符,僅描述:值和對(duì)應(yīng)執(zhí)行語句的對(duì)應(yīng)關(guān)系,相當(dāng)于THEN的作用返回判斷前面的情況都不存在時(shí),作為最后一種條件取值第28頁/共46頁std_logic標(biāo)準(zhǔn)位類型std_logic_vector標(biāo)準(zhǔn)一維數(shù)組使用std_logic_vector表示多通道端口或者總線。使用std_logic_vector時(shí)要注明其數(shù)組寬度:如:B:out
std_logic_vector(7downto0);downto表示最左邊為最高位,位數(shù)向右依次遞減。如:A:outstd_logic_vector(1to4);to表示最左邊為最低位,位數(shù)向右遞增。前例中定義內(nèi)部信號(hào)P為兩個(gè)元素的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頁一種計(jì)數(shù)器的設(shè)計(jì)entitycnt4isport(clk:inbit;Q:buffer
integer
range15downto0);end;architecturebhvofcnt4isbeginprocess(clk)beginifclk’eventandclk=‘1’thenQ<=Q+1;endif;endprocess;endbhv;第31頁/共46頁數(shù)據(jù)對(duì)象:Buffer在“<=”的左右兩邊都出現(xiàn)Q,表明Q應(yīng)具有輸入和輸出兩種端口模式,同時(shí)它的輸入特性應(yīng)是反饋方式,即傳輸符號(hào)“<=”的右邊Q應(yīng)該來自左邊的Q的反饋。BUFFER與INTOUT的區(qū)別在于buffer的輸入來自反饋,所以這里將Q定義為buffer類型最為合適。返回第32頁/共46頁數(shù)據(jù)類型:integer對(duì)應(yīng)“+、-”的操作數(shù)必須定義為整數(shù)類型(integer)。表達(dá)式:Q<=Q+1;式中“Q”和“1”都是整數(shù),滿足“<=”左右兩邊都是整數(shù)(類型相同),“+”左右兩邊都是整數(shù)的條件。VHDL綜合器要求必須使用“RANGE”句子為所定義的數(shù)限定范圍,再根據(jù)所定義的范圍來決定表示此信號(hào)或變量的二進(jìn)制數(shù)的位數(shù)。Q:bufferintegerranger15downto0;定義了Q的取值范圍是0~15;可以用四位二進(jìn)制數(shù)表示。第33頁/共46頁整數(shù)的表達(dá)式不加引號(hào),如:1,0,25;而邏輯位的數(shù)據(jù)要加引號(hào),如:’1’,’0’,”0”,”1111”。自然數(shù):natural:0~正整數(shù);正整數(shù):positive:比自然數(shù)少個(gè)0;返回第34頁/共46頁另一種計(jì)數(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;加號(hào)左右兩個(gè)數(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;在計(jì)數(shù)器內(nèi)部定義一個(gè)信號(hào)signal,無需定義方向,所以Q1的方向是不受方向限制的,可以用Q1<=Q1+1;完成累加任務(wù);第37頁/共46頁一般計(jì)數(shù)器的設(shè)計(jì)方法異步復(fù)位同步時(shí)鐘使能變量賦值省略賦值操作符第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等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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ǔ)空間,僅對(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 過敏反應(yīng)的藥物治療
- 員工討論會(huì)課件
- 老年人護(hù)理與老年護(hù)理學(xué)
- 護(hù)理技能:靜脈輸液并發(fā)癥處理
- 急腹癥護(hù)理案例分析視頻
- 肝癌護(hù)理中的健康教育
- 員工HSE培訓(xùn)課件
- 吸氧課件講解稿
- 2026屆八省聯(lián)考(T8聯(lián)考)2026屆高三年級(jí)12月檢測(cè)訓(xùn)練生物試卷(含答案詳解)含湖北湖南山西河北卷
- 美術(shù)學(xué)院畢業(yè)生就業(yè)方向
- 在線網(wǎng)課知慧《形勢(shì)與政策(吉林大學(xué))》單元測(cè)試考核答案
- 業(yè)主授權(quán)租戶安裝充電樁委托書
- 化工建設(shè)綜合項(xiàng)目審批作業(yè)流程圖
- 親子鑒定的報(bào)告單圖片
- 遼寧軌道交通職業(yè)學(xué)院?jiǎn)握小堵殬I(yè)技能測(cè)試》參考試題庫(含答案)
- 新概念二單詞表新版,Excel 版
- 2023年陜西西安經(jīng)濟(jì)技術(shù)開發(fā)區(qū)招聘120人(共500題含答案解析)筆試必備資料歷年高頻考點(diǎn)試題摘選
- 第八講 發(fā)展全過程人民民主PPT習(xí)概論2023優(yōu)化版教學(xué)課件
- 篇12pmc窗口功能指令舉例講解
- GB/T 7332-2011電子設(shè)備用固定電容器第2部分:分規(guī)范金屬化聚乙烯對(duì)苯二甲酸酯膜介質(zhì)直流固定電容器
- GB/T 38658-20203.6 kV~40.5 kV交流金屬封閉開關(guān)設(shè)備和控制設(shè)備型式試驗(yàn)有效性的延伸導(dǎo)則
評(píng)論
0/150
提交評(píng)論