基于CPLD的邏輯電路_第1頁(yè)
基于CPLD的邏輯電路_第2頁(yè)
基于CPLD的邏輯電路_第3頁(yè)
基于CPLD的邏輯電路_第4頁(yè)
基于CPLD的邏輯電路_第5頁(yè)
已閱讀5頁(yè),還剩64頁(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)介

基于CPLD的邏輯電路設(shè)計(jì)方法邏輯電路在電子信息系統(tǒng)中的作用和地位EDA(電子設(shè)計(jì)自動(dòng)化)改變了邏輯電路的設(shè)計(jì)方法基于CPLD的邏輯電路的設(shè)計(jì)平臺(tái)和流程VHDL學(xué)習(xí)1、邏輯電路在電子信息系統(tǒng)中的作用簡(jiǎn)單的數(shù)字信號(hào)變換和邏輯控制電路(計(jì)數(shù)器、編譯碼、多路選擇、有限狀態(tài)機(jī))嵌入式系統(tǒng)的外圍電路(為單片機(jī)擴(kuò)展性能)(地址譯碼、中斷控制、接口電路)利用FPGA內(nèi)核嵌入式系統(tǒng),可構(gòu)成SOC(systemonchip)實(shí)現(xiàn)高性能的數(shù)字信號(hào)處理(FFT、濾波、復(fù)雜編碼、數(shù)據(jù)壓縮)簡(jiǎn)單復(fù)雜2、EDA改變了邏輯電路的設(shè)計(jì)方法自動(dòng)化改變了工業(yè)、農(nóng)業(yè)的生產(chǎn)方式,同樣也促進(jìn)了電子設(shè)計(jì)的方式傳統(tǒng)的邏輯電路設(shè)計(jì)方式基于行為描述的邏輯電路設(shè)計(jì)方式和描述工具2.2傳統(tǒng)的邏輯電路設(shè)計(jì)方式設(shè)計(jì)方式1:數(shù)字邏輯法(門電路和觸發(fā)器)邏輯代數(shù)卡諾圖組合電路時(shí)序電路輸出方程和驅(qū)動(dòng)方程簡(jiǎn)化的布爾表達(dá)式2.2傳統(tǒng)的邏輯電路設(shè)計(jì)方式結(jié)構(gòu)化設(shè)計(jì)方式元件連線電路系統(tǒng)原理圖傳統(tǒng)的邏輯電路設(shè)計(jì)方法的

優(yōu)缺點(diǎn)和局限性有完整的理論基礎(chǔ)和設(shè)計(jì)經(jīng)驗(yàn)(數(shù)字邏輯和電路)電路直觀、形象,層次分明,易于理解有大量的元件可供應(yīng)用需要熟知大量的元器件功能和性能難以設(shè)計(jì)大型電路,不利于交流和共享調(diào)試?yán)щy,設(shè)計(jì)風(fēng)險(xiǎn)大,周期長(zhǎng),成本高2.3EDA的設(shè)計(jì)方法EDA提供了專用的設(shè)計(jì)平臺(tái)HDL使原理圖形成=>文字形式設(shè)計(jì)電路,實(shí)現(xiàn)了交流和共享在兼容傳統(tǒng)設(shè)計(jì)方法的基礎(chǔ)上,HDL提供了新設(shè)計(jì)方法——“行為描述”,提高了設(shè)計(jì)效率EDA提供了電路仿真功能,降低了設(shè)計(jì)風(fēng)險(xiǎn)可編程器件還方便了系統(tǒng)升級(jí)和改進(jìn)EDA(ElectronicDesignAutomation:電子設(shè)計(jì)自動(dòng)化)HDL(HardwareDescriptionLanguage:硬件描述語(yǔ)言)3基于CPLD的邏輯電路的設(shè)計(jì)平臺(tái)和流程3.1基于CPLD的邏輯電路的設(shè)計(jì)平臺(tái)計(jì)算機(jī)CPLD開發(fā)專用軟件下載線CPLD芯片目標(biāo)電路板(PCB)1.將CPLD焊在PCB板上

2.接好編程電纜

3.現(xiàn)場(chǎng)燒寫CPLD芯片ALTERA,XILINX,Lattice,計(jì)算機(jī)+軟件下載電纜焊在目標(biāo)板上CPLD3.2設(shè)計(jì)平臺(tái)學(xué)習(xí)要點(diǎn)安裝軟件了解和選擇CPLD芯片掌握開發(fā)流程原理圖輸入法、VHDL輸入法;編譯、綜合;管腳配置;仿真了解JATG接口和下載方法

3.3、基于CPLD的邏輯電路的設(shè)計(jì)流程3.4、器件介紹

XC9572XLHighPerformanceCPLDFeatures?5nspin-to-pinlogicdelays?Systemfrequencyupto178MHz?72macrocellswith1,600usablegates?Availableinsmallfootprintpackages-44-pinPLCC(34userI/Opins)-44-pinVQFP(34userI/Opins)-48-pinCSP(38userI/Opins)-64-pinVQFP(52userI/Opins)-100-pinTQFP(72userI/Opins)Optimizedforhigh-performance3.3Vsystems-Lowpoweroperation-5VtolerantI/Opinsaccept5V,3.3V,and2.5Vsignals-3.3Vor2.5VoutputcapabilityIn-systemprogrammable芯片訂貨:邊界掃描端口:VCC:GND:TCK:TDI:TDO:TMS:連接下載線,用于下載I/O:普通輸入、輸出、雙向端口。全局信號(hào):具有更高的速度,也可作為普通的IOI/O/GSRI/O/GTS2I/O/GCK3I用作信號(hào)輸入:3.3V兼容5VO用作信號(hào)輸出:3.3VVILLow-levelinputvoltage00.80VVIHHigh-levelinputvoltage2.05.5VVOOutputvoltage0VCCIOV

