EDA技術(shù)項(xiàng)目教程-基于VHDL與FPGA 課件全套 于潤(rùn)偉 項(xiàng)目1-7 數(shù)據(jù)比較器的設(shè)計(jì)與實(shí)現(xiàn)-數(shù)字系統(tǒng)設(shè)計(jì)實(shí)訓(xùn)_第1頁(yè)
EDA技術(shù)項(xiàng)目教程-基于VHDL與FPGA 課件全套 于潤(rùn)偉 項(xiàng)目1-7 數(shù)據(jù)比較器的設(shè)計(jì)與實(shí)現(xiàn)-數(shù)字系統(tǒng)設(shè)計(jì)實(shí)訓(xùn)_第2頁(yè)
EDA技術(shù)項(xiàng)目教程-基于VHDL與FPGA 課件全套 于潤(rùn)偉 項(xiàng)目1-7 數(shù)據(jù)比較器的設(shè)計(jì)與實(shí)現(xiàn)-數(shù)字系統(tǒng)設(shè)計(jì)實(shí)訓(xùn)_第3頁(yè)
EDA技術(shù)項(xiàng)目教程-基于VHDL與FPGA 課件全套 于潤(rùn)偉 項(xiàng)目1-7 數(shù)據(jù)比較器的設(shè)計(jì)與實(shí)現(xiàn)-數(shù)字系統(tǒng)設(shè)計(jì)實(shí)訓(xùn)_第4頁(yè)
EDA技術(shù)項(xiàng)目教程-基于VHDL與FPGA 課件全套 于潤(rùn)偉 項(xiàng)目1-7 數(shù)據(jù)比較器的設(shè)計(jì)與實(shí)現(xiàn)-數(shù)字系統(tǒng)設(shè)計(jì)實(shí)訓(xùn)_第5頁(yè)
已閱讀5頁(yè),還剩509頁(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)介

EDA項(xiàng)目教程

——基于VHDL與FPGA本章要點(diǎn)

EDA技術(shù)的內(nèi)涵

QuartusⅡ軟件的使用數(shù)據(jù)比較器的設(shè)計(jì)項(xiàng)目1數(shù)據(jù)比較器的設(shè)計(jì)與實(shí)現(xiàn)1.1.1發(fā)展歷史

1.計(jì)算機(jī)輔助設(shè)計(jì)(CAD)

1.1認(rèn)識(shí)EDA技術(shù)

這一階段是EDA發(fā)展的初級(jí)階段,其主要特征是利用計(jì)算機(jī)輔助進(jìn)行電路原理圖的編輯、PCB(印刷電路板)布線。CAD工具可以減少設(shè)計(jì)人員繁瑣重復(fù)的勞動(dòng),但自動(dòng)化程度低,需要人工干預(yù)整個(gè)設(shè)計(jì)過(guò)程。CAD工具大多以計(jì)算機(jī)為工作平臺(tái),易學(xué)易用,現(xiàn)仍有很多這類專用軟件應(yīng)用于中小規(guī)模的電子系統(tǒng)工程設(shè)計(jì)。1.1.1發(fā)展歷史2.計(jì)算機(jī)輔助工程設(shè)計(jì)(CAE)

這一階段的主要特征是以邏輯模擬、定時(shí)分析、故障仿真、自動(dòng)布局布線為核心,重點(diǎn)解決電路設(shè)計(jì)的功能檢測(cè)等問(wèn)題,使工程師能在產(chǎn)品制作之前預(yù)知產(chǎn)品的功能與性能。CAE工具已經(jīng)具備了自動(dòng)布局布線、電路的邏輯仿真、電路分析和測(cè)試等功能。與CAD技術(shù)相比,CAE技術(shù)除了具有圖形繪制功能外,又增加了電路功能設(shè)計(jì)和結(jié)構(gòu)設(shè)計(jì),并且通過(guò)電氣連接網(wǎng)絡(luò)表將兩者結(jié)合在一起,以實(shí)現(xiàn)工程設(shè)計(jì)。1.1認(rèn)識(shí)EDA技術(shù)1.1.1發(fā)展歷史3.電子系統(tǒng)設(shè)計(jì)自動(dòng)化(ESDA)

這一階段采用一種新的設(shè)計(jì)概念,即自頂而下(Top-to-Down)的設(shè)計(jì)程式和并行工程的設(shè)計(jì)方法,設(shè)計(jì)者的精力主要集中在所要設(shè)計(jì)電子產(chǎn)品的準(zhǔn)確定義上,而由EDA系統(tǒng)去完成電子產(chǎn)品的系統(tǒng)級(jí)至物理級(jí)的設(shè)計(jì),開(kāi)始實(shí)現(xiàn)“概念驅(qū)動(dòng)工程”的夢(mèng)想。電子設(shè)計(jì)工程師們擺脫了大量的輔助設(shè)計(jì)工作,而把精力集中于創(chuàng)造性的方案與概念構(gòu)思上,從而極大地提高了設(shè)計(jì)效率,使設(shè)計(jì)更復(fù)雜的電路和系統(tǒng)成為可能,并且使產(chǎn)品的研制周期大大縮短。

1.1認(rèn)識(shí)EDA技術(shù)(1)在一個(gè)可編程芯片上完成系統(tǒng)級(jí)的集成已成為可能,即可編程片上系統(tǒng)(SOPC)。(2)計(jì)算機(jī)硬件平臺(tái)性能大幅度提高,為復(fù)雜的SOC(系統(tǒng)級(jí)芯片)設(shè)計(jì)提供了物理基礎(chǔ)。(3)EDA工具和IP(知識(shí)產(chǎn)權(quán)核)應(yīng)用更為廣泛。(4)高性能的EDA工具軟件得到長(zhǎng)足的發(fā)展,其自動(dòng)化和智能化程度不斷提高,為嵌入系統(tǒng)設(shè)計(jì)提供了功能強(qiáng)大的開(kāi)發(fā)環(huán)境??偟内厔?shì)表現(xiàn)在以下幾個(gè)方面:

1.采用自頂向下設(shè)計(jì)方案

2.應(yīng)用硬件描述語(yǔ)言(HDL)

3.能夠自動(dòng)完成仿真和測(cè)試

4.開(kāi)發(fā)技術(shù)的標(biāo)準(zhǔn)化和規(guī)范化

5.對(duì)工程技術(shù)人員的硬件知識(shí)和經(jīng)驗(yàn)要求低1.1.2EDA技術(shù)的特點(diǎn)1.硬件描述語(yǔ)言(HDL)

硬件描述語(yǔ)言是各種描述方法中最能體現(xiàn)EDA優(yōu)越性的描述方法。所謂硬件描述語(yǔ)言就是一個(gè)描述工具,其描述的對(duì)象是設(shè)計(jì)電路系統(tǒng)的邏輯功能、實(shí)現(xiàn)該功能的算法、選用的電路結(jié)構(gòu)以及其他各種約束條件等。通常要求硬件描述語(yǔ)言既能描述系統(tǒng)的行為,又能描述系統(tǒng)的結(jié)構(gòu)。

目前主要使用Verilog-HDL和VHDL兩種硬件描述語(yǔ)言。1.1.3EDA技術(shù)的內(nèi)涵2.可編程邏輯器件:是實(shí)現(xiàn)數(shù)字系統(tǒng)的主要載體??删幊踢壿嬈骷≒LD)是一種可以由用戶編程來(lái)實(shí)現(xiàn)某種邏輯功能的新型邏輯器件,不僅速度快、集成度高,能夠完成用戶定義的邏輯功能外,還可以加密和重新定義編程,其允許編程次數(shù)可多達(dá)上萬(wàn)次。使用可編程邏輯器件可大大簡(jiǎn)化硬件系統(tǒng)、降低成本、提高系統(tǒng)的可靠性和靈活性。目前,PLD主要分為FPGA(現(xiàn)場(chǎng)可編程門(mén)陣列)和CPLD(復(fù)雜可編程邏輯器件)兩大類。1.1.3EDA技術(shù)的內(nèi)涵3.EDA工具軟件:用于在計(jì)算機(jī)上仿真、調(diào)試設(shè)計(jì)的數(shù)字系統(tǒng)。EDA技術(shù)的核心是利用計(jì)算機(jī)軟件完成電路設(shè)計(jì)的全程自動(dòng)化,即自動(dòng)地完成邏輯編譯、化簡(jiǎn)、分割、綜合、優(yōu)化、布局、布線、仿真,直至對(duì)于特定目標(biāo)芯片(可編程邏輯器件)的適配編譯、邏輯映射和編程下載等工作。1.1.3EDA技術(shù)的內(nèi)涵1.1.4EDA技術(shù)的設(shè)計(jì)流程1.設(shè)計(jì)準(zhǔn)備2.設(shè)計(jì)輸入3.設(shè)計(jì)處理4.設(shè)計(jì)校驗(yàn)5.器件編程1.組合邏輯電路的設(shè)計(jì)(1)分析設(shè)計(jì)要求,列出真值表。根據(jù)題意設(shè)定輸入變量和輸出函數(shù),然后將輸入變量以自然數(shù)二進(jìn)制順序的各種取值組合排列,根據(jù)題意,推導(dǎo)輸出函數(shù)的狀態(tài),列出真值表。(2)根據(jù)真值表寫(xiě)出輸出函數(shù)的邏輯表達(dá)式。將真值表中輸出函數(shù)取值為1所對(duì)應(yīng)輸入變量的各個(gè)最小項(xiàng)進(jìn)行邏輯相加后,便得到輸出邏輯函數(shù)表達(dá)式。(3)對(duì)輸出邏輯函數(shù)表達(dá)式進(jìn)行化簡(jiǎn)。用公式法對(duì)邏輯函數(shù)表達(dá)式進(jìn)行化簡(jiǎn),得到邏輯函數(shù)的最簡(jiǎn)與非式(或最簡(jiǎn)或非式)。(4)畫(huà)出邏輯電路圖??筛鶕?jù)最簡(jiǎn)輸出邏輯函數(shù)式,也可以根據(jù)要求將輸出邏輯函數(shù)變換為與非表達(dá)式、或非表達(dá)式、與或非表達(dá)式來(lái)畫(huà)邏輯電路圖。

