前言:中文期刊網精心挑選了vhdl語言范文供你參考和學習,希望我們的參考范文能激發你的文章創作靈感,歡迎閱讀。
vhdl語言范文1
關鍵詞:8路搶答器控制系統;EDA;CPLD;vhdl;仿真
中圖分類號:TP311文獻標識碼:A文章編號:1009-3044(2007)05-11351-02
1 引言
隨著電子技術的發展,可編程邏輯器件(PLD)的出現,使得電子系統的設計者利用EDA(電子設計自動化)軟件,就可以獨立設計自己的專用集成電路(ASIC)器件??删幊踢壿嬈骷且环N半導體集成器件的半成品。在可編程邏輯器件的芯片中按一定方式(陣列形式或單元陣列形式)制作了大量的門、觸發器等基本邏輯器件,對這些基本器件適當地連接,就可以完成某個電路或系統的功能。
8路搶答器控制系統是工廠、學校和電視臺等單位舉辦各種智力競賽等娛樂活動中經常使用的重要基礎設備之一。目前設計搶答器的方法很多,例如用傳統的PCB板設計、用PIC設計或者用單片機設計。而用VHDL可以更加快速、靈活地設計出符合各種要求的搶答器,優于其他設計方法,使設計過程達到高度自動化。本文介紹的八路數顯搶答器基于VHDL語言、以EDA技術作為開發手段、采用CPLD(復雜的可編程邏輯器件)作為控制核心設計而成。與傳統設計相比較,不僅簡化了接口和控制,也提高了系統的整體性能和工作可靠性,具有電路簡單、成本低廉、操作方便、靈敏可靠等優點。
2 設計思路與系統結構
2.1 8路搶答器控制系統的設計思路與功能
根據搶答要求,系統所需實現的功能如下:
(1)設計制作一個競賽搶答器,共設8個組別每組控制一個搶答開關,分別為sl,s2,…,s8。
(2)設置主持人控制鍵Reset,用于控制整個系統清零和搶答有效控制。
(3)主持人發出開始命令,8人開始搶答。其中一人先按下搶答鍵,蜂鳴器發出鳴叫,數碼顯示該人號碼,其他人再按鍵,系統不再響應,直至主持人按鍵清零,下一次搶答開始。
2.2 系統原理結構框圖
根據以上設計思路與功能要求,設計系統結構框圖,見圖1所示。該系統共分六個組成部分:主持人控制電路、CPLD控制模塊、脈沖振蕩電路、8人(組)搶答電路、數碼顯示電路、蜂鳴器聲響電路。
圖中脈沖振蕩電路用于產生標準時鐘信號,為系統提供CLK信號;數碼顯示部分顯示搶答成功者的組別號??刂撇糠质荅DA設計的核心部分,用硬件描述語言(VHDL)來描述數字系統的結構、行為和功能,采用“自頂向下”設計方法,將電路的硬件設計轉變為軟件設計。
圖1 8路搶答器控制系統結構框圖
3 硬件設計
VHDL語言設計的出現從根本上改變了以往數字電路的設計模式,使電路由硬件設計轉變為軟件設計,使電子設計的核心轉化為VHDL語言的編程設計,這樣提高了設計的靈活性,使電路的設計復雜程度大大降低。
(1)主持人控制電路和8人搶答電路,每人(組)各設一個按鍵開關,分別為reset、sl,s2,…,s8,每個開關接一個電阻和一個電源Vcc,當按鍵按下為高電平有效;
(2)CPLD控制芯片采用Altera公司MAX7000S系列的EPM7128SLC84-15來實現;
(3)脈沖振蕩電路,石英晶體振蕩電路如圖,c1、c2為微調電容;
(4)蜂鳴器聲響電路。當BELL為高電平時,三極管導通,蜂鳴器發出聲響。當BELL為低電平時,三極管截止,蜂鳴器不發聲;
(5)數碼顯示采用共陰極7位二進制輸入8字管。
4 基于VHDL的設計
VHDL是用來描述從抽象到具體級別硬件的工業標準語言,它是由美國國防部在20世紀80年代開發的HDL,現在已成為IEEE承認的標準硬件描述語言。VHDL支持硬件的設計、驗證、綜合和測試,以及硬件設計數據的交換、維護、修改和硬件的實現,具有描述能力強、生命周期長、支持大規模設計的分解和已有設計的再利用等優點。
VHDL主要用于描述數字系統的結構、行為和功能,其程序結構特點是將一個電路模塊或一個系統分成實體(外部端口)和構造體(內部功能算法實現)兩部分實現。對于一個電路模塊或者數字系統而言,定義了外部端口后,一旦內部功能算法完成后,其他系統可以直接依據外部端口調用該電路模塊或數字系統,而不必知道其內部結構和算法。VHDL的特點使得電子系統新的設計方法一一“自頂向下”設計方法更加容易實現。
圖2 8路搶答器原理圖
本設計在MAX+plusⅡ環境中進行,MAX+plusⅡ是美國ALTERA公司提供的FPGA/CPLD開發集成環境。MAX+plusⅡ界面友好,使用便捷,被譽為業界最容易的EDA軟件。
下面詳細論述使用MAX+plusⅡ軟件設計8路搶答器控制系統的過程。
4.1 VHDL實體設計
端口部分共設計10個輸入端口,8個輸出端口。輸入端口包括1個脈沖端口、1個主持人控制端口和8人搶答端口。輸出端口包括1個蜂鳴器輸出端口和8字管輸出管端口。
8路搶答器實體部分的VHDL代碼:
ENTITY barenqiangda IS
PORT(s: IN STD_LOGIC_VECTOR(7 downto 0);[8人搶答輸入端口定義]
reset,clk: IN STD_LOGIC; [主持人復位和脈沖端口定義]
a: OUT STD_LOGIC_VECTOR(0 downto 6); [8字管輸出端口定義]
bell: OUT STD_LOGIC);[蜂鳴器輸出端口定義]
END barenqiangda;
4.2 VHDL構造體設計
8路搶答器實體部分以并行處理語句――進程(PROCESS)語句為基本語句,該程序以復位、脈沖和8人搶答答信號為敏感信號,當敏感信號發生變化時,進程被激活,順序執行內部語句。
構造體部分VHDL代碼:
4.3 芯片設置、編譯、管腳設置
程序輸入完成后然后選擇用于編程的目標芯片:選擇菜單“Assign”“Device”,窗口中的Device Family是器件序列欄,先在此欄中選擇MAX7000S。然后選擇7128SLC84-15器件,按OK,就可以進行編譯了。經“MAX+PLUSE II”中的“Compiler”菜單編譯,以驗證設計結果是否符合要求,如果有問題,則返回原設計文件再次進行修改,直到正確為止。
編譯無誤后經“MAX+PLUSE II”中的“FLOORPLAN EDITOR”菜單,進行輸入、輸出管腳設置,將18個元件端口放置到EPM7128SLC84-15芯片適當的I/O口,并用手工調整按圖2所示設置。
4.4 仿真
編譯成功后進行仿真。首先建立波形文件。波形文件建好并存盤后。選擇菜單“Max+plusII”“simulator”,啟動仿真操作,結束后觀察仿真波形(圖3所示)。從仿真波形看,符合設計要求。
圖3 邏輯功能仿真波形
4.5 下載實驗
仿真結束后,就可將文件下載到芯片中。連接硬件系統后,通上電源,經“MAX+PLUSE II”中的“PROGRAMMER”菜單,調出編程器窗口。一切就緒后,按下編程器窗口中的“program”按鈕,設計的內容就開始下載到CPLD芯片EPM7128SLC84-15中。經實際電路測試驗證,達到了設計的要求。
5 結束語
VHDL語言設計的出現從根本上改變了以往數字電路的設計模式,使電路由硬件設計轉變為軟件設計,使電子設計的核心轉化為VHDL語言的編程設計,這樣提高了設計的靈活性,降低了電路的復雜程度,修改起來也很方便。并且整個設計很大一部分由電腦輔助來完成,大大縮短了設計周期,減少了設計費用,降低了設計風險。這種數字系統的設計可以直接面向用戶需求,根據系統的行為功能要求,自上至下地逐層完成相應的描述、綜合、優化、仿真與驗證,直到生成器件,體現了EDA的自動化特點。
參考文獻:
[1]郭勇. EDA技術基礎(第2版)[M]. 機械工業出版社,2005.314-320.
vhdl語言范文2
【關鍵詞】數字電路;VHDL;教學改革;設計方法
1.引言
數字電路是理工科中的電類專業和計算機專業必修的專業基礎課程,也是信息類各專業的平臺課程。該課程在介紹有關數字系統基本知識、基本理論、基本電路的基礎上,重點討論數字系統中各種邏輯電路分析與設計的基本方法,以及該領域的發展現狀及最新的技術。設置該課程的主要目的是為了讓學生了解各種基本邏輯電路,能熟練地運用有關知識和理論對各類邏輯電路進行分析設計。目前, 大多數高等院校仍是采用傳統的數字電路教學模式, 以教材為中心,過于強調基本原理、公式的推導以及波形的分析,往往讓學生覺得抽象,不能夠很好地理解電路、集成芯片的功能及應用。而實驗環節主要在實驗箱上完成,開設的是一些驗證性的實驗,對各實驗項目的電路設計以手工為主,一般遵循自底向上的設計方法,從電路的功能分析,真值表、表達式、邏輯電路圖到器件的選擇、連線、測試等,學生的認識僅僅停留在局部小部件上,復雜的系統設計思想受到限制。在數字電子技術飛速發展的今天,大規模以及超大規模集成電路的廣泛應用,這種缺乏實用性和創新性的傳統教學模式,已不再適應現代應用型人才的培養。因此,教學需要融入新技術 、突破傳統教學模式,引入VHDL語言的數字電路教學改革就成為一個重要的研究課題。
2.VHDL語言及其特點
超高速集成電路硬件描述語言(VHDL) 是一種用于數字電路設計的高級語言,是被IEEE和美國國防部確認為標準的硬件描述語言,其主要用于描述數字電路的結構,行為,功能和接口?;谶@種描述結合相關的軟件工具,可以得到所期望的實際數字電路。利用VHDL語言進行電路設計具有以下幾個特點:
(1)VHDL可用于設計復雜的、多層次的設計,并且支持設計庫和設計的重復使用;
(2)與其他的硬件描述語言相比,VHDL具有更強的行為描述能力;
(3)VHDL有豐富的仿真語句和庫函數,使其在設計的早期就能查驗設計系統的功能可行性,借助于相關仿真器隨時可對設計進行仿真模擬;
(4)對于VHDL完成的一個確定的設計,一般可進行邏輯綜合和優化,并能自動的把VHDL描述設計轉變成門級網表;
(5)VHDL語言支持電路描述由高層向低層的綜合變換,便于文檔管理,易于理解和設計的再利用;
(6)VHDL對于設計的描述具有相對獨立性,設計者可以不懂硬件的結構,最終實現的目標器件設計。
3.VHDL語言較傳統設計方法的優點
通過上述特點,我們了解到VHDL語言功能強大、設計靈活、容易掌握。將VHDL語言引入數字電路教學中,有利于增強學生對電路設計的認識,掌握更多的設計方法,提高分析設計能力。本文針對六進制約翰遜計數器的設計,分別采用了傳統設計方法和VHDL方法進行設計,通過對比可得出,VHDL可以顯著提升數字電路的教學效果。
3.1 傳統設計方法
傳統電路設計采用自底向上的設計方法如圖1所示。本文選用JK、D觸發器及門電路來實現,采用3個觸發器連接產生8個狀態,六進制約翰遜計數器只有6個狀態,將其中的010,011兩個狀態禁止掉,具體狀態轉換表如表1所示。
圖1 自底向上設計方法
表1 狀態轉換表
CLK Q2n'Q1n'Q0n Q2n+1'Q1n+1'Q0n+1
1 0..0..0 0...0...1
2 0..0..1 0...1...1
3 0..1..1 1...1...1
4 1..1..1 1...1...0
5 1..1..0 1...0...0
6 1..0..0 0...0...0
由狀態轉換表得出狀態方程:
,,
將Q2,Q1選用D觸發器,Q0選用JK觸發器,得出驅動方程:
,,,
根據驅動方程最終畫出邏輯原理圖如圖2所示。
圖2 邏輯原理圖
在得到邏輯原路圖后,還需要進行邏輯驗證,驗證無誤后再對邏輯原理圖進行邏輯驗證無誤后,在PCB版上完成布線、裝配、焊接及調試,如有問題,再進行局部修改,直至整個電路調試完畢為止。
圖3 自頂向下設計方法
3.2 VHDL設計方法
VHDL設計采用自頂向下的設計方法如圖3所示。首先根據設計要求對電路功能進行行為級描述和仿真,然后再進行RTL級描述和仿真,達到預期結果后再進行邏輯綜合、布局布線,最終完成電路設計。
(1)行為描述,也就是對計數器數學模型的描述,通過代碼描述出輸入、輸出引腳和計數過程中狀態變化時序及關系,具體程序如下:
LIBRARY ieee;
USE ieee.std_logic_1164.all;
entity counter6 is
port(clk,reset:in std_logic;
count_out:out std_logic_vector(2 downto 0));
end counter6;
architecture rtl Of counter6 is
signal next_count:std_logic_vector(2 downto 0);
begin count_proc:process(clk,reset)
begin if reset='0' then
next_count<="000";
elsif clk'event and clk='1' then
case next_count is
when "000"=>next_count<="001";
when "001"=>next_count<="011";
when "011"=>next_count<="111";
when "111"=>next_count<="110";
when "110"=>next_count<="100";
when "100"=>next_count<="000";
when others=>next_count<="000";
end case;
end if;
count_out<=next_count;
end process;
end rtl;
利用Max+plusⅡ軟件對上述程序進行編譯、仿真,仿真結果如圖4所示,結果表明,該方案符合設計要求。
圖4 仿真結果
(2)RTL描述,即用具體門電路、運算器等來描述行為部分。行為描述程序抽象程度較高,故需轉化為RTL方式描述的VDHL程序,以便于映射到具體的邏輯元件,得到硬件的具體實現。對于改寫后的RTL程序同樣需要進行仿真,檢查正確性。
(3)邏輯綜合,利用MAX+PLUS II Advanced Synthsis ALtera將其轉換為門級網絡表,輸出邏輯原理圖并進行仿真、檢查定時關系。最后根據需要利用門級網表做出ASIC芯片或生成FPGA碼點,完成電路設計。
3.3 VHDL與傳統設計方法比較
相較于傳統設計方法,VHDL采用自頂向下的設計方法,可進行結構化、模塊化設計,更利于分工合作,再加上各層次的仿真檢查,便于早期發現錯誤并改正,提高了設計效率;同時設計描述的相對獨立性,使得學生設計時不必寫表達式、真值表,不必考慮所用器件,降低了設計難度;另外VHDL語言簡單易學,MAX+PLUS II界面友好,通過仿真波形分析,學生能更形象、更深刻的理解所學內容。
4.結束語
數字電路作為專業基礎課程,其教學效果的好壞,將直接影響后續相關專業課程的學習。在數字電路教學中引入VHDL描述語言,利用MAX+PLUS II進行編譯、仿真、演示,不但豐富了教學內容,改進了教學手段,提高學習興趣,還有助于學生消除“抽象感”;另外VHDL能將傳統教學中較難實現的電路設計轉換為軟件設計,不僅簡化了設計工作,還有利于增強學生對集成芯片的認識,提高分析設計能力,掌握更多的設計方法,以適應現代應用型人才培養要求。
參考文獻
[1]張天瑜.基于VHDL的數字電路課程改革研究[J].湖北廣播電視大學學報:2010(02):25-26.
[2]黃紅霞.基于VHDL提升數字電路教學效果的研究[J].黃石理工學院學報,2010(03):66-70.
[3]譚勇,朱斌.基于EDA技術的數字電路實驗教學改革[J].中國現代教育裝備,2012(17):43-44.
vhdl語言范文3
關鍵詞:VHDL;計費器;QuartusⅡ;FPGA
中圖分類號:TP312 文獻標識碼:A 文章編號:1006-8937(2013)29-0007-03
出租車是現代人類的重要交通工具,而出租車的計費系統的安全性和先進性是人們普遍關心的問題,要求計費器性能穩定,計費準確,以及預防司機作弊行為等等都關系到乘客的切身利益。因此,設計出符合人們普遍要求及放心的產品具有重要的意義。采用模擬電路和數字電路設計的計價器整體電路的規模較大,用到的器件多,造成故障率高,難調試,對于模式的切換需要用到機械開關,機械開關時間久了會造成接觸不良,功能不易實現?;趩纹瑱C設計的計費器更新周期長,而且單片機程序是不通用的,不同的單片機芯片有不同的指令集,因此設計研發比較困難。利用VHDL語言設計的基于CPLD/FPGA的出租車計費器不僅可以解決電子系統小型化、低功耗、高可靠性等問題,而且其開發周期短、設計靈活、易于調試、修改方便。
1 出租車計費器的設計要求
1.1 能夠實現計費的功能
費用的計算是按行駛的里程收費,設出租車的起價為5.00元,當里程小于3 km時,按起步價計算費用;當里程大于3 km時每公里按1.3元計費。等待累計時間超過2 min,按每分鐘1.5元計費。所以總費用按下式計算:總費用=起費用+(里程-3 km)×里程單價+等候時間×等候單價。
1.2 能夠實現顯示的功能
顯示汽車行駛里程:用兩位數字顯示,顯示方式為“XX”,單位為km。計程范圍為0~99 km,計程分辨率為1 km;顯示等候時間:用兩位數字顯示分鐘,顯示方式為“XX”。計時范圍為0~59 min,計時分辨率為1 min;顯示總費用:用四位數字顯示,顯示方式為“XXX.X”,單位為元。計價范圍為0~999.9元,計價分辨率為0.1元。
2 系統總體設計
根據設計要求,采用自頂向下的設計方法,將整個系統設計分為分頻模塊、計量模塊、計費模塊、控制模塊及動態掃描顯示模塊,系統組成框圖如圖1所示,其中計量模塊是整個設計的重點。
3 各模塊具體設計
下面將介紹系統各模塊及頂層電路的具體設計。
3.1 分頻模塊
分頻模塊對系統時鐘信號進行分頻,分別得到15 Hz,13 Hz,1 Hz三種頻率;1 Hz作為計量模塊的驅動信號,計費模塊采用13 Hz、15 Hz的驅動信號;計量模塊每計數一次,計費模塊就實現13次或者15次計數,即為實現出租車等待計時的1.5 元/min、計里程時的1.3元/km的收費。那么分頻模塊輸入時鐘頻率應為15×13=195 Hz,由于系統設計硬件驗證時所用EDA實驗箱上面沒有195 Hz的時鐘源,只有192 Hz及16 384 Hz的時鐘源,195 Hz與192 Hz相隔3 Hz,誤差太大,而將16 384 Hz的時鐘源84分頻后得到時鐘信號與195 Hz相差0.047619 Hz,誤差較小,故分頻模塊選擇輸入時鐘頻率clk_16384為16 384 Hz,經過兩次分頻得到clk_1(1 Hz),clk_13(13 Hz),clk_15(15 Hz)。
3.2 計量模塊
此模塊主要功能是計算載客時汽車行駛的公里數及停車等待時的等候時間即完成計程和計時功能。計程器的量程為99 km,滿量程后自動歸零,計時器的量程為59 min,滿量程后自動歸零。輸入端口clk1為計量脈沖信號,是由分頻模塊提供的1 Hz時鐘信號,s是計量開始/停止信號,pause是停車等待信號,fin是汽車的里程脈沖信號。當s=1,pause=0時表示汽車正常行駛,開始計量,clk1的上升沿到來時,若fin為高電平,則以記錄的clk1的脈沖個數作為汽車行駛的公里數,行駛超過3 km時,en0輸出高電平。s=1,pause=1表示汽車中途停車等待,記錄clk1的脈沖個數,60個脈沖為1 min,當超過2 min時,en1輸出高電平。s=0時不論pause為何值,計量停止,顯示清零。輸出端口k1、k0分別表示里程的十位數字和個位數字,m1、m0分別表示等待時間的十位數字和個位數字。將設計的VHDL程序編譯之后生成的元件符號圖如圖2所示。
程序編譯通過后對計量模塊進行仿真,仿真圖如圖3所示。在第2個clk1時鐘周期,s信號為1,pause仍為0,里程k0開始計數,計數到3后,表示汽車行駛超過3 km,需按1.3元/km收費,此時en0輸出高電平。在具體程序設計中,為了縮短硬件測試時間,使得測試時間與實際時間縮短了6倍,既實際時間1 min,測試時間為10 s。所以當s為1、pause為1時,汽車處于載客等待狀態,每10個clk1周期模擬實際的1分鐘,m0的值自動加1,當m0加到2后,表示等待超過2 min,需按1.5元/min收費,此時en1輸出有效脈沖信號。
3.3 控制模塊
控制模塊主要是根據兩個不同的輸入使能信號ent0和ent1,對兩個輸入脈沖13 Hz及15 Hz進行選擇輸出,提供給計費模塊計費。ent0和ent1分別由計量模塊的en0、en1提供。 其參考程序如下:
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity kongzhi is
port(ent0,ent1:in std_logic;
clk_in1:in std_logic;
clk_in2:in std_logic;
clk_out:out std_logic);
end kongzhi;
architecture rt4 of kongzhi is
begin
process(ent0,ent1)
begin
if ent1='1' then
clk_out
elsif ent0='1' then
clk_out
end if;
end process;
end rt4;
3.4 計費模塊
當輸入的start信號不為0時,對不同的輸入脈沖頻率clk2的脈沖個數進行計數即為乘車費用,輸出端口c0、c1、c2、c3分別表示費用的小數位,個位、十位、百位數字的四位BCD碼輸出。
3.5 動態掃描顯示模塊
本模塊包括9個輸入端口,2個輸出端口。系統顯示部分利用人眼的視覺暫留效應,采用動態掃描的方法,點亮8個數碼管,當輸入數碼管掃描信號clkweixuan選擇實驗箱上面的750 kHz頻率,硬件現象顯示良好,沒有閃爍的感覺。八個四位BCD碼輸入中wc0、wc1、wc2、wc3分別是計費模塊輸出的c0、c1、c2、c3,即為乘客乘車的費用;Wmin0和wmin1為汽車停車等待時間的個位和十位,wk0、wk1為汽車行駛的公里數的個位和十位。輸出端口weixuan為數碼管的片選信號,qout為數碼管的位選信號。
本模塊包括兩個process,一個process在時鐘信號的控制下從0到7進行循環計數,不同的計數值,輸出八個不同的4位BCD碼輸入,并產生數碼管的片選信號;一個process完成對4位BCD碼輸出值的七段數碼管顯示譯碼,產生數碼管位選信號,在這個進程要注意顯示費用個位數字的數碼管必須帶小數點。
3.6 頂層設計
對各個子模塊程序進行編譯,仿真,然后生成各個模塊的元件符號,采用原理圖的輸入方式將各模塊連接起來構成頂層模塊,或者用VHDL語言采用元件例化語句編寫頂層模塊程序。圖4是采用VHDL語言編寫頂層程序生成的RTL電路圖。
4 硬件測試
整個系統程序設計完成,仿真通過后選擇器件。本設計在武漢恒科HK-Ⅵ型EDA實驗箱上進行硬件測試,選擇器件為Atera的FPGA芯片EP1K30TC144-3,然后根據設計要求合理分配引腳,進行全編譯生成編程文件。連接好實驗箱,將編程文件下載到FPGA器件上,觀察硬件現象。數碼管顯示初始狀態如圖5所示。當start=1、pause=1(start輸入高電平,pause輸入高電平),出租車進入等待狀態,行駛路程顯示數碼管停止計數,等待時間顯示數碼管跳動計數,同時繼續計費。圖6為某時刻當前狀態下的數碼管顯示,里程為39 km,等待時間為3 min,總費用=5+(39-3)×1.3+(3-2)
×1.5=53.3元,硬件現象完全符合。
5 總 結
本文設計硬件系統采用VHDL語言編程,基于FPGA實現了出租車計費器的計時、計程、計費功能。使用硬件語言描述的形式,可以充分利用FPGA的優勢,成本低、靈活性強、功耗小、周期短。使用VHDL語言設計硬件電路,設計與器件無關,具有良好的可移植性。如果出租車計費標準發生變化時,修改VHDL源程序即可,設計具有一定的實用價值。
參考文獻:
vhdl語言范文4
ISSN Print: 2162-531X
ISSN Online: 2162-5328
Aims & Scope
Advances in Materials Physics and Chemistry contains rapid communications, full-length original research, review articles and comments on interrelationships among synthesis, micro/nanostructures, properties, processing and performance of Materials Science, Physics, and Chemistry. This includes, but is not limited to:
vhdl語言范文5
目前國內數字邏輯課程的教學內容多是基于SSI、MSI等器件進行分析和設計,采用的是經典的數字邏輯設計方法,即用真值表、卡諾圖、狀態轉換圖、狀態轉換表、狀態方程、時序圖、邏輯圖和邏輯函數表達式等方法,來分析和設計數字邏輯系統。顯然,對于較復雜的數字系統,因其輸入變量數、輸出函數變量數和狀態數的急劇增加,再使用上述這種傳統方法進行分析和設計難以適用,甚至根本無法進行。數字邏輯課程的實驗環節也是基于標準SSI,MSI芯片的所謂硬實驗臺實驗室(Hardware-based Laboratory),這種實現臺不易做成開放性,實驗準備,實驗內容和實驗課安排都不靈活,實驗內容和效果也受到所供SSI,MSI芯片的限制。如今,數字化的概念已深入到各個領域,幾乎絕大多數系統已不是簡單幾個邏輯變量就能完全描述的。然而目前在專門講授數字系統設計基礎理論和方法的數字邏輯課程中,絕大多數高校仍然是沿用了幾十年不變的老方法,顯然已遠遠落后于時代的要求,必須加以改革創新。
2 引進VHDL語言的方法
VHDL的方法克服了傳統方法的弱點,與傳統方法相比有幾處根本優點,設計者可以在VHDL描述模型建立之后馬上用仿真手段來驗證系統功能是否滿足要求。這種方法還可以免去傳統方法的許多繁雜的試湊等耗時勞動(設計瓶頸),因而減少設計時間,降低設計難度,避免了由于人工試湊設計常容易發生的錯誤。利用各種EDA工具,可自動的將一個可綜合的設計在給定的具體器件上進行門級實現。而且,用這種方法系統整體指標往往容易實現,而傳統的方法則不然。這種方法其主要設計文件是用VHDL語言編寫的源程序,而不是電路原理圖,顯然傳統硬件電路設計最后形成的主要文件是電路原理圖,它與設計的器件和技術有關,不易設計文檔的復用。用VHDL語言設計系統硬件電路,主要設計文件是用VHDL語言編寫的源程序,以此作為歸納文件有很多好處:首先,資料量小,便于保存;其次是可繼承性好,即設計其它硬件電路時可以調用文件中的某些庫、進程和過程等描述某些局部硬件電路的程序;第三是閱讀方便,很容易在程序中看出某一硬件電路的工作原理和邏輯關系,而閱讀電路原理圖,推知其工作原理都需要較多的硬件知識和經驗,而且看起來也不夠一目了然。VHDL還有一個重要的特點就是設計描述與器件無關(without referenec to specific hardware),顯然這是基于SSI、MSI等器件進行分析和設計無法做到的,設計者能專注其設計,而且在EDA綜合工具的配合下支持自頂向下的設計。
采用VHDL的方法,在實驗環境上也把基于硬件的實驗室改變成基于軟件的實驗室(Software-based Laboratory)即軟實驗臺,直接在VHDL仿真器中驗證實驗結果的正確性,根本克服了硬實驗臺的不足,易于實現實驗的開放性和網絡教學模式。
VHDL的方法是順應迅速發展的通訊技術、電子測量技術、自動化控制等技術的需要而發展起來的,它使硬件軟件化變為現實,使大規模和超大規模集成電路的設計向標準化、自動化的方向邁進了一大步。無疑,傳統的設計方法已經遠遠落后,國內電子行業已逐漸將VHDL硬件描述語言應用于電子系統設計中。為了避免我們的教學內容與電子技術發展脫節,增強人才的競爭能力,適應市場需要,將VHDL硬件描述語言引入數字邏輯的教學和實驗中,逐步對舊的教學模式和教學內容加以改革,勢在必行,也是時代的要求和科技發展的必然結果。
3 舉例說明采用VHDL方法的風格和特點
VHDL語言是目前廣泛流行的硬件描述語言之一,它起源于美國國防部超高速集成電路計劃,計劃公布后受到業界的普遍歡迎。1987年12月被IEEE正式批準為標準的硬件描述語言,并于1993年公布了修改后的IEEE最新標準。VHDL支持結構化的開發設計,因此一個大型的數字系統可以分成較小的子系統,許多人可在不同的子系統中同時進行開發工作。VHDL是通過元件例化語句來實現這一功能的。和其它高級語言一樣,VHDL是一種強類型語言,這使設計中的許多錯誤易于發現。VHDL允許設計者在不同的抽象層次里對系統進行行為描述及結構描述。VHDL有三種主要的建模描述風格:
算法描述(Algorithmic):即用順序語句來描述輸入輸出對應關系的算法,這種描述方式最初往往與實現硬件無關。
數據流描述(Dataflow):即用一組并行語句來描述數據在寄存器之間流動的建模方式。這種方式與實際硬件實際存在某種對應關系。
結構描述風格(Structural):這是一種與硬件結構最近的描述方式,它通過文件的例化語句來實現。
下面用一個實例來說明采用VHDL語言設計一個四位可控的Johnson計數器,從中可以領略一下采用VHDL方法的風格和特點,此例所反映的設計過程也是筆者所指的軟實驗臺所包含的具體內容。設計模塊端口信號有:LEPT,左移控制;RIGHT,右移控制;STOP,停止計數控制;CLK,時鐘輸入端,Q3-Q0,計數器輸出端。設計采用VHDL輸入方式。該設計的VHDL代碼如下:
library IEEE;
use IEEE.std_logic_1164.all;
entity johnson is
port ( LEFT : in STD_LOGIC;
RIGHT : in STD_LOGIC;
STOP : in STD_LOGIC;
CLK : in STD_LOGIC;
Q : buffer STD_LOGIC_VECTOR (3 downto 0));
end johnson;
architecture johnson_arch of Johnson is
signal DIR: STD_LOGIC;
signal RUN: STD_LOGIC;
begin
process (CLK)
begin
if (CLK'event and CLK='1') then
if (RIGHT='0') then
DIR
elsif (LEFT='0') then
DIR
end if;
if (STOP='0') then
RUN
elsif (LEFT='0' or RIGHT='0') then
RUN
end if;
if (RUN='1') then
if (DIR='1') then
Q(3 downto 1)
Q(0)
else
Q(2 downto 0)
Q(3)
end if;
end if;
end if;
end process;
end johnson_arch;
從上面的VHDL的設計代碼可見:VHDL的設計文檔由三大部分組成,即庫的聲明,端口說明和結構體設計描述。其中端口說明清晰的反映了所設計器件的輸入輸出性質,在結構體設計描述中也清楚的描述了器件所完成的邏輯功能。這是傳統的采用SSI,MSI等標準規格器件設計所沒有的優點。
圖1 設計實例功能仿真圖
用VHDL仿真器驗證設計的正確性。參見圖1:設計實例功能仿真圖。
vhdl語言范文6
(重慶師范大學涉外商貿學院,中國 重慶 401520)
【摘 要】隨著計算機技術的飛速發展,EDA技術也有了巨大的發展,被廣泛應用于電子、通信、醫學、軍事等各個領域。本文介紹了基于VHDL硬件描述語言設計彩燈控制器的思維與技巧,在MAX+plusⅡ開發工具軟件中進行源文件的編輯、邏輯綜合、適配、仿真及編程下載。仿真和驗證的結果表明,該設計方法切實可行,該判決器具有一定的實際應用性。
關鍵詞 EDA; VHDL;彩燈控制器;MAX+plusⅡ
基金項目:重慶師范大學涉外商貿學院校級科研項目(KY2014008)。
作者簡介:周婷(1988—),重慶合川人,碩士研究生。
0 引言
電子設計自動化(EDA)技術就是依賴功能強大的計算機,在EDA工具軟件平臺上,對以硬件描述語言VHDL為系統邏輯描述手段完成的設計文件,自動地完成邏輯優化和仿真測試,直至實現既定的電子線路系統功能[1]。由美國國防部主持開發的VHDL語言是一種可用于數字電路描述和綜合的高級語言[2],如果結合VHDL語言仿真電路進行仿真和驗證,可以盡早發現電路設計中的錯誤,從而縮短開發的周期,降低開發成本,提高系統的設計效率。
VHDL語言是目前應用最廣泛的硬件描述語言之一。它是一種人和機器都能理解的高級語言,與具體的硬件電路沒有關系,具有較高的易讀性。它支持層次化結構設計,從系統整體要求出發,從上至下逐層設計直到最終生成器件,完成電路系統。一個完整的VHDL程序包括有庫、包集合、實體、結構體,另外還有配置塊[3]。它的最大特點是將一項工程設計分成了內部和外部,工程可以是目標系統、電路模塊甚至一個元件。其中外部是系統的端口;內部則是不可視部分,其功能用程序設計好后可直接調用。
1 彩燈控制器的功能分析與設計
彩燈在生活中經常能夠看到,并且給我們的生活增添了許多色彩。尤其在節假日,不僅閃爍著美麗耀眼的光芒,還能夠烘托出節日的氣氛。本文采用EDA技術,使用VHDL語言實現彩燈的控制。
在美國ALTERA公司的MAX+PLUSⅡ平臺上,使用VHDL硬件描述語言實現的彩燈控制電路的設計如下:在電路中以1代表燈亮,以0代表燈滅,由0、1按不同的規律組合代表不同的燈光圖案,同時使其選擇不同的頻率,從而實現多種圖案多種頻率的花樣功能顯示。彩燈控制器的元件,Y[15..0]是彩燈控制器的輸出端。reset是彩燈控制器的復位信號輸入端,當復位信號reset=‘1’時,彩燈狀態會和s0相同;否則,當有時鐘信號來臨時,會根據程序設置顯示出彩燈的亮滅狀態。en是彩燈循環方式控制信號輸入端,當en=‘0’時,彩燈自左邊第一個燈和中間分別向右邊循環閃爍;當en=‘1’時,彩燈自右邊第一個燈和中間分別向左邊循環閃爍;否則,彩燈會呈現熄滅狀態。
2 彩燈控制器VHDL語言設計
十六路彩燈顯示系統控制器的主要VHDL語言程序代碼如下所示:
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all;
use ieee.std_logic_unsigned.all;
entity colorlamp is
port(clk,reset,en:in std_logic;
y:out std_logic_vector(15 downto 0));
end;
architecture beha of colorlamp is
type states is (s0,s1,s2,s3,s4,s5,s6,s7);
signal st:states;
signal yn:std_logic_vector(15 downto 0);
begin
one:process(clk,reset)
begin
if reset=´1´ then st <= s0;
elsif clk´event and clk=´1´ then
case st is
when s0 => st <= s1;
when s1 => st <= s2;
when s2 => st <= s3;
when s3 => st <= s4;
when s4 => st <= s5;
when s5 => st <= s6;
when s6 => st <= s7;
when s7 => st <= s0;
when others => st <= s0;
end case;
end if;
end process one;
two:process(st,en,clk)
begin
case st is
when s0 =>
if en=´0´ then yn <= "1000000010000000";
elsif en=´1´ then yn <= "1000000010000000";
else yn <= "0000000000000000";
end if;
when s1 =>
if en=´0´ then yn <= "0100000001000000";
elsif en=´1´ then yn <= "0000000100000001";
else yn<= "0000000000000000";
end if;
when s2 =>
if en=´0´ then yn <= "0010000000100000";
elsif en=´1´ then yn <= "0000001000000010";
else yn <= "0000000000000000";
end if;
when s3 =>
if en=´0´ then yn <= "0001000000010000";
elsif en=´1´ then yn<= "0000010000000100";
else yn<= "0000000000000000";
end if;
when s4 =>
if en=´0´ then yn<= "0000100000001000";
elsif en=´1´ then yn <="0000100000001000";
else yn <= "0000000000000000";
end if;
when s5 =>
if en=´0´ then yn <= "0000010000000100";
elsif en=´1´ then yn<= "0001000000010000";
else yn<= "0000000000000000";
end if;
when s6 =>
if en=´0´ then yn <= "0000001000000010";
elsif en=´1´ then yn<="0010000000100000";
else yn <= "0000000000000000";
end if;
when s7 =>
if en=´0´ then yn <= "0000000100000001";
elsif en=´1´ then yn<="0100000001000000";
else yn <= "0000000000000000";
end if;
when others => yn <= "0000000000000000";
end case ;
if clk´event and clk=´1´ then y<= yn ;
end if;
end process two;
end beha;
3 仿真結果
利用MAXPLLUS2的原理圖輸入,以原理圖的形式形成最后的十六路彩燈顯示系統器件并且進行仿真。圖1分別是彩燈自右邊第一個燈和中間分別向左邊循環閃爍,彩燈自左邊第一個燈和中間分別向右邊循環閃爍的仿真時序圖(如圖1)。
4 結束語
通過上述實驗可知,本設計是可行的。仿真正確后通過下載電纜下載到CPLD/FPGA芯片上即可。芯片可以重復使用無數次。只要擁有計算機,配上相應的軟件就可以隨心所欲的改變彩燈的方式,而且不受時間的限制。
參考文獻
[1]趙剛,編.EDA技術簡明教程[M].成都:四川大學出版社,2004.
[2]宋文好,等.數字電路的VHDL綜合技術[J].現代計算機,2001(111):22-25.