電源信號(hào)主電源:VCCINT3.3V接口電源:VCCIO2.5V/3.3V電源地:GND每個(gè)電源信號(hào)用0.1uF電容退耦,穩(wěn)定電路引腳用法電源引腳全部連接:3.3V或5VGND全部連接電源地邊界掃描信號(hào):全部引出到插頭I/O用到的信號(hào)要在UCF文件中配置信號(hào)I/O配置的原則:方便連線。

開發(fā)軟件WebPACKISEXilinx公司的免費(fèi)PLD開發(fā)軟件支持XC9500,coolrunner,Spartan/II,部分Virtex/E/II器件4VHDL入門知識(shí)要點(diǎn)以語(yǔ)言的形式設(shè)計(jì)硬件(數(shù)字邏輯電路);語(yǔ)言是形式,硬件設(shè)計(jì)是內(nèi)容。實(shí)體設(shè)計(jì)(端口說(shuō)明+結(jié)構(gòu)體)數(shù)據(jù)對(duì)象、數(shù)據(jù)類型及其運(yùn)算符號(hào)(信號(hào)、變量)三種描述方式(數(shù)據(jù)流+結(jié)構(gòu)化+行為描述)電路描述的手段——并行語(yǔ)句和順序語(yǔ)句進(jìn)程語(yǔ)句的概念和運(yùn)行機(jī)理典型電路模塊的設(shè)計(jì)4.1實(shí)體設(shè)計(jì)結(jié)構(gòu)快速入門掌握部分定義輸入輸出管腳信號(hào)定義用到的內(nèi)部信號(hào)和元件描述電路功能的語(yǔ)句主體部分

加法器的例子

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.all;

ENTITYjiafaqiIS

PORT(a:INSTD_LOGIC;--加數(shù)

b:INSTD_LOGIC;--被加數(shù)

ci:INSTD_LOGIC;--相鄰低位來(lái)的進(jìn)位數(shù)

s:OUTSTD_LOGIC;--全加器的和

co:OUTSTD_LOGIC);--向相鄰高位的進(jìn)位數(shù)

ENDjiafaqi;

ARCHITECTUREoneOFjiafaqiIS

BEGIN

s<=aXORbXORci;

co<=(aANDb)or((aXORb)ANDci);

ENDone;一個(gè)RS觸發(fā)器的例子LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;ENTITYffrs

ISPORT(r,s:INSTD_LOGIC;

q,qn:OUTSTD_LOGIC);ENDffrs;ARCHITECTUREbehOFffrsIS

SIGNALrs:STD_LOGIC_VECTOR(1DOWNTO0);

BEGIN

PROCESS(r,s)

BEGINrs<=r&s;

CASErsIS

WHEN"01"=>q<='1';qn<='0';

WHEN"10"=>q<='0';qn<='1';

WHEN"11"=>q<='X';qn<='X';

WHENOTHERS=>null;

ENDCASE;

ENDPROCESS;ENDbeh;4.2數(shù)據(jù)對(duì)象、數(shù)據(jù)類型及其運(yùn)算符號(hào)2)端口模式

端口模式也稱端口方向,用來(lái)定義外部引腳上的數(shù)據(jù)的流動(dòng)方向和方式,即定義外部引腳是輸入還是輸出。表3-1端口模式的功能端口模式端口模式說(shuō)明IN輸入模式,僅允許信號(hào)經(jīng)端口從實(shí)體外部輸入到實(shí)體內(nèi)部。OUT輸出模式,僅允許信號(hào)從實(shí)體內(nèi)部輸出。INOUT輸入/輸出雙向模式,信號(hào)即可以進(jìn)入實(shí)體內(nèi)部,也可以從實(shí)體內(nèi)部輸出。該模式的輸出緩沖器是三態(tài)控制的,輸入輸出分時(shí)使用的。BUFFER緩沖模式,與OUT類似可作為輸出使用,但也可把輸出的信號(hào)作為輸入使用。比如計(jì)數(shù)器和累加器ARCHITECTURErtlofex2is--ai,bi為結(jié)構(gòu)體內(nèi)的連接信號(hào)BEGINai<=a;bi<=b; y<=(aiANDbi); z<=(aiORbi); x<=‘1’ENDrtl;【例3.2.2】結(jié)構(gòu)體說(shuō)明語(yǔ)句的舉例表3-2VHDL中常用的庫(kù)和包庫(kù)名程序包名定義內(nèi)容STDSTANDARD定義BIT、BIT_VECTOR、INTEGER等數(shù)據(jù)類型TEXTIO對(duì)文本文件進(jìn)行讀寫操作的過(guò)程和函數(shù)IEEESTD_LOGIC_1164定義STD_LOGIC、STD_LOGIC_VECTOR數(shù)據(jù)類型ST_LOGIC_SIGNED定義STD_LOGIC、STD_LOGIC_VECTOR數(shù)據(jù)類型的有符號(hào)的算術(shù)運(yùn)算(如"+"、"-"、"*""<"等)STD_LOGIC_UNSIGNED定義STD_LOGIC、STD_LOGIC_VECTOR數(shù)據(jù)類型的無(wú)符號(hào)的算術(shù)運(yùn)算(如"+"、"-"、"*""<"等)STD_LOGIC_ARITH定義了UNSIGNED、SIGNED、SMALL_INT三種數(shù)據(jù)類型,并定義了上述類型及STD_LOGIC的混合算術(shù)運(yùn)算、比較操作函數(shù)、數(shù)據(jù)類型轉(zhuǎn)換函數(shù)。VHDL語(yǔ)言要素 1.常量常量是指在設(shè)計(jì)實(shí)體中不會(huì)發(fā)生變化的值,一旦定義賦值,程序中不能修改。常量定義的語(yǔ)法格式為:CONSTANT常量名:數(shù)據(jù)類型:=表達(dá)式;例如:CONSTANTwidth:POSITIVE:=8;CONSTANTvcc:REAL:=5.0;CONSTANTdelay:TIME:=10ns;2.信號(hào)信號(hào)是電子電路內(nèi)部連接和電路的表述,也是描述電路的最基本方式。信號(hào)通常在構(gòu)造體說(shuō)明語(yǔ)句、程序包首和實(shí)體說(shuō)明語(yǔ)句中定義,不能在進(jìn)程的說(shuō)明語(yǔ)句和子程序(包括函數(shù)和過(guò)程)的說(shuō)明語(yǔ)句中定義。