按照同比較器的定義,設(shè)輸入的兩個(gè)1位二進(jìn)制數(shù)分別為A、B,用Y表示比較結(jié)果。若兩數(shù)相等,輸出1;兩數(shù)不等輸出0。

表1-1同比較器真值表1.2同比較器的設(shè)計(jì)輸入端輸出端ABY0010101001111.2.2項(xiàng)目建立1.項(xiàng)目準(zhǔn)備

在計(jì)算機(jī)的E盤(pán)建立E:\EDAFILE\Example1_1文件夾作為項(xiàng)目文件夾。注意:文件夾名不能有漢字,也不要全是數(shù)字。2.啟動(dòng)軟件3.打開(kāi)項(xiàng)目建立向?qū)马?xiàng)目建立向?qū)?duì)話框5.添加文件6.選擇器件7.選擇EDA工具

8.摘要1.建立圖形輸入文件:?jiǎn)螕舨藛蜦ile→New選項(xiàng)1.2.3編輯文件編輯窗口輸入元件及管腳同比較器電路

單擊圖形編輯窗口File→Save菜單,不要做任何改動(dòng),直接以默認(rèn)的SameComp為文件名,保存在當(dāng)前文件夾E:\EDAFILE\Example1_1下。

如果發(fā)現(xiàn)保存的文件名或文件夾不是這樣,可單擊File→SaveAs...菜單,在彈出的對(duì)話框中進(jìn)行修改或選擇文件夾。注意:文件名與項(xiàng)目名必須相同且在同一個(gè)文件夾下。1.2.4編譯

單擊菜單欄中的Processing→StartCompilation選項(xiàng)或工具欄的

按鈕,啟動(dòng)編譯。1.3大小比較器的設(shè)計(jì)

不但能夠比較兩個(gè)數(shù)字是否相等,還能比較兩數(shù)大小的比較器稱為大小比較器。大小比較器包含同比較器,可以代替同比較器。

設(shè)輸入的兩個(gè)二進(jìn)制數(shù)分別為A、B,用Y1、Y2和Y3表示比較結(jié)果。

若A>B,則Y1=1、Y2=0、Y3=0;

若A=B,則Y1=0、Y2=1、Y3=0;

若A<B,則Y1=0、Y2=0、Y3=1。大小比較器邏輯圖(1)仿真前必須建立波形文件。單擊File→New選項(xiàng),打開(kāi)文件選擇窗口,展開(kāi)Verification/DebuggingFiles選項(xiàng)卡,選擇其中的UniversityProgramVWF選項(xiàng),單擊【OK】按鈕。2.仿真(2)為了使仿真時(shí)間設(shè)置在一個(gè)合理的時(shí)間區(qū)域上,單擊波形編輯器的菜單Edit→SetEndTime選項(xiàng),在彈出窗口中的Time輸入框輸入1,單位選us,即整個(gè)仿真域的時(shí)間設(shè)定為1微秒;單擊波形編輯器的菜單Edit→GridSize…選項(xiàng),在彈出窗口中的Period輸入框輸入100,單位選ns,即設(shè)定仿真周期為100納秒。結(jié)束設(shè)置后,要將波形文件存盤(pán)。(3)雙擊波形編輯器“Name”下的空白處,會(huì)打開(kāi)插入管腳或總線對(duì)話框。(5)編輯輸入波形1.3.3時(shí)序波形仿真1.44位比較器的設(shè)計(jì)1.4.174LS85芯片4位比較器邏輯圖4位比較器仿真波形仿真分析能夠?qū)⒃O(shè)計(jì)電路的邏輯功能用波形的形式表現(xiàn)出來(lái),檢驗(yàn)電路功能。通過(guò)仿真分析后,就可以使用QuartusⅡ軟件的編程器把設(shè)計(jì)下載到可編程邏輯器件中,進(jìn)一步驗(yàn)證電路功能并實(shí)現(xiàn)電路。1.管腳鎖定(1)單擊標(biāo)題欄中的Assignments→PinPlanner選項(xiàng),出現(xiàn)管腳規(guī)劃窗口1.4.3器件編程(2)在Location輸入框中,雙擊鼠標(biāo),再單擊出現(xiàn)的彈出式菜單的下拉式箭頭,出現(xiàn)的下拉菜單列出所選用芯片的所有可用管腳,可根據(jù)所使用的實(shí)驗(yàn)箱或開(kāi)發(fā)板的管腳分配情況鎖定管腳。將輸入信號(hào)管腳鎖定為按鍵、輸出管腳鎖定為發(fā)光二極管。(3)按照同樣的方法,將其他管腳一一鎖定。(4)關(guān)閉配置編輯器。(5)單擊標(biāo)題欄中的Processing→StartCompilation選項(xiàng),再次啟動(dòng)全程編譯。編譯成功后,就可以將設(shè)計(jì)的程序下載到可編程邏輯芯片中。在編譯成功后,QuartusⅡ軟件將自動(dòng)生成編程數(shù)據(jù)文件,如.pof(專用配置器件)和.sof(通過(guò)連接計(jì)算機(jī)上的下載電纜直接對(duì)FPGA進(jìn)行配置)等編程數(shù)據(jù)文件,這些文件可以被編程器使用,對(duì)器件進(jìn)行編程。編程的方式可以是JTAG方式或AS方式,JTAG方式將程序下載到可編程邏輯器件;AS方式將程序下載到存儲(chǔ)器(使用.pof文件)。(1)如果使用ByteBlasterMV編程器,可將ByteBlasterMV下載電纜接到計(jì)算機(jī)的并行端口;如果使用MasterBlaster編程器,可將MasterBlaster下載電纜連接到計(jì)算機(jī)的串行端口。編程器下載電纜連接后,要打開(kāi)EDA實(shí)驗(yàn)箱或開(kāi)發(fā)板的電源。2.編程(2)如果使用USB-Blaster編程器,需要安裝USB驅(qū)動(dòng)程序。將USB-Blaster編程器一端連接到計(jì)算機(jī)的USB端口,另一端連接到EDA實(shí)驗(yàn)箱或開(kāi)發(fā)板的JTAG接口,打開(kāi)EDA實(shí)驗(yàn)箱或開(kāi)發(fā)板的電源。這時(shí)會(huì)彈出一個(gè)USB驅(qū)動(dòng)程序?qū)υ捒?,根?jù)對(duì)話框的提示,選擇用戶手動(dòng)搜索驅(qū)動(dòng)程序,如果QuartusⅡ安裝在D盤(pán)的ALTERA文件夾下,則驅(qū)動(dòng)程序的路徑為D:\ALTERA\QUARTUS\DRIVERS\USB-BLASTER。(3)單擊Tools→Programmer選項(xiàng)(4)單擊圖中的【HardwareSetup】按鈕(5)單擊Availablehardwareitems列表框,雙擊USB-Blaster[USB-0],然后單擊【Close】按鈕,關(guān)閉硬件配置對(duì)話框。(6)在編程窗口中,單擊Mode下拉框右端的下拉按鈕,選中JTAG編程方式。JTAG編程方式支持在系統(tǒng)編程,可對(duì)FPGA、DSP等器件進(jìn)行編程,是通用的編程方式。另外,ActiveSerialProgramming模式可對(duì)FLASH存儲(chǔ)器進(jìn)行編程。(7)單擊【AddFiles】按鈕,在彈出的對(duì)話框中,再打開(kāi)output_files文件夾,選中.sof文件。根據(jù)實(shí)驗(yàn)箱或開(kāi)發(fā)板的實(shí)際情況,測(cè)試電路。本書(shū)使用的開(kāi)發(fā)板:輸入信號(hào)為按鍵按下時(shí),輸入信號(hào)為1,按鍵指示燈亮;按鍵抬起時(shí),輸入信號(hào)為0,按鍵指示燈暗。輸出信號(hào)為1時(shí),信號(hào)燈亮;輸出信號(hào)為0時(shí),信號(hào)燈暗。3.電路測(cè)試1.題目說(shuō)明

設(shè)計(jì)一個(gè)比較兩個(gè)4位二進(jìn)制數(shù)是否相同的同比較器。要求:設(shè)計(jì)出4位同比較器的原理圖,建立項(xiàng)目,編輯原理圖文件,完成編譯和波形仿真后,依據(jù)開(kāi)發(fā)板或?qū)嶒?yàn)箱的具體情況鎖定管腳,再次編譯成功后,下載到實(shí)驗(yàn)箱驗(yàn)證4位同比較器的功能。1.5實(shí)訓(xùn):四位同比較器的設(shè)計(jì)與實(shí)現(xiàn)

兩個(gè)4位二進(jìn)制數(shù)的同比較器,可以在一位二進(jìn)制數(shù)同比較器的基礎(chǔ)上完成。

如果兩個(gè)4位二進(jìn)制數(shù)的每一數(shù)據(jù)位都相同,則兩個(gè)數(shù)據(jù)相同;

只要有一個(gè)數(shù)據(jù)位不相同,則兩個(gè)數(shù)據(jù)不同。

