VHDL程序結構介紹_第1頁
VHDL程序結構介紹_第2頁
VHDL程序結構介紹_第3頁
VHDL程序結構介紹_第4頁
VHDL程序結構介紹_第5頁
已閱讀5頁,還剩20頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

目錄123VHDL設計概念VHDL簡介VHDL程序結構VHDL簡介

VHDL全名Very-High-SpeedIntegratedCircuitHardwareDescriptionLanguage,超高速集成電路硬件描述語言,VHDL語言是一種用于電路設計的高級語言。最初是源于美國國防部1980年開始啟動的超高速集成電路計劃,在這一計劃執行過程中,專家們認識到需要有一種標準的語言來描述集成電路的結構和功能,由此,美國國防部便開發出VHDL設計語言供美軍用來提高設計的可靠性和縮減開發周期的設計語言。VHDL設計概念

采用VHDL進行設計的方法為高層設計,即“概念驅動模式”設計。設計人員無需通過門級原理圖描述,而是針對設計目標進行功能描述。VHDL并不十分關心一個具體邏輯是靠何種方式實現的,而是把開發者的精力集中到邏輯所實現的功能上。由于高層設計只定義系統的行為特性,因此可以不涉及工藝。采用VHDL進行設計的具體過程為:1、以VHDL語言描述設計概念;2、用VHDL仿真與調試工具分析此概念的“行為”,檢查是否滿足初始要求。這一過程與普通的編程語言,如C語言的編譯、運行、調試是類似的。3、VHDL設計—>VHDL綜合工具。利用集成電路廠商或EDA廠家提供的被充分驗證過的工藝庫,以面積、功耗、速度等為目標進行優化,將電路映射成網表,得到門級電路后,還要進行仿真來驗證門電路的行為和時序特性。4、物理設計。得到可供生產的文件,進行延時、故障、熱分析等,保證系統的穩定工作,滿足設計指標。VHDL程序結構實體和結構體是VHDL設計文件的兩個基本組成部分實體說明描述設計實體(黑盒)的外部接口信號(即輸入/輸出信號);結構體說明用于描述設計實體(黑盒)的內部電路。包集合存放各設計模塊能共享的數據類型、常數、子程序等;庫用于存放已編譯的實體、結構體、包集合和配置。配置用于從庫中選取所需元件安裝到設計單元的實體中。LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYmux21IS

PORT(a,b:INSTD_LOGIC; s:INSTD_LOGIC; y:OUTSTD_LOGIC);ENDmux21;ARCHITECTUREbehaviorOFmux21IS

BEGIN

PROCESS(a,b,s) BEGIN IFs='0'THENy<=a;ELSEy<=b; ENDIF;

ENDPROCESS;ENDone;程序包實體說明結構體實體說明的一般格式為:

ENTITY

實體名

IS

[GENERIC類屬參數說明]; [PORT端口說明];

END;ayand2b

實體中的每一個I/O信號被稱為端口,其功能對應于電路圖符號的一個引腳。端口說明則是對一個實體的一組端口的定義,即對基本設計實體與外部接口的描述。端口是設計實體和外部環境動態通信的通道。實體類似一個“黑盒”,實體描述了“黑盒”的輸入輸出口。

ENTITY、IS、GENERIC、PORT、END是VHDL的關鍵字(保留字)。

實體名、端口名(端口說明)等均應為符合VHDL命名規則的標識符。實體說明類屬信息1、作用

為設計實體和其外部環境通信的靜態信息提供通道,可以定義端口的大小、實體中元件的數目以及實體的定時特性等。2、一般格式

GENERIC([CONSTANT]名字表:[IN]子類型標識[:=靜態表達式],…]);端口說明端口說明的一般格式為:

PORT(端口名{,端口名}:端口模式數據類型;端口名{,端口名}:端口模式數據類型);

例如:PORT(

a,b :INSTD_LOGIC;

y

:OUTSTD_LOGIC);端口名端口模式數據類型端口模式

用來說明數據傳輸通過該端口的方向。IN:

數據只能從端口流入實體OUT:

數據只能從端口流出實體INOUT:

數據從端口流入或流出實體BUFFER:

數據從端口流出實體,同時可被內部反饋。

構造體內部也要使用輸出信號時,只能定義成“buffer”。端口數據類型常用的有布爾型(boolean)、位型(bit)、位矢量型(bit-vector)、整數型(integer)、非標準邏輯和標準邏輯類型(Std_ulogic和Std_logic)。1)boolean:布爾型,可取值“TRUE(真)”或“FALSE(假)”。2)bit:為位邏輯數據類型,信號取值是邏輯值“1”和“0”。3)bit_vector:取值是一組二進制位的值。

如:8位數據總線數端口Port(d0,d1,sel:inbit;

q:outbit;

bus:outbit_vector(7downto0));4)Integer:整數,用作循環技術或常數,通常不用于I/O信號。5)Std_ulogic和Std_logic:非標準邏輯和標準邏輯類型,由IEEE:Std_logic_1164支持,程序包中定義了有關的數據類型,訪問該程序包中的項目需要使用LIBRARY子句和USE子句。LibraryIEEE;UseIEEE.STD_Logic_1164.all;EntitymuisPort(d0,d1,sel:inSTD_Logic;

q:outSTD_Logic;

bus:outSTD_Logic_vector(7downto0));ENDmu;練習編寫包含以下內容的實體代碼:端口D為12位輸入總線;端口OE和CLK都是1位輸入;端口AD為7位雙向總線;端口A為7位輸出總線;端口INT是1位輸出;端口AS是一位輸出同時被用作內部反饋。d[11..0]clkoead[7..0]a[7..0]intas