信號(hào)定義的語(yǔ)法結(jié)構(gòu)為:SIGNAL信號(hào)名:數(shù)據(jù)類型[約束條件][:=表達(dá)式];信號(hào)賦值語(yǔ)句的語(yǔ)法結(jié)構(gòu)為:目標(biāo)信號(hào)名<=表達(dá)式[AFTER時(shí)間表達(dá)式]; 理解要點(diǎn):信號(hào)具有明顯的物理特性,表現(xiàn)在信號(hào)的傳導(dǎo)延遲和濾波性質(zhì)

【例3.3.1】信號(hào)定義語(yǔ)句和賦值語(yǔ)句的舉例ARCHITECTUREm1OFor_1ISSIGNALc,d:BIT;--信號(hào)可以在結(jié)構(gòu)體說(shuō)明語(yǔ)句中定

--義,而變量不行BEGINPROCESS(a,b,d)--其中a,b為輸入端口,端口類型BITBEGIN

…c<=a;--信號(hào)賦值部分

d<=bAFTER20ns;--信號(hào)延時(shí)20ns后再賦值END;3.變量變量常用來(lái)表示臨時(shí)存儲(chǔ)的中間數(shù)據(jù),以便于實(shí)現(xiàn)程序的算法,如門與門間的連線及其連線上的信號(hào)值。

變量定義的語(yǔ)法結(jié)構(gòu)為:VARIABLE變量名[,…

,變量名][約束條件]:數(shù)據(jù)類型[:=表達(dá)式];VARIABLEa:INTEGERRANGE0TO15;變量賦值語(yǔ)句的語(yǔ)法結(jié)構(gòu)為:目標(biāo)變量名:=表達(dá)式;個(gè)人看法:變量是一種基于數(shù)學(xué)模型的電路抽象的表述方式,具有明顯的抽象特性【例3.3.2】變量定義語(yǔ)句和賦值語(yǔ)句的舉例PROCESS()

VARIABLEa:INTEGERRANGE0TO15;

--在PROCESS后定義變量

VARIABLEb,c:INTEGER:=2;--說(shuō)明部分,BEGIN之前

VARIABLEd:STD_LOGIC;BEGIN

…a:=13;--變量賦值部分

b:=a+1;c:=15;d:=’1’;END;表3-3信號(hào)和變量的區(qū)別信號(hào)變量賦值符號(hào)<=:=基本用法用于作為電路中的信號(hào)連接,表示硬件連線和存儲(chǔ)元件用于作為進(jìn)程中臨時(shí)存儲(chǔ)的中間數(shù)據(jù),行為特性信號(hào)賦值有延遲時(shí)間,并且在進(jìn)程結(jié)束時(shí)才對(duì)信號(hào)賦值立即賦值,無(wú)時(shí)間延遲適用范圍在整個(gè)結(jié)構(gòu)體內(nèi)的任何地方都適用只能在順序語(yǔ)句中使用,不能在并行語(yǔ)句中使用對(duì)進(jìn)程影響進(jìn)程對(duì)信號(hào)敏感進(jìn)程對(duì)變量不敏感用途用于程序包、實(shí)體說(shuō)明或結(jié)構(gòu)體中。僅用于進(jìn)程、函數(shù)或過(guò)程中含有的信息可以容納當(dāng)前值,也可以保持歷史值。變量只有當(dāng)前值。數(shù)據(jù)類型1.VHDL的預(yù)定義數(shù)據(jù)類型表3-4預(yù)定義數(shù)據(jù)類型數(shù)據(jù)類型含義整數(shù)(INTEGER)代表32位的正整數(shù)、負(fù)整數(shù)和零,使用時(shí)用RANGE字句限定范圍實(shí)數(shù)(REAL)類似數(shù)學(xué)中的實(shí)數(shù),書寫時(shí)一定要有小數(shù)點(diǎn)位(BIT)用字符‘1’和‘0’來(lái)表示位矢(BIT_VECTOR)雙引號(hào)括起來(lái)的一組位數(shù)據(jù)布爾量(BOOLERN)只有"真"和"假"2個(gè)狀態(tài),可以進(jìn)行關(guān)系運(yùn)算字符(CHARACTER)字符通常用單引號(hào)括起來(lái),對(duì)大小寫敏感字符串(STRING)雙引號(hào)括起來(lái)的一串字符時(shí)間(TIME)時(shí)間類型包括整數(shù)和物理量單位兩部分自然數(shù)、正整數(shù)兩類數(shù)據(jù)是整數(shù)的子類錯(cuò)誤等級(jí)(SEVERITYLEVEL)用來(lái)表征系統(tǒng)的狀態(tài),它共有4種:NOTE、WARNING、ERROR、FAILURE2.其他預(yù)定義的標(biāo)準(zhǔn)數(shù)據(jù)類型標(biāo)準(zhǔn)邏輯位(STD_LOGIC)數(shù)據(jù)類型;標(biāo)準(zhǔn)邏輯矢量(STD_LOGIC_VECTOR);無(wú)符號(hào)數(shù)據(jù)類型(UNSIGNED);有符號(hào)數(shù)據(jù)類型(SIGNED)。