使用四個(gè)同比較器比較4位二進(jìn)制數(shù)的每一位,得到四個(gè)輸出結(jié)果,再接入一個(gè)4輸入端的與門(mén),與門(mén)的輸出端就是4位同比較器的輸出端。2.設(shè)計(jì)提示設(shè)輸入的兩個(gè)4位二進(jìn)制數(shù)分別為A[3..0]、B[3..0],用Y表示比較結(jié)果。若兩數(shù)相同,輸出1;兩數(shù)不同輸出0。4位同比較器的原理圖如圖所示。(4)命名節(jié)點(diǎn)線:選中與總線連接的節(jié)點(diǎn)線(在線上單擊),即可輸入節(jié)點(diǎn)線名稱,但需要注意連接信號(hào)輸入、輸出端的節(jié)點(diǎn)線,其名稱要與相應(yīng)管腳的名稱對(duì)應(yīng)。例如與管腳A[3..0]相連的4條節(jié)點(diǎn)線分別命名為A[3]、A[2]、A[1]、A[0],不同的節(jié)點(diǎn)線名代表總線的數(shù)據(jù)分配關(guān)系。還要注意輸入的節(jié)點(diǎn)線名稱的顏色與節(jié)點(diǎn)線的顏色必須相同,不同就是沒(méi)有選中,需要重新做。按照邏輯關(guān)系將其連接,按照總線和節(jié)點(diǎn)的規(guī)則命名管腳和連接導(dǎo)線的名稱后,可不用連接。(1)單擊File→New選項(xiàng),選中UniversityProgramVWF選項(xiàng),單擊【OK】按鈕,建立波形輸入文件。(2)單擊Edit→SetEndTime選項(xiàng),設(shè)定仿真時(shí)間為2us;單擊Edit→GridSize…選項(xiàng),設(shè)定仿真時(shí)間周期為100ns。(3)雙擊波形編輯器“Name”下的空白處,打開(kāi)插入管腳或總線對(duì)話框。(4)單擊該對(duì)話框的[NodeFind]按鈕,打開(kāi)管腳搜索對(duì)話框,選中Pins:all,然后單擊【list】按鈕。在下方的NodesFinder窗口中會(huì)出現(xiàn)設(shè)計(jì)項(xiàng)目的所有端口管腳名。(5)選中輸入端口節(jié)點(diǎn)和輸出信號(hào)節(jié)點(diǎn)后,單擊窗口中間的方向按鈕,將管腳進(jìn)入窗口右側(cè)的選擇區(qū),單擊OK按鈕;回到插入管腳或總線對(duì)話框,再次單擊OK按鈕。(6)調(diào)整波形坐標(biāo)間距后,選中輸入管腳A,單擊波形編輯按鈕

,并在Countevery輸入框內(nèi)輸入100,單位選ns;選中輸入管腳B,單擊波形編輯按鈕

,并在Period輸入框內(nèi)輸入200,單位選ns。4.波形仿真(7)單擊菜單欄中的Simulation→RunFunctionalSimulation選項(xiàng)或工具欄中的

按鈕,啟動(dòng)仿真。使用調(diào)整焦距工具調(diào)整波形坐標(biāo)間距。(1)單擊標(biāo)題欄中的Assignments→PinPlanner選項(xiàng),出現(xiàn)管腳規(guī)劃窗口。(2)在Location輸入框中,雙擊鼠標(biāo),再單擊出現(xiàn)的彈出式菜單的下拉式箭頭,出現(xiàn)的下拉菜單列出所選用芯片的所有可用管腳,可根據(jù)所使用的實(shí)驗(yàn)箱或開(kāi)發(fā)板的管腳分配情況鎖定管腳。將輸入信號(hào)管腳鎖定為按鍵、輸出管腳鎖定為發(fā)光二極管。注意:多位的總線管腳需要按位鎖定,例如管腳A需要分別鎖定A[3]、A[2]、A[1]、A[0],不要鎖定A??偩€管腳B與A的處理相同。(3)單擊標(biāo)題欄中的Processing→StartCompilation選項(xiàng),再次啟動(dòng)全程編譯。編譯成功后,就可以將設(shè)計(jì)的程序下載到可編程邏輯芯片中。(4)使用電纜將計(jì)算機(jī)和實(shí)驗(yàn)箱連接,接通實(shí)驗(yàn)箱電源。單擊Tools→Programmer選項(xiàng),再單擊【Start】按鈕,即可開(kāi)始對(duì)芯片編程。5.編程輸入信號(hào)為按鍵按下輸入信號(hào)為1,按鍵指示燈亮;按鍵抬起輸入信號(hào)為0,按鍵指示燈暗。輸出信號(hào)為1時(shí),信號(hào)燈亮;輸出信號(hào)為0時(shí),信號(hào)燈暗。例如輸入信號(hào)A=“1001”、B=“1001”時(shí),輸出信號(hào)Y為高電平;輸入信號(hào)A=“1001”、B=“1010”時(shí),輸出信號(hào)Y為低電平。6.電路測(cè)試EDA項(xiàng)目教程

——基于VHDL與FPGA本章要點(diǎn)

可編程邏輯器件QuartusⅡ軟件的圖形輸入方式QuartusⅡ軟件LPM宏單元庫(kù)項(xiàng)目2數(shù)據(jù)運(yùn)算器的設(shè)計(jì)與實(shí)現(xiàn)2.1可編程邏輯器件20世紀(jì)70年代中期,出現(xiàn)了可編程邏輯陣列(ProgrammableLogicArray,PLA)器件20世紀(jì)70年代末期,出現(xiàn)了可編程陣列邏輯(ProgrammableArrayLogic,PAL)器件20世紀(jì)80年代初期,Lattice公司最先發(fā)明了通用陣列邏輯(GenericArrayLogic,GAL)20世紀(jì)80年代中期,Altera公司(已被Intel收購(gòu))推出了可擦除可編程邏輯器件(ErasablePLD,EPLD)現(xiàn)場(chǎng)可編程門(mén)陣列(FPGA)是Xilinx公司(已被AMD收購(gòu))在1985年首家推出的20世紀(jì)80年代末期,復(fù)雜可編程邏輯器件(CPLD)由Lattice公司提出20世紀(jì)末期,出現(xiàn)了片上可編程系統(tǒng)SOPC器件1.早期PLD的編程工藝

早期PLD主要包括可編程邏輯陣列(PLA)、可編程陣列邏輯(PAL)和通用陣列邏輯(GAL)。采用熔絲編程工藝,其原理是在器件可以編程的互連節(jié)點(diǎn)上設(shè)置有相應(yīng)的熔絲。在編程時(shí),對(duì)需要去除連接的節(jié)點(diǎn)上通以編程電流燒掉熔絲,而需要保持連接的節(jié)點(diǎn)則不通電保留熔絲,編程結(jié)束后器件內(nèi)熔絲的分布情況就決定了器件邏輯功能。

早期的PLD只允許編程一次,不利于設(shè)計(jì)調(diào)試與修改。但是,其抗干擾能力強(qiáng)、工作速度快,集成度與可靠性都很高,并且價(jià)格相對(duì)低廉。2.1.2編程工藝(1)EPROM:采用浮柵編程技術(shù),在斷電時(shí)存儲(chǔ)的數(shù)據(jù)不會(huì)丟失,保存10年,其電荷損失不大于10%。擦除EPROM時(shí),需要將器件放在紫外線或X射線下照射10~20分鐘。其缺點(diǎn)是擦除時(shí)間較長(zhǎng),且需要專門(mén)的器件。(2)EEPROM:采用隧道浮柵編程技術(shù),其編程和擦除都是通過(guò)在MOS管的漏極和控制柵上,加一定幅度和極性的電脈沖實(shí)現(xiàn),不需要紫外線照射。EEPROM的擦除和寫(xiě)入都是逐點(diǎn)進(jìn)行的,對(duì)每一個(gè)點(diǎn)先擦后寫(xiě),需要花費(fèi)一定的時(shí)間。與EPROM相比,具有擦除方便、速度快的優(yōu)點(diǎn),因而受到用戶的歡迎。(3)FlashROM:采用沒(méi)有隧道的浮柵編程技術(shù),柵極靠襯底較近,是E2PROM編程器件的改進(jìn)型。擦寫(xiě)過(guò)程與EEPROM基本一致,但擦除不是逐點(diǎn)進(jìn)行,而是一次全部擦除,然后再逐點(diǎn)改寫(xiě),所以其速度比E2PROM編程器件還要快。2.CPLD的編程工藝(1)反熔絲(Antifuse)

反熔絲技術(shù)是通過(guò)擊穿介質(zhì)達(dá)到連通線路的目的。(2)靜態(tài)存儲(chǔ)器(SRAM)

每個(gè)連接點(diǎn)用一個(gè)靜態(tài)觸發(fā)器控制的開(kāi)關(guān)代替熔絲,當(dāng)觸發(fā)器被置1時(shí),開(kāi)關(guān)接通;置0時(shí),開(kāi)關(guān)斷開(kāi)。在系統(tǒng)不加電時(shí),編程數(shù)據(jù)存儲(chǔ)在片外的E2PROM器件、FlashROM器件、硬盤(pán)或軟盤(pán)中。在系統(tǒng)上電時(shí),把這些編程數(shù)據(jù)立即寫(xiě)入到FPGA中,從而實(shí)現(xiàn)對(duì)FPGA的動(dòng)態(tài)配置;系統(tǒng)掉電時(shí),片內(nèi)的編程數(shù)據(jù)將全部丟失。3.FPGA的編程工藝1.邏輯資源量的選擇2.芯片速度的選擇3.器件功耗的選擇2.1.3器件的選用(1)FPGA是“時(shí)序豐富”型的,更適合于完成時(shí)序邏輯,CPLD是“邏輯豐富”型的,更適合于完成各種算法和組合邏輯,即FPGA更適合于觸發(fā)器豐富的結(jié)構(gòu),而CPLD更適合于觸發(fā)器有限而乘積項(xiàng)豐富的結(jié)構(gòu)。(2)FPGA主要通過(guò)改變內(nèi)部連線的布線來(lái)編程,CPLD通過(guò)修改具有固定內(nèi)連電路的邏輯功能來(lái)編程。又由于CPLD有專用連線連接宏單元,信號(hào)到每個(gè)宏單元的延時(shí)相同并且延時(shí)最短,所以CPLD比FPGA有較大的時(shí)間可預(yù)測(cè)性,可以預(yù)測(cè)管腳到管腳的最大延遲時(shí)間。(3)CPLD主要是基于E2PROM或FlashROM存儲(chǔ)器編程,其優(yōu)點(diǎn)是在系統(tǒng)斷電后,編程信息不丟失,且無(wú)需外部存儲(chǔ)器芯片,使用簡(jiǎn)單。FPGA大部分是基于SRAM編程,其優(yōu)點(diǎn)是可進(jìn)行任意次數(shù)的編程,其缺點(diǎn)是編程信息需存放在外部存儲(chǔ)器上,每次上電時(shí),需從器件的外部存儲(chǔ)器或計(jì)算機(jī)中將編程數(shù)據(jù)寫(xiě)入SRAM。4.FPGA與CPLD應(yīng)用比較2.2.1半加器

只考慮兩個(gè)加數(shù)本身的相加,不考慮來(lái)自低位的進(jìn)位,這樣的加法運(yùn)算稱為半加,實(shí)現(xiàn)這種運(yùn)算的邏輯電路稱為半加器。半加器可對(duì)兩個(gè)一位二進(jìn)制數(shù)進(jìn)行加法運(yùn)算,同時(shí)產(chǎn)生進(jìn)位。1.題目要求

