數(shù)字系統(tǒng)與設(shè)計軟件實驗-新例子_第1頁
數(shù)字系統(tǒng)與設(shè)計軟件實驗-新例子_第2頁
數(shù)字系統(tǒng)與設(shè)計軟件實驗-新例子_第3頁
數(shù)字系統(tǒng)與設(shè)計軟件實驗-新例子_第4頁
數(shù)字系統(tǒng)與設(shè)計軟件實驗-新例子_第5頁
已閱讀5頁,還剩29頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

§4.4AHDL的設(shè)計實例優(yōu)先編碼器要求:根據(jù)輸入信號的優(yōu)先級決定輸出信號的值一、傳統(tǒng)的設(shè)計方法真值表highmiddlelowLevel[1..0]i2i1i0Level1Level01××1101×100010100000分別列出兩個輸出的卡諾圖舉例:i1i0i2010001111000111111level1i1i0i2010001111001001111level0所得化簡表達式為:level1=i2+i1=i2+i2i1level0=i2+i1i0=i2+i2i1i0為了合理利用邏輯門,并未化到最簡。然后畫出邏輯電路圖。i2(high)i1(middle)i0(low)level1level0二、用AHDL設(shè)計SUBDESIGNPriority(Priority.gdfi[2..0]:INPUT;)level[1..0]:OUTPUT;BEGINIFi2THENlevel[]=3;ELSIFi1THENlevel[]=2;ELSIFi0THENlevel[]=1;ELSElevel[]=0;ENDIF;END;指二進制(11)1、優(yōu)先級由IF和ELSIF子句的順序決定的(第一子句具有最高優(yōu)先級);2、設(shè)計人員沒有必要對每一個門的邏輯關(guān)系特別清楚;3、一個IfThen語句只能運算布爾表達式,而IfGenerate語句可以運算算術(shù)表達式的Superset;4、一個IfThen語句會產(chǎn)生很復(fù)雜的邏輯;說明舉例:二——四譯碼器要求:將兩位二進制碼轉(zhuǎn)換成one-hot碼CODE0CODE1OUT0OUT1OUT2OUT3decoder.gft一、圖形文件二、AHDL文件SUBDESIGNdecoder(code[1..0]:INPUT;)out[3..0]:OUTPUT;BEGINCASEcode[]ISWHEN0=>out[]=B〝0001〞;WHEN1=>out[]=B〝0010〞;WHEN2=>out[]=B〝0100〞;WHEN3=>out[]=B〝1000〞;ENDCASE;END;因為表達式各不相同,每次只有一個WHEN子句被激活。說明IfThen語句和Case語句比較1、這兩條語句在默認情況下,是相似的,可以互用,得到的結(jié)果也相同。IFa[]==0THENy=c&b;ELSIFa[]==1THENCASEa[]ISWHEN0=>y=e&f;ELSIFa[]==2THENy=g&h;y=c&b;WHEN1=>y=e&f;WHEN2=>y=g&h;ELSEELSIFa[]==3THENy=i;y=GND;ENDIF;WHEN3=>y=i;WHENOTHERS=>y=GND;ENDCASE;2、IfThen語句中任何一種布爾表達式均可以被使用。IF或ELSE子句后的表達式可以互不相關(guān),但Case語句中,一個簡單的布爾表達式都可以與WHEN子句中的常量相比較。3、使用ELSIF子句會導(dǎo)致MAX+PLUSⅡ編譯器中的邏輯過于繁雜,因為每一個后繼的ELSIF子句必須檢查前面的IF/ELSIF子句是否出錯。IFaTHENc=d;ELSIFbTHENc=e;ELSEENDIF;IfThen語句編譯器解釋語句IFaTHENc=d;IF!a&bTHENc=e;ENDIF;IF!a&!bTHENc=f;c=f;ENDIF;ENDIF;舉例:七段碼譯碼電路要求:按LED顯示電路譯碼%—a—%%f︳︱b%%—g—%%e︳︱c%%—d—%%0123456789ABCDEF%SUBDESIGN7segment(i[3..0]:INPUT;)a,b,c,d,e,f,g:OUTPUT;BEGINTABLEi[3..0]=>a,b,c,d,e,f,g;H“0”=>1,1,1,1,1,1,0;H“1”=>0,1,1,0,0,0,0;H“2”=>1,1,0,1,1,0,1;H“3”=>1,1,1,1,0,0,1;H“4”=>0,1,1,0,0,1,1;H“5”=>1,0,1,1,0,1,1;H“6”=>1,0,1,1,1,1,1;H“7”=>1,1,1,0,0,0,0;H“8”=>1,1,1,1,1,1,1;H“9”=>1,1,1,1,0,1,1;H“A”=>1,1,1,0,1,1,1;H“B”=>0,0,1,1,1,1,1;H“C”=>1,0,0,1,1,1,0;H“D”=>0,1,1,1,1,0,1;H“E”=>1,0,0,1,1,1,1;H“F”=>1,0,0,0,1,1,1;ENDTABLE;END;說明1、設(shè)計AHDL的最快的方法是使用ALTERA提供的AHDL模板。2、插入AHDL的模板的步驟為:①將文件以.tdf擴展名保存;②選擇AHDLTemplate;顯示AHDL模板對話框;3、一旦插入一個AHDL模板,用戶必須用自己的邏輯取代模塊中的所有變量;4、消息處理器中有對錯誤自動定位的功能。舉例:試設(shè)計一個10bit移位寄存器要求:用D觸發(fā)器SUBDESIGNshift10a(in,clock:INPUT;out:OUTPUT;)BEGINVARIABLEbit[9..0]:DFF;bit[].clk=clock;bit[9..1].d=bit[8..0].q;bit0.d=in;out=bit9.q;END;布爾控制等式shift10a.gdfOutputInput器件的選擇與引腳的定義:要求:將設(shè)計配置到EPM7032器件中,并且將信號分配到具體的引腳。DESIGNISshift10bBEGINDEVICEIS“shift10a”IS“emp7032”BEGINclock@44:INPUT;in@43:INPUT;out@41:OUTPUT;bit0@LC27:BURIED;bit1@LC26:BURIED;bit2@LC24:BURIED;bit3@LC23:BURIED;bit4@LV22:BURIED;bit5@LC21:BURIED;bit6@LC20:BURIED;bit7@LC19:BURIED;bit8@LC18:BURIED;END;END;SUBDESIGNshift10b(in,clock:INPUT;out:OUTPUT;)BEGINVARIABLEbit[9..0]:DFF;bit[].clk=clock;bit[9..1].d=bit[8..0].q;bit0.d=in;out=bit9.q;END;舉例:試設(shè)計一個16bit計數(shù)器要求:可清零、可預(yù)置、可以向前和后計數(shù)SUBDESIGNahdlcnt(clk,load,ena,clr,d[15..0]:INPUT;q[15..0],:OUTPUT;)BEGINVARIABLEcount[15..0]:DFF;count[].clk=clk;count[].clrn=!clr;IFloadTHENcount[].d=d[];ELSIFenaTHENcount[].d=count[].q+1;ELSEcount[].d=count[].q;ENDIF;q[]=count[];END;舉例:實現(xiàn)狀態(tài)機在AHDL中定義一個狀態(tài)機,必須在TDF文件中包含以下條目:①狀態(tài)機定義(變量段);②布爾控制等式(邏輯段);③真值表語句或Case語句中的邏輯轉(zhuǎn)換(邏輯段);④還須定義一個輸入或輸出信號作為子設(shè)計段的狀態(tài)機端口,在TDF文件和其它設(shè)計文件之間輸入或輸出AHDL狀態(tài)機。1、實現(xiàn)狀態(tài)機:SUBDESIGNsimple(clk,reset,d:INPUT;q:OUTPUT;)BEGINVARIABLEss:MACHINEWITHSTATES(s0,s1);ss.clk=clk;ss.reset=reset;CASEssISWHENs0=>q=END;IFdTHENss=s1;ENDIF;WHENs1=>q=VCC;IF!dTHENss=s0;ENDIF;ENDCASE;END;這段文件實現(xiàn)的功能與D觸發(fā)器相同。兩個狀態(tài)分別是s0,s1,沒有定義狀態(tài)位。Case語句的When子句中定義了狀態(tài)機每個狀態(tài)的轉(zhuǎn)移。宏函數(shù)設(shè)計電路為函數(shù)定義一個變量名,即實例名。在變量段的實例說明語句中說明,然后在邏輯段中使用該函數(shù)的實例的端口。舉例:一、名稱相關(guān)聯(lián)方法macro1.tdf:INCLUDS〝4count〞;INCLUDS〝16dmux〞;子設(shè)計名SUBDESIGNmacro1(包含語句VARIABLEBEGINclk:INPUT;)out[15..0]:OUTPUT;counter:4count;decoder:16dmux;counter.clk=clk;counter.dnup=GND;decoder.(d,c,b,a)=counter.(qd,qc,qb,qa);out[]=decoder.q[];END;變量段子設(shè)計段輸入端口的格式→〈實例名〉.〈端口名〉在邏輯段中直接調(diào)用函數(shù),它采用端口順序關(guān)聯(lián)方式。二、內(nèi)部直接引用方法macro2.tdf:INCLUDS〝4count〞;INCLUDS〝16dmux〞;SUBDESIGNmacro1(clk:INPUT;)out[15..0]:OUTPUT;q[3..0]:NODE;VARIABLEBEGIN(q[3..0],)=4count(clk,,,,,GND,,,,);out[15..0]=16dmux(q[3..0]);END;端口順序一定要對應(yīng)正確,沒有明確連接的端口用逗號留出位置。對應(yīng)電路圖見后:模N計數(shù)器及七段譯碼顯示FUNCTION4count(clk,clrn,setn,ldn,cin,dnup,d,c,b,a)RETURNS(qd,qc,qb,qa,cout);FUNCTION7segment(i3,i2,i1,i0);RETURNS(g,f,e,d,c,b,a);SUBDESIGN4cnt7s(clk,dnup:INPUT;sa,sb,sc,sd,se,sf,sg,out:OUTPUT;)舉例:VARIABLEcounter:4count;decoder:7segment;BEGINcounter.clk=clk;counter.dnup=dnup;decoder,i[3..0]=counter.(qd,qc,qb,qa);(sg,sf,se,sd,sc,sb,sa)=decoder.(g,f,e,d,c,

溫馨提示

  • 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論