1)標(biāo)準(zhǔn)邏輯位(STD_LOGIC)數(shù)據(jù)類型TYPESTD_LOGICIS('U','X','0','1','Z','W','L','H','-'); 'U'--Uninitialized(未初始化的) 'X'--ForcingUnknown(強(qiáng)未知的) '0'--Forcing0(強(qiáng)0) '1'--Forcing1(強(qiáng)1) 'Z'--HighImpedance(高阻態(tài)) 'W'--WeakUnknown(弱未知的) 'L'--Weak0(弱0) 'H'--Weak1(弱1)'-'--Don'tcare(可忽略的)2)標(biāo)準(zhǔn)邏輯矢量(STD_LOGIC_VECTOR)標(biāo)準(zhǔn)邏輯矢量STD_LOGIC_VECTOR是定義在STD_LOGIC_1164程序包中的標(biāo)準(zhǔn)一維數(shù)組,數(shù)組中每個(gè)元素的數(shù)據(jù)類型都是以上定義的標(biāo)準(zhǔn)邏輯位STD_LOGIC。IEEE庫(kù)程序包STD_LOGIC_1164中STD_LOGIC_VECTOR的定義如下:TYPESTD_LOGIC_VECTORISARRAY(NATURALRANGE<>)OFSTD_LOGIC;注意:在程序中使用STD_LOGIC和STD_LOGIC_VECTOR數(shù)據(jù)類型前,需加入下面的庫(kù)說(shuō)明語(yǔ)句和程序包說(shuō)明語(yǔ)句: LIBRARYIEEE; USEIEEE.STD_LOGIC_1164.ALL;3)無(wú)有符號(hào)數(shù)據(jù)類型UNSIGNED和SIGNED是用來(lái)設(shè)計(jì)可綜合的數(shù)學(xué)運(yùn)算程序的重要數(shù)據(jù)類型,UNSIGNED用于無(wú)符號(hào)數(shù)的運(yùn)算,SIGNED用于有符號(hào)數(shù)的運(yùn)算。在IEEE庫(kù)程序包STD_LOGIC_ARITH中UNSIGNED的定義如下:TYPEUNSIGNEDISARRAY(NATURALRANGE<>)OFSTD_LOGIC;STD_LOGIC_ARITH中SIGNED的定義如下:TYPESIGNEDISARRAY(NATURALRANGE<>)OFSTD_LOGIC; 在程序中使用UNSIGNED和SIGNED數(shù)據(jù)類型前,需加入下面的庫(kù)說(shuō)明語(yǔ)句和程序包說(shuō)明語(yǔ)句: LIBRARYIEEE; USEIEEE.STD_LOGIC_ARITH; 3.用戶自定義數(shù)據(jù)類型用戶自定義數(shù)據(jù)類型的語(yǔ)法結(jié)構(gòu)為:TYPE數(shù)據(jù)類型名IS數(shù)據(jù)類型定義[OF基本數(shù)據(jù)類型];1)枚舉類型枚舉類型定義的語(yǔ)法結(jié)構(gòu)為:TYPE數(shù)據(jù)類型名IS(元素1,元素2,…);在枚舉的數(shù)據(jù)類型的定義中列舉出所有可能的取值,被說(shuō)明為該枚舉類型的變量取值不能超出所定義的范圍,TYPEmealIS(breakfast,lunch,dinner);2)數(shù)組類型數(shù)組類型定義的語(yǔ)法結(jié)構(gòu)為:TYPE數(shù)組類型名ISARRAY約束范圍OF元素類型;例如:TYPEaISARRAY(7DOWNTO0)OFSTD_LOGIC;

