基于CPLD的邏輯電路_第1頁
基于CPLD的邏輯電路_第2頁
基于CPLD的邏輯電路_第3頁
基于CPLD的邏輯電路_第4頁
基于CPLD的邏輯電路_第5頁
已閱讀5頁,還剩64頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

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

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

2.接好編程電纜

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

3.3、基于CPLD的邏輯電路的設計流程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:普通輸入、輸出、雙向端口。全局信號:具有更高的速度,也可作為普通的IOI/O/GSRI/O/GTS2I/O/GCK3I用作信號輸入:3.3V兼容5VO用作信號輸出:3.3VVILLow-levelinputvoltage00.80VVIHHigh-levelinputvoltage2.05.5VVOOutputvoltage0VCCIOV

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

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

加法器的例子

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.all;

ENTITYjiafaqiIS

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

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

ci:INSTD_LOGIC;--相鄰低位來的進位數(shù)

s:OUTSTD_LOGIC;--全加器的和

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

ENDjiafaqi;

ARCHITECTUREoneOFjiafaqiIS

BEGIN

s<=aXORbXORci;

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

ENDone;一個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ù)對象、數(shù)據(jù)類型及其運算符號2)端口模式

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

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

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

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

…c<=a;--信號賦值部分

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

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

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

VARIABLEa:INTEGERRANGE0TO15;

--在PROCESS后定義變量

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

VARIABLEd:STD_LOGIC;BEGIN

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

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

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

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

4.4.1行為(BEHAVEIOR)描述方式 類似于高級編程語言,其特點如下: (1)行為描述采用順序語句,通過語句的組合順序來表達電路功能,從形式上類似計算機語言; (2)行為描述具有很高的抽象程度,遠高于數(shù)據(jù)流描述和結(jié)構(gòu)描述; (3)行為描述只需描述清楚輸入與輸出間轉(zhuǎn)換關系,不需要關注設計功能的門級實現(xiàn); (4)其描述能力十分強大,成為VHDL結(jié)構(gòu)體描述最重要的方式; (5)行為描述主要使用函數(shù)、過程、進程語句的形式來表示的。4.4.1行為(BEHAVEIOR)描述方式行為=行動+作為也就是處理事情的步驟或具體過程。行為描述方式也就是通過一系列的步驟或具體工作過程來設計電路。一個用于控制教室燈開關電路的行為.....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個激光器2個傳感器ab.....ARCHITECTUREbehOFdff1ISBEGINPROCESS(d,cp,r)BEGINIF(r='0')THENq<='0';ELSIF(cp'EVENTANDcp='1')THENq<=d;ENDIF;ENDPROCESS;ENDbeh;【例3.4.1】利用行為描述方式實現(xiàn)的D觸發(fā)器 4.4.2數(shù)據(jù)流描述方式數(shù)據(jù)流描述方式源于傳統(tǒng)的布爾表達式設計思想,通過邏輯或算術等表達式對信號賦值,表示信號在電路(或寄存器)中的傳遞方向。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)化描述方式利用元件例化語句,實現(xiàn)高層次的模塊調(diào)用低層次的模塊,來構(gòu)成一個復雜的電路.可以理解為原理圖方式4.5VHDL典型語句5.1VHDL順序語句5.2VHDL并行語句5.3子程序5.4程序包、配置4.5.1VHDL順序語句順序語句用于進程或函數(shù)或過程中,若干條順序語句整體地描述一個電路或一種電路的行為模型或一個數(shù)學函數(shù)。描述的效果與語句的執(zhí)行順序有關;在結(jié)構(gòu)上類似于C語言。1賦值語句 (1) 信號代入語句

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

表達式after時間表達式;信號<=transport表達式after時間表達式;

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

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

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

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

順序語句;ELSE

順序語句;ENDIF;不引入寄存器IF信號的邊沿屬性THEN

順序語句;ENDIF;形成時序邏輯電路IF條件THEN

if語句;ELSE順序語句;EndIF;嵌套語句【例4.1.3】IF語句舉例--門閂鎖存器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語句語法結(jié)構(gòu)為:CASE表達式ISWHEN選擇值=>

順序語句;

順序語句;

……WHEN選擇值=>

順序語句;

順序語句;

……

[WHENOTHERS=>順序語句;]ENDCASE;選擇值不能重復;表達式的所有取值必須全部羅列,否則要用:WHENOTHERS=>順序語句;沒有優(yōu)先級順序;適合生成編解碼電路,也常用于有限狀態(tài)機電路描述?!纠?.1.6】實現(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)語句1).FOR…LOOP語句FOR…LOOP循環(huán)語句主要用于循環(huán)次數(shù)已知的循環(huán)程序設計,可以使其所包含的順序語句被循環(huán)執(zhí)行FOR…LOOP語句的語法結(jié)構(gòu)為:[循環(huán)標號:]FOR循環(huán)變量IN循環(huán)次數(shù)范圍LOOP

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

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