利用QuartusⅡ軟件的圖形輸入方式,

設(shè)計(jì)一位二進(jìn)制半加器,完成編譯和波形仿真后,下載到實(shí)驗(yàn)平臺(tái)驗(yàn)證電路功能。2.電路設(shè)計(jì)

設(shè)半加器的輸入端為A(被加數(shù))和B(加數(shù));輸出端為S(和)和C(進(jìn)位)。2.2加法器的設(shè)計(jì)半加器的題目要求列出真值表

(1)在計(jì)算機(jī)的E盤(pán),建立文件夾作為項(xiàng)目文件夾。(2)啟動(dòng)QuartusⅡ,單擊【CreateaNewProject】按鈕打開(kāi)新項(xiàng)目建立向?qū)?,也可以單擊菜單File→New→NewQuartusIIProject,在新項(xiàng)目建立向?qū)?duì)話框中分別輸入項(xiàng)目文件夾、項(xiàng)目名和頂層設(shè)計(jì)實(shí)體名。項(xiàng)目名為HalfAdd、頂層設(shè)計(jì)實(shí)體名也為HalfAdd。(3)由于采用圖形輸入方式,在添加文件對(duì)話框的Filename中輸入HalfAdd.bdf,然后單擊【Add】按鈕,添加該文件。(4)在器件設(shè)置對(duì)話框中,根據(jù)實(shí)驗(yàn)箱或開(kāi)發(fā)板上使用的器件決定選擇的芯片系列和具體元件,本書(shū)選擇CycloneⅣE系列的EP4CE10E22C8芯片。(5)單擊【Finish】按鈕,關(guān)閉新項(xiàng)目建立向?qū)А?.建立項(xiàng)目(1)編輯。單擊File→New選項(xiàng),選中BlockDiagram/SchematicFile,單擊【OK】按鈕,打開(kāi)圖形編輯器窗口。(2)打開(kāi)圖形文件編輯窗口,根據(jù)半加器的邏輯表達(dá)式,依次輸入1個(gè)XOR(異或門(mén))、1個(gè)AND2(與門(mén))、2個(gè)INPUT(輸入管腳)和2個(gè)OUTPUT(輸出管腳),按照邏輯關(guān)系將其連接。4.編輯與編譯(1)單擊File→New選項(xiàng),選中UniversityProgramVWF選項(xiàng),單擊【OK】按鈕,建立波形輸入文件。(2)單擊Edit→SetEndTime選項(xiàng),設(shè)定仿真時(shí)間為1us;單擊Edit→GridSize…選項(xiàng),設(shè)定仿真時(shí)間周期為40ns。將波形文件以HalfAdd為名稱存入文件夾E:\EXAM221文件夾下。(3)雙擊波形編輯器“Name”下的空白處,打開(kāi)插入管腳或總線對(duì)話框。(4)單擊該對(duì)話框的【NodeFind…】按鈕,打開(kāi)管腳搜索對(duì)話框,選中Pins:all,然后單擊【list】按鈕。在下方的NodesFinder窗口中會(huì)出現(xiàn)設(shè)計(jì)項(xiàng)目的所有端口管腳名。5.波形仿真(5)選中輸入端口節(jié)點(diǎn)A、B和輸出信號(hào)節(jié)點(diǎn)S、C后,單擊窗口中間的方向按鈕,將管腳進(jìn)入窗口右側(cè)的選擇區(qū),單擊【OK】按鈕;回到插入管腳或總線對(duì)話框,再次單擊【OK】按鈕。(6)調(diào)整波形坐標(biāo)間距后,選中輸入管腳A,單擊波形編輯按鈕

,并在Countevery輸入框內(nèi)輸入40,單位選ns;選中輸入管腳B,單擊波形編輯按鈕

,并在Countevery輸入框內(nèi)輸入80,單位選ns。(7)單擊菜單欄中的Simulation→RunFunctionalSimulation選項(xiàng)或工具欄中的

按鈕,啟動(dòng)仿真。仿真結(jié)果如圖所示(1)單擊標(biāo)題欄中的Assignments→PinPlanner選項(xiàng),出現(xiàn)管腳規(guī)劃窗口。(2)在Location輸入框中,雙擊鼠標(biāo),再單擊出現(xiàn)的彈出式菜單的下拉式箭頭,出現(xiàn)的下拉菜單列出所選用芯片的所有可用管腳,可根據(jù)所使用的實(shí)驗(yàn)箱或開(kāi)發(fā)板的管腳分配情況鎖定管腳。將輸入信號(hào)管腳鎖定為按鍵、輸出管腳鎖定為發(fā)光二極管。(3)單擊標(biāo)題欄中的Processing→StartCompilation選項(xiàng),再次啟動(dòng)全程編譯。編譯成功后,就可以將設(shè)計(jì)的程序下載到可編程邏輯芯片中。6.編程(4)使用電纜將計(jì)算機(jī)和實(shí)驗(yàn)箱連接,接通實(shí)驗(yàn)箱電源。單擊Tools→Programmer選項(xiàng),在編程窗口中進(jìn)行硬件配置,可選擇LPT1接口輸出的ByteBlasterMV、ByteBlasterⅡ或USB-Blaster編程器等硬件類型,編程方式選中JTAG編程方式。(5)單擊【AddFiles】按鈕,在彈出的對(duì)話框中,再打開(kāi)output_files文件夾,單擊選中HalfAdd.sof文件,再單擊【Start】按鈕,即可開(kāi)始對(duì)芯片編程。(6)如果建立項(xiàng)目時(shí)選定的芯片和實(shí)驗(yàn)箱適配板上的芯片不同,下載會(huì)失敗。這時(shí)可單擊Project→Add/RemoveFilesinProject…,打開(kāi)設(shè)置對(duì)話框,單擊右上角的【Device】按鈕,重新選擇器件,重新編譯,重新鎖定管腳,再次編譯后即可重新下載。輸入信號(hào)為按鍵按下輸入信號(hào)為1,按鍵指示燈亮;按鍵抬起輸入信號(hào)為0,按鍵指示燈暗。輸出信號(hào)為1時(shí),信號(hào)燈亮;輸出信號(hào)為0時(shí),信號(hào)燈暗。測(cè)試結(jié)果如表2-2所示。7.電路測(cè)試測(cè)試結(jié)果完全正確的電路,可以生成符號(hào)元件,該元件可作為獨(dú)立的器件供其他設(shè)計(jì)項(xiàng)目調(diào)用?;氐綀D形編輯器窗口,單擊File→Create/Update→CreateSymbolFilesforCurrentFile選項(xiàng),在彈出的對(duì)話框中將此符號(hào)文件按默認(rèn)名稱(即HalfAdd)保存,擴(kuò)展名為.bsf。8.生成符號(hào)元件不僅考慮兩個(gè)一位二進(jìn)制數(shù)的相加,而且還考慮來(lái)自低位進(jìn)位的運(yùn)算電路,稱為全加器。全加器有3個(gè)輸入端、2個(gè)輸出端。1.題目要求

利用QuartusⅡ軟件的圖形輸入方式,設(shè)計(jì)一位二進(jìn)制全加器,完成編譯和波形仿真后,下載到實(shí)驗(yàn)平臺(tái)驗(yàn)證電路功能。2.電路設(shè)計(jì)

設(shè)全加器的輸入端為A(被加數(shù))、B(加數(shù))、Ci(低位進(jìn)位);輸出端為S(和)和Co(進(jìn)位)。2.2.2全加器根據(jù)全加器的題目要求列出真值表(1)在計(jì)算機(jī)的E盤(pán),建立文件夾作為項(xiàng)目文件夾。(2)啟動(dòng)QuartusⅡ,單擊【CreateaNewProject】按鈕打開(kāi)新項(xiàng)目建立向?qū)?,也可以單擊菜單File→New→NewQuartusIIProject,在新項(xiàng)目建立向?qū)?duì)話框中分別輸入項(xiàng)目文件夾、項(xiàng)目名和頂層設(shè)計(jì)實(shí)體名。項(xiàng)目名為ComAdd、頂層設(shè)計(jì)實(shí)體名也為ComAdd。(3)由于采用圖形輸入方式,在添加文件對(duì)話框的Filename中輸入ComAdd.bdf,然后單擊【Add】按鈕,添加該文件。(4)在器件設(shè)置對(duì)話框中,根據(jù)實(shí)驗(yàn)箱或開(kāi)發(fā)板上使用的器件決定選擇的芯片系列和具體元件,本書(shū)選擇CycloneⅣE系列的EP4CE10E22C8芯片。(5)單擊【Finish】按鈕,關(guān)閉新項(xiàng)目建立向?qū)А?.建立項(xiàng)目4.編輯與編譯(1)編輯。單擊File→New選項(xiàng),選中BlockDiagram/SchematicFile,單擊【OK】按鈕,打開(kāi)圖形編輯器窗口。(2)打開(kāi)圖形文件編輯窗口,依次輸入2個(gè)XOR(異或門(mén))、3個(gè)AND2(與門(mén))、1個(gè)OR3(或門(mén))、3個(gè)INPUT(輸入管腳)和2個(gè)OUTPUT(輸出管腳),按照邏輯關(guān)系將其連接(1)單擊File→New選項(xiàng),選中UniversityProgramVWF選項(xiàng),單擊【OK】按鈕,建立波形輸入文件。(2)單擊Edit→SetEndTime選項(xiàng),設(shè)定仿真時(shí)間為1us;單擊Edit→GridSize…選項(xiàng),設(shè)定仿真時(shí)間周期為40ns。將波形文件以ComAdd為名稱存入文件夾E:\EXAM222文件夾下。(3)雙擊波形編輯器“Name”下的空白處,打開(kāi)插入管腳或總線對(duì)話框。(4)單擊該對(duì)話框的【NodeFind…】按鈕,打開(kāi)管腳搜索對(duì)話框,選中Pins:all,然后單擊【list】按鈕。在下方的NodesFinder窗口中會(huì)出現(xiàn)設(shè)計(jì)項(xiàng)目的所有端口管腳名。5.波形仿真(5)選中輸入端口節(jié)點(diǎn)A、B、Ci和輸出信號(hào)節(jié)點(diǎn)S、Co后,單擊窗口中間的方向按鈕,將管腳進(jìn)入窗口右側(cè)的選擇區(qū),單擊【OK】按鈕;回到插入管腳或總線對(duì)話框,再次單擊【OK】按鈕。(6)調(diào)整波形坐標(biāo)間距后,選中輸入管腳A,單擊波形編輯按鈕

