EDA應用技術 第2版 課件 項目2 VHDL程序結構及標識符_第1頁
EDA應用技術 第2版 課件 項目2 VHDL程序結構及標識符_第2頁
EDA應用技術 第2版 課件 項目2 VHDL程序結構及標識符_第3頁
EDA應用技術 第2版 課件 項目2 VHDL程序結構及標識符_第4頁
EDA應用技術 第2版 課件 項目2 VHDL程序結構及標識符_第5頁
已閱讀5頁,還剩24頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

使用原理圖描述方法進行數(shù)字系統(tǒng)設計形象直觀,但無法滿足快速高效的設計要求。硬件描述語言(HDL)具有對系統(tǒng)的高層次描述功能,用硬件描述語言對電子線路的描述和設計是EDA建模和實現(xiàn)技術的重要方法。本項目以三路表決器設計為載體,說明用VHDL(超高速集成電路硬件描述語言)描述和設計數(shù)字電路的方法,逐步掌握VHDL基本語法知識,提高數(shù)字電路VHDL程序描述和設計能力。項目2三路表決器設計制作方案教學目標項目2三路表決器設計制作方案技能目標知識目標素質目標(1)能使用QuartusPrime軟件,應用文本輸入法設計數(shù)字電路。(2)能將數(shù)字電路轉化為硬件描述語言。(3)能使用ModelSim軟件對設計電路進行功能仿真。(4)能將設計好的硬件程序通過編程器載入開發(fā)板目標芯片。(5)能進行VHDL程序與FPGA的在線聯(lián)合調試。(6)能用開關、數(shù)碼管、發(fā)光二極管設計數(shù)字系統(tǒng)的輸入與輸出。(1)了解常用硬件描述語言類型。(2)了解VHDL程序的特點。(3)熟悉VHDL程序的基本格式和規(guī)范。(4)熟悉VHDL程序基本結構。(5)熟悉VHDL程序的標識符。

(1)培養(yǎng)質量意識、安全意識。(2)訓練程序語言編寫規(guī)范。(3)培養(yǎng)遵守電子設計的規(guī)范流程。任務描述項目2三路表決器設計制作方案利用VHDL程序設計三路表決器,同意票大于等于2票,表示通過。要求在QuartusPrime20.1軟件平臺上,用文本輸入方法設計三路表決器;用ModelSim-Altera2020.1仿真軟件仿真檢查設計結果;利用FPGA最小系統(tǒng)板,選用按鈕開關、LED燈、數(shù)碼管、蜂鳴器等硬件資源進行硬件驗證。設計方案項目2三路表決器設計制作方案

三路表決器系統(tǒng)設計方案,輸入用3個開關,輸出根據(jù)不同情況可以用1燈表示,當大于等于2個開關輸入為高電平時,燈亮表示通過;當少于2個開關輸入為高電平時,燈滅表示未通過。輸出還可用2燈表示、1燈加蜂鳴器、數(shù)碼管加蜂鳴器等表示,如表2.2所示:項目2三路表決器設計制作方案圖2.1三路表決器輸入?yún)⒖茧娐?.輸入電路設計

用三個按鍵開關代表3位二進制數(shù)輸入,當按鍵按下時輸入高電平,與之相連的發(fā)光二極管“亮”,表示同意;當按鍵未按下時,輸入低電平,與之相連的發(fā)光二極管“滅”,表示不同意。輸入?yún)⒖茧娐啡鐖D2.1所示。項目2三路表決器設計制作方案圖2.2三路表決器輸出參考電路2.用發(fā)光二極管表示輸出本項目用2發(fā)光二極管的“亮”與“滅”表示輸出的通過與不通過。當L1輸出為高電平與之相連接的發(fā)光二極管“亮”,L2輸出為低電平與之相連接的發(fā)光二極管“滅”時,表示通過;當L1輸出為低電平與之相連接的發(fā)光二極管“滅”,L2輸出為高電平與之相連接的發(fā)光二極管“亮”時,表示表示不通過,輸出參考電路,如圖2.2所示。設計流程項目2三路表決器設計制作方案項目2VHDL程序結構及標識符

