




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
VHDL編程注意問題主要內(nèi)容位(矢量)與邏輯(矢量)關(guān)于端口信號和變量關(guān)于進(jìn)程位(矢量)與邏輯(矢量)
bit或其矢量形式bit_vector只有’0’和’1’兩種狀態(tài);std_logic包含’0’、’1’’、X’、‘Z’、’U’、’W’各種狀態(tài);數(shù)字電路中也只有’0’和’1’兩種邏輯,因此會給初學(xué)者一個(gè)誤區(qū)。以一個(gè)最簡單D型觸發(fā)器設(shè)計(jì)為例①process(clk)
②begin
③ifclk’eventandclk=’1’then
④Q<=D;
⑤endif;
⑥endprocess;雙向總線
對于雙向總線設(shè)計(jì)、FPGA/CPLD上電配置等問題,如果沒有’Z’,’X’等狀態(tài),根本無法進(jìn)行設(shè)計(jì)和有效驗(yàn)證。關(guān)于端口實(shí)際設(shè)計(jì)時(shí)VHDL共定義了4種類型的端口,分別是In,Out,Inout,Buffer。這里,我們主要講述關(guān)于buffer和inout使用時(shí)的注意事項(xiàng)。Buffer與Out端口比,Buffer端口具有回讀功能,也即內(nèi)部反饋,但在設(shè)計(jì)時(shí)最好不要使用buffer,因?yàn)閎uffer類型的端口不能連接到其他類型的端口上,無法把包含該類型端口的設(shè)計(jì)作為子模塊元件例化,不利于大型設(shè)計(jì)和程序的可讀性。若設(shè)計(jì)時(shí)需要實(shí)現(xiàn)某個(gè)輸出的回讀功能,可以通過增加中間信號作為緩沖,由該信號完成回讀功能。
雙向端口Inout①DataB<=DinwhenCE=’1’andRd=’0’else
②(others=>’Z’);
③Dout<=DataBwhenCE=’1’andRd=’1’else
④(others=>’1’);
……
程序中DataB為雙向端口,編程時(shí)應(yīng)注意的是,當(dāng)DataB作為輸出且空閑時(shí),必須將其設(shè)為高阻態(tài)掛起,即有類似第②行的語句,否則實(shí)現(xiàn)后會造成端口死鎖。而當(dāng)DataB作為有效輸入時(shí),DataB輸出必須處于高阻態(tài),對于該例子中即,當(dāng)CE=’1’andRd=’1’時(shí)。信號和變量
常數(shù)、信號和變量是VHDL中最主要的對象,分別代表一定的物理意義。常數(shù)對應(yīng)于數(shù)字電路中的電源或地;信號對應(yīng)某條硬件連線;變量通常指臨時(shí)數(shù)據(jù)的局部存儲。信號和變量功能相近,用法上卻有很大不同。信號與變量主要區(qū)別
信號
變量1.賦值延遲至少有△延時(shí)
無,立即變化2.相關(guān)信息有,可以形成波形
無,只有當(dāng)前值3.進(jìn)程敏感是
否4.全局性具有全局性,只能在某個(gè)進(jìn)程或 可存在于多個(gè)進(jìn)程中子程序中有效信號與變量
對于變量賦值操作無延遲,初學(xué)者認(rèn)為這個(gè)特性對VHDL設(shè)計(jì)非常有利,但這只是理論上的。基于以下幾點(diǎn)原因,我們建議,編程時(shí)還是應(yīng)以信號為主,盡量減少變量的使用。變量的特征變量賦值無延時(shí)是針對進(jìn)程運(yùn)行而言的,只是一個(gè)理想值,對于變量的操作往往被綜合成為組合邏輯的形式,而硬件上的組合邏輯必然存在輸入到輸出延時(shí)。當(dāng)進(jìn)程內(nèi)關(guān)于變量的操作越多,其組合邏輯就會變得越大越復(fù)雜。變量的特征由于變量不具備信息的相關(guān)性,只有當(dāng)前值,因此也無法在仿真時(shí)觀察其波形和狀態(tài)改變情況,無法對設(shè)計(jì)的運(yùn)行情況有效驗(yàn)證,而測試驗(yàn)證工作量往往會占到整個(gè)設(shè)計(jì)70%~80%的工作量,采用信號則不會存在這類問題。變量的特征變量有效范圍只能局限在單個(gè)進(jìn)程或子程序中,要想將其值帶出與其余進(jìn)程、子模塊之間相互作用,必須借助信號,這在一定程度上會造成代碼不夠簡潔,可讀性下降等缺點(diǎn)。
當(dāng)然,變量也具有其特殊的優(yōu)點(diǎn),特別是用來描述一些復(fù)雜的算法,如圖像處理,多維數(shù)組變換等。關(guān)于進(jìn)程
進(jìn)程(Process)是VHDL中最為重要的部分,大部分設(shè)計(jì)都會用到Process結(jié)構(gòu),因此掌握Process的使用顯得尤為重要。以下是初學(xué)和使用Process經(jīng)常會出錯(cuò)的例子。多余時(shí)鐘的引入輸出多驅(qū)動1.多余時(shí)鐘的引入
在設(shè)計(jì)時(shí)往往會遇到這種情況,需要對外部某個(gè)輸入信號進(jìn)行判斷,當(dāng)其出現(xiàn)上跳或下跳沿時(shí),執(zhí)行相應(yīng)的操作,而該信號不像正常時(shí)鐘那樣具有固定占空比和周期,而是很隨機(jī),需要程序設(shè)計(jì)判斷其上跳沿出現(xiàn)與否。這時(shí),很容易寫出如下程序:
①process(Ctl_a)--Ctl_a即為該輸入信號
②begin
③ifCtl_a’eventandCtl_a=’1’then
④……;--執(zhí)行相應(yīng)操作
⑤endif;
⑥endprocess;
解決辦法將Ctl_a增加一級狀態(tài)Ctl_areg寄存,通過對Ctl_a和Ctl_areg狀
態(tài)判斷上跳與否,改正程序如下:①process(clk)
②begin
③ifclk’eventandclk=’1’then
④Ctl_areg<=Ctl_a;--產(chǎn)生相鄰狀態(tài)
⑤ifCtl_areg=’0’andCtl_a=’1’then--上跳判斷
⑥……;--執(zhí)行相應(yīng)操作
⑦endif;
⑧endif;
⑨endprocess;
程序中第④行用以產(chǎn)生兩個(gè)相鄰狀態(tài),第⑤行對前后狀態(tài)進(jìn)行判斷是否有上跳現(xiàn)象發(fā)生。其中,需注意的是clk的時(shí)鐘頻率應(yīng)明顯快于Ctl_a信號的變化頻率,以保證正確采樣。2.輸出多驅(qū)動誤用Process經(jīng)常會引起輸出多驅(qū)動源的發(fā)生,即在兩個(gè)以上的進(jìn)程內(nèi)對同一信號賦值操作。⑴Proc_a:process(clk)
⑵begin
⑶ifclk’eventandclk=’1’then⑷Dout<=Din_A;⑸endif
⑹endprocess;;
⑺
⑻Proc_b:process(sel_en)
⑼begin
⑽ifsel_en=’1’then⑾Dout<=Din_B;⑿endif;
⒀endprocess;進(jìn)程注意事項(xiàng)一個(gè)進(jìn)程中不允許出現(xiàn)兩個(gè)時(shí)鐘沿觸發(fā),(Xilinx公司CoolRunner系列CPLD支持單個(gè)時(shí)鐘的雙觸發(fā)沿除外)對同一信號賦值的語句應(yīng)出現(xiàn)在單個(gè)進(jìn)程內(nèi),不要在時(shí)鐘沿之后加上else語句,如ifclk’eventandclk=’1’then-else…的結(jié)構(gòu),現(xiàn)有綜合工具支持不了這種特殊的觸發(fā)器結(jié)構(gòu)當(dāng)出現(xiàn)多層IF語句嵌套時(shí),最好采用CASE語句替代,一是減少多層嵌套帶來的延時(shí),二來可以增強(qiáng)程序的可讀性順序語句如IF語句、CASE語句、LOOP語句、變量賦值語句等必須出現(xiàn)在進(jìn)程、函數(shù)或子程序內(nèi)部,而不能單獨(dú)出現(xiàn)在進(jìn)程之外進(jìn)程內(nèi)部是順序執(zhí)行的,進(jìn)程之間是并行運(yùn)行的;VHDL中的所有并行語句都可以理解為特殊的進(jìn)程,只是不以Process結(jié)構(gòu)出現(xiàn),其輸入信號和判斷信號就是隱含的敏感表
VHDL學(xué)習(xí)注意事項(xiàng)
與軟件語言相比,VHDL最重要的特點(diǎn)就在于它的并行運(yùn)行特性,當(dāng)設(shè)計(jì)好的電路上電后,器件內(nèi)部所有信號將同時(shí)并發(fā)工作,而不會以軟件方式按照程序順序執(zhí)行,即使在進(jìn)程內(nèi)部也是趨向并行工作的。①process(clk)
溫馨提示
- 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 財(cái)務(wù)決策中的量化分析技巧試題及答案
- 項(xiàng)目管理考試框架與內(nèi)容試題及答案
- 項(xiàng)目溝通計(jì)劃的制定與執(zhí)行試題及答案
- 注冊會計(jì)師考試政策法規(guī)要點(diǎn)總結(jié)試題及答案
- 2024年項(xiàng)目管理國際標(biāo)準(zhǔn)的認(rèn)識試題及答案
- 福建事業(yè)單位考試必看試題及答案分享
- 項(xiàng)目管理中的溝通障礙及解決試題及答案
- 項(xiàng)目管理評估中的反饋機(jī)制測試試題及答案
- 領(lǐng)導(dǎo)力在項(xiàng)目管理中的影響試題及答案
- 2024年微生物檢測標(biāo)準(zhǔn)試題及答案解析
- 2023-2024網(wǎng)絡(luò)文學(xué)閱讀平臺價(jià)值研究報(bào)告
- GB/T 5534-2024動植物油脂皂化值的測定
- 養(yǎng)老院消防預(yù)案和應(yīng)急預(yù)案
- 2024年大學(xué)生心理健康知識競賽題庫及答案共180題
- 精神殘疾人康復(fù)培訓(xùn)
- 夫妻忠誠協(xié)議書(完整版)
- 水利基礎(chǔ)理論知識單選題100道及答案解析
- 2024年面向雙高電力系統(tǒng)發(fā)展需求的柔性直流輸電技術(shù)報(bào)告
- 發(fā)酵類制藥工業(yè)水污染物間接排放標(biāo)準(zhǔn)DB41 758-2012
- 2025年中考?xì)v史復(fù)習(xí)專項(xiàng)訓(xùn)練:中國近代史材料題40題(原卷版)
- 2024年手工木工職業(yè)技能競賽理論考試題庫-下(多選、判斷題)
評論
0/150
提交評論