,并在Countevery輸入框內(nèi)輸入80,單位選ns;選中輸入管腳B,單擊波形編輯按鈕

,并在Countevery輸入框內(nèi)輸入160,單位選ns;選中輸入管腳Ci,單擊波形編輯按鈕

,并在Countevery輸入框內(nèi)輸入320,單位選ns。(7)單擊菜單欄中的Simulation→RunFunctionalSimulation選項(xiàng)或工具欄中的

按鈕,啟動(dòng)仿真。使用調(diào)整焦距工具調(diào)整波形坐標(biāo)間距,仿真結(jié)果如圖2-6所示1)單擊標(biāo)題欄中的Assignments→PinPlanner選項(xiàng),出現(xiàn)管腳規(guī)劃窗口。(2)在Location輸入框中,雙擊鼠標(biāo),再單擊出現(xiàn)的彈出式菜單的下拉式箭頭,出現(xiàn)的下拉菜單列出所選用芯片的所有可用管腳,可根據(jù)所使用的實(shí)驗(yàn)箱或開(kāi)發(fā)板的管腳分配情況鎖定管腳。將輸入信號(hào)管腳鎖定為按鍵、輸出管腳鎖定為發(fā)光二極管。(3)單擊標(biāo)題欄中的Processing→StartCompilation選項(xiàng),再次啟動(dòng)全程編譯。編譯成功后,就可以將設(shè)計(jì)的程序下載到可編程邏輯芯片中。6.編程(4)使用電纜將計(jì)算機(jī)和實(shí)驗(yàn)箱連接,接通實(shí)驗(yàn)箱電源。單擊Tools→Programmer選項(xiàng),在編程窗口中進(jìn)行硬件配置,可選擇USB-Blaster編程器等硬件類型,編程方式選中JTAG編程方式。(5)單擊【AddFiles】按鈕,在彈出的對(duì)話框中,再打開(kāi)output_files文件夾,單擊選中ComAdd.sof文件,再單擊【Start】按鈕,即可開(kāi)始對(duì)芯片編程。(6)如果建立項(xiàng)目時(shí)選定的芯片和實(shí)驗(yàn)箱適配板上的芯片不同,下載會(huì)失敗。這時(shí)可單擊Project→Add/RemoveFilesinProject…,打開(kāi)設(shè)置對(duì)話框,單擊右上角的【Device】按鈕,重新選擇器件,重新編譯,重新鎖定管腳,再次編譯后即可重新下載。輸入信號(hào)為按鍵按下輸入信號(hào)為1,按鍵指示燈亮;按鍵抬起輸入信號(hào)為0,按鍵指示燈暗。輸出信號(hào)為1時(shí),信號(hào)燈亮;輸出信號(hào)為0時(shí),信號(hào)燈暗。7.電路測(cè)試測(cè)試結(jié)果完全正確的電路,可以生成符號(hào)元件,該元件可作為獨(dú)立的器件供其他設(shè)計(jì)項(xiàng)目調(diào)用?;氐綀D形編輯器窗口,單擊File→Create/Update→CreateSymbolFilesforCurrentFile選項(xiàng),在彈出的對(duì)話框中將此符號(hào)文件按默認(rèn)名稱(即ComAdd)保存,擴(kuò)展名為.bsf。8.生成符號(hào)元件四位加法器是可以對(duì)2個(gè)四位二進(jìn)制數(shù)進(jìn)行加法運(yùn)算,并考慮來(lái)自低位的進(jìn)位。1.題目要求

利用QuartusⅡ軟件的圖形輸入方式,設(shè)計(jì)四位加法器,完成編譯和波形仿真后,下載到實(shí)驗(yàn)平臺(tái)驗(yàn)證電路功能。2.電路設(shè)計(jì)

四位加法器可以在半加器和全加器的基礎(chǔ)上進(jìn)行,利用1個(gè)半加器和3個(gè)全加器分別運(yùn)算四位二進(jìn)制數(shù)的每個(gè)數(shù)位。其應(yīng)具備的管腳為輸入端:A[3..0]、B[3..0];輸出端:S[3..0]、Bit(Bit=1代表進(jìn)位)。2.2.3四位加法器(1)在計(jì)算機(jī)的E盤(pán),建立文件夾作為項(xiàng)目文件夾。(2)啟動(dòng)QuartusⅡ,單擊【CreateaNewProject】按鈕打開(kāi)新項(xiàng)目建立向?qū)?,也可以單擊菜單File→New→NewQuartusIIProject,在新項(xiàng)目建立向?qū)?duì)話框中分別輸入項(xiàng)目文件夾、項(xiàng)目名和頂層設(shè)計(jì)實(shí)體名,項(xiàng)目名為FCAdd、頂層設(shè)計(jì)實(shí)體名也為FCAdd。(3)采用圖形輸入方式,在添加文件對(duì)話框的Filename中輸入FCAdd.bdf,然后單擊【Add】按鈕,添加該文件。3.建立項(xiàng)目(4)由于需要使用先前生成的半加器元件HalfAdd.bsf和全加器元件ComAdd.bsf,可單擊添加文件對(duì)話框的Filename右側(cè)的按鈕,找到HalfAdd.bdf,單擊【Add】按鈕添加該文件;再找到的ComAdd.bdf,再次單擊【Add】按鈕,添加該文件。(5)在器件設(shè)置對(duì)話框中,根據(jù)實(shí)驗(yàn)箱或開(kāi)發(fā)板上使用的器件決定選擇的芯片系列和具體元件,本書(shū)選擇CycloneⅣE系列的EP4CE10E22C8芯片。(6)單擊【Finish】按鈕,關(guān)閉新項(xiàng)目建立向?qū)?。?)編輯。單擊File→New選項(xiàng),選中BlockDiagram/SchematicFile,單擊【OK】按鈕,打開(kāi)圖形編輯器窗口。(2)雙擊圖形文件編輯窗口的編輯區(qū),打開(kāi)元件輸入對(duì)話框。單擊元件輸入對(duì)話框中Name輸入框右側(cè)按鈕,在彈出的“打開(kāi)”對(duì)話框選擇HalfAdd.bsf文件;再選擇ComAdd.bsf文件,并復(fù)制成3個(gè),再依次輸入2個(gè)INPUT(輸入管腳)和2個(gè)OUTPUT(輸出管腳)。4.編輯與編譯(3)命名節(jié)點(diǎn)線:選中與總線連接的節(jié)點(diǎn)線(在線上單擊),即可輸入節(jié)點(diǎn)線名稱,但需要注意連接信號(hào)輸入、輸出端的節(jié)點(diǎn)線,其名稱要與相應(yīng)管腳的名稱對(duì)應(yīng)。例如與管腳A[3..0]相連的4條節(jié)點(diǎn)線分別命名為A[0]、A[1]、A[2]、A[3],不同的節(jié)點(diǎn)線名代表總線的數(shù)據(jù)分配關(guān)系。還要注意輸入的節(jié)點(diǎn)線名稱的顏色與節(jié)點(diǎn)線的顏色必須相同,不同就是沒(méi)有選中,需要重新做。(4)更改連線類型:選中連線單擊右鍵,在彈出的下拉菜單中選擇BusLine(總線)或NodeLine(節(jié)點(diǎn)線)選項(xiàng)。傳送兩個(gè)以上信號(hào)時(shí),必須選用總線。(1)單擊File→New選項(xiàng),選中UniversityProgramVWF選項(xiàng),單擊【OK】按鈕,建立波形輸入文件。(2)單擊Edit→SetEndTime選項(xiàng),設(shè)定仿真時(shí)間為1us;單擊Edit→GridSize…選項(xiàng),設(shè)定仿真時(shí)間周期為40ns。將波形文件以HalfAdd為名稱存入文件夾當(dāng)前文件夾下。(3)雙擊波形編輯器“Name”下的空白處,打開(kāi)插入管腳或總線對(duì)話框。(4)單擊該對(duì)話框的【NodeFind…】按鈕,打開(kāi)管腳搜索對(duì)話框,選中Pins:all,然后單擊【list】按鈕。在下方的NodesFinder窗口中會(huì)出現(xiàn)設(shè)計(jì)項(xiàng)目的所有端口管腳名。5.波形仿真(5)選中輸入端口節(jié)點(diǎn)A、B和輸出信號(hào)節(jié)點(diǎn)S、Bit后,單擊窗口中間的方向按鈕,將管腳進(jìn)入窗口右側(cè)的選擇區(qū),單擊【OK】按鈕;回到插入管腳或總線對(duì)話框,再次單擊【OK】按鈕。(6)調(diào)整波形坐標(biāo)間距后,選中輸入管腳A,單擊波形編輯按鈕

,并在Countevery輸入框內(nèi)輸入80,單位選ns;選中輸入管腳B,單擊波形編輯按鈕

,并在Startvalue輸入框內(nèi)輸入“0101”,在Countevery輸入框內(nèi)輸入80,單位選ns。(7)單擊菜單欄中的Simulation→RunFunctionalSimulation選項(xiàng)或工具欄中的