my_design練習答案Libraryieee;Useieee.std_logic_1164.ALL;Entitymy_designisPORT(d:instd_logic_vector(11downto0);oe,clk:in:std_logic;ad:inoutstd_logic_vector(7downto0);a:outstd_logic_vector(7downto0);int:outstd_logic;as:bufferstd_logic);Endmy_design;

d[11..0]clkoead[7..0]a[7..0]intasmy_design結構體結構體是用來描述一個設計的具體結構,建立一個設計中輸入和輸出之間的關系,即描述實體的功能,對黑盒子的內部進行具體描述。VHDL允許采用三種描述格式來進行具體的設計構造,行為描述、數據流描述和結構描述。具體描述時,可以是以上三種中的一種或幾種的任意組合。一個設計實體可以有多個結構體。結構體一般格式為:ARCHITECTURE

結構體名OF

實體名IS定義語句:內部信號,常數,數據類型,函數定義

BEGIN[并行處理語句];[進程語句];…END

結構體名;

ARCHITECTURE、OF、IS、BEGIN、END是VHDL的關鍵字(保留字)。

結構體名稱由設計者自由命名,是結構體的唯一名稱,該結構體名可反映結構體的特色。

例如: architecturebehaviorofmuxis——用結構體行為命名 architecturedataflowofmuxis——用結構體的數據流命名 architecturestructuralofmuxis——用結構體組織結構命名 architecturelatchofmuxis——用結構體的功能命名以上命名舉例說明,幾個結構體都屬于設計實體mux,結構體名由設計者自行定義,OF后面的實體名指明了該結構體所對應的是哪個實體。由于一個設計有行為描述、數據流描述和結構描述3種方式,一般建議用behave,dataflow,structure為結構體命名。

用于對結構體內部將要使用的信號、常數、數據類型、元件、函數和過程加以說明。最常見的是對內部流動的信號的定義。但不能定義變量。

實體說明中定義的信號是外部信號,而結構體定義的信號為該結構體的內部信號,它只能用于這個結構體中。

結構體中的信號定義和端口說明一樣,應有信號名稱和數據類型定義。因為它是內部連接用的信號,因此不需要方向說明。結構體的三種描述形式:1、行為描述2、結構描述3、數據流描述1、行為描述

描述該設計單元的功能,即該硬件做什么,主要使用函數、過程和進程語句,以算法形式描述數據的變換和傳送。即只描述所希望電路的功能或者電路行為(輸入輸出間轉換的行為),而沒有指明或涉及實現這些行為的硬件結構。

ARCHITECTUREbehaviorOFmux21IS

BEGIN

PROCESS(a,b,s) BEGIN IFs='0'THENy<=a;ELSEy<=b; ENDIF;

ENDPROCESS;ENDone;2、結構描述

描述該設計單元的硬件結構,即該硬件是如何構成的。主要使用配置指定語句及元件例化語句描述元件的類型及元件的互聯關系。

3、數據流描述

也稱為寄存器傳輸描述形式。是對信號到信號的數據流的路徑形式進行描述,因此要求設計者不但要對設計實體的功能實現有一定的了解,而且還需要對內部的邏輯電路結構有清楚的認識。設計庫設計庫(Library)1、設計庫是經編譯后的數據的集合,存放包集合定義、實體定義、結構體定義和配置定義。2、VHDL中,設計庫的說明總放在設計單元的最前面。3、設計庫中的各個設計單元可以用作進行其他設計的資源,一個設計可以使用多個庫中的設計單元。設計庫的使用

首先在設計的開頭說明要引用的庫,然后使用use子句指明要使用庫中的哪一個設計單元,其書寫格式為:

Library庫名;Use庫名.程序包名.all;

其中:程序包名就是實際設計要使用的庫中的設計單元;all表示使用程序包中的所有項目。常用設計庫1、STD庫2、WORK庫WORK庫是VHDL語言工作庫,用戶在項目設計中設計成功、正在驗證、和未仿真的中間件都放在WORK庫中。以上兩個庫對當前設計是永遠可見的,不需在程序開頭對它們進行說明。即下面的LIBRARY子句隱含存在于任何設計單元之前。librarystd;librarywork;3、資源庫除STD和WORK庫以外所有的庫均為資源庫。這些資源庫的使用必須用LIBRARY顯式的說明出來。如常用的資源庫IEEE庫(Std_logic_1164)和VITAL庫。程序包

在VHDL中,設計的實體和結構體中定義的數據類型、常量、子程序說明和元件說明等只能在該設計實體中使用,而對其他設計實體是不可見的。程序包說明用來單純地羅列VHDL中所要用到的信號定義、常量定義、數據類型、子程序說明和元件說明等,是一個可編譯的設計單元。

要使用程序包中的某些說明和定義,要用use語句說明。各種VHDL編譯系統都含有多個標準程序包,如Std_Logic_1

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論