一個相對完整的VHDL程序稱為設計實體,通常都具有比較固定的結構。由實體(Entity)、結構體(Architecture)、配置(Configuration)、庫(Library)和程序包(Package)等構成,如圖2.4所示。VHDL程序結構圖2.4VHDL程序結構模型圖項目2VHDL程序結構及標識符

實體用來描述設計實體的對外端口信息,實體有輸入端口和輸出端口的說明,也可以有一些參數(shù)化的數(shù)值說明。實體說明部分基本格式如下:1.實體entity實體名is[generic(類屬參數(shù)說明)];port(端口表);end[entity]實體名;實體說明部分基本格式解釋:(1)一個基本單元的實體說明以“entity實體名is”開始,以“end[entity]實體名”結束。[]表示其中的部分是可選項。項目2VHDL程序結構及標識符(2)實體名。一個設計實體,在實體中定義的實體名即為這個設計實體的名稱。實體名是標識符,標識符具體取名由設計者自定,一般將VHDL程序的文件名作為此設計實體名。(3)類屬參數(shù)說明。類屬參數(shù)說明必須放在端口說明之前,用來指定端口中矢量的位數(shù)、器件的延遲時間參數(shù)等。類屬參數(shù)說明書寫格式如下:

generic([constant]常量名稱:[in]數(shù)據(jù)類型[:=設定值];…);項目2VHDL程序結構及標識符(4)端口表。端口表是對端口的說明,用于描述設計實體的輸入/輸出信號,是對輸入/輸出引腳信號的名稱、數(shù)據(jù)類型和輸入/輸出方向的描述。端口說明的一般書寫格式如下:port(端口名{,端口名}:端口模式

數(shù)據(jù)類型[:=設定值];……

端口名{,端口名}:端口模式

數(shù)據(jù)類型[:=設定值]);其中花括號“{}”中的內容可以沒有,也可以有多項。項目2VHDL程序結構及標識符端口表各項內容說明如下:①端口名。端口名是賦予每個外部引腳的名稱,即該端口的標識符。②端口模式。端口模式用來定義外部引腳的信號流向。端口模式共有in、out、inout和buffer四種。in:輸入模式僅允許數(shù)據(jù)由外部流向實體輸入端口。out:輸出模式僅允許數(shù)據(jù)從實體內部流向實體輸出端口,不能用于反饋。inout:雙向模式允許數(shù)據(jù)流入或流出實體,雙向模式允許用于內部反饋。buffer:緩沖模式通常用于內部有反饋需求的信號描述。緩沖模式與輸出模式類似,只是緩沖模式允許用于內部反饋,而輸出模式不行。項目2VHDL程序結構及標識符③數(shù)據(jù)類型。描述端口的數(shù)據(jù)類型通常有bit、bit_vector、std_logic、std_logic_vector。Bit(位):信號值是一個1位的二進制值,取值只能是0或1。bit_vector(位矢量):信號值是一組二進制數(shù)。std_logic(標準邏輯位):取值有9種,分別是:0(信號0)、1(信號1)、H(弱信號1)、L(弱信號0)、Z(高阻)、X(不定)、W(弱信號不定)、U(初始值)和—(不可能情況)等。std_logic_vector(標準邏輯矢量):它是標準邏輯的集合,基本元素是std_logic類型。項目2VHDL程序結構及標識符【例】二進制計數(shù)器VHDL程序的實體libraryieee;useieee.std_logic_1164.all;entitybinary_counterisgeneric(MIN_COUNT:natural:=0;MAX_COUNT:natural:=255);port(clk:instd_logic;reset:instd_logic;enable:instd_logic;q:outintegerrangeMIN_COUNTtoMAX_COUNT);endentity;architecturertlofbinary_counterisbeginprocess(clk)variablecnt:integerrangeMIN_COUNTtoMAX_COUNT:=0;beginif(rising_edge(clk))thenifreset='1'thencnt:=0;elsifenable='1'thencnt:=cnt+1;endif;endif;q<=cnt;endprocess;endrtl;entity實體名is語句引導本實體的實體名為binary_counter類屬參數(shù)說明語句:定義常量MIN_CUNT為自然數(shù),賦0值;定義常量MAX_CUNT為自然數(shù),賦255值。端口說明語句:定義clk為輸入端口,數(shù)據(jù)類型標準邏輯位;定義reset為輸入端口,數(shù)據(jù)類型標準邏輯位;定義enable為輸入端口,標準邏輯位數(shù)據(jù)類型;定義q為輸出端口,整數(shù)數(shù)據(jù)類型,限定范圍MIN_CUNT到MAX_CUNT,即0-255。實體說明部分項目2VHDL程序結構及標識符2.結構體結構體描述了該設計實體單元電路的邏輯功能。結構體附屬于實體,是對實體的說明。結構體描述格式如下:architecture結構體名of實體名is [說明語句];begin