按鈕,啟動(dòng)仿真。使用調(diào)整焦距工具調(diào)整波形坐標(biāo)間距,仿真結(jié)果如圖所示(1)單擊Assignments→AssignmentsEditor選項(xiàng),出現(xiàn)配置編輯器窗口,單擊Category輸入框右側(cè)的下拉按鈕,從中選擇Pin選項(xiàng),根據(jù)使用實(shí)驗(yàn)箱的具體情況鎖定管腳。注意:多位管腳需要按位鎖定,例如管腳A需要分別鎖定A[3]、A[2]、A[1]、A[0],不要鎖定A。管腳B、S與A的處理相同。(2)再次編譯成功后,就可以將鎖定的管腳信息加入到設(shè)計(jì)文件中。(3)使用電纜將計(jì)算機(jī)和實(shí)驗(yàn)箱連接,接通實(shí)驗(yàn)箱電源。單擊Tools→Programmer選項(xiàng),編程方式選中JTAG編程方式。(4)在編程窗口中,單擊選中FCAdd.sof文件,再單擊【Start】按鈕,即可開(kāi)始對(duì)芯片編程。6.編程輸入信號(hào)A(例如1001)和B(例如0101),輸出信號(hào)S應(yīng)該為1110、輸出信號(hào)Bit應(yīng)該為0(表示沒(méi)有進(jìn)位);改變A和B,再觀察輸出信號(hào)S和Bit。7.電路測(cè)試LPM(LibraryParameterizedModules)即參數(shù)化的宏功能模塊庫(kù)。應(yīng)用這些功能模塊庫(kù)可以大大提高IC設(shè)計(jì)的效率。調(diào)用LPM庫(kù)函數(shù)非常方便,既可以在圖形輸入法中直接調(diào)用,也可以在HDL源文件中調(diào)用。2.3.1乘法器的設(shè)計(jì)1.題目要求

利用QuartusⅡ軟件的圖形輸入方式,設(shè)計(jì)一個(gè)能實(shí)現(xiàn)3位二進(jìn)制數(shù)和4位二進(jìn)制數(shù)乘法運(yùn)算的電路,完成編譯和波形仿真后,下載到實(shí)驗(yàn)平臺(tái)驗(yàn)證電路功能。2.電路設(shè)計(jì)

使用LPM庫(kù)函數(shù)實(shí)現(xiàn)。2.3LPM宏單元庫(kù)(1)在計(jì)算機(jī)的E盤(pán),建立文件夾作為項(xiàng)目文件夾。(2)啟動(dòng)QuartusⅡ,單擊【CreateaNewProject】按鈕打開(kāi)新項(xiàng)目建立向?qū)?,也可以單擊菜單File→New→NewQuartusIIProject,在新項(xiàng)目建立向?qū)?duì)話框中分別輸入項(xiàng)目文件夾、項(xiàng)目名和頂層設(shè)計(jì)實(shí)體名。項(xiàng)目名為EXMULT、頂層設(shè)計(jì)實(shí)體名也為EXMULT。(3)由于采用圖形輸入方式,在添加文件對(duì)話框的Filename中輸入EXMULT.bdf,然后單擊【Add】按鈕,添加該文件。(4)在器件設(shè)置對(duì)話框中,根據(jù)實(shí)驗(yàn)箱或開(kāi)發(fā)板上使用的器件決定選擇的芯片系列和具體元件,本書(shū)選擇CycloneⅣE系列的EP4CE10E22C8芯片。(5)單擊【Finish】按鈕,關(guān)閉新項(xiàng)目建立向?qū)А?.建立項(xiàng)目(1)雙擊圖形編輯窗口右側(cè)的Library→BasicFunctions→Arithmetic→LPM_MULT,打開(kāi)保存IP變量對(duì)話框,如圖所示。4.生成乘法運(yùn)算模塊(2)單擊【OK】按鈕。在彈出的MegaWizardPlug_1對(duì)話框中按照題意,被乘數(shù)是3位、乘數(shù)是4位,乘積是7位。如圖所示。(3)單擊【Next】按鈕。彈出MegaWizardPlug_2對(duì)話框,從上到下依次為乘數(shù)是否設(shè)置為常數(shù)(以及常數(shù)值)、乘運(yùn)算的類型(無(wú)符號(hào)或有符號(hào))、乘運(yùn)算的實(shí)現(xiàn)方式(缺省、部分器件自帶的乘法電路、邏輯單元)。(4)單擊【Next】按鈕。彈出MegaWizardPlug_3對(duì)話框,上一條為是否使用流水線功能,如使用可以需要設(shè)置時(shí)鐘、復(fù)位端和使能端;下一條為優(yōu)化方式,可選(缺省、面積和速度)。(5)單擊【Next】按鈕。彈出MegaWizardPlug_4對(duì)話框,確定仿真模式。(6)單擊【Next】按鈕。彈出MegaWizardPlug_5對(duì)話框,確定生成文件的類型。(7)單擊【Finish】按鈕。彈出QuartusⅡIPFiles對(duì)話框。5.編輯與編譯(1)編輯。單擊File→New選項(xiàng),選中BlockDiagram/SchematicFile,單擊【OK】按鈕,打開(kāi)圖形編輯器窗口。(2)雙擊圖形文件編輯窗口的編輯區(qū),打開(kāi)元件輸入對(duì)話框。單擊元件輸入對(duì)話框中Name輸入框右側(cè)按鈕,在彈出的“打開(kāi)”對(duì)話框選擇MULT.bsf文件,再依次輸入2個(gè)INPUT(輸入管腳)和1個(gè)OUTPUT(輸出管腳)。(1)單擊File→New選項(xiàng),選中UniversityProgramVWF選項(xiàng),單擊【OK】按鈕,建立波形輸入文件。(2)單擊Edit→SetEndTime選項(xiàng),設(shè)定仿真時(shí)間為2us;單擊Edit→GridSize…選項(xiàng),設(shè)定仿真時(shí)間周期為100ns。將波形文件以EXMULT為名稱存入文件夾當(dāng)前文件夾下。(3)雙擊波形編輯器“Name”下的空白處,打開(kāi)插入管腳或總線對(duì)話框。(4)單擊該對(duì)話框的【NodeFind…】按鈕,打開(kāi)管腳搜索對(duì)話框,選中Pins:all,然后單擊【list】按鈕。在下方的NodesFinder窗口中會(huì)出現(xiàn)設(shè)計(jì)項(xiàng)目的所有端口管腳名。(5)選中輸入端口節(jié)點(diǎn)A、B和輸出信號(hào)節(jié)點(diǎn)S后,單擊窗口中間的方向按鈕,將管腳進(jìn)入窗口右側(cè)的選擇區(qū),單擊【OK】按鈕;回到插入管腳或總線對(duì)話框,再次單擊【OK】按鈕。6.波形仿真(6)調(diào)整波形坐標(biāo)間距后,選中輸入管腳A,在管腳名右側(cè)的B000(取值)上雙擊,打開(kāi)管腳參數(shù)對(duì)話框,將其設(shè)置為UnsignedDecimal(無(wú)符號(hào)十進(jìn)制)(7)單擊【OK】按鈕。選中輸入管腳A,單擊波形編輯按鈕

,并在Countevery輸入框內(nèi)輸入100,單位選ns;選中輸入管腳B,單擊波形編輯按鈕

,并在Countevery輸入框內(nèi)輸入200,單位選ns;選中輸出管腳S,在管腳名右側(cè)的B0000000(取值)上雙擊,打開(kāi)管腳參數(shù)對(duì)話框,將其設(shè)置為UnsignedDecimal(無(wú)符號(hào)十進(jìn)制)。

(8)單擊菜單欄中的Simulation→RunFunctionalSimulation選項(xiàng)或工具欄中的

按鈕,啟動(dòng)仿真。使用調(diào)整焦距工具調(diào)整波形坐標(biāo)間距。(1)單擊標(biāo)題欄中的Assignments→PinPlanner選項(xiàng),出現(xiàn)管腳規(guī)劃窗口。(2)在Location輸入框中,雙擊鼠標(biāo),再單擊出現(xiàn)的彈出式菜單的下拉式箭頭,出現(xiàn)的下拉菜單列出所選用芯片的所有可用管腳,可根據(jù)所使用的實(shí)驗(yàn)箱或開(kāi)發(fā)板的管腳分配情況鎖定管腳。將輸入信號(hào)管腳鎖定為按鍵、輸出管腳鎖定為發(fā)光二極管。(3)單擊標(biāo)題欄中的Processing→StartCompilation選項(xiàng),再次啟動(dòng)全程編譯。編譯成功后,就可以將設(shè)計(jì)的程序下載到可編程邏輯芯片中。7.編程(4)使用電纜將計(jì)算機(jī)和實(shí)驗(yàn)箱連接,接通實(shí)驗(yàn)箱電源。單擊Tools→Programmer選項(xiàng),在編程窗口中進(jìn)行硬件配置,可選擇LPT1接口輸出的ByteBlasterMV、ByteBlasterⅡ或USB-Blaster編程器等硬件類型,編程方式選中JTAG編程方式。(5)單擊【AddFiles】按鈕,在彈出的對(duì)話框中,再打開(kāi)output_files文件夾,單擊選中EXMULT.sof文件,再單擊【Start】按鈕,即可開(kāi)始對(duì)芯片編程。(6)如果建立項(xiàng)目時(shí)選定的芯片和實(shí)驗(yàn)箱適配板上的芯片不同,下載會(huì)失敗。這時(shí)可單擊Project→Add/RemoveFilesinProject…,打開(kāi)設(shè)置對(duì)話框,單擊右上角的【Device】按鈕,重新選擇器件,重新編譯,重新鎖定管腳,再次編譯后即可重新下載。按照二進(jìn)制乘法運(yùn)算規(guī)則驗(yàn)證電路。例如輸入信號(hào)A為“101”(十進(jìn)制數(shù)字5)、輸入信號(hào)B為“1011”(十進(jìn)制數(shù)字11),輸出信號(hào)應(yīng)該為“0110111”(十進(jìn)制數(shù)字55)。測(cè)試時(shí)注意二進(jìn)制數(shù)字的高、低位的排列順序。8.電路測(cè)試1.題目要求

利用QuartusⅡ軟件的圖形輸入方式,設(shè)計(jì)一個(gè)能實(shí)現(xiàn)4位二進(jìn)制數(shù)和十進(jìn)制常數(shù)(數(shù)值=3)的除法運(yùn)算的電路,完成編譯和波形仿真后,下載到實(shí)驗(yàn)平臺(tái)驗(yàn)證電路功能。2.電路設(shè)計(jì)

