版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
硬件課程設計 設計目標:1。學習現(xiàn)代集成電路設計方法2。熟悉在系統(tǒng)可編程邏輯器件上進行編程,及相應軟件的應用。3。學習使用硬件描述語言VHDL進行集成電路設計。.設計要求:1。熟悉VHDL編程語言方法,掌握VHDL語言的根本結構和語句,能編寫標準的系統(tǒng)描述;根本掌握邏輯綜合的方法;編寫具有一定要求的邏輯電路源程序,并進行調試。2。熟悉在系統(tǒng)邏輯設計軟件環(huán)境下,完成源程序轉換,下載和在可編程器件上進行調試。學會使用ispDesignExpert軟件工具進行系統(tǒng)設計。3。完成設計說明文件.考核方式:〔1〕上課,上機。〔2〕驗機,通過測試,實現(xiàn)要求功能?!?〕硬件課程設計報告包括:VHDL語言源程序、設計說明、邏輯圖、真值表。.參考文獻:1。 李輝編著,ISP系統(tǒng)設計技術入門與應用,電子工業(yè)出版社,20022。喬長閣等,VHDL簡明教程, 清華大學出版社,19973。北京理工大學ASIC研究所,VHDL語言100例詳解, 清華大學出版社,1999相關網址連接:///:///VHDL在線參考accda/vhdlref/index.htmllatticesemi.第1章在系統(tǒng)可編程集成電路根底
1。1概述
1。2在系統(tǒng)可編程邏輯器件的結構
1。2。1ispLSI1016的結構
1。2。1。1 芯片結構
1。2。1。2功耗與延遲時間
1。2。2ispLSI1016編程接口和編程
1。編程接口
2。編程下載操作.第1章
在系統(tǒng)可編程集成電路根底.1。1 概述主要術語與概念1 專用集成電路ASICsApplication-SpecificIntegratedCircuits2 非專用集成電路有PLDProgrammableLogicDeviceEPLDErasableProgrammableLogicDevice.一個門陣等效門就是一個兩輸入端與非門的低密度的PLD〔<1000個〕有:1 PALProgrammableArrayLogic2 GALGenericArrayLogic.高密度的PLD〔>1000個〕有:1 CPLDComplexProgrammableLogicDevice2 FPGAFieldProgrammableGateArray兩者都具有更多的I/O,Productterm〔乘積項〕和Macrocell〔宏單元〕通過內部可編程連線PI〔ProgrammableInterconnect〕將內部邏輯單元〔LogicCell〕連接起來,以構成芯片。.FPGA〔FieldProgrammableGateArray〕的根本結構由以下幾個局部組成1 可編程邏輯塊CLB〔ConfigurableLogicBlocks〕, 按矩陣排列2 芯片四周的多個IOB〔Input/OutputBlocks〕3 由可編程內部連線PI〔ProgrammableInterconnect〕; 將行與列的CLB以及IOB之間實現(xiàn)互連。由這3個主要局部就構成了可編程邏輯單元陣列LCA〔LogicCellArray〕.第1章在系統(tǒng)可編程集成電路根底
1。1概述
1。2在系統(tǒng)可編程邏輯器件的結構
1。2。1ispLSI1016的結構
1。2。1。1 芯片結構
1。2。1。2功耗與延遲時間
1。2。2ispLSI1016編程接口和編程
1。編程接口
2。編程下載操作.1。2在系統(tǒng)可編程邏輯器件的結構一。ISP含義ISP 在系統(tǒng)可編程〔In-SystemProgrammable〕ispLSI 在系統(tǒng)可編程大規(guī)模集成電路〔In-SystemProgrammableLargeScaleIntegration〕ISP指用戶為修改或重構數(shù)字邏輯系統(tǒng),在已設計和制作的系統(tǒng)中,通過器件的編程控制信號線直接在線編程、修改、調試、驗證。使已經定型的產品性能可以不斷地改進。.二。Isp系列在系統(tǒng)可編程邏輯芯片特點:1。通用性:可以實現(xiàn)幾乎所有邏輯電路功能。如:編碼器、譯碼器、存放器、計數(shù)器、串并轉換、波特率發(fā)生器、網絡器件;用于:數(shù)據(jù)采集、圖像處理、多媒體。.2??稍谙到y(tǒng)編程,靈活性強3。高集成度:ispLSI1000系列:等效PLD門密度2000-8000ispLSI2000系列:等效PLD門密度1000-8000ispLSI3000系列:等效PLD門密度7000-20000ispLSI5000系列:等效PLD門密度12000-24000ispLSI8000系列:等效PLD門密度25000-450004。低功耗:供電電壓:5V、3.3V、2.5V、1.8V.三。在系統(tǒng)可編程邏輯芯片型號含義:見P6圖1-1.第1章在系統(tǒng)可編程集成電路根底
1。1概述
1。2在系統(tǒng)可編程邏輯器件的結構
1。2。1ispLSI1016的結構
1。2。1。1 芯片結構
1。2。1。2功耗與延遲時間
1。2。2ispLSI1016編程接口和編程
1。編程接口
2。編程下載操作.1。2。1 ispLSI1016的結構ispLSI1016采用了電可擦除〔ElectricalErasable〕CMOS〔E2CMOS〕技術,由2000個PLD門組成,用PLCC塑料引線芯片載體封裝〔PlasticLeadChipCarrierPackage〕一。外部特性引腳圖:圖1—2,引腳44個5V供電,內部有:96個邏輯存放器。2000個PLD門3個時鐘輸入端: Y0-11,Y1-35,Y2-334個指定數(shù)據(jù)輸入腳: IN3-IN0〔2,36,24,14腳〕.1 32個I/O2 3個專用輸入〔DedicatedInput〕IN0,IN1,IN23 5個編程用引腳:(1)編程允許 ISPEN-13,(2)串行數(shù)據(jù)輸入和指定輸入 SDI/IN0 -14,(3)方式控制和輸入 MODE/IN2-36,(4)串行數(shù)據(jù)和指定輸出 SDO/IN1 -24,(5)串行時鐘 SCLK/Y2 -33..這5個編程用引腳是計算機與ispLSI之間通信的接口信號。計算機將已經設計好的邏輯方程或電路原理圖文件,按照一定的協(xié)議編譯通過后,轉換為JEDEC〔Join-ElectronicDeviceEngineeringCouncil電子器件工程聯(lián)合協(xié)會〕(熔絲圖文件)標準文件。通過這5個編程引腳把擴展名為.JED(熔絲圖文件)的文件下載到〔DownLoad〕ispLSI器件中。.4 指定時鐘輸入引腳 Y05 時鐘輸入和復位輸入引腳 Y1/RESET.第1章在系統(tǒng)可編程集成電路根底
1。1概述
1。2在系統(tǒng)可編程邏輯器件的結構
1。2。1ispLSI1016的結構
1。2。1。1 芯片結構
1。2。1。2功耗與延遲時間
1。2。2ispLSI1016編程接口和編程
1。編程接口
2。編程下載操作.1。2。1。1 芯片結構ispLSI1016邏輯器件從結構上看:是由以下5個大局部組成:16個通用邏輯塊 GLB(GenericLogicBlock),輸出布線區(qū) ORP〔OutputRoutingPool〕,全局布線區(qū) GRP〔GlobalRoutingPool〕,輸入\輸出單元 (I\OCell)時鐘分配網絡 CDN〔ClockDistributionNetwork〕ispLSI1016邏輯器件共有兩個組合模塊〔Megablock〕。每個組合模塊由5個局部組成:8個GLB (GenericLogicBlock),1個ORP (OutputRoutingPool),16個輸入\輸出單元 (I\OCell)2個專用輸入 (DedicatedInput)1個公共乘積項輸出使能.1。通用邏輯塊GLB(GenericLogicBlock)每個GLB含有18個輸入信號,4個輸出信號GLB主要由4個局部組成:1〕與陣列2〕乘積共享陣列PTSA〔ProductTermSharingArray〕3〕輸出邏輯宏單元〔OutputLogicMacroCell〕4〕邏輯控制單元.1〕與陣列〔20個與項〕 16個輸入 來源于全局布線區(qū)GRP〔Global RoutingPool〕,即可以來自 于外引腳也可以來自于反響信號。 2個輸入 來源于專用的輸入〔DedicatedInput〕引腳。2〕或陣列〔乘積共享區(qū)〕4個或門,有4種連接模式:
〔1〕標準模式: 圖1—5,或門起作用,可靈活連接到輸出。 〔2〕直通模式: GLB乘積項的直通模式 圖1—7,將乘積項的輸出直接連接到GLB,速度快。 〔3〕異或邏輯模式: 圖1—8,利用異或門和D觸發(fā)器可以構成T,JK觸發(fā)器;組成計數(shù)器,累加器,比較器等。 〔4〕混合模式:〔2〕和〔3〕兩種模式的組合: 圖1—9,時鐘分配網絡控制可來自:CLK0,CLK1,CLK2,或GLB中的任意一個乘積項。.3〕輸出邏輯宏單元OLMC 〔OutputLogicMacroCell〕可使或門的輸出經過各種連線模式,最終通過多路選擇器送到輸出端。4〕邏輯控制單元。通用邏輯塊GLB中的觸發(fā)時鐘由CDN提供;通用邏輯塊GLB中的觸發(fā)復位信號RESET來源于RESET腳和一個乘積項產生。.2。輸出布線區(qū)〔ORP〕見圖1—10功能:用于輸出控制。任何一個GLB的輸出端都能夠通過輸出布線區(qū)〔ORP〕與I/O相連,將各GLB的輸出靈活的連接到輸出管腳上。即可實現(xiàn)不改變芯片引腳的外部連線,通過修改輸出布線區(qū)的布線邏輯,使該引腳的輸出信號符合設計要求。注意:連接有限制;如A0的Q0只能接I/O0,4,8,12?!布创娣牌鲀鹊奈恢庙樞虿蛔儭?3。全局布線區(qū)〔GRP〕見圖1—11功能:將GLB的輸出或I/O管腳的輸入信號靈活的連接到GLB的各輸入端。.4。輸入輸出單元〔I/OCELL〕結構:見圖1—12將I/OPin定義為輸出時:I/O單元的輸入信號來源于ORP;將I/OPin定義為輸入時:I/O單元將引腳輸入信號送到GRP。幾種輸入輸出結構:見圖1—13.5。時鐘分配網絡:見圖1—14功能:接受3個時鐘輸入Y2,Y1,Y0產生5個時鐘輸出CLK0,1,2,IOCLK0,1.第1章在系統(tǒng)可編程集成電路根底
1。1概述
1。2在系統(tǒng)可編程邏輯器件的結構
1。2。1ispLSI1016的結構
1。2。1。1 芯片結構
1。2。1。2功耗與延遲時間
1。2。2ispLSI1016編程接口和編程
1。編程接口
2。編程下載操作.1。2。1。2功耗與延遲時間1。功耗:與工作速度與使用的乘積項有關。見圖1—162。延遲時間與傳輸路徑及負載有關。見圖1—18.第1章在系統(tǒng)可編程集成電路根底
1。1概述
1。2在系統(tǒng)可編程邏輯器件的結構
1。2。1ispLSI1016的結構
1。2。1。1 芯片結構
1。2。1。2功耗與延遲時間
1。2。2ispLSI1016編程接口和編程
1。編程接口
2。編程下載操作.1。2。2ispLSI1016編程接口和編程1。編程接口編程下載:指源程序經編譯形成的熔絲圖文件.JEDEC。PC機通過25芯并行通信電纜和編程器接口電路相連,傳送到ispLSI芯片中的E2CMOS,以便保存信息。編程緩沖接口電路見圖1—19.主機一側:25針并行接口,使用其中8根連線經扁平電纜接編程接口電路ispLSI芯片一側接6個管腳多個芯片可共用一個接口,形成串行連接。見圖1—20.ISP菊花鏈下載軟件ISP菊花鏈是基于Windows環(huán)境的可編程工具,在一個鏈路上可編程達100個ISP器件。軟件包括混合的5V、3.3V的ISP和ispJATG編程能力。使用者可以對芯片進行單路或多路編程,對鏈上所有器件編程的時間僅為其中最長的器件的編程時間。內部的ispATE編程工具是完全集成化的且允許用ATE設備快速編程。.編程控制信號有:〔1〕ispEN 在系統(tǒng)可編程容許〔2〕SCLK〔SerialClock〕,作為內部移位存放器的時鐘〔3〕SDI〔SerialDataInput〕〔4〕SDO〔SerialDataOutput〕〔5〕Mode 方式控制信號.第1章在系統(tǒng)可編程集成電路根底
1。1概述
1。2在系統(tǒng)可編程邏輯器件的結構
1。2。1ispLSI1016的結構
1。2。1。1 芯片結構
1。2。1。2功耗與延遲時間
1。2。2ispLSI1016編程接口和編程
1。編程接口
2。編程下載操作.2。編程下載操作ispLSI芯片有兩種工作狀態(tài):ISPEN=1:非編輯狀態(tài)〔NormalState〕使ispLSI芯片處于非編輯狀態(tài),其它4個編程信號可作為輸入信號使用。ISPEN=0:編輯狀態(tài)〔EditState〕編程操作受到片內的狀態(tài)機〔StateMachine〕控制,該狀態(tài)機有3個狀態(tài):空閑狀態(tài),移位狀態(tài),執(zhí)行狀態(tài)。根據(jù)控制信號Mode和SDI的狀態(tài),狀態(tài)機決定:是停留在現(xiàn)狀態(tài);還是轉移到下一個狀態(tài)。.編程狀態(tài)下共3種狀態(tài):見圖1—211。空閑狀態(tài)〔IdleState〕:MODE=1SDI=0:識別可編程芯片的型號,將可編程芯片的識別碼裝入移位存放器。MODE=0在時鐘信號的作用下,從SDO送出識別碼數(shù)據(jù)。MODE=1SDI=1:轉到命令移位狀態(tài)。.2。移位狀態(tài)〔ShiftState〕:串行接受指令MODE=0,且在串行時鐘信號的配合下將操作命令送到狀態(tài)機;操作命令送到狀態(tài)機后;①當MODE=1SDI=1:轉到命令執(zhí)行狀態(tài)。②MODE=1SDI=0:狀態(tài)機轉到空閑狀態(tài)。3。執(zhí)行狀態(tài)〔ExecuteState〕:MODE=0,且在串行時鐘信號的配合下狀態(tài)機開始執(zhí)行在移位狀態(tài)裝入的操作命令。MODE=1SDI=1:轉到移位狀態(tài),接受新的命令。MODE=1SDI=0:狀態(tài)機轉到空閑狀態(tài)。.4 操作命令編程命令由5位二進制組成,可表示17種不同的操作:全擦除,局部擦除,移位,校驗,編程,編程加密,寫入等.第四節(jié)ISP開發(fā)軟件SYNARIO的使用一。新建工程:P23–2二。選擇器件:P23–3三。建立源文件:P23–4四。編輯修改源文件:雙擊或翻開.五。編譯源文件:P25—7六。連接,驗證,生成JED文件:P25—8七。下載JED文件到芯片中:P25—9八。調試:連接輸入信號:實驗臺開關。連接輸出信號:實驗臺喇叭,LED燈。.第2章硬件描述語言VHDL根底2。1概述2.2VHDL語言的語法規(guī)那么 2.2.1標識符 2.2.2數(shù)據(jù)對象 2.2.3數(shù)據(jù)類型 2.2.4VHDL運算符.2。1概述傳統(tǒng)數(shù)字電路設計方法不適合設計大規(guī)模的系統(tǒng)。工程師不容易理解原理圖設計的功能。眾多軟件公司開發(fā)研制了具有自己特色的電路硬件描述語言HDL〔HardwareDescriptionLanguage〕,存在著很大的差異,工程師一旦選用某種硬件描述語言作為輸入工具,就被束縛在這個硬件設計環(huán)境之中。因此,硬件設計需要一種強大的、標準化的硬件描述語言,作為可相互交流的設計環(huán)境。.美國國防部在80年代初提出了VHSIC〔VeryHighSpeedIntegratedCircuit〕方案,其目標之一是為下一代集成電路的生產,實現(xiàn)階段性的工藝極限以及完成10萬門級以上的設計,建立一項新的描述方法。1981年提出了一種新的HDL,稱之為VHSICHardwareDescriptionLanguage,簡稱為VHDL。這種語言的成就有兩個方面:描述復雜的數(shù)字電路系統(tǒng);成為國際的硬件描述語言標準。.主要術語與概念VHDL是VHSIC(VeryHighSpeedIntegratedCircuit)HardwareDescriptionLanguage的縮寫。VHDL語言可描述一個數(shù)字電路的輸入、輸出以及相互間的行為與功能,而其硬件關聯(lián)性的語法與形式雖類似于一般程序語言,但是涵蓋許多與硬件關聯(lián)的語法構造,它特有的層次性設計語法結構適合大型設計工程的團隊合作,是目前最通用的硬件描述語言。.硬件描述語言〔HDL〕:即可以描述硬件電路的功能、信號連接關系及定時關系的一種語言。目前,VHDL和Verilog已先后成為IEEE標準硬件描述語言。硬件描述語言〔HDL〕的特點:可以借鑒高級編程語言的功能特性對硬件電路的行為和結構進行高度抽象化和標準化的描述;同時,還可以對硬件電路的設計進行不同層次、不同領域的模擬驗證和綜合優(yōu)化等處理,從而使硬件電路的設計到達高度自動化。.VHDL的優(yōu)點1.用于設計復雜的、多層次的設計,支持設計庫和設計的重復使用;2.與硬件獨立,一個設計可用于不同的硬件結構,而且設計時不必了解過多的硬件細節(jié);3.有豐富的軟件支持VHDL的綜合和仿真,從而能在設計階段就能發(fā)現(xiàn)設計中的Bug,縮短設計時間,降低本錢;4.VHDL有良好的可讀性,容易理解。.VHDL的應用VHDL是由美國國防部(DOD)制定,以作為各合同商之間提交復雜電路設計文檔的一種標準方案.現(xiàn)在VHDL被廣泛用于:電路設計的文檔記錄設計描述的邏輯綜合電路仿真1995年我國技術監(jiān)督局制定的?CAD通用技術標準?推薦VHDL作為我國電子設計自動化硬件描述語言的國家標準。至此,VHDL在我國迅速普及,現(xiàn)在已成為從事硬件電路設計開發(fā)人員所必須掌握的一門技術。.學習VHDL的幾點重要提示1.了解VHDL的可綜合性問題:VHDL有兩種用途:系統(tǒng)仿真和硬件實現(xiàn)。如果程序只用于仿真,那么幾乎所有的語法和編程方法都可以使用。 但如果我們的程序是用于硬件實現(xiàn)〔例如:用于FPGA設計〕,那么我們就必須保證程序“可綜合〞〔程序的功能可以用硬件電路實現(xiàn)〕。 不可綜合的VHDL語句在軟件綜合時將被忽略或者報錯。 應當牢記:“所有的VHDL描述都可以用于仿真,但不是所有的VHDL描述都能用硬件實現(xiàn)。〞.2.用硬件電路設計思想來編寫VHDL:學好VHDL的關鍵是充分理解VHDL語句和硬件電路的關系。編寫VHDL,就是在描述一個電路,我們寫完一段程序以后,應當對生成的電路有一些大體上的了解,而不能用純軟件的設計思路來編寫硬件描述語言。
要做到這一點,需要多實踐,多思考,多總結。.3.語法掌握貴在精,不在多。30%的根本VHDL語句就可以完成95%以上的電路設計,很多生僻的語句并不能被所有的綜合軟件所支持,在程序移植或者更換軟件平臺時,容易產生兼容性問題,也不利于其他人閱讀和修改。建議多用心鉆研常用語句,理解這些語句的硬件含義,這比多掌握幾個新語法要有用的多。.VHDL與原理圖輸入法的關系
VHDL和傳統(tǒng)的原理圖輸入方法的關系就好比是高級語言和匯編語言的關系。VHDL的可移植性好,使用方便,但效率不如原理圖;原理圖輸入的可控性好,效率高,比較直觀,但設計大規(guī)模CPLD/FPGA時顯得很煩瑣,移植性差。在真正的PLD/FPGA設計中,建議采用原理圖和VHDL結合的方法來設計,適合用原理圖的地方就用原理圖,適合用VHDL的地方就用VHDL,并沒有強制的規(guī)定。在最短的時間內,用自己最熟悉的工具設計出高效,穩(wěn)定,符合設計要求的電路才是最終目的。.VHDL開發(fā)流程用VHDL語言開發(fā)PLD/FPGA的完整流程為:1.文本編輯:用任何文本編輯器都可以進行,也可以用專用的VHDL編輯環(huán)境。通常VHDL文件保存為.vhd文件。2.功能仿真:將文件調入VHDL仿真軟件進行功能仿真,檢查邏輯功能是否正確〔也叫前仿真,對簡單的設計可以跳過這一步,只在布線完成以后,進行時序仿真〕.3.邏輯綜合: 將源文件調入邏輯綜合軟件進行綜合,即把語言綜合成最簡的布爾表達式和信號的連接關系。邏輯綜合軟件會生成.edf〔edif〕的EDA工業(yè)標準文件。4.布局布線:將.edf文件調入PLD廠家提供的軟件中進行布線,即把設計好的邏輯安放到PLD/FPGA內。5.時序仿真:需要利用在布局布線中獲得的精確參數(shù),用仿真軟件驗證電路的時序?!惨步泻蠓抡妗?6.編程下載:確認仿真無誤后,將文件下載到芯片中通常以上過程都可以在PLD/FPGA廠家提供的開發(fā)工具〔如MAXPLUSII,F(xiàn)oundation,ISP〕中完成,但許多集成的PLD開發(fā)軟件只支持VHDL的子集,可能造成少數(shù)語法不能編譯,如果采用專用VHDL工具分開執(zhí)行,效果會更好,否那么這么多出售專用VHDL開發(fā)工具的公司就沒有存在的理由了。.VHDL與計算機語言的區(qū)別1. 運行的根底不同: 計算機語言是在CPU+RAM構建的平臺上運行; VHDL設計的結果是由具體的邏輯、觸發(fā)器組成的數(shù)字電路。2. 執(zhí)行方式不同: 計算機語言根本上以串行的方式執(zhí)行; VHDL在總體上是以并行方式工作;3. 驗證方式不同 計算機語言主要關注于變量值的變化; VHDL要實現(xiàn)嚴格的時序邏輯關系;.數(shù)字系統(tǒng)自動設計流程圖概念設計系統(tǒng)設計和描述系統(tǒng)劃分子系統(tǒng)功能描述綜合邏輯描述版圖綜合版圖描述芯片制造測試封裝功能驗證系統(tǒng)驗證功能驗證功能驗證設計者.2.2VHDL語言的語法規(guī)那么
2.2.1標識符
2.2.2數(shù)據(jù)對象
2.2.3數(shù)據(jù)類型
2.2.4VHDL運算符.標識符規(guī)那么:標識符規(guī)那么是在書寫VHDL程序時的一般文字規(guī)那么。根本標識符由字母、數(shù)字以及下劃線字符組成,且具有以下特征要求:●第一個字符必須是字母;●最后一個字符不能是下劃線;●不允許連續(xù)兩個下劃線;●在標識符中大、小寫字母是等效的。●VHDL中的注釋文字一律為2個連續(xù)的連接線“--〞,可以出現(xiàn)在任一語句后面,也可以出現(xiàn)在獨立行;●VHDL的保存字〔關鍵字〕不能用于標識符;2.2.1標識符〔Identifiers〕.如下標識符是非法的:_tx_clk8B10Blarge#numberlink__barselectrx_clk_例如:如下標識符是合法的: tx_clk Three_state_Enable sel7D HIT_1124--標識符必須起始于字母--只能是字母、數(shù)字、下劃線--不能有連續(xù)兩個下劃線--關鍵字〔保存字〕不能用于標識符--最后字符不能是下劃線.2.2VHDL語言的語法規(guī)那么2.2.1標識符2.2.2數(shù)據(jù)對象 1常量〔CONSTANT〕2信號〔SIGNAL〕3變量〔VARIABLE〕2.2.3數(shù)據(jù)類型2.2.4VHDL運算符.2.2.2數(shù)據(jù)對象〔DataObjects〕在VHDL中,數(shù)據(jù)對象是可以賦予一個值的客體。常用的數(shù)據(jù)對象為常量、變量和信號,在使用前必須給予說明。1常量〔CONSTANT〕常量是指在設計描述中不會變化的值。在VHDL描述中,一般用常量名代替數(shù)值,便于修改程序。在綜合后,連接到電源和地。可在Library、Entity、Architecture、Process中進行定義,其有效范圍也相應限定。常量說明語句的一般格式為:
CONSTANT常量名{,常量名}:數(shù)據(jù)類型:=取值;例如:CONSTANTwidth:integer:=8;常量所賦值和定義的數(shù)據(jù)類型應一致。常量一旦賦值就不能再改變。.2.2VHDL語言的語法規(guī)那么2.2.1標識符2.2.2數(shù)據(jù)對象 1常量〔CONSTANT〕2信號〔SIGNAL〕3變量〔VARIABLE〕2.2.3數(shù)據(jù)類型2.2.4VHDL運算符.2信號〔SIGNAL〕信號是電子電路內部硬件實體相互連接的抽象表示。信號能夠代表連線,也可是內連元件;信號沒有方向性,也可當作輸入。端口〔Port〕也是信號??山o它賦值, 用:=表示直接賦值 用<=表示信號賦值信號說明語句的格式為:
SIGNAL信號名{,信號名}:數(shù)據(jù)類型[:=初始值];信號包括I/O引腳信號以及IC內部緩沖信號,有硬件電路與之對應,故信號之間的傳遞有實際的附加延時。信號通常在Entity中和Architecture中定義;信號不能在進程中說明〔但可以在進程中使用〕。.硬件中的信號總是同時工作的,即信號同時在各個模塊中流動,這就是硬件電路的并發(fā)性。VHDL表達了實際電路中信號“同時〞流動的這種根本特性。信號賦值語句格式為:目標信號名
<=表達式;賦值語句中的表達式必須與目標信號具有相同的數(shù)據(jù)類型。.2.2VHDL語言的語法規(guī)那么2.2.1標識符2.2.2數(shù)據(jù)對象 1常量〔CONSTANT〕2信號〔SIGNAL〕3變量〔VARIABLE〕2.2.3數(shù)據(jù)類型2.2.4VHDL運算符.3變量〔VARIABLE〕變量是暫存數(shù)據(jù)的量。變量說明語句的格式是:
VARIABLE變量名{,變量名}:數(shù)據(jù)類型[:=初始值];例如:VARIABLEcount:INTEGERRANGE0TO99:=0變量是一個局部量,它只用于進程和子程序。變量必須在進程或子程序〔Process和Function中定義〕的說明區(qū)域中加以說明,只能在并只在其內部有效。變量賦值是直接的、非預設的,它在某一時刻僅包含一個值。變量的賦值立即生效,不存在延時行為。臨時數(shù)據(jù),沒有物理意義;要使其全局有效,先轉換為Signal。賦值語句中的表達式必須與目標變量具有相同的數(shù)據(jù)類型。變量賦值語句格式為:目標變量名
:=表達式;.信號和變量的主要區(qū)別:1.
變量是一個局部量,只能用于進程或子程序中;
信號是一個全局量,它可以用來進行進程之間的通信。2.變量賦值立即生效,不存在延時行為;
信號賦值具有非立即性,信號之間的傳遞具有延時性。4.信號賦值可以出現(xiàn)在進程中,也可以直接出現(xiàn)在結構體中,但它們的運行含義不同:前者屬順序信號賦值,此時的賦值操作要視進程是否已被啟動;后者屬并行信號賦值,其賦值操作是各自獨立并行發(fā)生的。3.變量用作進程中暫存數(shù)據(jù)的單元;
信號用作電路中的信號連線。.5.在進程中變量和信號的賦值形式與操作過程不同:在變量的賦值語句中,該語句一旦被執(zhí)行,其值立即被賦予變量。在執(zhí)行下一條語句時,該變量的值即為上一句新賦的值。在信號的賦值語句中,該語句即使被執(zhí)行,其值不會使信號立即發(fā)生代入,在下一條語句執(zhí)行時,仍使用原來的信號值。直到進程結束之后,所有信號賦值的實際代入才順序進行處理。因此,實際代入過程和賦值語句的執(zhí)行是分開進行的。如例1所示。.例1信號和變量值代入的區(qū)別舉例
PROCESS(a,b,c,d)
BEGIN d<=a; x<=b+d; d<=c; y<=b+d;
ENDPROCESS;結果: x<=b+c; y<=b+c;
PROCESS(a,b,c)
VARIABLEd:std_logic_vector(3downto0);
BEGIN d:=a; x<=b+d; d:=c; y<=b+d;
ENDPROCESS;結果: x<=b+a; y<=b+c;當進程運行時,信號賦值將自上而下順序執(zhí)行,但第一項賦值操作并不會發(fā)生,這是因為信號賦值是在進程結束時才起作用。因為在進程結束更新時,d的最后一個賦值為c,因此執(zhí)行結果為該式。.2.2VHDL語言的語法規(guī)那么
2.2.1標識符
2.2.2數(shù)據(jù)對象
2.2.3數(shù)據(jù)類型
2.2.4VHDL運算符.2.2.3數(shù)據(jù)類型VHDL是一種類型型很強的語言。不同類型之間的轉換必須用類型轉換函數(shù).對象的數(shù)據(jù)類型定義了該對象可以具有的值和對該對象可以進行運算的限制。在VHDL中,這種限制是被強制執(zhí)行的。VHDL提供了多種標準的數(shù)據(jù)類型。在VHDL描述中,每個信號、常量、變量都要指定它的數(shù)據(jù)類型,以確定它能保持那一類數(shù)據(jù)。VHDL對數(shù)據(jù)類型的定義相當嚴格,在進行賦值或數(shù)據(jù)類型變換過程中都要進行類型檢查。VHDL不允許不同類型的數(shù)值相互賦值或使用類型不允許的運算符進行運算。這種特性可以幫助設計者在設計前期發(fā)現(xiàn)錯誤。定義數(shù)據(jù)類型IEEE預定義的標準邏輯數(shù)據(jù)類型用戶自定義的數(shù)據(jù)類型數(shù)據(jù)類型的轉換5.屬性(Attributes).2.2VHDL語言的語法規(guī)那么2.2.1標識符2.2.2數(shù)據(jù)對象2.2.3數(shù)據(jù)類型 1.定義數(shù)據(jù)類型 2IEEE預定義的標準邏輯數(shù)據(jù)類型 3.用戶自定義的數(shù)據(jù)類型 4。數(shù)據(jù)類型的轉換 5屬性〔Attributes〕2.2.4VHDL運算符.1.定義數(shù)據(jù)類型
VHDL提供的10種標準數(shù)據(jù)類型?!?〕Real〔實數(shù)〕。取值范圍為-1.0E+38~+1.0E+38。和整數(shù)一樣,實數(shù)能被約束。由于實數(shù)運算需要大量的資源,因此綜合工具常常并不支持實數(shù)類型?!?〕Bit〔位〕。只有兩種取值,即0和1,可用于描述信號的取值?!?〕Bit_Vector〔位矢量〕。是用雙引號括起來的一組數(shù)據(jù),每位只有兩種取值:0和1。在其前可加數(shù)制標記,如X〔16進制〕、B〔2進制、默認〕、O〔8進制〕等。位矢量常用于表示總線的狀態(tài)?!?〕Integer〔整數(shù)〕。取值范圍為-〔231-1〕~〔231-1〕。一個整數(shù)類型和要被綜合進邏輯的信號或變量在其范圍上應有約束。例如: variablea:integerrange–255to255;整數(shù)可通過語句內帶符號矢量來表達給綜合工具。.〔5〕Boolean〔布爾量〕。又稱邏輯量。有“真〞、“假〞兩種狀態(tài)分別用TRUE和FALSE標記。用于關系運算和邏輯運算〔6〕Character〔字符〕。是用單引號括起來的一個字母、數(shù)字、空格或一些特殊字符〔如$、@、%等〕。字符區(qū)分大、小寫字母?!?〕String〔字符串〕。是用雙引號括起來的一個字符序列。字符串區(qū)分大、小寫字母。常用于程序的提示和結果說明等?!?〕Time〔時間〕。時間取值范圍從-〔231-1〕~〔231-1〕。時間由整數(shù)值、一個以上空格以及時間單位組成。常用的時間單位有:fs、ns、μs、ms、s、min、hr等。時間常用于指定時間延時和標記仿真時刻。.上述10種數(shù)據(jù)類型是VHDL中標準的數(shù)據(jù)類型,在編程時可以直接引用。如果用戶需使用其它的數(shù)據(jù)類型,那么必須進行自定義?!?〕Natural〔自然數(shù)〕和Positive〔正整數(shù)〕。是整數(shù)類型的子類型。自然數(shù)取值范圍為0~〔231-1〕;正整數(shù)是大于0的整數(shù)?!?0〕SeverityLevel〔錯誤等級〕。錯誤等級分為:NOTE(注意)、WARNING〔警告〕、ERROR〔出錯〕、FAILURE〔失敗〕四級,用于提示系統(tǒng)的錯誤等級。.數(shù)據(jù)類型含義整數(shù)整數(shù)32位,取值范圍:-(231-1)~(231-1)實數(shù)浮點數(shù),取值范圍:-1.0e+38~1.0e+38位邏輯’0’或’1’位矢量位矢量,用雙引號括起來的一組數(shù)據(jù)布爾量邏輯“真”或“假”,用TRUE和FALSE標記字符ASCII字符字符串字符矢量時間時間單位fs,ps,ns,μs,ms,sec,min,hr自然數(shù)、正整數(shù)整數(shù)的子集:自然數(shù)取值范圍為0~(231-1);正整數(shù)是大于0的整數(shù)錯誤等級Note,warning,error,failure標準數(shù)據(jù)類型.2.2VHDL語言的語法規(guī)那么2.2.1標識符2.2.2數(shù)據(jù)對象2.2.3數(shù)據(jù)類型 1.定義數(shù)據(jù)類型 2IEEE預定義的標準邏輯數(shù)據(jù)類型 3.用戶自定義的數(shù)據(jù)類型 4。數(shù)據(jù)類型的轉換 5屬性〔Attributes〕2.2.4VHDL運算符.2IEEE預定義的標準邏輯數(shù)據(jù)類型IEEE庫STD_LOGIC_1164程序包中定義的STD_LOGIC類型和STD_LOGIC_VECTOR類型。STD_LOGIC類型的數(shù)據(jù)可以具有九種取值,其含義如下: ’U’:初始值 ’X’:不定態(tài) ’0’:強制0 ’1’:強制1 ’Z’:高阻態(tài) ’W’:弱信號不定態(tài) ’L’:弱信號0 ’H’:弱信號1 ’_’:不可能情況〔可忽略值〕 其中,“X〞方便了系統(tǒng)仿真,“Z〞方便了雙向總線的描述。該類型能比較全面地包括數(shù)字電路中信號會出現(xiàn)的幾種狀態(tài),因此一般情況把這種類型代替bit..2.2VHDL語言的語法規(guī)那么2.2.1標識符2.2.2數(shù)據(jù)對象2.2.3數(shù)據(jù)類型 1.定義數(shù)據(jù)類型 2IEEE預定義的標準邏輯數(shù)據(jù)類型 3.用戶自定義的數(shù)據(jù)類型 4。數(shù)據(jù)類型的轉換 5屬性〔Attributes〕2.2.4VHDL運算符.3.用戶自定義的數(shù)據(jù)類型VHDL允許用戶自己定義數(shù)據(jù)類型。常用的用戶自定義數(shù)據(jù)類型主要有:〔1〕枚舉〔Enumerated〕〔Enumeration〕類型。通過列舉某類變量所有可能的取值來加以定義。對這些取值,一般使用自然語言中有相應含義的單詞或字符序列來代表,以便于閱讀和理解。自定義數(shù)據(jù)類型說明語句的一般格式是:
TYPE數(shù)據(jù)類型名{,數(shù)據(jù)類型名}IS[數(shù)據(jù)類型定義];枚舉類型定義的格式為:TYPE數(shù)據(jù)類型名IS〔元素1,元素2,…〕;該數(shù)據(jù)類型括號中的值自左向右按升序排列,中間用逗號分隔。在VHDL中,對其中每一個元素都賦予一個位置編號,最左邊的元素開始記為“0〞,向右依次遞增“1〞。這為“屬性〞提供了一個訪問位置編號的機制。.例如,在程序包STD_LOGIC_1164中對STD_LOGIC的定義為TYPESTD_LOGICIS('U','X','0','1','Z','W','L','H','_');〔2〕數(shù)組〔ARRAY〕類型。又稱為向量,是多個相同類型的數(shù)據(jù)集合。它可以是二維和多維的。一般用于定義數(shù)據(jù)總線、地址總線等。數(shù)組類型定義的格式為:TYPE數(shù)據(jù)類型名ISARRAY〔范圍〕OF元素類型名;范圍一項規(guī)定數(shù)組下標的類型和范圍。默認的下標類型是整型,但也可以使用其它數(shù)據(jù)類型,這就需要在范圍中標明下標的類型。例如:TYPEcount1ISARRAY(STD_LOGIC'_'DOWNTO'U')
OFINTEGER;多維數(shù)組需要用兩個以上的范圍來描述,而且多維數(shù)組不能生成邏輯電路,因此只能用于生成仿真圖形及硬件的抽象模型。.(3)紀錄(RECORD)類型。
是多個不同類型的數(shù)據(jù)集合。具有模型抽象能力,用于描述一個功能模塊。紀錄類型定義的格式為:
TYPE數(shù)據(jù)類型名ISRECORD 元素名:數(shù)據(jù)類型名; 元素名:數(shù)據(jù)類型名;……
ENDRECORD;紀錄適用于描述總線、仿真等。對于記錄類型的對象進行單元素賦值時,可在記錄類型對象名后加點“.〞,然后再加賦值元素的元素名。.〔4〕時間〔TIME〕類型〔物理類型〕。表示時間的數(shù)據(jù)類型,在仿真時是必不可少的。時間類型定義的一般格式為: TYPE數(shù)據(jù)類型名IS范圍; UNITS根本單位; 單位; ENDUNITS;.例如:TYPEtimeISrange–1e18TO1e18; UNITSfs; ps=1000fs; ns=1000ps; μs=1000ns; ms=1000μs; set=1000ms; min=60set; hr=60min; ENDUNITS;這里的根本單位是“fs〞。時間是物理類型的數(shù)據(jù),當然對容量、阻抗值也可以做定義。.〔5〕子類型〔SYBTYPE〕。子類型是一個具有限制條件的類型,通常用來定義具有一定限制條件的根本類型的數(shù)據(jù)對象。子類型定義的一般格式為:
SYBTYPE子類型名IS數(shù)據(jù)類型名[約束范圍];例如:如下Byte被定義作為一個子類型,而后數(shù)據(jù)對象被定義為附屬于該子類型。 SYBTYPEByteISBit_Vector(7downto0); SIGNALByte1,Byte2:Byte; SIGNALData1,Data2:Byte; SIGNALAddr1,Addr2:Byte;.2.2VHDL語言的語法規(guī)那么2.2.1標識符2.2.2數(shù)據(jù)對象2.2.3數(shù)據(jù)類型 1.定義數(shù)據(jù)類型 2IEEE預定義的標準邏輯數(shù)據(jù)類型 3.用戶自定義的數(shù)據(jù)類型 4。數(shù)據(jù)類型的轉換 5屬性〔Attributes〕2.2.4VHDL運算符.4。數(shù)據(jù)類型的轉換在VHDL程序中,不同類型的對象不能代入,因此要進行類型轉換。類型轉換的方法有:〔1〕類型標記法。用類型名稱來實現(xiàn)關系密切的標量類型之間的轉換。例如: VARIABLEx:INTEGER; VARIABLEy:REAL;使用類型標記〔即類型名〕實現(xiàn)類型轉換時,可采用賦值語句: x:=INTEGER(y);y:=REAL(x)。.〔2〕類型函數(shù)法。VHDL程序包中提供了多種轉換函數(shù),使得某些類型的數(shù)據(jù)之間可以相互轉換,以實現(xiàn)正確的賦值操作。常用的類型轉換函數(shù)有:★CONV_INTEGER():將STD_LOGIC_VECTOR類型轉換成INTEGER類型?!顲ONV_STD_LOGIC_VECTOR():將INTEGER類型、UNSIGNED類型或SIGNED類型轉換成STD_LOGIC_VECTOR類型?!颰O_BIT():將STD_LOGIC類型轉換成BIT類型。★TO_BIT_VECTOR():將STD_LOGIC_VECTOR類型轉換BIT_VECTOR類型?!颰O_STD_LOGIC():將BIT類型轉換成STD_LOGIC類型?!颰O_STD_LOGIC_VECTOR():
將BIT_VECTOR類型轉換成STD_LOGIC_VECTOR類型。注意:引用時必須首先翻開庫和相應的程序包。該函數(shù)由STD_LOGIC_UNSIGNED程序包定義該函數(shù)由STD_LOGIC_ARITH程序包定義以下函數(shù)由STD_LOGIC_1164程序包定義.2.2VHDL語言的語法規(guī)那么2.2.1標識符2.2.2數(shù)據(jù)對象2.2.3數(shù)據(jù)類型 1.定義數(shù)據(jù)類型 2IEEE預定義的標準邏輯數(shù)據(jù)類型 3.用戶自定義的數(shù)據(jù)類型 4。數(shù)據(jù)類型的轉換 5屬性〔Attributes〕2.2.4VHDL運算符.5屬性〔Attributes〕VHDL沒有一般程序設計語言中那些運算類標準函數(shù),取而代之的是多種能反映和影響硬件行為的屬性。VHDL的屬性可分為數(shù)值類、函數(shù)類、信號類、類型類和范圍類等屬性。提供Entity、Architecture、Type和Signals的信息。有許多預定義的值、信號和范圍的屬性屬性的一般格式為:
Object′Attributes為獲取硬件設計中的一些有關信息〔各類工程特性〕而定義的內部函數(shù)某一工程的屬性或特征通常可以用一個值或一個表達式來表示;它可以通過VHDL的屬性描述語句加以訪問。.1.數(shù)值類屬性
數(shù)值類屬性用于返回數(shù)組、塊、或一般數(shù)據(jù)的有關值,如邊界、數(shù)組長度等?!?/p>
對一般數(shù)據(jù)屬性,返回函數(shù)的邊界值。其格式為
Object′LEFT; Object′RIGHT; Object′HIGH; Object′LOW;●
對于數(shù)組的數(shù)值屬性,返回數(shù)組的長度值。其格式為 Object′LENGTH;●
對于塊結構體的數(shù)值屬性,返回塊的信息。其格式為 Object′BEHAVIOR; Object′STRUCTURE;.例如:TYPEnumISARRAYRANGE7DOWNTO0;
VARIABLEi1,i2,i3,i4,M:INTEGER;BEGIN i1:=num′LEFT; --i1取得num的左邊界值7 i2:=num′RIGHT;--i2取得num的右邊界值0 i3:=num′HIGH; --i3取得num的上限值7 i4:=num′LOW; --i4取得num的下限值0M:=num′LENGTH;.2.函數(shù)類屬性函數(shù)類屬性是以函數(shù)形式為設計人員提供數(shù)據(jù)類型、數(shù)組、信號的相關信息的?!駭?shù)據(jù)類型的屬性函數(shù)。利用數(shù)組屬性可以獲得數(shù)組的區(qū)間,該屬性的格式為Object′SUCC〔X〕; --獲取X的下一個值Object′PRED〔X〕; --獲取X的前一個值Object′LEFTOF〔X〕; --獲取X的左邊值Object′RIGHTOF〔X〕;--獲取X的右邊值其中,“Object〞為數(shù)據(jù)類型名,X為其中的一個元素。例如:TYPEtimeIS(year,month,day,hour,min,sec);那么time′SUCC〔hour〕;--獲取元素hour的下一個值mintime′LEFTOF〔day〕;--獲取元素day的左邊值month.●數(shù)組的屬性函數(shù)。其格式為Object′LEFT〔n〕;--獲取索引號為n的區(qū)間左端邊界值Object′RIGHT〔n〕;--獲取索引號為n的區(qū)間右端邊界值Object′HIGH〔n〕;--獲取索引號為n的區(qū)間高端邊界值Object′LOW〔n〕;--獲取索引號為n的區(qū)間低端邊界值其中,“Object〞為數(shù)組名;n為多維數(shù)組中所定義的多維區(qū)間的序號。默認值n=1,表示對一維空間進行操作。.●信號的屬性函數(shù)。利用信號屬性可得到信號的行為和功能信息,其格式為Object′EVENT;--反映信號的值是否變化,是,那么返回為“真〞Object′ACTIVE;--反映信號是否活潑,是,那么返回為“真〞Object′LAST_EVENT;--反映從最近一次事件到現(xiàn)在經過 的時間,返回一個時間值Object′LAST_VALUE;--反映信號變化前的取值,并將 該歷史值返回Object′LAST_ACTIVE;--反映從最近一次活潑到現(xiàn)在經過 的時間,返回一個時間值需要注意的是:信號的事件〔Event〕和活潑〔Active〕是兩個不同的概念,必須嚴格區(qū)分。信號的活潑定義為信號值的任何變化。信號值由1變?yōu)?是一個活潑,而從1變?yōu)?也是一個活潑,唯一的準那么是發(fā)生了事情,這種情況被稱為一個事項處理〔Transaction〕。然而,信號的事件那么要求信號值發(fā)生變化。信號值從1變?yōu)?是一個事件,但從1變?yōu)?雖是一個活潑卻不是一個事件。所有的事件都是活潑,但并非所有的活潑都是事件。.例如:利用函數(shù)信號屬性檢查信號的建立時間。LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYdff1IS PORT(d,clk:INSTD_LOGIC; q:OUTSTD_LOGIC);ENDdff1;ARCHITECTUREsetup_time_checkOFdff1ISBEGINPROCESS(clk)BEGINIF(clk='1′)AND(clk′EVENT)THEN q<=d;ASSERT(d′LAST_EVENT>5ns)--條件為真,向下執(zhí)行REPORT“SETUPVIOLATION〞--條件為假,報告錯誤信息: 建立時間不符合要求SEVERITYERROR;--出錯等級:ERRORENDIF;ENDPROCESS;ENDsetup_time_check;.3.信號類屬性信號類屬性的作用對象是信號,其返回值也是一個信號。共有四種信號類屬性,分別是:●DELAYED(time),即延時。該屬性使受它作用的信號延時time所規(guī)定的值。如:a′DELAYED(5ns)即信號a延時5ns?!馭TABLE(time)。用于監(jiān)測信號在規(guī)定時間內的穩(wěn)定性。假設受它作用的信號在time所規(guī)定的時間內沒有發(fā)生事件,那么該屬性的結果為“TRUE〞?!馫UIET〔time〕。用于監(jiān)測信號在規(guī)定時間內的是否“安靜〞。假設受它作用的信號在time所規(guī)定的時間內沒有發(fā)生事情或事件〔Active或Event〕,那么該屬性的結果為“TRUE〞。●TRANSACTION。用于檢測信號的Active或Event。當Active或Event發(fā)生時,該屬性的值也將發(fā)生改變。.4.類型類屬性該屬性可獲得數(shù)據(jù)類型中的一個值。格式為:
Object′BASE其中,Object為數(shù)據(jù)類型名。例如:TYPEtimeIS(sec,min,hour,day,month,year);……a:=time′BASE′RIGHT;--a=yeara:=time′BASE′LEFT;--a=sec…….5.范圍類屬性該屬性的返回值是一個數(shù)據(jù)區(qū)間。其這兩個屬性功能相同,但得到的區(qū)間范圍是顛倒的。范圍類屬性的格式為:
Object′RANGE(n);Object′REVERSE
RANGE(n);.2.2VHDL語言的語法規(guī)那么
2.2.1標識符
2.2.2數(shù)據(jù)對象
2.2.3數(shù)據(jù)類型
2.2.4VHDL運算符.2.2.4VHDL運算符VHDL為構造計算數(shù)值的表達式提供了許多預定義算符。預定義算符共有四類運算符:〔1〕算術運算符:包括一元算術運算符和二元算術運算符。一元算術運算符包括:+〔正號〕、—〔負號〕、ABS〔求絕對值〕二元算術運算符包括:+、—、*、/、MOD〔求模〕、REM〔求余〕、**〔指數(shù)運算〕〔2〕關系運算符:它包括:=、/=、<、<=、>、>=〔3〕邏輯運算符:包括一元邏輯運算符和二元邏輯運算符。一元邏輯運算符包括:NOT二元邏輯運算符包括:AND、OR、NAND、NOR、XOR〔4〕并置運算符:&〔連接〕,用于將多個位連接成為位矢量。例如:DBUS<=D0&D1&D2&D3,即DBUS<=〔D0,D1,D2,D3〕。.上述四種運算符的優(yōu)先級順序為:NOT、ABS、**;REM、MOD、/、*;—(負)、+〔正〕;&、—(減)、+〔加〕;>=、<=、>、<、/=、=;XOR、NOR、NAND、OR、AND。需要注意的是:在編寫VHDL程序時,必須保證操作數(shù)的數(shù)據(jù)類型與運算符所要求的數(shù)據(jù)類型一致。VHDL中的操作符:●“<=〞賦值符:用于將數(shù)據(jù)傳給信號?!瘛埃?〞賦值符:用于將數(shù)據(jù)傳給變量。該賦值符也用于為信號、變量、常量等指定初值?!瘛?>〞符號:在WHEN語句中出現(xiàn),其含義是“THEN〔那么〕〞。.2。2。2數(shù)據(jù)對象信號(Signal) 用于聲明內部信號,而非外部信號。其在元件之間起互聯(lián)作用,可以賦值給外部信號。例如:ARCHITECTUREbehaviorofexampleis SIGNALcount: std_logic_vector(3downto0); SIGNALflag: integer; SIGNALmtag: integerrange0to15; SIGNALstag: integerrange100downto0;BEGIN-- mtagisa4-bitarray;MSBismtag(0);LSBismtag(3)-- stagisa7-bitarray;MSBisstag(6);LSBisstag(0)-- 總是在結構體(ARCHITECTURE)中聲明 信號也可在狀態(tài)機中表示狀態(tài)變量,如:ARCHITECTUREbehaviorofexampleis TYPEstatesis(state0,state1,state2,state3);BEGIN SIGNALmemread: states;--每個狀態(tài)(state0,state1,etc)代表一個獨有的狀態(tài)。.常量(Constant) 常量在設計描述中保持某一規(guī)定類型的特定值不變,例如:ARCHITECTUREbehaviorofexampleis CONSTANTwidth:integer:=8;BEGIN--搘idth〞是整數(shù)類型的常數(shù),其值為“8〞.變量(Variable) 變量只在給定的進程中用于聲明局部值,例如:PROCESS(s) VARIABLEresult:integer:=12;BEGIN--搑esult〞是初始值為“12〞的變量. --搑esult〞值可以在進程中被修改..數(shù)據(jù)對象應用實例ARCHITECTUREdata_objOFexampleIS
CONSTANTxdata:integer:=2;
SIGNALy:integerrange0to15; --y是4-bit數(shù)組 --y(0)是最高位(MSB,而y(3)是最低位(LSB)BEGIN PROCESS(s)
VARIABLEtmp:integer:=0; --tmp在進程中被初始化為0 BEGIN IFs='0'THENtmp:=3; ELSEtmp:=7;--立即賦值 ENDIF; y<=tmp+xdata;--將更新的tmp值與xdata相加 ENDPROCESS; ENDdata_obj;.端口類型(TYPE)包括以下幾種:integer 可用作循環(huán)的指針或常數(shù),
通常不用于I/O信號 例如: SIGNALcount :integerrange0to255 count<=count+1boolean 可取值慣RUE’(真)或慒ALSE’(假).std_logic 工業(yè)標準的邏輯類型,取值‘0’,‘1’,慩’,
和慫’--由IEEEstd1164標準定義std_logic_vector std_logic的組合,工業(yè)標準的邏輯類型VHDL是與類型高度相關的語言.不允許將一種信號類型賦予另一種信號類型.--eqcomp4isafourbitequalitycomparatorLibraryIEEE;useIEEE.std_logic_1164.all;entityeqcomp4isport(a,b:instd_logic_vector(3downto0);equal:outstd_logic);endeqcomp4;architecturedataflowofeqcomp4isbegin
equal<=‘1’whena=belse‘0’;Enddataflow;VHDL大小寫不敏感eqcomp4.vhd包實體構造體文件名和實體名一致每行;結尾關鍵字begin關鍵字end后跟實體名關鍵字end后跟構造體名庫.實體〔Entity〕描述此設計功能輸入輸出端口〔Port〕在層次化設計時,Port為模塊之間的接口在芯片級,那么代表具體芯片的管腳A[3..0]B[3..0]equalEntity
eqcomp4
isport(a,b:instd_logic_vector(3downto0);equal:outstd_logic);end
eqcomp4;.實體--端口的模式輸入〔Input〕輸出〔Output〕雙向〔Inout〕:可代替所有其他模式,但降低了程序的可讀性,一般用于與CPU的數(shù)據(jù)總線接口緩沖〔Buffer〕:與Output類似,但允許該管腳名作為一些邏輯的輸入信號〔結構體內再使用〕.Out與Buffer的區(qū)別Entitytest1isport(a:instd_logic;
b,c:outstd_logic);endtest1;architectureaoftest1isbeginb<=not(a);
c<=b;--Errorenda;Entitytest2isport(a:instd_logic;
b:bufferstd_logic;
c:outstd_logic
);endtest2;architectureaoftest2isbeginb<=not(a);
c<=b;enda;.結構體〔Architecture〕描述實體的行為結構體有三種描述方式行為描述(behavioral)數(shù)據(jù)流描述(dataflow)結構化描述(structural).結構體--行為描述Architecture
behavioral
ofeqcomp4is
begincomp:process(a,b)
begin
ifa=bthen equal<=‘1’;
else
equal<=‘0’;
endif;
endprocesscomp;end
behavioral;高層次的功能描述,不必考慮在電路中到底是怎樣實現(xiàn)的。.結構體--數(shù)據(jù)流描述
描述輸入信號經過怎樣的變換得到輸出信號Architecture
dataflow1
ofeqcomp4is
beginequal<=‘1’whena=belse‘0’;end
dataflow1;Architecture
dataflow2
ofeqcomp4is
beginequal<=not(a(0)xorb(0))andnot(a(1)xorb(1))andnot(a(2)xorb(2))andnot(a(3)xorb(3));end
dataflow2;當a和b的寬度發(fā)生變化時,需要修改設計,當寬度過大時,設計非常繁瑣.結構體--結構化描述architecture
struct
ofeqcomp4isbeginU0:xnor2port
map(a(0),b(0),x(0));U1:xnor2port
map(a(1),b(1),x(1));U2:xnor2port
map(a(2),b(2),x(2));U3:xn
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五版美發(fā)培訓學校師資聘用標準合同4篇
- 2025年度門面租賃合同電子版(含租金遞增與調整機制)
- 2025年度簽競業(yè)協(xié)議打工人財產保全及職業(yè)規(guī)劃合同
- 二零二五年度酒店前臺員工權益保障與勞動合同
- 二零二五年度超市與物流公司貨物扣點運輸合同
- 2025年度復雜地質條件頂管施工安全協(xié)議書
- 2025年度住宅室內裝修工程保修協(xié)議
- 2025年度簽競業(yè)協(xié)議打工人財產保全及心理支持合同
- 2025年度跆拳道青少年運動員培養(yǎng)合作協(xié)議
- 二零二五年度退休人員教育輔助教學勞務合同
- 2024年國家焊工職業(yè)技能理論考試題庫(含答案)
- 特魯索綜合征
- 《向心力》 教學課件
- 結構力學數(shù)值方法:邊界元法(BEM):邊界元法的基本原理與步驟
- 2024年山東省泰安市高考語文一模試卷
- 北師大版物理九年級全一冊課件
- 2024年第三師圖木舒克市市場監(jiān)督管理局招錄2人《行政職業(yè)能力測驗》高頻考點、難點(含詳細答案)
- RFJ 006-2021 RFP型人防過濾吸收器制造與驗收規(guī)范(暫行)
- 盆腔炎教學查房課件
- 110kv各類型變壓器的計算單
- 新概念英語課件NCE3-lesson15(共34張)
評論
0/150
提交評論