這是一個(gè)限定性一維數(shù)組,數(shù)組類型的名稱是a,它有8個(gè)元素,數(shù)組元素的數(shù)據(jù)類型是STD_LOGIC,各元素的排序是a(7)、a(6)、…a(0)。4.數(shù)據(jù)類型的轉(zhuǎn)換有三種常見的方法可以實(shí)現(xiàn)數(shù)據(jù)類型轉(zhuǎn)換:類型標(biāo)記轉(zhuǎn)換法、函數(shù)轉(zhuǎn)換法和常數(shù)轉(zhuǎn)換法。1)用類型標(biāo)記實(shí)現(xiàn)類型轉(zhuǎn)換所謂類型標(biāo)記實(shí)現(xiàn)類型轉(zhuǎn)換,就是將欲轉(zhuǎn)換的目的類型直接標(biāo)出,后面緊跟用括號(hào)括起來(lái)的源數(shù)據(jù)。2)用轉(zhuǎn)換函數(shù)實(shí)現(xiàn)類型轉(zhuǎn)換3)用常數(shù)實(shí)現(xiàn)類型轉(zhuǎn)換基本運(yùn)算符1.邏輯運(yùn)算符2.關(guān)系運(yùn)算符3.算術(shù)運(yùn)算符4.移位運(yùn)算符5.并置運(yùn)算符6.符號(hào)運(yùn)算符屬性屬性是指實(shí)體、結(jié)構(gòu)體、類型及信號(hào)的一些表現(xiàn)特征。1.值類屬性2.信號(hào)類屬性只有兩個(gè)信號(hào)類屬性(EVENT和STABLE)是可以綜合的,其中EVENT最常用,主要用于時(shí)鐘邊沿的描述。下降沿可以簡(jiǎn)寫為:clk`EVENTANDclk=`0`。3.數(shù)據(jù)范圍類屬性4.4VHDL語(yǔ)言的結(jié)構(gòu)體描述方式

4.4.1行為(BEHAVEIOR)描述方式 類似于高級(jí)編程語(yǔ)言,其特點(diǎn)如下: (1)行為描述采用順序語(yǔ)句,通過(guò)語(yǔ)句的組合順序來(lái)表達(dá)電路功能,從形式上類似計(jì)算機(jī)語(yǔ)言; (2)行為描述具有很高的抽象程度,遠(yuǎn)高于數(shù)據(jù)流描述和結(jié)構(gòu)描述; (3)行為描述只需描述清楚輸入與輸出間轉(zhuǎn)換關(guān)系,不需要關(guān)注設(shè)計(jì)功能的門級(jí)實(shí)現(xiàn); (4)其描述能力十分強(qiáng)大,成為VHDL結(jié)構(gòu)體描述最重要的方式; (5)行為描述主要使用函數(shù)、過(guò)程、進(jìn)程語(yǔ)句的形式來(lái)表示的。4.4.1行為(BEHAVEIOR)描述方式行為=行動(dòng)+作為也就是處理事情的步驟或具體過(guò)程。行為描述方式也就是通過(guò)一系列的步驟或具體工作過(guò)程來(lái)設(shè)計(jì)電路。一個(gè)用于控制教室燈開關(guān)電路的行為.....ARCHITECTUREbehOFdff1ISBEGINsignalcnt:integerrange0to300;PROCESS(a,b,cnt)BEGINIF(a‘EVENTANDa=’1‘)THENIF(b=‘0’)THENcnt<=cnt+1;ELSEcnt<=cnt-1;ENDIF;ENDIF;IFcnt<10THENy<=“0001”;ELSIFcnt<20THENy<=“0011”;ELSIFcnt<30THENy<=“0111”;ELSEy<=“1111”;ENDIF;ENDPROCESS;ENDbeh;前后2個(gè)激光器2個(gè)傳感器ab.....ARCHITECTUREbehOFdff1ISBEGINPROCESS(d,cp,r)BEGINIF(r='0')THENq<='0';ELSIF(cp'EVENTANDcp='1')THENq<=d;ENDIF;ENDPROCESS;ENDbeh;【例3.4.1】利用行為描述方式實(shí)現(xiàn)的D觸發(fā)器 4.4.2數(shù)據(jù)流描述方式數(shù)據(jù)流描述方式源于傳統(tǒng)的布爾表達(dá)式設(shè)計(jì)思想,通過(guò)邏輯或算術(shù)等表達(dá)式對(duì)信號(hào)賦值,表示信號(hào)在電路(或寄存器)中的傳遞方向。LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYyima24_2ISPORT(a,b:INSTD_LOGIC;y3,y2,y1,y0:OUTSTD_LOGIC);ENDyima24_2;ARCHITECTURErtlOFyima24_2ISBEGINy3<=NOT(aANDb);y2<=NOT(aAND(NOTb));y1<=NOT((NOTa)ANDb);y0<=NOT((NOTa)AND(NOTb));ENDrtl; 4.4.3結(jié)構(gòu)化描述方式利用元件例化語(yǔ)句,實(shí)現(xiàn)高層次的模塊調(diào)用低層次的模塊,來(lái)構(gòu)成一個(gè)復(fù)雜的電路.可以理解為原理圖方式4.5VHDL典型語(yǔ)句5.1VHDL順序語(yǔ)句5.2VHDL并行語(yǔ)句5.3子程序5.4程序包、配置4.5.1VHDL順序語(yǔ)句順序語(yǔ)句用于進(jìn)程或函數(shù)或過(guò)程中,若干條順序語(yǔ)句整體地描述一個(gè)電路或一種電路的行為模型或一個(gè)數(shù)學(xué)函數(shù)。描述的效果與語(yǔ)句的執(zhí)行順序有關(guān);在結(jié)構(gòu)上類似于C語(yǔ)言。1賦值語(yǔ)句 (1) 信號(hào)代入語(yǔ)句

信號(hào)代入語(yǔ)句的語(yǔ)法結(jié)構(gòu)為:信號(hào)<=inertial

表達(dá)式after時(shí)間表達(dá)式;信號(hào)<=transport表達(dá)式after時(shí)間表達(dá)式;

表達(dá)式中可以出現(xiàn)變量,該語(yǔ)句可根據(jù)不同情況可生成多種不同性質(zhì)的電路模塊。如門電路,加法器等,也可以和其他語(yǔ)句結(jié)合起來(lái)生成其它模塊,是最基本的語(yǔ)句。信號(hào)代入語(yǔ)句解釋1:inertial

可省略不寫;模擬一個(gè)信號(hào)經(jīng)過(guò)容性或抗性電路造成的相位延遲特性,具有濾波性質(zhì)。寬度小于after指定的時(shí)間時(shí),脈沖被濾掉。2:transport模擬一個(gè)信號(hào)經(jīng)過(guò)理想傳輸線或阻性電路延遲特性,不具有濾波性質(zhì)。寬度小于after指定的時(shí)間時(shí),脈沖也不被濾掉。3:after中時(shí)間表達(dá)式省略時(shí)默認(rèn)延遲無(wú)窮??;4:在同一個(gè)進(jìn)程或過(guò)程或函數(shù)中,AFTER子句省略時(shí),所有的信號(hào)賦值都是在程序的最后一條語(yǔ)句實(shí)行完后,一起生效;這一點(diǎn)可理解為有限個(gè)無(wú)窮小的和還是無(wú)窮小。PROCESS(b,c,d)beginc<=b;a<=candd;ENDPROCESS;A,b,c,d分別為1,1,1,1B變?yōu)?后;分析進(jìn)程的執(zhí)行過(guò)程:2次5:延遲子句在綜合時(shí)被忽略,僅用于仿真;6:賦值號(hào)前后的類型應(yīng)一致;2、變量賦值語(yǔ)句變量賦值語(yǔ)句的語(yǔ)法結(jié)構(gòu)為:變量:=表達(dá)式;1:在進(jìn)程中使用;2:具有立即性(沒有延遲特性);3;由于變量具有局部性,值必須通過(guò)信號(hào)輸出到其他模塊;例如4-1【例4.1.2】比較N1、N2進(jìn)程的執(zhí)行結(jié)果N1:Process(c,d)自己理解書中解釋Begina<=2;b<=a+c;a<=d+1;e<=a*2;ENDPROCESS;N2:Process(c,d,)Variableav,bv,evinteger:=0;--變量在這里說(shuō)明Beginav:=2;bv:=av+c;

--變量賦值后,當(dāng)前值立即被新結(jié)果替代av:=d+1;ev:=av*2;a<=av;

b<=bv;e<=ev;EndPROCESS; 3條件控制語(yǔ)句1.IF語(yǔ)句IF語(yǔ)句的語(yǔ)法結(jié)構(gòu)為:IF條件THEN順序語(yǔ)句;…[ELSIF條件THEN順序語(yǔ)句;…ELSIF條件THEN順序語(yǔ)句;…][ELSE順序語(yǔ)句;…]ENDIF;具有優(yōu)先級(jí)的電路3條件控制語(yǔ)句IF條件THEN順序語(yǔ)句;…ENDIF;引入寄存器IF條件THEN

順序語(yǔ)句;ELSE

順序語(yǔ)句;ENDIF;不引入寄存器IF信號(hào)的邊沿屬性THEN

順序語(yǔ)句;ENDIF;形成時(shí)序邏輯電路IF條件THEN

if語(yǔ)句;ELSE順序語(yǔ)句;EndIF;嵌套語(yǔ)句【例4.1.3】IF語(yǔ)句舉例--門閂鎖存器LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYlatchISPORT(d,c:INBIT;y:OUTBIT);ENDlatch;ARCHITECTUREbehOFlatchISBEGINPROCESS(c,d)BEGINIF(c='1')THENy<=d;ENDIF;ENDPROCESS;ENDbeh;--二選一數(shù)據(jù)選擇器LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYmux21ISPORT(a,b,c:INBIT;y:OUTBIT);ENDmux21;ARCHITECTUREbehOFmux21ISBEGINPROCESS(a,b,c)BEGINIF(c='1')THEN

y<=a;else

y<=b;ENDIF;ENDPROCESS;ENDbeh;4.CASE語(yǔ)句語(yǔ)法結(jié)構(gòu)為:CASE表達(dá)式ISWHEN選擇值=>

順序語(yǔ)句;

順序語(yǔ)句;

……WHEN選擇值=>

順序語(yǔ)句;

順序語(yǔ)句;

……

[WHENOTHERS=>順序語(yǔ)句;]ENDCASE;選擇值不能重復(fù);表達(dá)式的所有取值必須全部羅列,否則要用:WHENOTHERS=>順序語(yǔ)句;沒有優(yōu)先級(jí)順序;適合生成編解碼電路,也常用于有限狀態(tài)機(jī)電路描述?!纠?.1.6】實(shí)現(xiàn)7段顯示譯碼器LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;ENTITYyima2ISPORT(a:INSTD_LOGIC_VECTOR(3DOWNTO0);y:OUTSTD_LOGIC_VECTOR(6DOWNTO0));ENDyima2;ARCHITECTUREbehOFyima2ISBEGINPROCESS(a)BEGINCASEaisWHEN"0000"=>y<="1111110";

WHEN"0001"=>y<="0110000";WHEN"0010"=>y<="1101101";WHEN"0011"=>y<="1111001";WHEN"0100"=>y<="0110011";WHEN"0101"=>y<="1011011";WHEN"0110"=>y<="1011111";WHEN"0111"=>y<="1110000";WHEN"1000"=>y<="1111111";WHEN"1001"=>y<="1111011";WHENOTHERS=>y<="0000000";ENDCASE;ENDPROCESS;

ENDbeh;5、循環(huán)語(yǔ)句1).FOR…LOOP語(yǔ)句FOR…LOOP循環(huán)語(yǔ)句主要用于循環(huán)次數(shù)已知的循環(huán)程序設(shè)計(jì),可以使其所包含的順序語(yǔ)句被循環(huán)執(zhí)行FOR…LOOP語(yǔ)句的語(yǔ)法結(jié)構(gòu)為:[循環(huán)標(biāo)號(hào):]FOR循環(huán)變量IN循環(huán)次數(shù)范圍LOOP

順序語(yǔ)句ENDLOOP[循環(huán)標(biāo)號(hào)];循環(huán)變量在使用前不需聲明(1)FOR循環(huán)變量IN初值TO終值LOOP 順序語(yǔ)句;ENDLOOP;(2)FOR循環(huán)變量IN初值DOWNTO終值LOOP 順序語(yǔ)句; ENDLOOP;(3)FOR循環(huán)變量INx’RANGELOOP 順序語(yǔ)句; ENDLOOP;【例4.1.7】用FOR…LOOP語(yǔ)句來(lái)實(shí)現(xiàn)的數(shù)碼中‘1’的個(gè)數(shù)的檢測(cè)器。理解變量的價(jià)值LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYceshi1ISPORT(data:INSTD_LOGIC_VECTOR(7DOWNTO0);--輸入的數(shù)據(jù)y:OUTINTEGERRANGE8DOWNTO0);--輸出的1個(gè)數(shù)ENDceshi1;ARCHITECTUREbehOFceshi1ISBEGINPROCESS(data)

VARIABLEcount:INTEGERRANGE8DOWNTO0;--定義一個(gè)中間變量BEGINcount:=0;--中間變量賦初值FORiINdata'RANGELOOP--循環(huán)變量i在使用前不需聲明IFdata(i)=‘1’THENcount:=count+1;

ENDIF;ENDLOOP;y<=count;ENDPROCESS;

ENDbeh;2).WHILE…LOOP語(yǔ)句WHILE…LOOP語(yǔ)句的語(yǔ)法結(jié)構(gòu)為:[循環(huán)標(biāo)號(hào):]WHILE條件LOOP順序語(yǔ)句;ENDLOOP[循環(huán)標(biāo)號(hào)];

例如:WHILEi<10LOOP

--這里利用了i≥10的條件使程序結(jié)束循環(huán)

sum:=i+sum;--sum初始值為0

i:=i+1;--循環(huán)控制變量i的遞增是通過(guò)算式i:=i+1來(lái)實(shí)現(xiàn)的

ENDLOOP;WHILE…LOOP語(yǔ)句沒有自動(dòng)遞增循環(huán)變量的功能,而是在順序處理語(yǔ)句中增加了一條循環(huán)次數(shù)計(jì)算語(yǔ)句,用于循環(huán)語(yǔ)句的控制。Loop無(wú)限循環(huán)語(yǔ)句,需要其他控制語(yǔ)句exitnext配合LOOP順序語(yǔ)句;ENDLOOP;EXIT語(yǔ)句忽略后面語(yǔ)句,直接退出循環(huán);NEXT語(yǔ)句忽略后面語(yǔ)句,直接進(jìn)入下一次循環(huán)。

可用于上述三種循環(huán)語(yǔ)句中。 6、其他順序語(yǔ)句1).等待語(yǔ)句語(yǔ)法結(jié)構(gòu)為:WAIT[ON敏感信號(hào)表][UNTIL條件表達(dá)式][FOR時(shí)間表達(dá)式];當(dāng)進(jìn)程執(zhí)行到WAIT語(yǔ)句,就被掛起,直到滿足此語(yǔ)句設(shè)置的結(jié)束掛起條件后,將重新開始執(zhí)行進(jìn)程或過(guò)程中的程序。WAIT[ON敏感信號(hào)表][UNTIL條件表達(dá)式][FOR時(shí)間表達(dá)式];其中的條件可以組合,也可以單獨(dú)出現(xiàn)。ON子句

敏感信號(hào)表信號(hào)之間用逗號(hào)分開。這些信號(hào)的值有一個(gè)變化,則ON子句條件成立。

如waitona,b,c,d;UNTIL子句一直等待直到條件成立

條件表達(dá)式類似于C語(yǔ)言中。如:a=‘1’;(aandb)=c;a’eventanda=‘1’;WAITUNTILa’eventanda=‘1’;FOR子句表示等待有限的一段時(shí)間后,繼續(xù)執(zhí)行后續(xù)的語(yǔ)句,而具體時(shí)間由時(shí)間表達(dá)式給出。時(shí)間表達(dá)式中要給出時(shí)間單位。該子句只用于仿真,不能綜合。一般用于在電路仿真中模擬一個(gè)信號(hào)源。Process()begina<=‘1’;waitfor100ns;a<=‘0’;waitfor100ns*2;endprocess;2).空操作語(yǔ)句語(yǔ)法結(jié)構(gòu)為:NULL;

執(zhí)行該語(yǔ)句時(shí)不進(jìn)行任何操作,只是使程序去執(zhí)行下一個(gè)語(yǔ)句,以滿足特定情況下的語(yǔ)法需要。4.5.2VHDL并行語(yǔ)句 在VHDL程序中,每個(gè)并行語(yǔ)句用來(lái)表示一個(gè)功能模塊,各個(gè)功能模塊組織在一起便組成了一個(gè)結(jié)構(gòu)體。結(jié)構(gòu)體中的所有并行語(yǔ)句的執(zhí)行都是同時(shí)行進(jìn)的,與書寫順序沒有關(guān)系。并且認(rèn)為執(zhí)行速度無(wú)窮快。并行語(yǔ)句主要有:進(jìn)程語(yǔ)句、并行信號(hào)賦值語(yǔ)句、塊語(yǔ)句、元件例化語(yǔ)句、生成語(yǔ)句和并行過(guò)程調(diào)用語(yǔ)句。2.進(jìn)程的概念及執(zhí)行機(jī)制進(jìn)程是行為描述的主要手段,通過(guò)進(jìn)程語(yǔ)句可以生成電路模塊,也可以產(chǎn)生用于電路仿真的激勵(lì)信號(hào)。進(jìn)程語(yǔ)句本身是一種并行語(yǔ)句,但它要使用一系列順序語(yǔ)句來(lái)描述電路的行為。 進(jìn)程標(biāo)號(hào):PROCESS(敏感信號(hào)) 進(jìn)程說(shuō)明部分 BEGIN 順序語(yǔ)句1; 順序語(yǔ)句2;

…………

順序語(yǔ)句n; ENDPROCESS進(jìn)程標(biāo)號(hào); 3再講進(jìn)程語(yǔ)句語(yǔ)法結(jié)構(gòu)為:[進(jìn)程標(biāo)號(hào):]PROCESS[(敏感信號(hào)表)][IS][進(jìn)程說(shuō)明部分]BEGIN順序語(yǔ)句;ENDPROCESS[進(jìn)程標(biāo)號(hào)];進(jìn)程語(yǔ)句本身是并行的,它可以生成一個(gè)獨(dú)立的電路模塊功能,或仿真產(chǎn)生一個(gè)電路的信號(hào)。有時(shí)候多個(gè)進(jìn)程共同生成一個(gè)電路模塊。在方法上,它利用順序語(yǔ)句從電路的行為角度描述電路,而不是從電路結(jié)構(gòu)上描述。要從邏輯合理性和物理上的可實(shí)現(xiàn)性去理解進(jìn)程。ENTITYmul21ISPORT(a,b,c,s1,s2:INBIT;x,y:OUTBIT);ENDmul21;ARCHITECTUREoneOFmul21ISBEGINu1:PROCESS(a,b,s1)--輸出為x的二選一數(shù)據(jù)選擇器

BEGIN

IF(s1='0')THENx<=a;

ELSEx<=b;

ENDIF;ENDPROCESSu1;u2:PROCESS(a,c,s2)--輸出為y的二選一數(shù)據(jù)選擇器BEGIN

IF(s2='0')THENy<=a;

ELSEy<=c;ENDIF;ENDPROCESSu2;ENDone;【例4.2.1】?jī)蓚€(gè)二選一數(shù)據(jù)選擇器該進(jìn)程用于模擬一個(gè)信號(hào)源Process()begina<=‘1’;waitfor100ns;a<=‘0’;waitfor100ns*2;endprocess;不可綜合成電路的進(jìn)程,但可從行為上仿真一個(gè)信號(hào)源,用于對(duì)其它電路測(cè)試仿真。不合邏輯的描述Process(a,b)begina<=a+b;endprocess;Process(a,b,clk)beginif(clk’eventandclk=‘1’)thena<=a+b;endif;endprocess;不合實(shí)際正確的描述方式進(jìn)程使用要點(diǎn):1)敏感信號(hào)表同WAITon中敏感量表。敏感信號(hào)的變化認(rèn)為是進(jìn)程啟動(dòng)的條件,敏感信號(hào)表可省略;若敏感信號(hào)省略時(shí),進(jìn)程中應(yīng)插入等待語(yǔ)句,并認(rèn)為進(jìn)程中語(yǔ)句是無(wú)限循環(huán)執(zhí)行的。進(jìn)程中所有的被讀信號(hào),均應(yīng)列入到敏感信號(hào)表中,否則可能造成綜合結(jié)果和仿真結(jié)果的不一致。當(dāng)敏感信號(hào)被賦值時(shí),則可能再次啟動(dòng)進(jìn)程被讀信號(hào):賦值號(hào)右端的信號(hào),各種條件表達(dá)式中的信號(hào)2)一個(gè)進(jìn)程中只允許描述對(duì)應(yīng)于一個(gè)時(shí)鐘信號(hào)的同步時(shí)序邏輯。同步電路也可由結(jié)構(gòu)體中的多個(gè)進(jìn)程描述?!纠?.2.2】多進(jìn)程語(yǔ)句實(shí)現(xiàn)16進(jìn)制加法計(jì)數(shù)器的舉例LIBRARYIEEE;--16進(jìn)制加法計(jì)數(shù)器USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYcounter_16ISPORT(clk:INSTD_LOGIC;q:OUTSTD_LOGIC_VECTOR(3DOWNTO0);co:OUTSTD_LOGIC);ENDcounter_16;ARCHITECTUREbehOFcounter_16ISSIGNALqn:STD_LOGIC_VECTOR(3DOWNTO0);--因?yàn)閝只能輸出,所

--以在結(jié)構(gòu)體建立一個(gè)新的信號(hào)BEGINP1:PROCESS(clk)BEGIN

IF(clk'EVENTANDclk='1')THENIFqn="1111"THENqn<=”0000”;ELSEqn<=qn+1;ENDIF;ENDIF;q<=qn;ENDPROCESSP1;P2:PROCESS(clk)BEGINIF(clk'EVENTANDclk='1')THENIFqn="1111"THENco<='1';ELSEco<='0';ENDIF;ENDIF;ENDPROCESSP2;ENDbeh;3)在同一個(gè)進(jìn)程中,可以多次對(duì)同一個(gè)信號(hào)賦值,但在不同進(jìn)程中,對(duì)同一個(gè)信號(hào)賦值則產(chǎn)生多驅(qū)動(dòng)源電路。在一般情況中應(yīng)避免這種情況,但在描述具有高阻輸入的分時(shí)驅(qū)動(dòng)電路時(shí)會(huì)用這樣的描述方式。決斷函數(shù)是解決這種問(wèn)題的常用方法,但也可以采用IFELSIF語(yǔ)句或CASE語(yǔ)句替代。。4)變量也是在進(jìn)程中常用的數(shù)據(jù)對(duì)象,變量的說(shuō)明應(yīng)在所用的進(jìn)程中說(shuō)明,所以變量作用范圍是局部的。變量的值如果在其他進(jìn)程中使用時(shí),則需要通過(guò)信號(hào)輸出。4.并行信號(hào)賦值語(yǔ)句 1.簡(jiǎn)單信號(hào)賦值語(yǔ)句可認(rèn)為是進(jìn)程的簡(jiǎn)寫LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYand_gateISPORT(a,b:INSTD_LOGIC;y:OUTSTD_LOGIC);ENGand_gate;ARCHITECTURErtlOFand_gateISBEGINP1:PROCESS(a,b)BEGINy<=aANDb;ENDPROCESSP1;ENDrtl;LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYand_ga

溫馨提示

  • 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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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)論