使用LPM庫(kù)函數(shù)實(shí)現(xiàn)。3.建立項(xiàng)目(1)在計(jì)算機(jī)的E盤(pán),建立文件夾作為項(xiàng)目文件夾。2.3.2除法器的設(shè)計(jì)(2)啟動(dòng)QuartusⅡ,單擊【CreateaNewProject】按鈕打開(kāi)新項(xiàng)目建立向?qū)?,也可以單擊菜單File→New→NewQuartusIIProject,在新項(xiàng)目建立向?qū)?duì)話框中分別輸入項(xiàng)目文件夾、項(xiàng)目名和頂層設(shè)計(jì)實(shí)體名。項(xiàng)目名為EXMULT、頂層設(shè)計(jì)實(shí)體名也為EXDID。(3)由于采用圖形輸入方式,在添加文件對(duì)話框的Filename中輸入EXDID.bdf,然后單擊【Add】按鈕,添加該文件。(4)在器件設(shè)置對(duì)話框中,根據(jù)實(shí)驗(yàn)箱或開(kāi)發(fā)板上使用的器件決定選擇的芯片系列和具體元件,本書(shū)選擇CycloneⅣE系列的EP4CE10E22C8芯片。(5)單擊【Finish】按鈕,關(guān)閉新項(xiàng)目建立向?qū)?。?)雙擊圖形編輯窗口右側(cè)的Library→BasicFunctions→Arithmetic→LPM_DIVIDE,打開(kāi)保存IP變量對(duì)話框。4.生成除法運(yùn)算模塊(2)單擊【OK】按鈕。在彈出的MegaWizardPlug_1對(duì)話框中按照題意,被除數(shù)是4位、除數(shù)是2位,商是4位、余數(shù)是2位。(3)單擊【Next】按鈕。彈出MegaWizardPlug_2對(duì)話框,上一條為是否使用流水線功能,如使用可以需要設(shè)置時(shí)鐘、復(fù)位端和使能端;左下一條為優(yōu)化方式,可選(缺省、面積和速度)、右下一條為是否總是返回正的余數(shù)。(4)單擊【Next】按鈕。彈出MegaWizardPlug_3對(duì)話框,確定仿真模式。(5)單擊【Next】按鈕。彈出MegaWizardPlug_4對(duì)話框,確定生成文件的類型,單擊單選按鈕DIV.bsf。(6)單擊【Finish】按鈕。彈出QuartusⅡIPFiles對(duì)話框。5.生成常數(shù)模塊(1)雙擊圖形編輯窗口右側(cè)的Library→BasicFunctions→Miscellaneous→LPM_CONSTANT,打開(kāi)保存IP變量對(duì)話框.(2)單擊【OK】按鈕。在彈出的MegaWizardPlug_1對(duì)話框中按照題意,除數(shù)是十進(jìn)制數(shù)字3,數(shù)據(jù)寬帶2bits。(1)編輯。單擊File→New選項(xiàng),選中BlockDiagram/SchematicFile,單擊【OK】按鈕,打開(kāi)圖形編輯器窗口。(2)雙擊圖形文件編輯窗口的編輯區(qū),打開(kāi)元件輸入對(duì)話框。單擊元件輸入對(duì)話框中Name輸入框右側(cè)按鈕,在彈出的“打開(kāi)”對(duì)話框選擇DIV.bsf;同樣添加CON3.bsf文件;再依次輸入1個(gè)INPUT(輸入管腳)和2個(gè)OUTPUT(輸出管腳)。6.編輯與編譯(1)單擊File→New選項(xiàng),選中UniversityProgramVWF選項(xiàng),單擊【OK】按鈕,建立波形輸入文件。(2)單擊Edit→SetEndTime選項(xiàng),設(shè)定仿真時(shí)間為2us;單擊Edit→GridSize…選項(xiàng),設(shè)定仿真時(shí)間周期為100ns。將波形文件以EXDID為名稱存入文件夾E:\EXAM232文件夾下。(3)雙擊波形編輯器“Name”下的空白處,打開(kāi)插入管腳或總線對(duì)話框。(4)單擊該對(duì)話框的【NodeFind…】按鈕,打開(kāi)管腳搜索對(duì)話框,選中Pins:all,然后單擊【list】按鈕。在下方的NodesFinder窗口中會(huì)出現(xiàn)設(shè)計(jì)項(xiàng)目的所有端口管腳名。(5)選中輸入端口節(jié)點(diǎn)N和輸出信號(hào)節(jié)點(diǎn)Q、R后,單擊窗口中間的方向按鈕,將管腳進(jìn)入窗口右側(cè)的選擇區(qū),單擊【OK】按鈕;回到插入管腳或總線對(duì)話框,再次單擊【OK】按鈕。7.波形仿真(6)調(diào)整波形坐標(biāo)間距后,選中輸入管腳N,在管腳名右側(cè)的B0000(取值)上雙擊,打開(kāi)管腳參數(shù)對(duì)話框,將其設(shè)置為UnsignedDecimal(無(wú)符號(hào)十進(jìn)制)。同樣設(shè)置輸出信號(hào)節(jié)點(diǎn)Q、R。(7)單擊【OK】按鈕。選中輸入管腳N,單擊波形編輯按鈕

,并在Countevery輸入框內(nèi)輸入100,單位選ns。(8)單擊菜單欄中的Simulation→RunFunctionalSimulation選項(xiàng)或工具欄中的

按鈕,啟動(dòng)仿真。使用調(diào)整焦距工具調(diào)整波形坐標(biāo)間距。(1)單擊標(biāo)題欄中的Assignments→PinPlanner選項(xiàng),出現(xiàn)管腳規(guī)劃窗口。(2)在Location輸入框中,雙擊鼠標(biāo),再單擊出現(xiàn)的彈出式菜單的下拉式箭頭,出現(xiàn)的下拉菜單列出所選用芯片的所有可用管腳,可根據(jù)所使用的實(shí)驗(yàn)箱或開(kāi)發(fā)板的管腳分配情況鎖定管腳。將輸入信號(hào)管腳鎖定為按鍵、輸出管腳鎖定為發(fā)光二極管。(3)單擊標(biāo)題欄中的Processing→StartCompilation選項(xiàng),再次啟動(dòng)全程編譯。編譯成功后,就可以將設(shè)計(jì)的程序下載到可編程邏輯芯片中。8.編程(4)使用電纜將計(jì)算機(jī)和實(shí)驗(yàn)箱連接,接通實(shí)驗(yàn)箱電源。單擊Tools→Programmer選項(xiàng),在編程窗口中進(jìn)行硬件配置,可選擇LPT1接口輸出的ByteBlasterMV、ByteBlasterⅡ或USB-Blaster編程器等硬件類型,編程方式選中JTAG編程方式。(5)單擊【AddFiles】按鈕,在彈出的對(duì)話框中,再打開(kāi)output_files文件夾,單擊選中EXDID.sof文件,再單擊【Start】按鈕,即可開(kāi)始對(duì)芯片編程。(6)如果建立項(xiàng)目時(shí)選定的芯片和實(shí)驗(yàn)箱適配板上的芯片不同,下載會(huì)失敗。這時(shí)可單擊Project→Add/RemoveFilesinProject…,打開(kāi)設(shè)置對(duì)話框,單擊右上角的【Device】按鈕,重新選擇器件,重新編譯,重新鎖定管腳,再次編譯后即可重新下載。按照除法運(yùn)算規(guī)則驗(yàn)證電路。例如輸入信號(hào)A為“1101”(十進(jìn)制數(shù)字13),除以十進(jìn)制常數(shù)3,輸出信號(hào)商Q為“0100”(十進(jìn)制數(shù)字4)、余數(shù)R為“0001”(十進(jìn)制數(shù)字1)。測(cè)試時(shí)注意二進(jìn)制數(shù)字的高、低位的排列順序。9.電路測(cè)試1.題目說(shuō)明

利用QuartusⅡ軟件的原理圖輸入方式,使用LPM宏單元庫(kù)設(shè)計(jì)一個(gè)能實(shí)現(xiàn)4位二進(jìn)制數(shù)和3位二進(jìn)制數(shù)的除法運(yùn)算電路,完成編譯和波形仿真后,下載到實(shí)驗(yàn)平臺(tái)驗(yàn)證電路功能。2.建立項(xiàng)目3.生成除法運(yùn)算模塊4.編輯與編譯2.4實(shí)訓(xùn):除法器的設(shè)計(jì)與實(shí)現(xiàn)除法器原理圖文件

除法器仿真波形(1)記錄并說(shuō)明仿真波形。(2)整理電路測(cè)試記錄表,分析測(cè)試結(jié)果。(3)分析被除數(shù)或除數(shù)為零時(shí)的運(yùn)算結(jié)果。實(shí)訓(xùn)報(bào)告EDA項(xiàng)目教程

——基于VHDL與FPGA本章要點(diǎn)

VHDL的程序結(jié)構(gòu)VHDL的數(shù)據(jù)結(jié)構(gòu)VHDL的并行語(yǔ)句項(xiàng)目3數(shù)據(jù)編碼器的設(shè)計(jì)與實(shí)現(xiàn)VHDL是一種用普通文本形式設(shè)計(jì)數(shù)字系統(tǒng)的硬件描述語(yǔ)言,主要用于描述數(shù)字系統(tǒng)的結(jié)構(gòu)、行為、功能和接口,可以在任何文字處理軟件環(huán)境中編輯。編寫(xiě)VHDL程序時(shí)允許使用一些符號(hào)(字符串)作為標(biāo)識(shí)符,標(biāo)識(shí)符的命名規(guī)則如下:(1)由26個(gè)英文字母、數(shù)字0~9及下劃線“_”組成。(2)第一個(gè)字符必須以字母開(kāi)頭。(3)下劃線不能連用,最后一個(gè)字符不能是下劃線。(4)對(duì)大小寫(xiě)字母不敏感(英文字母不區(qū)分大小寫(xiě))。在VHDL中把具有特定意義的標(biāo)識(shí)符號(hào)稱為關(guān)鍵字,只能作固定用途使用,用戶不能將關(guān)鍵字作為一般標(biāo)識(shí)符來(lái)使用,如ENTITY,PORT,BEGIN,END等。3.1VHDL的程序結(jié)構(gòu)3.1.1VHDL的基本結(jié)構(gòu)--庫(kù)和程序包部分LIBRARYIEEE;--IEEE庫(kù)