ENDIF;ENDLOOP;y<=count;ENDPROCESS;

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

例如:WHILEi<10LOOP

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

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

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

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

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

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

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

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

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

…………

順序語句n; ENDPROCESS進程標號; 3再講進程語句語法結(jié)構(gòu)為:[進程標號:]PROCESS[(敏感信號表)][IS][進程說明部分]BEGIN順序語句;ENDPROCESS[進程標號];進程語句本身是并行的,它可以生成一個獨立的電路模塊功能,或仿真產(chǎn)生一個電路的信號。有時候多個進程共同生成一個電路模塊。在方法上,它利用順序語句從電路的行為角度描述電路,而不是從電路結(jié)構(gòu)上描述。要從邏輯合理性和物理上的可實現(xià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】兩個二選一數(shù)據(jù)選擇器該進程用于模擬一個信號源Process()begina<=‘1’;waitfor100ns;a<=‘0’;waitfor100ns*2;endprocess;不可綜合成電路的進程,但可從行為上仿真一個信號源,用于對其它電路測試仿真。不合邏輯的描述Process(a,b)begina<=a+b;endprocess;Process(a,b,clk)beginif(clk’eventandclk=‘1’)thena<=a+b;endif;endprocess;不合實際正確的描述方式進程使用要點:1)敏感信號表同WAITon中敏感量表。敏感信號的變化認為是進程啟動的條件,敏感信號表可省略;若敏感信號省略時,進程中應插入等待語句,并認為進程中語句是無限循環(huán)執(zhí)行的。進程中所有的被讀信號,均應列入到敏感信號表中,否則可能造成綜合結(jié)果和仿真結(jié)果的不一致。當敏感信號被賦值時,則可能再次啟動進程被讀信號:賦值號右端的信號,各種條件表達式中的信號2)一個進程中只允許描述對應于一個時鐘信號的同步時序邏輯。同步電路也可由結(jié)構(gòu)體中的多個進程描述?!纠?.2.2】多進程語句實現(xiàn)16進制加法計數(shù)器的舉例LIBRARYIEEE;--16進制加法計數(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);--因為q只能輸出,所

--以在結(jié)構(gòu)體建立一個新的信號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)在同一個進程中,可以多次對同一個信號賦值,但在不同進程中,對同一個信號賦值則產(chǎn)生多驅(qū)動源電路。在一般情況中應避免這種情況,但在描述具有高阻輸入的分時驅(qū)動電路時會用這樣的描述方式。決斷函數(shù)是解決這種問題的常用方法,但也可以采用IFELSIF語句或CASE語句替代。。4)變量也是在進程中常用的數(shù)據(jù)對象,變量的說明應在所用的進程中說明,所以變量作用范圍是局部的。變量的值如果在其他進程中使用時,則需要通過信號輸出。4.并行信號賦值語句 1.簡單信號賦值語句可認為是進程的簡寫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. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論