D觸發(fā)器電路全加器_第1頁(yè)
D觸發(fā)器電路全加器_第2頁(yè)
D觸發(fā)器電路全加器_第3頁(yè)
D觸發(fā)器電路全加器_第4頁(yè)
D觸發(fā)器電路全加器_第5頁(yè)
已閱讀5頁(yè),還剩41頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(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頁(yè)/共46頁(yè)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;庫(kù)、程序包實(shí)體結(jié)構(gòu)體第2頁(yè)/共46頁(yè)STD_LOGIC標(biāo)準(zhǔn)邏輯位數(shù)據(jù)類(lèi)型STD_LOGIC比BIT包含的內(nèi)容豐富和完整

BIT:’0’、’1’

STD_LOGIC數(shù)據(jù)類(lèi)型通常在設(shè)計(jì)中通常使用std_logic類(lèi)型這里我們借D觸發(fā)器對(duì)這類(lèi)數(shù)據(jù)類(lèi)型進(jìn)行一個(gè)描述,并非時(shí)序電路都要用這類(lèi)數(shù)據(jù)類(lèi)型第3頁(yè)/共46頁(yè)‘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頁(yè)/共46頁(yè)

庫(kù)、程序包

std_logic、std_logic_vector:定義在std_logic_1164.all程序包中,而此包由IEEE定義。所以,使用到這兩種數(shù)據(jù)類(lèi)型時(shí),需包含

libraryieee;useieee.std_logic_1164.all;返回第5頁(yè)/共46頁(yè)

SIGNAL信號(hào)名:數(shù)據(jù)類(lèi)型[:=初始值];區(qū)別:

signal:描述實(shí)體內(nèi)部節(jié)點(diǎn),不定義輸入輸出方向,在結(jié)構(gòu)體中作為一個(gè)數(shù)據(jù)的暫存器,進(jìn)行賦值。端口:描述實(shí)體與外界的接口數(shù)據(jù)對(duì)象數(shù)據(jù)對(duì)象返回第6頁(yè)/共46頁(yè)

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ù)要注意打開(kāi)相關(guān)程序包第7頁(yè)/共46頁(yè)時(shí)鐘的描述方法上升沿:CP’EVENTANDCP=‘1’下升沿:CP’EVENTANDCP=‘0’Clk=0Clk=0Clk=1Clk=1Clock’EVENTClock’EVENTClock’EVENTClock’EVENT為信號(hào)的屬性函數(shù),有事件發(fā)生為“真”,否則為“假”第8頁(yè)/共46頁(yè)architecturebhvofdff2isbeginprocess(clk)beginif(clk'eventandclk='1')thenq<=d;endif;endprocess;end;時(shí)序電路由于這條語(yǔ)句的存在?第9頁(yè)/共46頁(yè)不完整條件語(yǔ)句與時(shí)序電路

if(clk'eventandclk='1')thenq1<=d;endif;此IF語(yǔ)句未利用ELSE指明IF語(yǔ)句不滿(mǎn)足條件時(shí),作何操作(不完整的條件語(yǔ)句);引入時(shí)序元件保存q1的原值;不完整語(yǔ)句,綜合器如何處理?第10頁(yè)/共46頁(yè)上升沿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ù)類(lèi)型有9種狀態(tài),不能完全代表信號(hào)由0跳變到1第11頁(yè)/共46頁(yè)方法二:使用WAIT語(yǔ)句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語(yǔ)句后就不用列出敏感信號(hào)等效對(duì)時(shí)鐘信號(hào)CP的一個(gè)跳變判斷第12頁(yè)/共46頁(yè)方法三:使用上升沿檢測(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ù)要注意打開(kāi)相關(guān)程序包第13頁(yè)/共46頁(yè)方法四:使用進(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è),來(lái)實(shí)現(xiàn)對(duì)時(shí)鐘信號(hào)的邊沿檢測(cè)第14頁(yè)/共46頁(yè)由波形可見(jiàn),Q的變化發(fā)生在clk的上升沿時(shí)刻D的取值。clk=0時(shí),Q值不變。上升沿D觸發(fā)器描述第15頁(yè)/共46頁(yè)髙電平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頁(yè)/共46頁(yè)由圖可見(jiàn),當(dāng)CLK=1時(shí),Q隨D變化而變化。clk=0時(shí),Q保持不變。髙電平D觸發(fā)器描述第17頁(yè)/共46頁(yè)uvw全加器設(shè)計(jì)含有層次結(jié)構(gòu)的VHDL程序例化語(yǔ)句的學(xué)習(xí)case語(yǔ)句的認(rèn)識(shí)第18頁(yè)/共46頁(yè)--以下是半加器的描述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頁(yè)/共46頁(yè)……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語(yǔ)句當(dāng)a和b分別為‘0’和‘0’時(shí),即P為‘00’不是操作符,含義相當(dāng)于then/“于是”滿(mǎn)足條件后執(zhí)行語(yǔ)句判斷P的值相當(dāng)于寫(xiě)出真值表第20頁(yè)/共46頁(yè)--以下是或門(mén)描述LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;--以下是或門(mén)實(shí)體描述ENTITYOr_2ISPORT

(x,y:INSTD_LOGIC;z:OUTSTD_LOGIC);END

Or_2;--以下是或門(mén)結(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頁(yè)/共46頁(yè).....--以下是或門(mén)另一種結(jié)構(gòu)體描述architectureoneofor_2isbeginc<=aorb;end;第22頁(yè)/共46頁(yè)--以下是一位全加器結(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

----二輸入或門(mén)部件聲明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頁(yè)/共46頁(yè)元件例化語(yǔ)句

元件例化語(yǔ)句:即將從前設(shè)計(jì)的實(shí)體當(dāng)作本設(shè)計(jì)的一個(gè)元件,然后用VHDL語(yǔ)句將各元件之間的連接關(guān)系描述出來(lái);VHDL設(shè)計(jì)實(shí)體、來(lái)自FPGA元件庫(kù)中的元件、Verilog設(shè)計(jì)的實(shí)體、IP核、FPGA中的嵌入式硬IP核等;第24頁(yè)/共46頁(yè)COMPONENT元件名IS【GENERIC(類(lèi)屬表);】PORT(端口名表);

ENDCOMPONENT元件名;

例化名:元件名PORTMAP([元件端口名=>]連接端口名,…);元件定義語(yǔ)句:將一個(gè)現(xiàn)成的設(shè)計(jì)實(shí)體定義為本設(shè)計(jì)的一個(gè)元件;與實(shí)體的port()一樣。元件例化語(yǔ)句:描述元件與當(dāng)前設(shè)計(jì)實(shí)體的連接關(guān)系第25頁(yè)/共46頁(yè)[元件端口名=>]連接端口名其中,元件端口名是元件定義語(yǔ)句中的端口名表中已定義好的;連接端口名是當(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頁(yè)/共46頁(yè)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;元件例化(映射)語(yǔ)句的位置:在結(jié)構(gòu)體的BEGIN和END之間;元件定義語(yǔ)句的位置:結(jié)構(gòu)體聲明部分名字關(guān)聯(lián)方式返回第27頁(yè)/共46頁(yè)CASE語(yǔ)句根據(jù)滿(mǎn)足的條件直接選擇多項(xiàng)順序語(yǔ)句中的一項(xiàng)執(zhí)行;

CASE表達(dá)式ISWHEN值1=>語(yǔ)句A;

WHEN值2=>語(yǔ)句B;

…WHENOTHERS

=>

語(yǔ)句C;ENDCASE;這里的=>不是關(guān)系運(yùn)算符,僅描述:值和對(duì)應(yīng)執(zhí)行語(yǔ)句的對(duì)應(yīng)關(guān)系,相當(dāng)于THEN的作用返回判斷前面的情況都不存在時(shí),作為最后一種條件取值第28頁(yè)/共46頁(yè)std_logic標(biāo)準(zhǔn)位類(lèi)型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頁(yè)/共46頁(yè)&-------并置操作符:將操作數(shù)或數(shù)組合并起來(lái)形成新的數(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頁(yè)/共46頁(yè)一種計(jì)數(shù)器的設(shè)計(jì)entitycnt4isport(clk:inbit;Q:buffer

integer

range15downto0);end;architecturebhvofcnt4isbeginprocess(clk)beginifclk’eventandclk=‘1’thenQ<=Q+1;endif;endprocess;endbhv;第31頁(yè)/共46頁(yè)數(shù)據(jù)對(duì)象:Buffer在“<=”的左右兩邊都出現(xiàn)Q,表明Q應(yīng)具有輸入和輸出兩種端口模式,同時(shí)它的輸入特性應(yīng)是反饋方式,即傳輸符號(hào)“<=”的右邊Q應(yīng)該來(lái)自左邊的Q的反饋。BUFFER與INTOUT的區(qū)別在于buffer的輸入來(lái)自反饋,所以這里將Q定義為buffer類(lèi)型最為合適。返回第32頁(yè)/共46頁(yè)數(shù)據(jù)類(lèi)型:integer對(duì)應(yīng)“+、-”的操作數(shù)必須定義為整數(shù)類(lèi)型(integer)。表達(dá)式:Q<=Q+1;式中“Q”和“1”都是整數(shù),滿(mǎn)足“<=”左右兩邊都是整數(shù)(類(lèi)型相同),“+”左右兩邊都是整數(shù)的條件。VHDL綜合器要求必須使用“RANGE”句子為所定義的數(shù)限定范圍,再根據(jù)所定義的范圍來(lái)決定表示此信號(hào)或變量的二進(jìn)制數(shù)的位數(shù)。Q:bufferintegerranger15downto0;定義了Q的取值范圍是0~15;可以用四位二進(jìn)制數(shù)表示。第33頁(yè)/共46頁(yè)整數(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頁(yè)/共46頁(yè)另一種計(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頁(yè)/共46頁(yè)ieee.std_logic_unsigned.all表達(dá)式:Q1<=Q1+1;加號(hào)左右兩個(gè)數(shù)據(jù)類(lèi)型不相同,Q1(邏輯矢量)1(整數(shù));ieee庫(kù)中std_logic_unsigned程序包中預(yù)先定義的操作符允許不同數(shù)據(jù)類(lèi)型的操作數(shù)之間用運(yùn)算符進(jìn)行運(yùn)算。返回第36頁(yè)/共46頁(yè)Q端口模式是“out”,由于Q沒(méi)有輸入的端口模式,因此Q不能如前例那樣直接用表達(dá)式:Q<=Q+1;在計(jì)數(shù)器內(nèi)部定義一個(gè)信號(hào)signal,無(wú)需定義方向,所以Q1的方向是不受方向限制的,可以用Q1<=Q1+1;完成累加任務(wù);第37頁(yè)/共46頁(yè)一般計(jì)數(shù)器的設(shè)計(jì)方法異步復(fù)位同步時(shí)鐘使能變量賦值省略賦值操作符第38頁(yè)/共46頁(yè)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. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論