USEIEEE.STD_LOGIC_1164.ALL;--調(diào)用IEEE庫(kù)中STD_LOGIC_1164程序包--實(shí)體部分ENTITYnotgateIS--實(shí)體名為notgatePORT(--端口說(shuō)明

a:INSTD_LOGIC;--定義端口類型

和數(shù)據(jù)類型

y:OUTSTD_LOGIC);ENDnotgate;--實(shí)體結(jié)束--結(jié)構(gòu)體部分ARCHITECTUREinvOFnotgateIS--結(jié)構(gòu)體名為invBEGINy<=NOTa;--將a取反后賦值給輸出端口yENDinv;--結(jié)構(gòu)體結(jié)束3.1.2庫(kù)和程序包1.庫(kù)LIBRARY庫(kù)名;常用的庫(kù)有IEEE庫(kù)、STD庫(kù)和WORK庫(kù)。2.程序包調(diào)用程序包的通用模式為:USE庫(kù)名.程序包名.ALL;例如調(diào)用STD_LOGIC_1164程序包中的項(xiàng)目需要使用以下語(yǔ)句:LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;3.1.3VHDL的實(shí)體實(shí)體的格式如下:ENTITY實(shí)體名IS[GENERIC(類屬說(shuō)明)][PORT(端口說(shuō)明)]END[ENTITY]實(shí)體名;1.類屬說(shuō)明GENERIC(常數(shù)名1:數(shù)據(jù)類型1:=設(shè)定值1;

……;常數(shù)名n:數(shù)據(jù)類型n:=設(shè)定值n);2.端口說(shuō)明PORT(端口信號(hào)名1:端口模式1數(shù)據(jù)類型1;

……;端口信號(hào)名n:端口模式n數(shù)據(jù)類型n);3.1.4VHDL的結(jié)構(gòu)體

一個(gè)實(shí)體中可以有一個(gè)結(jié)構(gòu)體,也可以有多個(gè)結(jié)構(gòu)體,但各個(gè)結(jié)構(gòu)體不應(yīng)有重名,其格式如下:ARCHITECTURE結(jié)構(gòu)體名OF實(shí)體名IS[結(jié)構(gòu)體說(shuō)明部分;]BEGIN

功能描述語(yǔ)句;END[ARCHITECTURE]結(jié)構(gòu)體名;3.1.5VHDL的特點(diǎn)1.語(yǔ)法規(guī)范標(biāo)準(zhǔn)、開(kāi)發(fā)周期短VHDL具有嚴(yán)格的語(yǔ)法規(guī)范和統(tǒng)一的標(biāo)準(zhǔn),可讀性強(qiáng)。用VHDL書(shū)寫(xiě)的源文件既是程序,又是文檔,可以直接用于設(shè)計(jì)成果的交流。VHDL采用基于模塊庫(kù)的設(shè)計(jì)方法,這樣在設(shè)計(jì)一個(gè)大規(guī)模集成電路或數(shù)字系統(tǒng)的過(guò)程中,技術(shù)人員就不需要從門(mén)級(jí)電路開(kāi)始一步步地進(jìn)行設(shè)計(jì),可以用原來(lái)設(shè)計(jì)好的模塊直接進(jìn)行累加,這些模塊可以預(yù)先設(shè)計(jì)或者使用以前設(shè)計(jì)中的存檔模塊,這些模塊存放在資源庫(kù)中,就可以在以后的設(shè)計(jì)中進(jìn)行復(fù)用。不難看出,復(fù)用減小了硬件電路設(shè)計(jì)的工作量,縮短了開(kāi)發(fā)周期。3.1.5VHDL的特點(diǎn)2.與工藝無(wú)關(guān)

當(dāng)設(shè)計(jì)人員用VHDL進(jìn)行硬件電路設(shè)計(jì)時(shí),并沒(méi)有涉及到與工藝有關(guān)的信息。當(dāng)一個(gè)設(shè)計(jì)描述進(jìn)行完編譯、模擬和綜合后,就可以采用不同的工具軟件將設(shè)計(jì)映射到不同的器件上去。映射不同的器件,只需要改變相應(yīng)的工具軟件,而無(wú)需修改設(shè)計(jì)描述。3.1.5VHDL的特點(diǎn)3.易于ASIC(專用集成電路)移植

當(dāng)產(chǎn)品的數(shù)量達(dá)到相當(dāng)?shù)囊?guī)模時(shí),采用VHDL開(kāi)發(fā)的數(shù)字系統(tǒng)能夠很容易地轉(zhuǎn)成ASIC的設(shè)計(jì)。有時(shí)用于PLD的程序可以直接用于ASIC,并且由于VHDL是一種IEEE的工業(yè)標(biāo)準(zhǔn)硬件描述語(yǔ)言,所以使用VHDL設(shè)計(jì)可以確保ASIC廠商生產(chǎn)出高質(zhì)量的芯片產(chǎn)品。3.1.5VHDL的特點(diǎn)4.上市時(shí)間短、成本低VHDL和可編程邏輯器件很好地結(jié)合,可以大大提高數(shù)字產(chǎn)品芯片化設(shè)計(jì)的實(shí)現(xiàn)速度。VHDL使設(shè)計(jì)描述更加方便、快捷,可編程邏輯器件的應(yīng)用可以將產(chǎn)品設(shè)計(jì)的前期風(fēng)險(xiǎn)降至最低,并使設(shè)計(jì)的快速?gòu)?fù)制簡(jiǎn)單易行。3.2編碼器的設(shè)計(jì)

在一些場(chǎng)合,需要用特定的符號(hào)或數(shù)碼表示特定的對(duì)象,例如一個(gè)班級(jí)中的每個(gè)同學(xué)都有不重復(fù)的學(xué)號(hào),每個(gè)電話用戶都有一個(gè)特定的號(hào)碼等。在數(shù)字電路中,需要將具有某種特定含義的信號(hào)變成代碼,利用代碼表示具有特定含義對(duì)象的過(guò)程,稱為編碼。能夠完成編碼功能的器件,稱為編碼器(Encoder)。編碼器分為普通編碼器和優(yōu)先級(jí)編碼器兩類。3.2.1數(shù)據(jù)對(duì)象1.常量CONSTANT常量名[,常量名…]:數(shù)據(jù)類型:=表達(dá)式;CONSTANTVCC:REAL:=3.3;--常量VCC的類型是實(shí)

數(shù),值為3.3CONSTANTGND:INTEGER:=0;--常量GND的類型是

整數(shù),值為0CONSTANTDELAY:TIME:=100ns;--常量DELAY是

時(shí)間類型,初值為100ns。數(shù)值和單位之間要留空格。3.2.1數(shù)據(jù)對(duì)象2.變量VARIABLE變量名[,變量名…]:數(shù)據(jù)類型[約束條件][:=表達(dá)式];VARIABLEs1,s2:INTEGER:=256;VARIABLEcont:INTEGERRANGE0TO10;第一條語(yǔ)句中變量s1和s2都為整數(shù)類型,初值都是256;第二條語(yǔ)句中,RANGE…TO…是約束條件,表示變量cont的數(shù)據(jù)限制在0~10的整數(shù)范圍內(nèi)。變量CONT沒(méi)有指定初值,則取默認(rèn)值,默認(rèn)值為該類型數(shù)據(jù)的最小值或最左端值,那么本條語(yǔ)句中cont初值為0(最左端值)。3.2.1數(shù)據(jù)對(duì)象3.信號(hào)SIGNAL信號(hào)名[,信號(hào)名…]:數(shù)據(jù)類型[約束條件][:=表達(dá)式];SIGNALa,b:INTEGER:RANGE0TO7:=5;SIGNALground:BIT:='0';第一條語(yǔ)句定義整數(shù)類型信號(hào)a、b,取值范圍限定在0~7,并賦初值5;第二條語(yǔ)句定義位信號(hào)ground并賦初值'0'。在VHDL程序中,信號(hào)和變量是兩個(gè)經(jīng)常使用的對(duì)象,都要求先聲明,后使用,具有一定的相似性,其主要區(qū)別如下:(1)在聲明中賦初值,都使用:=運(yùn)算符;聲明后使用時(shí),信號(hào)賦值使用<=運(yùn)算符,變量賦值仍然使用:=運(yùn)算符;(2)信號(hào)賦值有附加延時(shí),變量賦值則沒(méi)有。(3)對(duì)于進(jìn)程語(yǔ)句,進(jìn)程只對(duì)信號(hào)敏感,不對(duì)變量敏感。(4)外部信號(hào)表示端口,內(nèi)部信號(hào)可看成硬件中的一根連線。變量在硬件中沒(méi)有類似的對(duì)應(yīng)關(guān)系,常用于保存運(yùn)算的中間結(jié)果。描述硬件邏輯時(shí),還是應(yīng)以信號(hào)為主,盡量減少變量的使用。3.2.2VHDL的運(yùn)算符(1)邏輯運(yùn)算符。(2)關(guān)系運(yùn)算符。(3)移位運(yùn)算符。(4)符號(hào)運(yùn)算符。(5)連接運(yùn)算符。(6)算術(shù)運(yùn)算符。3.2.3賦值語(yǔ)句賦值語(yǔ)句是將一個(gè)值或者一個(gè)表達(dá)式的結(jié)果傳遞給某一個(gè)數(shù)據(jù)對(duì)象,數(shù)據(jù)在實(shí)體內(nèi)部的傳遞以及對(duì)端口外的傳遞都必須通過(guò)賦值語(yǔ)句來(lái)實(shí)現(xiàn)。VHDL語(yǔ)言提供了兩種類型的賦值語(yǔ)句:信號(hào)賦值語(yǔ)句和變量賦值語(yǔ)句。變量賦值語(yǔ)句和信號(hào)賦值語(yǔ)句的語(yǔ)法格式如下:變量:=表達(dá)式;信號(hào)<=表達(dá)式;LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYvote_3ISPORT(A,B,C:INSTD_LOGIC;Y:OUTSTD_LOGIC);ENDvote_3;ARCHITECTUREdeOFvote_3ISSIGNALe:STD_LOGIC;--定義e為信號(hào)BEGINY<=(AANDB)OR(AANDC)ORe;--以下兩條并行語(yǔ)句與書(shū)寫(xiě)順序無(wú)關(guān)e<=BAN

溫馨提示

  • 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ù)網(wǎng)僅提供信息存儲(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)論