第一篇:EDA復習總結
一.名詞解釋
EDA
電子自動化設計
electronic design automation FPGA
現(xiàn)場可編程門陣列
field programmable gate array CPLD
復雜可編程邏輯器件 complex programmable logic device ASIC
特定用途集成電路
application specific integrated circuit IP
知識產權
intellectual property SOC
片上系統(tǒng)
system on a chip FSM
有限狀態(tài)機
finite state machine MPW
多用途晶圓
multi project wafer
DSP
數(shù)字信號處理器
digital signal processor MCU
微程序控制器
micro control unit HDL
硬件表述語言
hardware description language VHDL 超高速集成電路硬件描述語言
very high speed integrated circuit hardware description language
二.簡答題
1.top-down方法:從系統(tǒng)硬件的高層次抽象描述向低層次物理描述的一系列轉化過程。從頂向下設計由功能級,行為級描述開始;寄存器傳輸(RTL)級描述為第一個中間結果,再將RTL級描述由邏輯綜合網表或電路圖;利用EDA工具將網表自動轉換換成目標文件下載到現(xiàn)場可編程門陣列|復雜可編程邏輯器件或通過自動布局布線設計成專用集成電路,從而得到電路與系統(tǒng)的物理實現(xiàn)。
2.邏輯綜合主要通過綜合工具,依據(jù)設計人員設定的時序,面積等約束條件,將與工藝無關的RTL級的電路邏輯描述程序,轉化為與工藝相關的電路,是將程序設計轉化為硬件實現(xiàn)的重要環(huán)節(jié)。
3.簡述可編程器件與ASIC在設計應用成本等方面的優(yōu)缺點
面向可編程邏輯器件的設計其設計投入資金小,風險小,開發(fā)周期短,調試靈活,易學易用,而ASIC設計的設計資金投入大,流片費用都很昂貴,研發(fā)投片制作其有一定的失敗風險,且其開發(fā)周期較長,調試改動設計都比較困難,不過,產品進入大批量生產后,ASIC成品的成本往往低于可編程器件成本。
4.top-down過程分為:行為級描述,寄存器傳輸(RTL)級描述,邏輯綜合,物理實現(xiàn)。
5.VHDL描述方式:行為級描述,RTL級描述方式,結構級描述方式。
6.仿真過程:行為級仿真,RTL仿真,門級仿真,后仿真。
7.Top-down設計方法特點:
1)在系統(tǒng)設計早期就能發(fā)現(xiàn)設計中存在的問題,并盡可能在早期設計階段就能解決問題。
2)自動化
8.top-down優(yōu)勢
1)在系統(tǒng)設計早期發(fā)現(xiàn)設計中存在的問題,提高設計的一次成功率。
2)大大縮短了系統(tǒng)設計的周期,減少系統(tǒng)開發(fā)所耗用的時間。
3)易于系統(tǒng)劃分和項目管理,使幾十萬乃至幾百萬的大規(guī)模復雜數(shù)字電路的設計成為可能。
4)設計效率提高,可減少設計人員。
5)通過設計共享,避免重復設計。
9.HDL:指電子技術高層設計階段中所采用的硬件描述語言。
特點:
1、HDL以行為級描述見長,它能從比較抽象的角度描述電子實體的行為,能夠進行早期仿真。
2、HDL能夠進行結構化描述,它能從具體的角度描述電子實體結構,便于存檔,便于共享。
3、HDL具備了從比較抽象到比較具體的多個層面上進行混合描述能力,降低了硬件電路設計難度。
4、既能被仿真又能被綜合。
10.VHDL特點:
1)通用型好,適用面廣
2)重用性好
3)可靠性好
4)以行為級描述見長。
11.IP分為軟核,硬核,固核
軟核:第二階段,寄存器級設計結果,且經過RTL級仿真驗證。通常以HDL語言形式提交。
固核:第四階段,經過FPGA實物驗證的設計結果。通常以門級網表的形式提交。
硬核:第四階段,經過ASIC工藝驗證的設計結果。通常以版圖的形式提交。
三者的價值:
從FPGA角度看固核最有價值
從ASIC角度看硬核最有價值
軟核則由于它與工藝和器件均無關,具有高度靈活性,從而具有獨特價值。
固核硬化:將固核轉化為硬核。
硬核軟化:因為硬核必須用過交換或出售才能實現(xiàn)價值最大化。而在硬核交換過程中,為了保護硬核知識產權,IP提供者往往將硬核以黑匣子形式提供給用戶,同時能將硬化軟化,即采用硬件描述語言對硬核的功能進行行為級描述,通過使用該行為級描述,在保護匣子具體內容的同時,仍可進行IP仿真。
12.FPGA/CPLD在EDA中具有重要作用
1)VHDL程序用過FPGA/CPLD可以得到EDA設計的最終產品,在產品數(shù)據(jù)較小時快速占領市場。
2)VHDL程序通過FPGA/CPLD驗證可以形成固核具有一定商品價值。
3)VHDL程序的FPGA/CPLD驗證試驗是一種ASIC設計的硬件仿真工具。
13.并行語句和順序語句在使用上有哪些差異:
1)并發(fā)語句只能夠出現(xiàn)在并發(fā)語句結構中,如結構體,BLOCK等,并發(fā)語句的執(zhí)行與其在程序中的書寫順序無關;
2)順序語句只能夠出現(xiàn)在順序語句結構中,如PROCESS,過程,函數(shù)等結構中,其執(zhí)行與書寫順序相關,寫在前面的語句先執(zhí)行,寫在后面的依據(jù)后執(zhí)行。14.數(shù)據(jù)類型是用標示符表征某個或某個數(shù)值的集合,數(shù)據(jù)類型按照定義可分為標準預定義數(shù)據(jù)類型和用戶自定義數(shù)據(jù)類型,還有用戶自定義數(shù)據(jù)類型。在VHDL中若某個對象被聲明為某種類型,其值必須在該數(shù)據(jù)類型所限定的取值范圍之中,且只有相同的數(shù)據(jù)類型才能做賦值或運算,不同數(shù)據(jù)類型的數(shù)據(jù)必須通過類型轉換一致后,才能運算。故說VHDL語言是強數(shù)據(jù)類型的描述語言。
15.描述行為語言:信號賦值語言,進程語句,子程序,塊語句,斷言語句。
描述結構語句:元件語句(COMPONENT),生成語句(GENERATE),參數(shù)說明語句(GENERIC)
16.并行信號賦值語句:一般信號賦值,條件信號賦值,選擇信號賦值。
17.什么是EDA?
EDA技術是一種以計算機為基本工作平臺,利用計算機圖形學,拓撲邏輯學,計算數(shù)學以及人工智能學等多種計算機應用學科的最新成果而開發(fā)出來的一整套軟件工具,是一種幫助電子設計工程師從事電子元件產品和系統(tǒng)設計的綜合設計,電子設計自動化技術,方法一般采用自頂向下的設計方法,也叫正向設計,它是針對傳統(tǒng)的自底向上的設計方法而提出的。
18.什么是IP核?學習VHDL與掌握IP核技術的關系四什么?
IP核是具有知識產權的集成電路芯核的簡稱,其作用是把一組擁有知識產權的電路設計集合在一起,構成芯片的基本單位,以供設計時“搭積木”之用。
19.信號賦值語句在進程做并行語句,并發(fā)執(zhí)行,與語句所處位置無關。
信號賦值語句在進程內或子程序內做順序語句,按順序執(zhí)行,與語句所處位置無關。
信號賦值語句符號為“<=” 變量賦值符號位”:=”
用于信號賦值動作,不立即生效
用于變量賦值動作,會立即生效
20.Active—HDL軟件工具對VHDL程序進行仿真方法有哪些? 利用Active—HDL軟件工具對VHDL程序進行仿真時,常用的三種仿真方法:
1)用圖形化界面加激勵(或手動測試加激勵)方法簡單,常用于初學者或簡單的小程序仿真。
2)編寫測試平臺文件(或編寫testbench)的仿真方法可以方便地使用VHDL編寫做激勵文件。常用于工程設計實踐,尤其適用于需要反復多次仿真或測試激勵的跨平臺移植。
3)編寫宏文件的仿真方法用命令行,批處理文件方式編寫激勵,常用于需要多次仿真時,一次性編寫激勵,多次仿真時反復使用。
21.進程的“敏感信號”,也稱敏感表,是進程的激活條件,可由一個信號或多個信號組成之間用“,”隔開。
當敏感信號表中的任意一個信號有事件發(fā)生,即發(fā)生任意變化,此時,進程被激活,進程中的語句將從上到下逐句執(zhí)行一遍,當最后一條語句執(zhí)行完畢后,進程即進入等待掛起狀態(tài),直到下一次敏感表中的信號有時間發(fā)生,進程再次被激活,如此循環(huán)往復。
22.VHDL程序的組成部分包括哪些?
實體:描述設計單元的外圍接口信號和內部參數(shù)。
構造體:描述設計單元的內部結構和邏輯行為。
配置:為設計單元從多個構造體中選擇合適的構造體或從庫中選取合適的元件以便于進行設計單元的仿真或綜合。
程序包:存放各設計模塊都能共享的數(shù)據(jù)類型,常熟和子程序。
庫:存放已經編譯了的元件和程序包,以便在設計單元中使用,庫可由系統(tǒng)工程師的自信設計或由ASIC芯片制造商提供。
23.端口方向有哪幾種? 端口:
In:輸入端口,在設計單元內部只可讀,在設計單元內不可對其賦值。
Out:輸出端口,在設計單元內部只可寫,不可反饋至設計單元內部作邏輯電路的輸入型號。
Inout:輸入通道和輸出通道共享引腳的雙向端口,在設計單元內部分時可讀可寫,需要控制信號控制何時讀,何時寫,輸入和輸出通道不能同時有效。
Buffer:緩沖輸出端口,可反饋至設計單元內部作為邏輯電路的輸入信號,故可在設計單元內部可讀可寫。
Linkage:鏈接端口,無指定方向,可以與任意方向信號鏈接。
24.VHDL有哪幾種描述方式?分別用于什么場合?
邏輯綜合:在top-down流程中,EDA軟件可以將源程序自動轉換為描述底層邏輯門互聯(lián)關系的門級網表,從而與最終的可編程器件或ASIC硬件實現(xiàn)相對應。
行為級描述方式是抽象程度最高的電路建模方式,源程序主要描述電路的輸出端口隨輸入變化而變化規(guī)律,程序描述貼近人類高級語言,不可被綜合。
寄存器級通過描述數(shù)據(jù)從輸入到輸出的運算處理按時了電路結構綜合。結構描述方式是層次化設計思想的體現(xiàn),是描述電路硬件連接的建模方式,源程序可否被綜合,依賴被調用元件可綜合否。
25.什么是數(shù)據(jù)對象?常用的數(shù)據(jù)對象有哪些幾種? 常用數(shù)據(jù)對象:信號,變量,常量
在VHDL程序中凡是可以被賦值的對象稱為數(shù)據(jù)對象。
26.信號延時有哪幾種?它們有何異同? 信號延時:
傳播延時:直接模擬導線上信號的延時。任何信號傳入導線的一段,經過一段延時信號必須從導線另一段輸出。
慣性延時:模擬某類元件的延時特征,信號傳入軟件后,在指定時間內輸入信號必須保持不變,元件的輸出端才會有響應。
27.什么是數(shù)據(jù)類型?它可以分為哪幾大種?每一種類型中包括哪些具體類型? 數(shù)據(jù)類型:標準數(shù)據(jù)類型,用戶自定義數(shù)據(jù)類型,用戶自定義子類型。
標準數(shù)據(jù)類是在VHDL預定義庫中定義的數(shù)據(jù)類型,在使用時不需要作參考庫和程序包申明。
位、矢量位、整數(shù)、自然數(shù)。正整數(shù)、實數(shù)、布爾量、字符、字符串、時間、錯誤等級。用戶自定義數(shù)據(jù)類型: 在VHDL中用戶還可以自己定義所需數(shù)據(jù)類型。語法格式:Type <數(shù)據(jù)類型> Is 數(shù)據(jù)類型定義;
枚舉類型、數(shù)組類型、存取類型、文件類型、記錄類型、時間類型。用戶自定義子類型:
用戶自定義的子類型,是對已定義數(shù)據(jù)類型取值范圍加以限制得到的子集。語法格式:SUBTYPE <子類型名> IS 原數(shù)據(jù)類型名 [范圍]
28.VHDL中操作符主要有哪幾類?它們都分為哪些主要元素?
邏輯運算符: not(非)and(與)or(或)nand(或與)
nor(或非)xor(異或)算數(shù)運算符:+ *能夠真正被綜合,MOD REM 分母的操作數(shù)為2乘方的書,邏輯電路綜合是可能的。
29.什么是層次化?
層次化設計基于電子系統(tǒng)的結構化建模方式,對系統(tǒng)的功能和結構進行描述,層次化設計獎系統(tǒng)逐級劃分,將較獨立的功能或邏輯電路單獨建模,與參考庫中的底層元件一起調用。作為可調用元件,在確保正確的情況下,調入高層次的設計中作為實例使用,在系統(tǒng)設計中,采用層次化設計方法,可以有效地簡化設計難度,明確系統(tǒng)架構,促進團隊合作和共享。
30.什么是組合邏輯?其VHDL程序設計有何特點?
組合邏輯就是指數(shù)字電路在任何時刻僅僅取決于該時刻數(shù)字電路的輸入,與歷史輸入無關。
用VHDL描述組合邏輯電路,使用并行語句或使用進程。
31.什么是時序邏輯?其VHDL程序設計與組合邏輯的有何不同?
時序邏輯電路指數(shù)字電路在任何時刻的輸出不僅取決于該時刻數(shù)字電路輸入,而且取決于電路原來狀態(tài),或者說還與歷史輸入有關。
用VHDL描述時序電路:必須使用到進程。
32.常用EDA工具:Active-HDL,FPGA-Express,ISE,Cadence,Verilog-XL,NC-verilog,Maxplus-II.33.‘U’初始狀態(tài)
‘X’不定態(tài)
‘0’強0態(tài)
‘1’強1態(tài)
‘Z’高阻態(tài)
‘L’弱0態(tài) ‘H’弱1態(tài)
‘W’ 弱補丁太 ‘-’無關態(tài)
34.mealy:輸出由狀態(tài)機的輸入和狀態(tài)機的狀態(tài)共同決定。
Moore:輸出僅與狀態(tài)機的狀態(tài)有關,與狀態(tài)機的輸入無關。
第二篇:EDA第五章復習總結
2.結構體(architecture)部分
67頁
IN(輸入)、OUT(輸出)是表示信號的類別;
BIT是表示信號的類型,BIT是系統(tǒng)定義的類型,即二進位類型,信號只有‘0’和‘1’兩種值;
每個VHDL語句都是以“;”結束,包括最后一個語句也不例外;
VHDL中的“注釋”是以兩個減號“--”開始的。
二、實體描述
ENTITY 實體名 IS PORT(信號名: 類別信號類型;??? 信號名: 類別信號類型);END 實體名;同樣類別和類型的信號可以用逗號分隔,在一個語句行中說明。
信號的類別主要有以下4種:
IN:此信號是輸入信號;
OUT:此信號是輸出信號,提供給其他的實體;
:緩沖信號,也是實體的輸出信號,但是可以被實體本身的結構體讀入;
INOUT:雙向信號,既可以輸入,也可以輸出。
系統(tǒng)預定義的信號類型有:
BIT:二進位型,信號的值只能是‘0’或‘1’。
BIT_VECTOR:二進位向量,實際對應的是二進位數(shù)組 ;
BOOLEAN:布爾型,取值只能是true或者false ;
INTEGER:整型,一般都用32位二進制數(shù)表示整型數(shù) ;
CHARACTER:字符型,使用8位編碼的ASCII字符。
三、結構體描述
ARCHITECTURE 結構體名 OF 實體名 IS <聲明部分> BEGIN <描述部分> END 結構體名;對于一個實體來說,可以有幾種不同的結構體描述。
5.3 VHDL程序的元素
一、關鍵字
85頁
二、標識符的命名
85頁
三、數(shù)據(jù)類型
91頁 預定義:
◆整數(shù)Integer:-(2的31次方-1)—2的31次方-1 ◆實數(shù)Real:-1.0E+38--+1.0E+38 ◆位Bit:’0’或’1’ ◆位矢量Bit_Vector:”001100” ◆布爾量Boolean:真或假 ◆字符Character:’A’,’C’
◆物理Time:預定義為時間,其他如電壓、電流等也為物理型 ◆錯誤等級:NOTE、WARNING、ERROR、FAILURE ◆自然數(shù)(Natural)、正整數(shù)(Positive)◆字符串(String),如”morning”
用戶自定義類型:
96頁
◆枚舉型 可以通過枚舉類型來定義信號的取值。除了最常用的二值邏輯(已經預定義為BIT型),還可以有三值邏輯(信號有三種取值:‘0’、‘1’和‘z’),九值邏輯等
TYPE枚舉類型名 IS(枚舉型值表);如
TYPE qit_logic IS('0','1','Z','X')
◆STD_ULOGIC 在IEEE1164標準邏輯包中所定義的std_ulogic類型是一種九值邏輯,也是一種枚舉型的數(shù)據(jù)類型:
TYPE std_ulogic IS('U',--Uninitialized 'X',--Forcing Unknown
'0',--Forcing 0 '1',--Forcing 1 'Z',--High Impedance 'W',--Weak Unknown 'L',--Weak 0 'H',--Weak 1 '-' ,--Don't Care);◆數(shù)組類型
TYPE 數(shù)組名 IS ARRAY(范圍)OF 基類型
1,其中的“基類型”是已經定義過的類型,甚至可以是已經定義過的數(shù)組類型。
2,定義中的“范圍”,既表示數(shù)組的大小,也說明用什么方式表示數(shù)組元素的下標。通常,“范圍”是用整數(shù)表示,也可以用枚舉值表示
3,“范圍”用整數(shù)表示時,整數(shù)范圍可以是遞增表示,也可以是遞減表示: TYPE register IS ARRAY(0 TO 7)OF BIT;
TYPE regist_1 IS ARRAY(7 DOWNTO 1)OF BIT;TYPE rom IS ARRAY(0 TO 7)OF register;
類型實際上是用register基類型定義的二維數(shù)組,即 TYPE rom IS ARRAY(0 TO 7, 0 TO 7)OF BIT;
數(shù)組的范圍還可以用已經定義過的枚舉型來表示,如: TYPE light_delay IS ARRAY(traffic_light)OF INTEGER;這里的traffic-light是已經定義的枚舉類型,有三個取值(“red、yellow、green”)。將來定義的類型為light-delay的數(shù)組,也只會有三個元素。
在VHDL中,可以對數(shù)組的整體賦值:如定義了regist_1類型的數(shù)組信號: TYPE regist_1 IS ARRAY(7 DOWNTO 0)OF BIT;SIGNAL arr_1, arr_2 : regist_1;
以下的賦值操作在VHDL中都是允許的: arr_1 <= “10110110”;arr_2 <=arr_1;◆子類型
97頁 希望對某種類型數(shù)據(jù)的范圍加以限制
四、對象
把信號、變量、常量和文件統(tǒng)稱為對象。
89頁
1.常量的定義
CONSTANT常量名: 類型名 := 常量值;例如:
CONSTANT array_size : INTEGER := 16;CONSTANT gate_delay : TIME := 50ns;
2.變量的定義
變量的定義采用如下的方式:
VARIABLE 變量名: 類型名[:=初值];變量的賦值用“:=”來表示。變量的賦值沒有延遲。
3.信號的定義
信號定義的方式:
SIGNAL 信號名: 類型名[:=初值];
信號的賦值用“<=”表示,有延遲,初始化不同于賦值
信號的傳送可以規(guī)定延遲,也可以不規(guī)定延遲。但是VHDL規(guī)定,如果沒有指定信號傳送的延遲,信號的傳送也會有一個最小延遲Δ。
信號可以是全局定義的,PORT中定義的信號就是對所有的結構體都有效。但是,信號也可以是局部定義的,在結構體內部定義的信號只對這個結構體有效。
五、詞法單元
87頁
1.注釋
◆以雙連符(--)開始直到行末 2.VHDL中的數(shù)字
◆八進制:以O開頭,如O”340”
◆二進制:以B開頭,如B”11100000” ◆十六進制:以X開頭,如X”E0”
字符
◆文字字符表示形式為:單引號括起來的ASCII字符,如’A’,’*’
字符串
文字字符串表示形式為:雙引號括起來的圖形字符序列。如”how are you”,” ”等 5.位串
◆位串表示形式為:雙引號括起來的擴展的數(shù)字序列,數(shù)字序列前冠以基數(shù)說明符。如:--長度為八的二進制數(shù),等效245 6.VHDL語句中使用的標點符號 分號(;)是一條語句結束的標志 逗號(,)是對象的分隔符 冒號(:)和原點(.)的用法在每條語句中給出
六、表達式與運算符
102頁具體的運算符
和其他程序設計語言中的表達式很相似,一個表達式是由運算符把對象名、文字、函數(shù)調用及括起來的表達式連接起來的式子。
在一個VHDL表達式中,數(shù)據(jù)的類型應該相同。如果不同的數(shù)據(jù)類型出現(xiàn)在同一個表達式,VHDL不會進行自動類型的轉換,而只會給出錯誤信息。
支持運算符的重載。例如可以對不同類型的信號各自進行AND運算。
七、VHDL的庫和包
1.VHDL庫的種類和使用
VHDL的庫可以分為三種類型:系統(tǒng)庫,IEEE庫、用戶庫。
系統(tǒng)庫是VHDL語言本身預定義的庫,包括STD庫和WORK庫。STD庫是系統(tǒng)的標準庫,所有系統(tǒng)本身預定義的類型和有關的操作都包含在這個庫中。WORK庫是用戶的工作庫。對用戶都是透明的,也就是隨時都可以使用的,不需要在描述中專門說明。
IEEE庫是IEEE認可的標準庫,其中包括對于STD_LOGIC類型以及有關函數(shù)的定義。
用戶庫就是VHDL軟件提供廠商開發(fā)的庫,應該查詢相應軟件的說明。
2.程序包
一個VHDL庫可以包含許多內容,并且往往以程序包(Package)的形式組織在一起。
一個程序包由兩個部分構成:包的說明部分(Package Declaration)和包的主體部分(Package Body)?;镜慕Y構如下:
PACKAGE 程序包名IS 程序包說明部分 END 程序包名;
PACKAGE BODY 程序包名 IS 程序包主體描述 END 程序包名;說明部分可以包括:
常量說明;
信號說明,這里說明的信號可以被所有的結構體使用;
類型說明;
函數(shù)或過程說明;
部件(Component)說明,程序包的主體部分則是對所包含的函數(shù)、過程、結構體進行具體的描述。
程序包示例
PACKAGE qit_utilities IS TYPE qit IS('0’, ‘1’, ‘Z’, ‘X’);
FUNCTION “AND”(a, b :qit)RETURN qit;
只是聲明,有這個函數(shù) FUNCTION “OR”(a, b :qit)RETURN qit;END qit_utilities;
PACKAGE BODY qit_utilities IS FUNCTION “AND”(a, b :qit)RETURN qit IS
對函數(shù)的具體過程描述 CONSTANT qit_and_table : qit_2d :=(('0', '0', '0', '0'),('0', '1', '1', 'X'),('0', '1', '1', 'X'),('0', 'X', 'X', 'X'));BEGIN RETURN qit_and_table(a, b);END “AND”;FUNCTION “OR”(a, b :qit)RETURN qit IS
函數(shù)的定義方法71頁例3-3比較 CONSTANT qit_or_table : qit_2d :=(('0', '1', '1', 'X'),('1', '1', '1', '1'),('1', '1', '1', '1'),('X', '1', '1', 'X'));BEGIN RETURN qit_or_table(a, b);END “OR”;END qit_utilities;以上的程序包中定義了一種4值邏輯及其操作。在說明部分定義了一種新的信號類型qit,也就是一種4值邏輯,還說明了兩個函數(shù)AND和OR,用來對4值邏輯進行“與”“或”運算。在BODY部分實現(xiàn)了這兩個函數(shù)。
3.庫和程序包的引用
77頁
在所有的VHDL源程序都要首先聲明使用什么VHDL庫。聲明要使用關鍵字LIBRARY,例如,要使用IEEE庫,使用這個庫中的哪個程序包就應該作以下的聲明:
LIBRARY IEEE;
USE 庫名.程序包名.ALL;
包中所有內容可用 USE 庫名.程序包名.子程序名;
包中選中內容可用
4.函數(shù)和過程
前一頁程序包的例子
中既可以使用函數(shù),也可以使用過程(Procedure)。兩者統(tǒng)稱為子程序。函數(shù)的定義包括函數(shù)說明和函數(shù)主體兩部分,基本的格式如下:
FUNCTION 函數(shù)名(參數(shù)表)RETURN 類型IS BEGIN 函數(shù)體
END 函數(shù)名;
函數(shù)體中一定要包括RETURN語句。過程的定義和函數(shù)的定義非常相似:
PROCEDURE過程名(參數(shù)表)IS BEGIN 過程體
END 過程名;
過程沒有返回值。
函數(shù)的參數(shù)傳遞總是一個方向的,也就是傳入到函數(shù),而過程的參數(shù)傳遞可以是兩個方向的。具體在過程執(zhí)行中參數(shù)如何傳遞,取決于參數(shù)的類別(IN、OUT、INOUT等),而對于函數(shù)參數(shù)的類別,則只能有一種:IN,就是輸入到函數(shù)。
5.4 VHDL程序的描述語句
可以有許多并行處理語句,這些語句的執(zhí)行是可以同時進行的。并行語句主要是信號傳送語句。傳送時可以指定傳輸延遲。
如果傳送時沒有指定時延,VHDL會對并行處理語句的執(zhí)行加上一個最小時延Δ。
一、并行賦值語句
并行賦值語句是最基本的VHDL語句,它的格式是:
信號名<=表達式;
信號名<=表達式 AFTER 延遲時間;例5.4 半加器的數(shù)據(jù)流描述。ENTITY half_adder IS PORT(a, b: IN BIT;s, c0: OUT BIT);END half_adder;ARCHITECTURE h_adder OF half_adder IS SIGNAL c, d: BIT;BEGIN
信號時非輸入輸出的中間量相c<= a OR b;d<= a NAND b;
當于下一階段的輸入和上一階段的輸出? c0<= NOT d;s<= c AND d;END h_adder;
二、條件賦值語句
條件賦值語句也是一種信號賦值語句,只是賦給信號的值可以根據(jù)條件的不同而不同。
條件賦值語句的格式如下:
信號名<= 表達式1 WHEN 布爾表達式1 ELSE 表達式2 WHEN 布爾表達式2 ELSE ??
表達式n WHEN 布爾表達式n ELSE 表達式;例5.5 用條件賦值語句描述數(shù)據(jù)選擇器。ENTITY mux4_to_1 IS PORT(d0, d1, d2, d3, a, b: IN BIT;y: OUT BIT);
END mux4_to_1;ARCHITECTURE sample_1 OF mux4_to_1 IS
和例5.4比,沒有需要中間信號 BEGIN y<= d0 WHEN a='0' AND b='0' ELSE d1 WHEN a='0' AND b='1' ELSE d2 WHEN a='1' AND b='0' ELSE d3 WHEN a='1' AND b='1';END sample_1
三,選擇信號賦值語句
選擇信號賦值語句可以根據(jù)一個表達式的不同取值,給信號或者信號數(shù)組賦以不同的結果。
選擇信號賦值語句的格式如下:
WITH 表達式SELECT 信號名<= 信號值1 WHEN 表達式值1, 信號值2 WHEN 表達式值2,??
信號值n WHEN others;例5.6 用信號選擇語句描述數(shù)據(jù)選擇器。ENTITY mux4_to_1 IS PORT(d0, d1, d2, d3, a, b: IN std_logic;y: OUT std_logic);END mux4_to_1;ARCHITECTURE sample_2 OF mux4_to_1 IS BEGIN WITH a&b SELECT y<= d0 WHEN “00”, d1 WHEN “01”, d2 WHEN “10”, d3 WHEN “11”, 'X' WHEN OTHERS;END sample_2;
5.4.2 順序描述語句
并行信號傳輸語句主要描述硬件電路或系統(tǒng)中信號的傳送過程。同時,VHDL還支持順序描述語句,主要使用于對電路和系統(tǒng)的性能描述。
順序描述語句的執(zhí)行就和一般程序設計語言中語句相似,是按照語句的順序依次執(zhí)行的。前一條語句的結果會影響到下一條語句的執(zhí)行。
一、PROCESS語句
132頁
盡管PROCESS語句本身是并行描述語句,可以和其他并行語句同時執(zhí)行,但是PROCESS語句內部的語句都是順序語句。
PROCESS語句一旦開始執(zhí)行,就要依次執(zhí)行其中的順序語句,一直到最后的END PROCESS為止。
語句的格式如下:
PROCESS(信號1,?,信號k)
用到的信號 變量說明(定義);其他說明;BEGIN 順序語句 ?? 順序語句
END PROCESS;
二、分支語句
兩分支IF語句的格式:
多分支IF語句的格式:
IF 布爾表達式
IF 布爾表達式 THEN 順序語句
THEN 順序語句 ELSE 順序語句
ELSIF 布爾表達式 END IF;
THEN順序語句
ELSE 順序語句 END IF;
例5.7 反向器的順序描述。ENTITY inverter IS PORT(x: IN BIT;y: OUT BIT);END inverter;ARCHITECTURE behave OF inverter IS BEGIN PROCESS(x)
只用到x作為判斷條件 BEGIN IF(x='0')THEN y<=‘1';ELSE y<=‘0';END IF;END PROCESS;END behave;
三、另外一種分支語句CASE語句
CASE語句是從多個可能的分支中選擇一個分支進行操作。
語句的格式如下:
CASE 表達式IS
WHEN 值1 => 順序語句1 ??
WHEN 值k => 順序語句k
WHEN OTHERS =>順序語句k+1 END CASE;
例5.8 四選一數(shù)據(jù)選擇器的順序描述。ENTITY mux4_1 IS PORT(a, b, i0, i1, i2, i3: IN BIT;y: OUT BIT);END mux4_1;ARCHITECTURE behave OF mux4_1 IS SIGNAL sel bit_vector(1 DOWNTO 0);BEGIN sel<=b & a;PROCESS(sel, i0, i1, i2, i3)BEGIN CASE sel IS WHEN “00” => y<=i0;WHEN “01” => y<=i1;WHEN “10” => y<=i2;WHEN “11” => y<=i3;END CASE;END PROCESS;END behave
四、循環(huán)語句
中提供了兩種形式的循環(huán)語句:FOR循環(huán)和WHILE循環(huán)。FOR循環(huán)的格式如下:
FOR 變量IN 范圍LOOP 順序語句 ?? 順序語句
END LOOP;
其中的“變量”和“范圍”應該有相同的類型。例如變量是整型,范圍可以是一個整數(shù)范圍。如果變量是枚舉型,則“范圍”要限制在枚舉類型所定義的取值范圍內。WHILE循環(huán)的格式如下:
WHILE 布爾表達式LOOP 順序語句 ??
順序語句
END LOOP;
循環(huán)中的布爾表達式可以是邏輯表達式或者關系表達式。在FOR循環(huán)或者WHILE循環(huán)中都可以使用NEXT語句來結束本次循環(huán),用EXIT語句來結束循環(huán),到下一條順序語句繼續(xù)執(zhí)行。它們的格式基本相同: NEXT WHEN 布爾表達式;EXIT WHEN 布爾表達式;
5.4.3 VHDL的描述風格
在VHDL中對這一類的描述稱為“性能”描述(行為描述),性能描述中一定有PROCESS語句。
VHDL 還有另一種描述,稱為“結構”描述。
1.性能描述(行為描述)
這種描述完全是從與非門輸入和輸出的邏輯關系出發(fā),對與非門性能的一種描述。2.數(shù)據(jù)流描述(RTL描述)
建立在并行信號賦值語句基礎上。當語句中任意一個輸入信號的值發(fā)生改變時,賦值語句就被激活,從而認為數(shù)據(jù)從一個設計中“流入”,然后又“流出” 3.結構描述語句
結構描述是VHDL的三種描述方法之一。
結構描述的基礎是部件:COMPONENT。所使用的部件應該是事先已經定義過的??梢灾苯尤∽阅硞€VHDL庫,也可以是用戶自定義的存放在WORK庫的部件。
所用部件所在的庫或程序包,必須在程序開始前聲明。
在結構描述中所使用的部件必須首先聲明。部件的聲明在ARCHTECTURE的聲明部分進行。
部件聲明語句(Component Declaration)的格式如下:
COMPONENT 部件名
PORT(信號名: 類別 信號類型;??
信號名: 類別 信號類型);END COMPONENT;部件描述語句
例5.9 全加器的結構描述。
使用前面已經定義過的半加器 ENTITY full_adder IS PORT(x, y, cin: IN BIT;sum, carry: OUT BIT);END full_adder;ARCHITECTURE struct OF full_adder IS COMPONENT half_adder
部件聲明 PORT(a, b: IN BIT;s, c0: OUT BIT);END COMPONENT;SIGNAL h1_s, h1_c, h2_c: BIT;BEGIN h1: half_adder PORT MAP(x, y, h1_s, h1_c);
部件描述
(2)下降沿描述: 其物理意義是指時鐘信號的邏輯值是從‘1’跳變到‘0’
描述1:
PROCESS(clk)BEGIN IF(clk’EVENT AND clk = ‘0’)THEN ┇
END PROCESS;
PROCESS(clk)BEGIN WAIT UNTIL clk = ┇
END PROCESS; 描述2:
0’; ‘
第三篇:EDA期末復習總結1
面向FPGA的開發(fā)流程
綜合:由高層次描述自動轉換為低層次描述的過程。是EDA技術的核心。
綜合器:能夠自動將一種設計表示形式向另一種設計表示形式轉換的計算機程序。Xilinx公司推出FPGA;Altera公司推出EPLD,Lattice公司提出CPLD和ISP。
VHDL程序的基本結構:庫、程序包,實體,結構體,進程,配置。VHDL的本質:并行語句。
不完整IF語句形成時序邏輯電路,完整IF語句形成組合邏輯電路。
常用邏輯門符號與現(xiàn)有國標符號的對照:
第三章VHDL的基礎
3.1 VHDL基本語法
實體:描述器件的端口構成及信號端口的基本性質。表達式:entity e_name is port(p_name:port_m data_type;
??
p_namei:port_mi data_type); end entity e_name;
結構體:描述電路器件的內部邏輯功能和電路結構。
表達式:architecture arch_name of e_name is [說明語句] ??定義或說明數(shù)據(jù)對象、數(shù)據(jù)類型、元件調用聲明 begin(功能表述語句)end architecture arch_name;
一個可綜合的、完整的VHDL程序結構必須包含實體和結構體兩個最基本的語言結構。把一個完整的可綜合的VHDL程序設計稱為設計實體,而其程序代碼常被稱為VHDL的RTL描述。
4種端口模式:IN,OUT,INOUT,BUFFER。
4種數(shù)據(jù)類型:integer(整數(shù)),boolean(邏輯),std_logic,bit。bit的取值范圍是‘1’和‘0’,可以參與邏輯運算或算術運算,其結果仍是位的數(shù)據(jù)類型。
賦值符號“<=”:
例如y<=a,表示輸入端口a的數(shù)據(jù)向輸出端口y傳輸,或信號a向信號y賦值。賦值操作并非立即發(fā)生,而要經歷一個模擬器的最小分辨時間δ,δ可以看作實際電路存在的固有延時量?!?=”兩邊的信號的數(shù)據(jù)類型必須一致。
數(shù)據(jù)比較符號“=”:
例如s=‘0’,“=”沒有賦值的含義,只是一種數(shù)據(jù)比較符號。S=‘0’輸出結果的數(shù)據(jù)類型是布爾數(shù)據(jù)類型BOOLEAN,BOOLEAN數(shù)據(jù)類型取值是TRUE(真)和FALSE(偽),VHDL仿真器和綜合器分別用‘1’和‘0’表達TRUE和FALSE,布爾數(shù)據(jù)不是數(shù)值,只能用于邏輯操作或條件判斷。
7種邏輯操作符:and與、or或、not非、nand與非、nor或非、xor異或、xnor同或。
邏輯操作符所要求的操作數(shù)的數(shù)據(jù)類型有3種,即bit、boolean和std_logic。
條件語句:用IF_THEN_ELSE表示VHDL順序語句。
IF語句表達式:if 條件句 then 順序語句 else 順序語句 end if
WHEN_ELSE 條件信號賦值語句:一種并行賦值語句
表達式:賦值目標<=表達式 WHEN 賦值條件 ELSE 例:z<= a when p1=’1’ else
表達式 WHEN 賦值條件 ELSE b when p2=’1’ else
? c;
表達式; 條件信號賦值語句的第一句具有最高賦值優(yōu)先。
進程語句:由Process引導的語句: 表達式:Process(a,b,s)
在VHDL中,所有合法的順序語句都必須放入進程語句中。在結構體中,可以有很多進程語句,所有的進程語句都是并行語句,而由任一進程Process引導的語句結構屬于順序語句。進程語句定義的是變量。描述數(shù)字電路時,推薦使用Process語句。
文件取名和存盤
文件名可以由設計者任意給定,但文件后綴擴展名必須是“.vhd”,建議程序的文件名盡可能與該程序的實體名一致,文件名原則上不分大小寫,但推薦用小寫。
3.2 時序電路描述
VHDL主要通過對時序器件功能和邏輯行為的描述,而非結構上的描述使得計算機綜合出符合要求的時序電路。
標準邏輯位數(shù)據(jù)類型STD_LOGIC:
STD_LOGIC定義:TYPE STD_LOGIC IS(‘U’,‘X’,‘0’,‘1’,‘Z’,‘W’,‘L’,‘H’,‘-’)
使用庫和程序包的一般定義表達式: LIBRARY <設計庫名>;
USE <設計庫名>.<程序包名>.ALL;
信號定義:signal q1:std_logic 數(shù)據(jù)對象:信號(signal)、變量(variable)、常量(constant)
信號屬性函數(shù):EVENT。所謂信號屬性函數(shù)是用來獲得信號行為信息的函數(shù)。測定信號的跳變情況:<信號名>’EVENT 上升沿檢測表式為:<信號名>’EVENT AND <信號名>=’1’ 時鐘上升沿檢測表式為:clk’event and clk=‘1’ 確保clk的變化是一次上升沿的變化:
if clk'event and(clk='1')and(clk'last_value='0')if clk='1' and clk'last_value='0' 3.3
※CASE語句:
case語句屬于順序語句,因此必須放在進程語句中使用。
一般表達式:case <表達式> is when <選擇值或標識符>=><順序語句>;?;<順序語句>;when <選擇值或標識符>=><順序語句>;?;<順序語句>;?
when others=><順序語句>;--一般用null,表示不作任何操作。end case;
并置操作符&:表示將操作數(shù)或是數(shù)組合并起來形成新的數(shù)組。如abc<=a&b。
例化語句:
第一部分是對一個現(xiàn)成的設計實體定義為一個元件,語句的功能是對待調用的元件作出調用聲明,其表達式為:component 元件名
port(端口名表);
end component 第二部分則是此元件與當前設計實體中元件間及端口的連接說明,語句的表達式為:
例化名:元件名port map([端口名=>]連接端口名,?);
相關語法說明:
1、變量
variable cqi:std_logic_vector(3 downto 0);變量與信號的區(qū)別: 信號:全局量
用于architecture、package、entity中 賦值符號為<= 變量:局部量
用于process、function、procedure中 賦值符號為:=
2、省略賦值操作符(others=>x)
全加器的VHDL描述(書P55)
3.6 數(shù)據(jù)對象
數(shù)據(jù)對象: 常量(constant):代表數(shù)字電路中電源、地和恒定的邏輯值。
常數(shù)定義語句:
變量(variable):代表暫存某些值的載體,常用于描述算法。
變量定義語句:
信號(signal):代表物理設計中的某硬件連接線,包括輸入輸出端口。
信號定義語句:
信號賦值語句:
變量與信號的差異(總結): 1)賦值方式的不同:
變量:= 表達式;
信號 < = 表達式;
2)硬件實現(xiàn)的功能不同:
信號代表電路單元、功能模塊間的互聯(lián),代表實際的硬件連線;
變量代表電路單元內部的操作,代表暫存的臨時數(shù)據(jù)。
3)有效范圍的不同:
信號:程序包、實體、結構體;全局量。
變量:進程、子程序;局部量。4)賦值行為的不同:
信號賦值延遲更新數(shù)值、時序電路;
變量賦值立即更新數(shù)值、組合電路。
3.7 IF語句概述
※IF語句:
3.8 進程語句歸納
Process語句結構的一般表達格式如下:
[進程標號:] process [(敏感信號參數(shù)表)] [is] [進程說明部分](定義該進程所需的局部數(shù)據(jù)環(huán)境)begin 順序描述語句(描述該進程的行為)end process [進程標號];
第四章QuartusⅡ的使用
建立工作庫文件夾和編輯設計文件,創(chuàng)建工程,編譯前設置,全程編譯,時序仿真,應用RTL電路圖觀察器,引腳鎖定,配置文件下載,編程配置器件,Signal TapⅡ實時測試。(文本編輯,功能仿真,邏輯綜合,布局布線,時序仿真,編程下載)
第五章VHDL狀態(tài)機
用戶自定義數(shù)據(jù)類型是用類型定義語句TYPE和子類型定義語句SUBTYOPE實現(xiàn)的
5.1 狀態(tài)機設計相關語句
TYPE類型定義語句:
VHDL中的枚舉數(shù)據(jù)類型是一種特殊的數(shù)據(jù)類型,它們是用文字符號來表示一組實際的二進制數(shù)。設計者在狀態(tài)機的設計中,為了利于閱讀、編譯和VHDL綜合器的優(yōu)化,往往將表征狀態(tài)的二進制數(shù)組用文字符號來代替,即所謂的狀態(tài)符號化。
枚舉類型也可以直接用數(shù)值來定義,但必須使用單引號。枚舉數(shù)據(jù),在綜合過程中,都將轉化為二進制代碼。編碼順序是默認的。編碼數(shù)值:一般將第一個枚舉量編碼為‘0’或“0000”,以后依次加1。編碼的位矢量長度根據(jù)實際情況決定。
子類型subtype是由type所定義的原數(shù)據(jù)類型的一個子集,它滿足原數(shù)據(jù)類型的所有約束條件,原數(shù)據(jù)類型稱為基本數(shù)據(jù)類型。子類型并沒有定義新的數(shù)據(jù)類型。
子類型subtype的語句格式:
5.1.3
狀態(tài)機的結構
最一般最常用的狀態(tài)機通常包括:說明部分,主控時序進程,主控組合進程,輔助進程。
現(xiàn)態(tài)信號current_state,次態(tài)信號next_state。
真值表:
5.2 Moore狀態(tài)機設計
從狀態(tài)機的信號輸出方式上分,有Moore型和Mealy型兩類狀態(tài)機。
Moore型狀態(tài)機的輸出僅為當前狀態(tài)的函數(shù),這類狀態(tài)機在輸入發(fā)生變化時還必須等待時鐘的到來,時鐘使狀態(tài)變化時才導致輸出的變化,所以比Mealy機要多等待一個時鐘周期。
Mealy型狀態(tài)機的輸出是當前狀態(tài)和所有輸入信號的函數(shù),它的輸出是在輸入變化后立即發(fā)生的,不依賴時鐘的同步。
從輸出時序上看,Moore屬于同步輸出狀態(tài)機,而Mealy屬于異步輸出狀態(tài)機。
摩爾(Moore)型狀態(tài)機的輸出僅與當前狀態(tài)有關:
異步復位:目的在加電時建立一個初始狀態(tài),并避免非法狀態(tài);
摩爾(Moore)型狀態(tài)機真值表:
多進程Moore狀態(tài)機的輸出信號是由組合電路發(fā)出的,所以在一些特定情況下難免出現(xiàn)毛刺現(xiàn)象。如果這些輸出信號用作時鐘信號,極易產生錯誤的操作,需盡力避免。單進程Moore狀態(tài)機較容易構成能避免出現(xiàn)毛刺現(xiàn)象的狀態(tài)機。
5.3 Mealy 狀態(tài)機
Mealy狀態(tài)機的輸出不僅是當前狀態(tài)的函數(shù),也是輸入信號的函數(shù)。
Mealy 狀態(tài)機真值表:
第七章VHDL語句
7.1 VHDL順序語句(Sequential)
硬件執(zhí)行:并行執(zhí)行(VHDL本質)仿真執(zhí)行:順序執(zhí)行、并行執(zhí)行
分為兩大類:順序(Sequential)描述語句、并行(Concurrent)描述語句
順序語句只能用在進程與子程序中。可描述組合邏輯、時序邏輯。常用的順序描述語句:賦值語句; if語句;case語句;loop語句; next語句;exit語句;子程序調用語句; return語句;wait語句;null語句。
7.1.4 LOOP語句
LOOP語句就是循環(huán)語句,它可以使所包含的一組順序語句被循環(huán)執(zhí)行,其執(zhí)行次數(shù)可由設定的循環(huán)參數(shù)決定。
LOOP語句的常用表達方式有兩種。
(1)單個LOOP語句,其語法格式如下:
[LOOP標號:] LOOP
順序語句
END LOOP [LOOP標號:];
該語句形式的循環(huán)方式需引入其它控制語句(如EXIT語句)才能確定。
(2)FOR_LOOP語句,其語法格式如下:
[LOOP標號:] FOR 循環(huán)變量,IN 循環(huán)次數(shù)范圍 LOOP 順序語句
END LOOP [LOOP標號:];
7.1.5 NEXT 語句
NEXT語句主要用在LOOP語句執(zhí)行中進 行有條件的或無條件的轉向控制,它的語句格式有3種。
(1)第一種語句格式:NEXT;
當LOOP內的順序語句執(zhí)行到NEXT語句時,即刻無條件終止當前的循環(huán),跳回到本次循環(huán)LOOP語句處,開始下一次循環(huán)。
(2)第二種語句格式:NEXT LOOP標號;
在當有多重LOOP語句嵌套時,可以跳轉到指定標號的LOOP語句處,重新開始執(zhí)行循環(huán)操作。
(3)第三種語句格式:NEXT LOOP標號 WHEN 條件表達式 ;
分句“WHEN 條件表達式”是執(zhí)行NEXT語句的條件,如果條件表達式的值為TRUE,則執(zhí)行NEXT語句,進入跳轉操作,否則繼續(xù)向下執(zhí)行。但當只有單層LOOP循環(huán)語句時,關鍵詞NEXT和WHEN之間的“LOOP標號”可以省去。
7.1.6 EXIT語句
EXIT 語句為LOOP語句的內部循環(huán)控制語句,將結束循環(huán)狀態(tài)。
EXIT;--第一種語句格式 EXIT LOOP標號;--第二種語句格式
EXIT LOOP標號 WHEN 條件表達式 ;--第三種語句格式
NEXT語句與EXIT語句的格式與操作功能非常相似,區(qū)別是: NEXT語句是跳向LOOP語句的起始點,而EXIT語句則是跳向LOOP語句的終點。
7.1.7 WAIT語句
在進程中,當執(zhí)行到WAIT(等待)語句時,運行程序將被掛起,直到滿足此語句設置的結束掛起條件之后,才重新開始執(zhí)行進程中的程序。
wait--無限等待
wait on 信號表--敏感信號等待語句 wait until 條件表達式--條件滿足(可綜合)wait for 時間表達式--時間到,超時等待語句
1、wait on 語句
格式:wait on 信號[,信號];
2、wait until 語句(可綜合)
格式:wait until 表達式;
當表達式的值為“真”時,進程被啟動,否則進程被掛起。
三種表達方式:
wait until 信號 = value;wait until 信號’event and 信號 = value;wait until not(信號’stable)and 信號 = value;時鐘信號 clk 的上升沿的描述:
wait until clk = ‘1’;
wait until rising_edge(clk);wait until clk’event and clk = ‘1’;
wait until not(clk’stable)and clk = ‘1’;
7.1.9
return 語句
return 語句只能用于子程序中,并用來終止一個子程序的執(zhí)行。
格式:return [表達式];
分為:1)return ;
用于過程,只是結束過程,不返回任何值。2)return 表達式;
用于函數(shù),并且必須返回一個值。
7.1.9
空操作語句
空操作語句不完成任何操作,它唯一的功能就是使邏輯運行流程跨入下一步語句的執(zhí)行。NULL常用于CASE語句中,為滿足所有可能的條件,利用NULL來表示剩余條件下的操作行為。
格式: NULL;
7.2
并行語句(Concurrent Statements)
結構體中可綜合的并行描述語句有:
并行信號賦值語句,條件信號賦值語句,選擇信號賦值語句,進程語句,塊語句,元件例化語句,生成語句,參數(shù)傳遞映射語句,過程調用語句,端口說明語句。
使用格式: ARCHITECTURE 結構體名 OF 實體名 IS 說明語句
BEGIN 并行語句
END ARCHITECTURE 結構體名
名詞解釋
EDA--------電子設計自動化(Electronic Design Automation)VHDL------超高速集成電路硬件描述語言
(Very-High-Speed Integrated Circuit HardwareDescription Language)CPLD------復雜可編程邏輯器件(Complex Programmable Logic Device)EPLD--------電可編程邏輯器件(Electrically Programmable Logic Device)FPGA------現(xiàn)場可編程門陣列(Field-Programmable Gate Array)
ASIC-------專用集成電路(Application Specific Integrated Circuit)LUT---------顯示查找表(Look-Up-Table)ISP----------在系統(tǒng)可編程技術(In_System Programmability Programming)
第四篇:EDA總結
一、有關概念
1.ASIC全稱:專用集成電路; 2.FPGA:現(xiàn)場可編程門陣列 3.CPLD:復雜可編程邏輯器件; 4.VHDL全稱:硬件描述語言; 5.全定制; 6.半定制;
7.IP核;IP就是知識產權核或知識產權模塊的意思
8.綜合(器);綜合就是將電路的高級語言(如行為描述)轉換為低級的,可與FPGA/CPLD的基本結構相映射的網表文件或程序。
9.適配(器);適配器也稱結構綜合器,它的功能是將綜合器產生的網表文件配置于指定的目標器件中,使之產生最終的下載文件。
10.功能仿真;是直接對VHDL、原理圖描述或其他描述形式的邏輯功能進行測試模擬,以了解其實現(xiàn)的功能是否滿足原設計的要求
11.時序仿真;就是接近真實器件運行特性的仿真,仿真文件中已包含了器件硬件特性參數(shù),因而,仿真精度高。
12.編程下載;把適配后生成的下載或配置文件,通過編程器或編程電纜向FPGA或CPLD下載,以便進行硬件測試和驗證 13.PROM;可編程只讀存儲器 14.PLA;可編程邏輯陣列 15.PAL;可編程陣列邏輯 16.查找表; 17.乘積項;
18.實體;VHDL實體作為一個設計實體(獨立的電路功能結構)的組成部分,其功能是對這個設計實體與外部電路進行接口描述。
19.結構體;結構體是實體所定義實體中的一個組成部分。結構體描述設計實體的內部結構和外部設計實體端口間的邏輯關系。
20.元件例化;元件例化意味著在當前結構體內定義了一個新的設計層次,這個設計層次的總稱叫元件,但它可以以不同的形式出現(xiàn)。?? 21.時鐘進程; 22.三態(tài); 23.線與; 24.數(shù)據(jù)對象;
25.變量;變量是一個局部量,只能在進程和子程序中使用,變量的賦值是立即發(fā)生的,不存在任何延時行為。
26.信號;信號是硬件系統(tǒng)的基本數(shù)據(jù)對象,它的性質類似于連接線。信號可以作為設計實體中并行語句模塊間的信息交流通道
27.Moore型狀態(tài)機;異步輸出狀態(tài)機,輸出僅為當前狀態(tài)的函數(shù),在輸入發(fā)生變化時還必須等待時鐘的到來。
28.Mealy型狀態(tài)機;同步輸出狀態(tài)機,輸出是當前狀態(tài)和所有輸入信號的函數(shù),它的輸出是在輸入變化后立即發(fā)生的。不依賴于時鐘的同步。
注意:
1.<= 對信號SIGNAL的賦值 := 是對變量variable的賦值
2.程序的實體名必須和文件名一致,例1中二輸入與門的文件名必須為yumen
一、有關概念
ASIC全稱;FPGA和CPLD全稱;VHDL全稱;全定制;半定制; IP核;綜合(器);適配(器);功能仿真;時序仿真;編程下載;PROM;PLA;PAL;查找表;乘積項;實體;結構體;元件例化;時鐘進程;三態(tài);線與; 數(shù)據(jù)對象;變量;信號; Moore型狀態(tài)機;Mealy型狀態(tài)機。
二、程序分析及設計
1、二輸入與門的VHDL語言設計。LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY yumen IS
PORT(a, b : IN BIT;
y : OUT BIT);END ENTITY yumen;ARCHITECTURE one OF yumen IS BEGIN y <= a AND b;END ARCHITECTURE one;
2、帶有異步復位和同步時鐘使能的6進制計數(shù)器VHDL語言設計。
LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY jinzhi IS PORT(CLK,RST,EN : IN STD_LOGIC;CQ : OUT STD_LOGIC_VECTOR(2 DOWNTO 0);COUT : OUT STD_LOGIC);END jinzhi;ARCHITECTURE behav OF jinzhi IS BEGIN PROCESS(CLK, RST, EN)VARIABLE CQI : STD_LOGIC_VECTOR(2 DOWNTO 0);BEGIN IF RST = '1' THEN CQI :=(OTHERS =>'0');--計數(shù)器復位 ELSIF CLK'EVENT AND CLK='1' THEN--檢測時鐘上升沿 IF EN = '1' THEN--檢測是否允許計數(shù) IF CQI < 5 THEN CQI := CQI + 1;--允許計數(shù)
ELSE CQI :=(OTHERS =>'0');--大于5,計數(shù)值清零 END IF;END IF;END IF;IF CQI = 5 THEN COUT <= '1';--計數(shù)大于5,輸出進位信號 ELSE COUT <= '0';END IF;CQ <= CQI;--將計數(shù)值向端口輸出 end PROCESS;END behav;
3、用VHDL語言設計2選1數(shù)據(jù)選擇器。
LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY erxuanyi IS PORT(a, b, s: IN BIT;y : OUT BIT);END erxuanyi;ARCHITECTURE one OF erxuanyi IS BEGIN PROCESS(a,b,s)BEGIN IF s = '0' THEN y <= a;ELSE y <= b;END IF;END PROCESS;END;
4、邊沿型T、D觸發(fā)器VHDL語言設計。--D觸發(fā)器
LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY DFF IS PORT(CLK : IN STD_LOGIC;D : IN STD_LOGIC;Q : OUT STD_LOGIC);END;ARCHITECTURE bhv OF DFF IS SIGNAL Q1 : STD_LOGIC;BEGIN PROCESS(CLK)BEGIN IF CLK'EVENT AND CLK = '1' THEN Q1 <= D;END IF;END PROCESS;Q <= Q1;END bhv;
--T觸發(fā)器
有clk且為1的時候,T與當前狀態(tài)異或
LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY tff IS PORT(CLK : IN STD_LOGIC;T : IN STD_LOGIC;Q : OUT STD_LOGIC);END;ARCHITECTURE bhv OF tff IS SIGNAL Q1 : STD_LOGIC;BEGIN PROCESS(CLK)BEGIN IF CLK'EVENT AND CLK = '1' THEN Q1 <= Q1 XOR T;END IF;END PROCESS;Q <= Q1;END bhv;
5、帶并行置數(shù)的8位右移移位寄存器VHDL語言設計。
library ieee;USE IEEE.STD_LOGIC_1164.ALL;ENTITY SHFRT IS PORT(CLK,LOAD: IN STD_LOGIC;
DIN: IN STD_LOGIC_VECTOR(7 DOWNTO 0);
QB:OUT STD_LOGIC);END SHFRT;
ARCHITECTURE BEHAV OF SHFRT IS BEGIN PROCESS(CLK,LOAD)
VARIABLE REG8: STD_LOGIC_VECTOR(7 TO 0);BEGIN
IF CLK'EVENT AND CLK='1' THEN
IF LOAD='1' THEN REG8:=DIN;
ELSE REG8(6 DOWNTO 0):=REG8(7 DOWNTO 1);
END IF;
END IF;
QB<=REG8(0);END PROCESS;END BEHAV;--說明:當clk有上升沿,而且load為1的時候把din的值賦給REG8,如果clk有上升沿,而且load為0的時候把REG8的高7為賦給低7位(注意此時最高位不變)6、1位半加器VHDL語言設計。(布爾邏輯描述)LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY banjia IS PORT(a,b : IN STD_LOGIC;co,so : OUT STD_LOGIC);END ENTITY banjia;ARCHITECTURE fh1 OF banjia IS BEGIN so <= not(a xor(not b));co <= a and b;END ARCHITECTURE fh1;
7、用VHDL語言設計實現(xiàn)四選一數(shù)據(jù)選擇器。
LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY sixuan IS PORT(a, b, c , d: IN BIT;
s: IN STD_LOGIC_VECTOR(1 DOWNTO 0);y : OUT BIT);END sixuan;ARCHITECTURE one OF sixuan IS BEGIN PROCESS(a,b,c,d,s)BEGIN case s(1 DOWNTO 0)is when “00” => y <= a;when “01” => y <= b;when “10” => y <= c;when “11” => y <= d;when others => null;END case;END PROCESS;END;
8、用VHDL語言實現(xiàn)三態(tài)門設計。
LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY santai IS port(enable : IN STD_LOGIC;datain : IN STD_LOGIC_VECTOR(7 DOWNTO 0);dataout : OUT STD_LOGIC_VECTOR(7 DOWNTO 0));END santai;ARCHITECTURE bhv OF santai IS BEGIN PROCESS(enable,datain)BEGIN IF enable = '1' THEN dataout <= datain;ELSE dataout <=“ZZZZZZZZ”;END IF;END PROCESS;END bhv;
9、設有VHDL描述的半加器h_adder和或門or2,試通過層次化設計思想設計由半加器和或門構成的一位二進制全加器的VHDL程序。全加器f_adder電路結構組成圖如下所示。
半加器h_adder LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY h_adder IS PORT(a,b : IN STD_LOGIC;co,so : OUT STD_LOGIC);END ENTITY h_adder;ARCHITECTURE fh1 OF h_adder IS BEGIN so <=(a OR b)AND(a NAND b);co <= NOT(a NAND b);END ARCHITECTURE fh1;
或門 or2a LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY or2a IS PORT(a, b :IN STD_LOGIC;c : OUT STD_LOGIC);END ENTITY or2a;ARCHITECTURE one OF or2a IS BEGIN c <= a OR b;END ARCHITECTURE one;
元件例化adder library ieee;use ieee.std_logic_1164.all;entity adder is port(ain,bin,cin:in std_logic;
cout,sum :out std_logic);end entity adder;architecture fd1 of adder is component h_adder
port(a,b:in std_logic;
co,so:out std_logic);end component;component or2a
port(a,b:in std_logic;
c:out std_logic);end component;signal d,e,f:std_logic;begin u1 : h_adder port map(a=>ain,b=>bin,co=>d,so=>e);u2 : h_adder port map(a=>e,b=>cin,co=>f,so=>sum);u3 : or2a port map(a=>d,b=>f,c=>cout);end architecture fd1;
第五篇:EDA基礎總結
EDA基礎總結
綜述部分
1.EDA的中文全稱為電子設計自動化,英文全名為Electronic Design Automation。2.EDA平臺常用的兩種輸入電路的方法是:電路原理圖輸入法、HDL輸入法。3.EDA平臺工作流程:電路輸入、綜合優(yōu)化、功能仿真、布局布線、門級仿真。
數(shù)字電路部分
1.EDA中常用的仿真語言為Verilog和VHDL。
2.VHDL其英文全名為VHSIC Hardware Description Language,而VHSIC則是Very High Speed Intergeraterd Circuit的縮寫詞,意為甚高速集成電路,故VHDL其準確的中文譯名為甚高速集成電路的硬件描述語言。
3.Verilog HDL其英文全名為Verilog Hardware Decription Language,HDL中文譯名為硬件描述語言。
4.Verilog和VHDL的比較
共同點:能形式化地抽象表示電路的行為和結構;支持邏輯設計中層次與范圍的描述;可借用高級語言的精巧結構來簡化電路行為的描述;具有電路仿真與驗證機制以保證設計的正確性;支持電路描述由高層到低層的綜合轉換;硬件描述與實現(xiàn)工藝無關;便于文檔管理;易于理解和設計重用。
不同點:Verilog在系統(tǒng)級抽象方面略差,VHDL在門級開關電路方面略差。
5.軟核、固核和硬核
軟核:功能經過驗證的、可綜合的、實現(xiàn)后電路結構總門數(shù)在5000門以上的Verilog模型。
固核:在某一種現(xiàn)場可編程門列器件上實現(xiàn)的經驗證是正確的,且總門數(shù)在5000門以上的電路結構編碼文件。
在某一種專用集成電路工藝的器件上實現(xiàn)的,經驗證是正確的,且總門數(shù)在5000門以上的電路結構版圖掩膜。6.自頂向下(Top Down)設計
7.自底向上(Down Top)設計
8.名詞解釋:
ASIC:Application Specific Integrated Circuit,專用集成電路。
FPGA:Field Programmable Gate Array,現(xiàn)場可編程門陣列。PLD:Programmable Logic Device,可編程邏輯器件。
Verilog編程題: 數(shù)據(jù)比較器(2位)//數(shù)據(jù)比較器
module compare(equal, a, b);input a,b;output equal;reg equal;always @(a or b)if(a == b)equal = 1;else equal = 0;endmodule
//數(shù)據(jù)比較器測試代碼 `timescale 1ns/1ns `include “./1-1.v” module t;reg a,b;wire equal;initial begin a=0;b=0;#100 a=0;b=1;#100 a=1;b=1;#100 a=1;b=0;#100 a=0;b=0;#100 $stop;end
compare m(.equal(equal),.a(a),.b(b));endmodule
數(shù)據(jù)比較器(8位)
module compare8(equal, a, b);input [7:0]a, b;output equal;reg equal;always @(a or b)if(a > b)begin equal = 1;end else begin equal = 0;end endmodule 分頻器
module half_clk(reset, clk_in, clk_out);input clk_in, reset;output clk_out;reg clk_out;
always @(posedge clk_in)begin if(!reset)clk_out = 0;else clk_out = ~clk_out;end endmodule
10M時鐘分頻為500K module fdivision(RESET, MB, KB);input MB, RESET;output KB;reg KB;reg [7:0] j;
always @(posedge MB)if(!RESET)begin KB <= 0;j <= 0;end else begin if(j == 19)begin j <= 0;KB <= ~KB;end else j <= j+1;end endmodule
譯碼電路
`define plus 3'd0 `define minus 3'd1 `define band 3'd2 `define bor 3'd3 `define unegate 3'd4
module alu(out, opcode, a, b);output[7:0] out;reg[7:0] out;input[2:0] opcode;input[7:0] a,b;
always @(opcode or a or b)begin case(opcode)`plus: out = a + b;`minus: out = a-b;`band: out = a & b;`bor: out = a | b;`unegate: out = ~a;default: out = 8'hx;endcase end endmodule
八路數(shù)據(jù)選擇器
module selecting8(addr, in1, in2, in3, in4, in5, in6, in7, in8, dataout, reset);input [2:0] addr;input [3:0] in1,in2,in3,in4,in5,in6,in7,in8;input reset;output [3:0] dataout;reg [3:0] dataout;
always @(addr or in1 or in2 or in3 or in4 or in5 or in6 or in7 or in8 or reset)begin if(!reset)case(addr)3'b000: dataout = in1;3'b001: dataout = in2;3'b010: dataout = in3;3'b011: dataout = in4;3'b100: dataout = in5;3'b101: dataout = in6;3'b110: dataout = in7;3'b111: dataout = in8;endcase else dataout = 0;end endmodule
邏輯運算電路
module tryfunct(clk, n, result, reset);output[31:0] result;input[3:0] n;input reset, clk;reg[31:0] result;
always @(posedge clk)begin if(!reset)result <=0;else begin result <= n*factorial(n)/((n*2)+1);end end
function [31:0] factorial;input [3:0] operand;reg [3:0] index;begin factorial = operand ? 1:0;for(index = 2;index <= operand;index = index + 1)factorial = index *factorial;end endfunction endmodule
module tryfunct(clk, n, result, reset);output[31:0] result;input[3:0] n;input reset, clk;reg[31:0] result;
always @(posedge clk)begin if(!reset)result <=0;else begin result <= n*factorial(n)/((n*2)+1);end end
function [31:0] factorial;input [3:0] operand;reg [3:0] index;begin factorial = operand ? 1:0;for(index = 2;index <= operand;index = index + 1)factorial = index *factorial;end endfunction endmodule
高速排序組合邏輯
module sort4(ra, rb, rc, rd, a, b, c, d);output[3:0] ra, rb, rc, rd;input[3:0] a, b, c, d;reg[3:0] ra, rb, rc, rd;reg[3:0] va, vb, vc, vd;
always @(a or b or c or d)begin {va, vb, vc, vd} = {a, b, c, d};sort2(va, vc);sort2(vb, vd);sort2(va, vb);sort2(vc, vd);sort2(vb, vc);{ra, rb, rc, rd} = {va, vb, vc, vd};end
task sort2;input[3:0]x, y;reg[3:0] tmp;if(x > y)begin tmp = x;x = y;y = tmp;end endtask endmodule
檢測5位二進制序列10010 module seqdet(x, z, clk, rst, state);input x, clk, rst;output z;output[2:0] state;reg[2:0] state;wire z;
parameter IDLE = 'd0, A = 'd1, B = 'd2, C = 'd3, D = 'd4, E = 'd5, F = 'd6, G = 'd7;
assign z =(state == E && x == 0)? 1:0;
always @(posedge clk)if(!rst)begin state <= IDLE;end else case(state)IDLE: if(x == 1)begin state <= A;end A: if(x == 0)begin state <= B;end B: if(x == 0)begin state <= C;end else begin state <= F;end C: if(x == 1)begin state <= D;end else begin state <= G;end D: if(x == 0)begin state <= E;end else begin state <= A;end E: if(x == 0)begin state <= C;end else begin state = A;end F: if(x == 1)begin state <= A;end else begin state <= B;end G: if(x == 1)begin state <= F;end default: state = IDLE;endcase endmodule
模擬電路部分
1.目前,集成電路最常用的材料是單晶硅。
2.集成電路的生產由設計、制造、封裝三部分組成。
3.集成電路中基片主要制作工藝為:光刻、擴散、注入、刻蝕、鍵合。
4.集成電路中基片的制造步驟為:光刻、擴散、注入、刻蝕。
5.衡量集成電路產業(yè)水平的兩個主要參數(shù)為:硅晶圓片直徑和光刻精度(特征尺寸)。這兩個參數(shù)在業(yè)界達到的水平為:硅晶圓片直徑12英寸(300mm),光刻精度0.13um。主流水平為:硅晶圓片直徑200mm,光刻精度0.18um。
6.模擬電路中常用的仿真算法是SPICE,英文全名為Simulation Program with Integrated Circuit Emphasis。
7.世界上設計EDA軟件實力最強的兩個公司為Cadence和Synopsys。其中,Cadence的優(yōu)勢為電路布局布線,Synopsys的優(yōu)勢為邏輯綜合仿真。
8.WorkBench是加拿大IIT公司退出的電子線路仿真軟件。它可以對模擬、數(shù)字和模擬/數(shù)字混合電路進行仿真,克服了傳統(tǒng)電子產品的設計受實驗室客觀條件限制的局限性,用虛擬的元件搭接各種電路,用虛擬的儀表進行各種參數(shù)和性能指標的測試。特點如下:(1)系統(tǒng)集成度高,界面直觀,操作方便。(2)具備模擬、數(shù)字及模擬/數(shù)字混合電路仿真。(3)提供較為豐富的元器件庫。(4)電路分析手段完備。(5)輸出方式靈活。(6)兼容性好。9.SPICE語言舉例: EXAMPLE
VCC 8 0 12
**** 文件名 任意名都可以 但必須要有****
**** 電源正極接于節(jié)點8 負極接于0 電壓為12V **** VEE 0 9 12
**** 電源正極接于節(jié)點0,負接接于節(jié)點9,電壓為12V;**** VIN 1 0 AC 1 SIN(0 0.1 5MEG)
**** 信號源VIN 接于1 和接點0;交流1V 進行交流分析 同時加一個正弦信號 直流偏置為0,振幅為0.1V頻率為5M的交流信號源,進行瞬態(tài)分析;**** RC1 8 4 10K
RC2 8 5 10K
RS 2 1 1K
RS1 8 7 20K
RS2 3 0 1K
**** 電阻RC1 分別接于節(jié)點8 節(jié)點4;阻值為10K;**** **** 電阻RC2 分別接于節(jié)點8 節(jié)點5;阻值為10K;**** **** 電阻RS 分別接于節(jié)點1 節(jié)點0;阻值為1K;**** **** 電阻RS1 分別接于節(jié)點8 節(jié)點7 阻值為20K;**** **** 電阻RS2 分別接于節(jié)點3 節(jié)點0 阻值為1K;**** Q1 4 2 6 MOD1
**** 三極管Q1 CBE 分別接于節(jié)點 4 2 6 模型為MOD1**** Q2 5 3 6 MOD1
**** 三極管Q2 CBE 分別接于節(jié)點 5 3 6 模型為MOD1**** Q3 6 7 9 MOD1
**** 三極管Q3 CBE 分別接于節(jié)點 6 7 9 模型為MOD1**** Q4 7 7 9 MOD1
**** 三極管Q4 CBE 分別接于節(jié)點 7 7 9 模型為MOD1****.OP
**** 求出直流工作點.本電路共有9個節(jié)點;溫度值為27度;****.DC VIN-.15.15.01
**** DC為直流分析語句,分析輸入電壓從-0.15V到0.15V掃描特性,每0.1V作一次分析;****.PRINT DC V(4)V(5)
****.PRINT 為打印語句,其中DC是打印直流內容,這里規(guī)定打印節(jié)點4和5上的電位,既相對地參考點的電壓隨輸入的變化關系;****.PLOT DC V(4)V(5)
****.PLOT為繪圖語句,其中DC表示繪制直流分析的傳輸特性,說明是繪制V(4)V(5)的輸出電壓和VIN關系曲線;****.TF V(5)VIN
****.TF是轉移函數(shù)分析語句,該句表示計算直流分析時,小信號輸出電壓V(5)和輸入電壓VIN的轉移函數(shù)值,輸入電阻和輸出電阻;****.AC DEC 10 25K 250MEG
****.AC是交流分析語句,是在規(guī)定的頻率范圍內從25K到250M進行頻域分析DEC表示按數(shù)量級變化,10表示每一數(shù)量級中取的分析點數(shù)目;****.PRINT AC VM(5)VP(5)
**** 打印AC分析VM(5)VP(5)的取點數(shù);****.PLOT AC VM(5)VP(5)
**** 繪制AC分析VM(5)VP(5)的取點數(shù);****.TRAN 4N 100N 1N
****.TRAN是瞬態(tài)分析語句,并規(guī)定了打印或繪圖時間增量為4N秒,計算終止時間為100N秒,打印或繪圖開始時間1NS*;****.PRINT TRAN V(5)V(4)
****.打印出4.5點的電壓隨時間變化;****.PLOT TRAN V(5)V(4)
****.繪圖出節(jié)點4.5的電壓隨時間變化;****.END
**** 結束語句...一定要有;****