功能描述語句;end[architecture]結構體名;

項目2VHDL程序結構及標識符結構體描述格式解釋:(1)實體名必須是所在設計實體的實體名字,而結構體名可以自由選擇,當一個設計實體有多個結構體時,結構體不能同名。(2)結構體必須以“end[architecture]結構體名+;”作為結束語句。(3)結構體說明語句必須放在關鍵字“architecture”和“begin”之間。結構體說明語句用于對結構體內部所用到的信號(signal)、數(shù)據(jù)類型(type)、常量(constant)、元件(component)、函數(shù)(function)和過程(procedure)等進行說明。在結構體中說明和定義的數(shù)據(jù)類型、常量、函數(shù)和過程,作用范圍局限于其所在的結構體。項目2VHDL程序結構及標識符(4)功能描述語句。功能描述語句包括5種不同類型的并行方式工作的語句結構,如圖2.5所示。5種語句結構本身是并行方式工作,但它們內部不一定是并行語句。圖2.5結構體構造圖項目2VHDL程序結構及標識符功能描述語句解釋:①信號賦值語句:將設計實體內的處理結果向定義的信號或輸出端口進行賦值。圖2.5結構體構造圖②進程語句:一個進程相當與一個功能模塊,在一個結構體內可以包含多個進程,每個進程都是同步執(zhí)行的,但是進程內部的語句是順序執(zhí)行。進程語句的描述格式為:[進程名:]process[(敏感信號表)]

[進程說明部分];

begin

