vhdl編程的一些心得體會(huì)(初學(xué)者必看)_第1頁(yè)
已閱讀1頁(yè),還剩5頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、VHDL編程的一些心得體會(huì)編程的一些心得體會(huì)VHDL是由美國(guó)國(guó)防部為描述電子電路所開發(fā)的一種語(yǔ)言,其全稱為(VeryHighSpeedIntegratedCircuit)HardwareDeionLanguage。與另外一門硬件描述語(yǔ)言VerilogHDL相比,VHDL更善于描述高層的一些設(shè)計(jì),包括系統(tǒng)級(jí)(算法、數(shù)據(jù)通路、控制)和行為級(jí)(寄存器傳輸級(jí)),而且VHDL具有設(shè)計(jì)重用、大型設(shè)計(jì)能力、可讀性強(qiáng)、易于編譯等優(yōu)點(diǎn)逐漸受到硬件設(shè)計(jì)者的

2、青睞。但是,VHDL是一門語(yǔ)法相當(dāng)嚴(yán)格的語(yǔ)言,易學(xué)性差,特別是對(duì)于剛開始接觸VHDL的設(shè)計(jì)者而言,經(jīng)常會(huì)因某些小細(xì)節(jié)處理不當(dāng)導(dǎo)致綜合無(wú)法通過(guò)。為此本文就其中一些比較典型的問(wèn)題展開探討,希望對(duì)初學(xué)者有所幫助,提高學(xué)習(xí)進(jìn)度。一關(guān)于端口VHDL共定義了5種類型的端口,分別是InOutInoutBuffer及Linkage,實(shí)際設(shè)計(jì)時(shí)只會(huì)用到前四種。In和Out端口的使用相對(duì)簡(jiǎn)單。這里,我們主要講述關(guān)于buffer和inout使用時(shí)的注意事項(xiàng)。

3、inout和buffer區(qū)別INOUT為輸入輸出雙向端口,即從端口內(nèi)部看,可以對(duì)端口進(jìn)行賦值,即輸出數(shù)據(jù)。也可以從此端口讀入數(shù)據(jù),即輸入;BUFFER為緩沖端口,功能與INOUT類似,區(qū)別在于當(dāng)需要讀入數(shù)據(jù)時(shí),只允許內(nèi)部回讀內(nèi)部產(chǎn)生的輸出信號(hào),即反饋。舉個(gè)例子,設(shè)計(jì)一個(gè)計(jì)數(shù)器的時(shí)候可以將輸出的計(jì)數(shù)信號(hào)定義為BUFFER,這樣回讀輸出信號(hào)可以做下一計(jì)數(shù)值的初始值。buffer顧名思義就是緩存,它是作為輸出使用的,因?yàn)樵谀K內(nèi),是不可以將輸

4、出賦值給其他信號(hào)的,例如定義b:outstd_logic我們現(xiàn)在要將b賦值給信號(hào)a,就會(huì)出錯(cuò),但是如果b的類型為buffer就可以執(zhí)行操作;inout是雙向端口,即可以作為輸入也可以作為輸出,跟buffer的作用完全不同,要注意的是inout類型的數(shù)據(jù)在不作為輸入使用時(shí)必須被置為高阻“Z”狀態(tài),否則它作為輸出的功能將不能正確執(zhí)行。與Out端口比,Buffer端口具有回讀功能,也即內(nèi)部反饋,但在設(shè)計(jì)時(shí)最好不要使用buffer,因?yàn)閎uff

5、er類型的端口不能連接到其他類型的端口上,無(wú)法把包含該類型端口的設(shè)計(jì)作為子模塊元件例化,不利于大型設(shè)計(jì)和程序的可讀性。若設(shè)計(jì)時(shí)需要實(shí)現(xiàn)某個(gè)輸出的回讀功能,可以通過(guò)增加中間信號(hào)作為緩沖,由該信號(hào)完成回讀功能。雙向端口Inout是四種端口類型中最為特殊的一種,最難以學(xué)習(xí)和掌握,為此專門提供一個(gè)簡(jiǎn)單程序進(jìn)行闡述部分程序如下:...…①DataB’Z’)③Dout=DataBwhenCE=’1’Rd=’1’elsebit或其矢量形式bit_ve

6、ct只有’0’和’1’兩種狀態(tài),數(shù)字電路中也只有’0’和’1’兩種邏輯,因此會(huì)給初學(xué)者一個(gè)誤區(qū),認(rèn)為采用位(矢量)則足夠設(shè)計(jì)之用,而不必像std_logic那樣出現(xiàn)’X’’U’’W’各種狀態(tài),增加編程難度。但實(shí)際情況卻并非如此,以一個(gè)最簡(jiǎn)單D型觸發(fā)器設(shè)計(jì)為例……①process(clk)②begin③ifclk’eventclk=’1’then④Q=D⑤endif⑥endprocess……實(shí)際中clk對(duì)數(shù)據(jù)端D的輸入有一定的時(shí)間限制,即

7、在clk上升沿附近(建立時(shí)間和保持時(shí)間之內(nèi)),D必須保持穩(wěn)定,否則Q輸出會(huì)出現(xiàn)亞穩(wěn)態(tài)。當(dāng)clk和D時(shí)序關(guān)系不滿足時(shí),由于bit只有’0’或’1’,系統(tǒng)只能隨機(jī)的從’0’和’1’中給Q輸出,這樣的結(jié)果顯然是不可信的;而采用std_logic類型,則時(shí)序仿真時(shí)會(huì)輸出為一個(gè)’X’,提醒用戶建立保持時(shí)間存在問(wèn)題,應(yīng)重新安排D和clk之間時(shí)序關(guān)系。此外,對(duì)于雙向總線設(shè)計(jì)(前面已提及)、FPGACPLD上電配置等問(wèn)題,如果沒(méi)有’Z’’X’等狀態(tài),根

8、本無(wú)法進(jìn)行設(shè)計(jì)和有效驗(yàn)證。四關(guān)于進(jìn)程進(jìn)程(Process)是VHDL中最為重要的部分,大部分設(shè)計(jì)都會(huì)用到Process結(jié)構(gòu),因此掌握Process的使用顯得尤為重要。以下是初學(xué)和使用Process經(jīng)常會(huì)出錯(cuò)的例子。1.多余時(shí)鐘的引入在設(shè)計(jì)時(shí)往往會(huì)遇到這種情況,需要對(duì)外部某個(gè)輸入信號(hào)進(jìn)行判斷,當(dāng)其出現(xiàn)上跳或下跳沿時(shí),執(zhí)行相應(yīng)的操作,而該信號(hào)不像正常時(shí)鐘那樣具有固定占空比和周期,而是很隨機(jī),需要程序設(shè)計(jì)判斷其上跳沿出現(xiàn)與否。這時(shí),很容易寫出

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫(kù)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論