順序描述語句部分;endprocess[進程名];項目2VHDL程序結構及標識符進程語句的描述解釋:a.進程名是進程語句的標識符,它是一個可選項。b.敏感信號表是用來激勵進程啟動的量,當敏感信號表中有一個信號或多個信號發(fā)生變化時,該進程啟動,否則該進程處于掛起狀態(tài)。c.進程說明語句定義該進程所需要的局部量,可包括數(shù)據(jù)類型、常量、變量、屬性、子程序等,但不允許定義信號和共享變量。d.順序描述語句用于描述該進程的功能。項目2VHDL程序結構及標識符功能描述語句解釋:③元件例化語句:對其他的設計實體作元件調用說明,并將此元件的端口與其他元件、信號或高層次實體的界面端口進行連接。④子程序調用語句:用以調用過程或函數(shù),并將獲得的結果賦值于信號。⑤塊語句:由一系列并行執(zhí)行語句構成的組合體,其功能是將結構體中的并行語句組成一個或多個子模塊。圖2.5結構體構造圖項目2VHDL程序結構及標識符【例】1位二進制數(shù)半加器仿真測試VHDL程序結構體說明libraryieee;useieee.std_logic_1164.all;entityh_adder_vhd_tstisendh_adder_vhd_tst;architectureh_adder_archofh_adder_vhd_tstissignala:std_logic;signalb:std_logic;signalc:std_logic;signals:std_logic;componenth_adderport(a:instd_logic;b:instd_logic;c:outstd_logic;s:outstd_logic);endcomponent;begini1:h_adderportmap(a=>a,b=>b,c

=>c,s=>s);init:processbegina<='0';b<='0';waitfor20us;a<='1';b<='0';waitfor20us;a<='0';b<='1';waitfor20us;a<='1';b<='1';waitfor20us;endprocessinit;endh_adder_arch;architecture結構體名of實體名is語句引導本結構體名為h_adder_arch,實體名為h_adder_vhd_tst結構體描述部分結構體描述begin分隔end結構體名+;結束結構體描述對結構體內用到的信號a、b、c、s的說明對結構體內用到的元件h_adder的說明元件例化語句:對結構體調用的元件h_adder的描述說明語句功能描述語句進程語句:對進程init的描述項目2VHDL程序結構及標識符3.庫庫是經(jīng)過編譯后的數(shù)據(jù)集合,其目的是為了使設計遵循某些統(tǒng)一的語言標準或數(shù)據(jù)格式,同時便于利用已有的設計成果,以提高設計效率。(1)庫的分類。VHDL程序中常用的庫有IEEE庫、SID庫、WORK庫、ASIC庫和用戶自定義庫等。①IEEE庫。IEEE庫是VHDL程序中最為常用的庫,它包含了IEEE標準的程序包和一些支持工業(yè)標準的程序包,使用時需要按照格式進行說明。②SID庫。STD庫是VHDL程序的標準庫,包含standard程序包,里面定義了VHDL程序標準數(shù)據(jù)、邏輯關系及函數(shù)等,使用standard包中定義的量可以不加聲明。項目2VHDL程序結構及標識符③WORK庫。WORK庫是VHDL程序的工作庫,用戶在工程設計中設計成功、正在驗證、未仿真的中間部件等都堆放在WORK工作庫,使用時不需要進行說明調用。④ASIC庫。在VHDL程序中,為了進行門級仿真,各公司提供面向ASIC的邏輯門庫。在各庫中存放著與邏輯門一一對應的實體。使用ASIC庫,需要按照格式進行說明。⑤用戶自定義庫。用戶自定義庫是用戶根據(jù)自己的需要,將開發(fā)的共用程序包和實體等匯集在一起,定義成一個庫。在使用用戶自定義庫時,需要按照格式進行說明。項目2VHDL程序結構及標識符(2)庫的說明。在VHDL程序中,庫的說明通常放在實體描述的最前面。多數(shù)情況下,對庫進行說明后,設計者才能使用庫集合中定義的數(shù)據(jù)。庫說明語句格式如下:library庫名;(3)庫的使用。庫說明語句與use語句一般同時使用,庫說明語句指明所使用的庫名,use語句指明使用庫中的程序包。說明了庫和程序包,整個設計實體就可以進入訪問或調用,但其作用范圍僅限于所說明的設計實體。庫的調用格式:

library庫名;use庫名.程序包名.all;(或use庫名.程序包名.項目名;)項目2VHDL程序結構及標識符4.程序包為了使已定義的數(shù)據(jù)類型、數(shù)據(jù)對象等被更多的其它設計實體共享,可以將它們收集在一個VHDL程序包中,這樣可以提高設計的效率和程序的可讀性。常用的預定義程序包說明如下:(1)std_logic_1164程序包。std_logic_1164程序包是IEEE的標準程序包,其中用得最多的是滿足工業(yè)標準的兩個數(shù)據(jù)類型std_logic和std_logic_vector。該數(shù)據(jù)類型除具有“0”和“1”邏輯量以外,還有其他的邏輯量,如高阻態(tài)“z”、不定態(tài)“x”等,更能滿足實際數(shù)字系統(tǒng)設計仿真的需求。項目2VHDL程序結構及標識符(2)std_logic_arith程序包。std_logic_arith程序包,擴展了3個數(shù)據(jù)類型,即unsigned、signed和small_int,并為其定義了相關的算術運算符和轉換函數(shù)。unsigned數(shù)據(jù)類型不包含符號位,無法參與有符號的運算;signed數(shù)據(jù)類型包含符號位,可以參與有符號的運算。(3)std_logic_unsigned和std_loglc_signed程序包。std_logic_unsigned和std_logic_signed程序包定義了可用于integer型、std_logic型和std_logic_ve

溫馨提示

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

評論

0/150

提交評論