EDA技術(shù)與FPGA應(yīng)用設(shè)計 第三版 課件全套 第1-7、11章 可編程邏輯器件概述-綜合設(shè)計_第1頁
EDA技術(shù)與FPGA應(yīng)用設(shè)計 第三版 課件全套 第1-7、11章 可編程邏輯器件概述-綜合設(shè)計_第2頁
EDA技術(shù)與FPGA應(yīng)用設(shè)計 第三版 課件全套 第1-7、11章 可編程邏輯器件概述-綜合設(shè)計_第3頁
EDA技術(shù)與FPGA應(yīng)用設(shè)計 第三版 課件全套 第1-7、11章 可編程邏輯器件概述-綜合設(shè)計_第4頁
EDA技術(shù)與FPGA應(yīng)用設(shè)計 第三版 課件全套 第1-7、11章 可編程邏輯器件概述-綜合設(shè)計_第5頁
已閱讀5頁,還剩479頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

CPLD/FPGA應(yīng)用設(shè)計

教材和參考書教材:

《EDA技術(shù)與FPGA應(yīng)用設(shè)計》

參考資料:《EDA技術(shù)及應(yīng)用》譚會生西安電子科技大學(xué)出版社《EDA技術(shù)與VHDL》潘松科學(xué)出版社可編程邏輯器件(第1、2章)EDA開發(fā)軟件使用(第3章)VHDL硬件描述語言(第4-7章)教學(xué)內(nèi)容第1章可編程邏輯器件概述ASICPLD概述PLD設(shè)計與開發(fā)本章內(nèi)容:第1章可編程邏輯器件概述ASIC(ApplicationSpecificIntegratedCircuit):專用集成電路。PLD(programmablelogicdevice):可編程邏輯器件是一種由用戶根據(jù)自己要求來構(gòu)造邏輯功能的數(shù)字集成電路。PLD現(xiàn)已成為實現(xiàn)ASIC的一種非常重要、而又十分方便有效的手段。1.1.1數(shù)字邏輯電路設(shè)計方法

1.1數(shù)字邏輯電路設(shè)計與ASIC軟件邏輯設(shè)計(軟件組裝的LSI和VLSI,如微處理器、單片機(jī)等,系統(tǒng)功能由軟件設(shè)計實現(xiàn),是一種軟件的設(shè)計方法);

專用集成電路設(shè)計(ASIC),是根據(jù)用戶需要設(shè)計的集成電路,用戶需要通過軟件設(shè)計描述,用軟件設(shè)計硬件)。

硬件邏輯設(shè)計(由中小規(guī)模集成器件設(shè)計數(shù)字電路,即硬件設(shè)計硬件,設(shè)計方法在數(shù)字邏輯設(shè)計課程中講述);

1.1.2ASIC及其設(shè)計方法

ASIC是指專門為某一應(yīng)用領(lǐng)域或為專門用戶需要而設(shè)計制造的LSI或VLSI電路,它可以將某些專用電路或電子系統(tǒng)設(shè)計在一個芯片上,構(gòu)成單片集成系統(tǒng)。

按照功能的不同可分為:微波ASIC、模擬ASIC、數(shù)字ASIC。

1.1.2ASIC及其設(shè)計方法

ASIC設(shè)計方法可分為:全定制和半定制兩類。

全定制:全定制是一種基于晶體管級的設(shè)計方法,它主要針對要求得到最高速度、最低功耗和最省面積的芯片設(shè)計,其設(shè)計周期較長,設(shè)計成本較高,適用于對性能要求很高(如高速芯片)或批量很大的芯片(如存儲器、通用芯片)的設(shè)計生產(chǎn)。

1.1.2ASIC及其設(shè)計方法

半定制:一種約束性設(shè)計方法。約束的目的是簡化設(shè)計、縮短設(shè)計周期和提高芯片的產(chǎn)品率。主要有門陣列、標(biāo)準(zhǔn)單元和可編程器件(PLD)3種。

門陣列:是一種預(yù)先制造好的硅陣列(稱母片),內(nèi)部包括幾種基本邏輯門、觸發(fā)器等,芯片中留有一定的連線區(qū)。用戶根據(jù)所需要的功能設(shè)計電路,確定連線方式,然后再交生產(chǎn)廠家布線。

1.1.2ASIC及其設(shè)計方法

標(biāo)準(zhǔn)單元:是以預(yù)先配置好、經(jīng)過測試的標(biāo)準(zhǔn)單元庫為基礎(chǔ)的。設(shè)計時選擇庫中的標(biāo)準(zhǔn)單元構(gòu)成電路,然后調(diào)用這些標(biāo)準(zhǔn)單元的版圖,并利用自動布局布線軟件(CAD工具)完成電路到版圖一一對應(yīng)的最終設(shè)計。和門陣列相比,標(biāo)準(zhǔn)單元設(shè)計靈活、功能強(qiáng),但設(shè)計和制造周期較長,開發(fā)費用也比較高。

1.1.2ASIC及其設(shè)計方法

可編程邏輯器件PLD:是一種通用型器件,用戶利用EDA工具對器件編程以實現(xiàn)所需要的邏輯功能。PLD是用戶可配置的器件,其規(guī)模大,功能強(qiáng),價格便宜,相配套的EDA軟件完善,設(shè)計人員在實驗室即可設(shè)計和制造出芯片,而且可反復(fù)編程,修改錯誤,設(shè)計周期短,可靠性高。

1.1.2ASIC及其設(shè)計方法

EDA技術(shù)ASIC設(shè)計FPGA/CPLD可編程ASIC

設(shè)計

門陣列(MPGA);標(biāo)準(zhǔn)單元(CBIC);全定制;(FCIC);

ASIC設(shè)計SOPC/SOC混合ASIC設(shè)計1.2PLD概述

1.2.1PLD發(fā)展

1.2.1PLD發(fā)展

1.2PLD概述

70年代80年代90年代PROM和PLA器件PAL器件GAL器件FPGA器件EPLD器件CPLD器件內(nèi)嵌復(fù)雜功能模塊的SoPC電路符號表示

PLD的互補緩沖器PLD的互補輸入PLD中與陣列表示

PLD中或陣列的表示陣列線連接表示

PROMPROM基本結(jié)構(gòu):其邏輯函數(shù)是:PROMPROM的邏輯陣列結(jié)構(gòu)邏輯函數(shù)表示:PROMPROM表達(dá)的PLD圖陣列用PROM完成半加器邏輯陣列PLAPLA邏輯陣列示意圖PLAPLA與PROM的比較PALPAL結(jié)構(gòu):PAL的常用表示:1.2.1PLD發(fā)展

70年代80年代90年代PROM和PLA器件PAL器件GAL器件FPGA器件EPLD器件CPLD器件內(nèi)嵌復(fù)雜功能模塊的SoPC

1.2.2PLD分類

按集成密度分類

1.2.2PLD分類

按編程工藝分類(1)一次性編程的熔絲(Fuse)或反熔絲(Anti-fuse)器件;

(2)紫外線擦除、電編程器件;

(3)EEPROM編程器件,即電擦除、電可編程元件。ISP器件采用此方法,編程次數(shù)可達(dá)10000次;

(4)SRAM編程器件,特點是斷電后信息丟失,多數(shù)FPGA基于此技術(shù)。

1.2.2PLD分類

按結(jié)構(gòu)特點分類(1)陣列型PLD:基本結(jié)構(gòu)為與或陣列;

(2)FPGA:基本結(jié)構(gòu)為門陣列。PLD基本結(jié)構(gòu):

1.3PLD邏輯表示法

(1)與陣列固定,或陣列可編程,如EPROM;

(2)與陣列和或陣列都可以編程,如PLA;(3)與陣列可以編程,或陣列固定,如PAL。1.3PLD邏輯表示法

【例1-1】試分別用PLD的3種陣列結(jié)構(gòu)來表示邏輯函數(shù):1.3PLD邏輯表示法

【例1-1】試分別用PLD的3種陣列結(jié)構(gòu)來表示邏輯函數(shù):1.4PLD的設(shè)計與開發(fā)

1.4.1PLD設(shè)計流程

1.4.2PLD開發(fā)工具

Lattice

Diamond軟件Lattice

Diamond軟件是Lattice公司針對其CPLD和FPGA產(chǎn)品開發(fā)的EDA軟件,支持原理圖輸入方式和ABEL-HDL、VHDL、VerilogHDL等硬件描述語言輸入方式。LatticeDiamond可以進(jìn)行功能仿真和時序仿真,是目前流行的EDA軟件中最容易掌握的之一,它的界面友好,操作方便,功能強(qiáng)大,并與第三方EDA工具兼容良好。1.4.2PLD開發(fā)工具

Vivado軟件Vivado軟件是Xilinx公司2012年推出的完整的PLD集成開發(fā)環(huán)境,支持Xilinx公司最新的Kintex-7、Artix-7、Virtex-7、UltraScale、Zynq系列產(chǎn)品,支持多語言開發(fā),具有很好的綜合及仿真功能,是業(yè)界最強(qiáng)大的EDA設(shè)計工具之一。1.4.2PLD開發(fā)工具

QuartusIIQuartusII系統(tǒng)是由Altera公司提供的開發(fā)軟件。該軟件提供了一種與結(jié)構(gòu)無關(guān)的設(shè)計環(huán)境,支持Altera的各種PLD系列芯片的設(shè)計。支持原理圖和各種HDL設(shè)計輸入選項。1.4.2PLD開發(fā)工具

PangoDesignSuite軟件PangoDesignSuite軟件是紫光同創(chuàng)研發(fā)的一款擁有國產(chǎn)自主知識產(chǎn)權(quán)的大規(guī)模FPGA開發(fā)軟件,可以支持千萬門級FPGA器件的設(shè)計開發(fā)。該軟件支持工業(yè)標(biāo)準(zhǔn)的開發(fā)流程,可實現(xiàn)從RTL(RegisterTransferLevel,寄存器傳輸級)綜合到配置數(shù)據(jù)文件生成下載的全套操作。1.4.2PLD開發(fā)工具

TangDynasty軟件TangDynasty軟件是安路科技自主開發(fā)的FPGA集成開發(fā)環(huán)境,支持工業(yè)標(biāo)準(zhǔn)的設(shè)計輸入,包含完整的電路優(yōu)化流程及豐富的分析與調(diào)試工具,并提供良好的第三方設(shè)計驗證工具接口,為所有基于安路科技FPGA產(chǎn)品的應(yīng)用設(shè)計提供有力支持。1.4.2PLD開發(fā)工具

Gowin云源軟件Gowin云源軟件是專為高云半導(dǎo)體FPGA芯片而配套的集成電路設(shè)計與實現(xiàn)工具,覆蓋了從RTL電路功能描述到生成FPGA位流文件的完整流程,包括優(yōu)化設(shè)計、自動設(shè)計、圖形交互設(shè)計等功能。1.4.2PLD開發(fā)工具

ModelSim仿真軟件ModelSim是MentorGraphics公司開發(fā)的一款非常優(yōu)秀的仿真軟件,具有友好的仿真界面,不僅支持VHDL、Verilog及VHDL和Verilog混合硬件描述語言仿真,還支持系統(tǒng)級描述語言SystemC和SystemVerilog。該仿真軟件仿真速度快、精度高。ModelSim可集成到ISE及QuartusII等PLD開發(fā)軟件中,從而可在PLD開發(fā)軟件中直接調(diào)用ModelSim進(jìn)行波形仿真。1.4.2PLD開發(fā)工具

Synplify綜合軟件Synplify、SynplifyPro和SynplifyPremier是Synplicity公司開發(fā)的PLD綜合工具,支持大多數(shù)半導(dǎo)體廠商的CPLD和FPGA產(chǎn)品,有著綜合速度快、綜合效率高等優(yōu)點,最近幾年在綜合軟件市場中排名保持第一。1.4.3IP核復(fù)用技術(shù)

IP可分為軟核、固核和硬核。軟核是用VHDL、VerilogHDL等硬件描述語言描述的功能模塊,是與具體實現(xiàn)的工藝無關(guān)的IP核。固核是以網(wǎng)表文件的形式提交用戶使用的IP核,是完成了綜合后的可重用IP模塊。硬核是一些已經(jīng)經(jīng)過布局、并對尺寸和功耗進(jìn)行優(yōu)化的、不能由使用者修改的IP核。硬核以設(shè)計的最終階段產(chǎn)品——掩膜提供。小結(jié)

PLD/ASICCPLD/FPGAEDAHDL:VHDL、VerilogHDLLATTICE、ALTERA、XILINIXISPDesginExpertSystem、QuartusII、ISE第2章大規(guī)??删幊踢壿嬈骷﨏PLD/FPGACPLD結(jié)構(gòu)原理FPGA結(jié)構(gòu)原理PLD產(chǎn)品介紹編程、配置本章內(nèi)容:2.1CPLD結(jié)構(gòu)與工作原理Lattice公司ispLSI系列的CPLD產(chǎn)品為例詳細(xì)介紹:

CPLD的內(nèi)部結(jié)構(gòu);CPLD的主要技術(shù)特征;CPLD的設(shè)計編程方法。

PLD基本結(jié)構(gòu):

1.3PLD邏輯表示法

(1)與陣列固定,或陣列可編程,如EPROM;

(2)與陣列和或陣列都可以編程,如PLA;(3)與陣列可以編程,或陣列固定,如PAL。PLA與PROM的比較PALPAL結(jié)構(gòu):PAL的常用表示:邏輯宏單元輸入/輸出口輸入口時鐘信號輸入三態(tài)控制可編程與陣列固定或陣列GAL16V8GAL2.1CPLD結(jié)構(gòu)與工作原理可編程邏輯塊:CPLD的主要組成部分,用以實現(xiàn)系統(tǒng)邏輯功能的配置;I/O模塊:實現(xiàn)CPLD輸入/輸出信號的引腳驅(qū)動及電平匹配;可編程互聯(lián)通道:實現(xiàn)CPLD內(nèi)部各個功能模塊的互聯(lián)通信。CPLD的內(nèi)部結(jié)構(gòu):ispLSI1000和ispLSI1000E系列為通用器件;ispLSI2000系列的器件適用于高速系統(tǒng)的設(shè)計;

ispLSI3000系列的器件適用于復(fù)雜系統(tǒng)設(shè)計,集成度高、速度高;

ispLSI5000系列的器件為68bit超寬輸入系列;

ispLSI6000系列的器件在結(jié)構(gòu)上增加了存儲器;

ispLSI8000系列器件是多寄存器超大結(jié)構(gòu)。

ispMACH系列器件的特征是超大、超寬、超快;

2.1.1Lattice公司的CPLD器件Lattice公司的isp系列器件主要包括ispLSI和ispMACH系列:2.1.2ispLSI1016輸出布線區(qū)ORPA0A1A2A3A4A5A6A7集總布線區(qū)(GRP)B7B6B5B4B3B2B1B0輸出布線區(qū)ORP通用邏輯塊(GLB)宏模塊時鐘分配網(wǎng)絡(luò)I/O0I/O1I/O2I/O3I/O4I/O5I/O5I/O7I/O8I/O9I/O10I/O11I/O12I/O13I/O14I/O15I/O16I/O17I/O18I/O19I/O20I/O21I/O22I/O23I/O24I/O25I/O26I/O27I/O28I/O29I/O30I/O31

通用邏輯模塊GLB輸入/輸出單元IOC集總布線區(qū)GRP輸出布線區(qū)ORP時鐘分配網(wǎng)絡(luò)CDN圖2-12.1.2ispLSI1016

通用邏輯模塊GLB2.1.2ispLSI1016

輸入/輸出單元IOCMUXMUXMUXMUXVccMUXMUXDQR/LresetI/O輸出至集總布線區(qū)IOCLK0IOCLK1RESET來自輸出布線區(qū)來自輸出布線區(qū)來自O(shè)E選擇器表示EEMOS編程單元2.1.2ispLSI1016

輸入/輸出單元IOC2.1.2ispLSI1016

集總布線區(qū)GRPispLSI結(jié)構(gòu)的中央是全局布線區(qū)(GRP),它連接所有的內(nèi)部邏輯:提供高速的內(nèi)部連線,可實現(xiàn)IOC到GLB或者GLB到GLB的互連。特點是其輸入輸出之間的延遲恒定且可預(yù)知。2.1.2ispLSI1016

輸出布線區(qū)ORP:GLB和IOC之間的可編程互連陣列,可提高分配IO管腳的靈活性,簡化布線軟件2.1.2ispLSI1016

時鐘分配網(wǎng)絡(luò)CDN:用于產(chǎn)生5個全局時鐘信號,分配給GLB和I/O用;可將時鐘專用GLB的4個輸出送入時鐘分配網(wǎng)絡(luò),以建立用戶定義的內(nèi)部時鐘。通用邏輯塊B0O0O1O2O3CLK0CLK1CLK2IOCLK0IOCLK1Y1Y2Y0時鐘分配網(wǎng)絡(luò)2.1.2ispLSI1016

宏模塊結(jié)構(gòu):器件采用的一種分塊結(jié)構(gòu)1.Ultra-MOS工藝

利用Ultra-MOS工藝生產(chǎn)的ispLSI器件具有高密度,高性能的特點。目前ispLSI系列器件的系統(tǒng)工作速度已達(dá)200MHz,集成度可達(dá)58000個邏輯門。2.1.3ispLSI器件的主要技術(shù)特性2.在系統(tǒng)編程功能

所有的ispLSI系列器件均為ISP器件,具有在系統(tǒng)編程能力。

所謂“在系統(tǒng)可編程”是指對器件、電路板、整個電子系統(tǒng)進(jìn)行邏輯重構(gòu)和功能修改的能力,這種重構(gòu)可以在制造之前,調(diào)試過程中,甚至在交付用戶使用之后進(jìn)行。2.1.3ispLSI器件的主要技術(shù)特性3.邊界掃描測試功能

邊界掃描技術(shù)主要解決芯片的測試問題,借助一個4信號線的接口及相應(yīng)的軟件則可實現(xiàn)對電路板上所有支持邊界掃描的芯片內(nèi)部邏輯和邊界引腳的測試。

ispLSI器件中ispLSI3000、6000及8000系列器件支持IEEE1149.1.邊界掃描測試標(biāo)準(zhǔn)。它們可以通過5個ISP編程管腳中的4個來傳遞邊界掃描信號。

2.1.3ispLSI器件的主要技術(shù)特性JTAG邊界掃描測試邊界掃描電路結(jié)構(gòu)邊界掃描數(shù)據(jù)移位方式JTAG邊界掃描測試4.加密功能

ispLSI器件具有加密功能,用于防止非法拷貝JEDEC數(shù)據(jù)文件。ispLSI器件中提供了一段特殊的加密單元,該單元被加密以后就不能讀出器件的邏輯配置數(shù)據(jù)。由于ispLSI器件的加密單元只能通過對器件重新編程才能擦除,已有的解密手段一般不能破解,器件的加密特性較好。2.1.3ispLSI器件的主要技術(shù)特性5.短路保護(hù)

ispLSI器件采取了兩種短路保護(hù)手段。首先,選用電荷泵給硅片基底加上一個足夠大的反向偏置電壓,這個反向偏置電壓能夠防止輸入負(fù)電壓毛刺而引起的內(nèi)部電路自鎖;其次,器件輸出采用N溝道方式,取代傳統(tǒng)的P溝道方式,消除SCR自鎖現(xiàn)象。2.1.3ispLSI器件的主要技術(shù)特性

編程是指將EDA軟件設(shè)計的熔絲圖文件(JEDEC)寫入PLD器件的過程(下載)。

1、ispLSI編程信號線:

ispEN:編程使能,低電平有效;

SCLK:時鐘;

SDI:串行數(shù)據(jù)輸入;

SDO:串行數(shù)據(jù)輸出;

MODE:方式控制。2.1.4ispLSI器件的編程2、下載電路

編程電纜又稱為下載電纜,該電纜連接計算機(jī)的并行口和ispLSI芯片。電纜中有簡單的控制電路。

2.1.4ispLSI器件的編程Lattice公司的下載電纜

3、多個器件的編程

有并行和串行兩種方式,但都需要在EDA軟件的支持下完成。串行菊花鏈編程結(jié)構(gòu):

2.1.4ispLSI器件的編程2.2FPGA結(jié)構(gòu)與工作原理(1)以Xilinx公司的Spartan3E系列FPGA產(chǎn)品為例可配置邏輯塊CLB可配置I/O模塊IOB可編程互聯(lián)資源IR2.2FPGA結(jié)構(gòu)與工作原理可配置邏輯塊CLB每個slice內(nèi)部包含兩個4輸入查找表LUT2.2FPGA結(jié)構(gòu)與工作原理4輸入查找表LUT2.2FPGA結(jié)構(gòu)與工作原理可配置I/O模塊IOB:可配置I/O模塊用來配置FPGA芯片引腳與外部模塊通信信號的傳輸方向及輸出信號的驅(qū)動電流大小。FPGA的引腳可配置成:輸入信號、輸出信號、雙向傳輸信號及高阻態(tài)。可編程互聯(lián)資源IR:可編程互聯(lián)資源連接FPGA內(nèi)部的各功能模塊(如:IOB,CLB,交換矩陣、DCM、BlockRAM等),實現(xiàn)各功能模塊之間的通信。...IOCIOC...IOCIOC...IOCIOC...IOCIOC...IOCIOC...IOCIOC...IOCIOC...IOCIOC...IOCIOC...IOCIOC...IOCIOC...IOCIOCEABEAB嵌入式陣列塊(2)Cyclone/CycloneII系列器件的結(jié)構(gòu)與原理LAB:邏輯陣列塊3.4.2Cyclone/CycloneII系列器件的結(jié)構(gòu)與原理圖3-34CycloneLE結(jié)構(gòu)圖LE:基本編程單元2.3CPLD/FPGA產(chǎn)品Altera公司產(chǎn)品

Xilinx公司

Lattice公司紫光同創(chuàng)安路科技高云半導(dǎo)體2.3.1Altera公司產(chǎn)品低成本的Cyclone系列:Cyclone、CycloneII、CycloneIII、CycloneIV、CycloneV等;中端的Arria系列:包括ArriaGX、ArriaII、ArriaV等;高端的Stratix系列:包括Stratix、StratixII、StratixIII、StratixIV、StratixV等2.3.2Xilinx公司CPLD產(chǎn)品:CoolRunner、XC9500系列

;低端Spartan

:Spartan2、Spartan2E、Spartan3、Spartan3E、Spartan3A、Spartan6

;高端Virtex:有Virtex2、Virtex2P、Virtex4、Virtex5、Virtex6、Virtex7系列。2.3.3Lattice公司CPLD產(chǎn)品有ispMACH4000ZE、MachXO、MachXO2系列;LatticeECP3、LatticeECP2/M、LatticeSC/M、LatticeXP2等系列2.3.4紫光同創(chuàng)紫光同創(chuàng)的PLD產(chǎn)品分為三大系列:Titan、Logos(FPGA)和Compa(CPLD)系列。Titan系列是第一款國產(chǎn)具有自主產(chǎn)權(quán)的千萬門級高性能FPGA產(chǎn)品,其中Titan-2系列FPGA支持高速SERDES、PCIeGen3、DDR3/4等高性能模塊及接口。Logos系列FPGA采用先進(jìn)成熟工藝和全新LUT5結(jié)構(gòu),集成RAM、DSP、ADC、SERDES、DDR3等豐富的片上資源和I/O端口。2.3.5安路科技安路科技FPGA有SALEAGLE和SALELF兩大系列。SALEAGLE系列又分EG4和AL3兩個系列。AL3系列FPGA有5種器件,定位于低成本、低功耗可編程市場,其內(nèi)部資源見表2-8。EG4是安路科技推出的“獵鷹”系列產(chǎn)品,有豐富的邏輯、DSP、BRAM、高速差分I/O端口等資源。SALELF系列FPGA共有3代產(chǎn)品,單芯片方案,即時啟動,無須外部Flash,支持OTP模式,55nm工藝,部分產(chǎn)品內(nèi)嵌硬核MCU。2.3.6高云半導(dǎo)體高云半導(dǎo)體FPGA有晨熙系列、小蜜蜂系列、Arora-V系列和GoBridge系列等。晨熙系列采用55nmSRAM工藝,具有高性能DSP、高速LVDS(低電壓差分信號)接口及豐富的B-SRAM(塊狀SRAM)資源,適用于高速、低成本的應(yīng)用場合。晨熙系列主要有GW2A、GW2AR、GW2AN等產(chǎn)品。2.4編程與配置ISP編程與FPGA配置2.4編程與配置在系統(tǒng)編程

ISP(CPLD采用)

FPGA配置

主動配置方式:由FPGA從外部程序存儲器EEPROM或Flash中主動讀取配置代碼;被動配置方式:由外部處理器將配置代碼寫入到FPGA中。2.4編程與配置JTAG模式:在開發(fā)軟件中通過下載電纜直接將配置代碼下載到FPGA,是項目設(shè)計驗證階段常用的下載方式。2.5CPLD與FPGA比較CPLD相對FPGA內(nèi)部邏輯資源較少,且價格便宜;FPGA內(nèi)部資源多,并可嵌入微處理IP核;編程與配置;CPLD結(jié)構(gòu)適合于組合邏輯設(shè)計,F(xiàn)PGA適合于時序邏輯設(shè)計。CPLD內(nèi)部邏輯單元間的連線為連續(xù)式布線,信號延遲時間可預(yù)測,而FPGA內(nèi)邏輯單元間信號延遲不可預(yù)測。CPLD保密性好,F(xiàn)PGA保密性差。器件速度及功耗的選擇。第3章常用EDA軟件Lattice:ispEXPERT、LatticeDiamond

Altera:MAX+PLUSII、

QuartusIIXilinx:Foundation、ISE、Vivado本章內(nèi)容:原理圖/VHDL文本編輯綜合FPGA/CPLD適配FPGA/CPLD編程下載FPGA/CPLD器件和電路系統(tǒng)時序與功能門級仿真1、功能仿真2、時序仿真邏輯綜合器結(jié)構(gòu)綜合器1、isp方式下載2、JTAG方式下載3、針對SRAM結(jié)構(gòu)的配置

4、OTP器件編程

功能仿真FPGA/CPLD設(shè)計流程3.2QuartusII操作指南

開發(fā)過程:

一、建立設(shè)計工程

二、源文件輸入

三、編譯(設(shè)計處理)

四、仿真驗證

五、器件編程(下載)1.QuartusⅡ軟件啟動2.創(chuàng)建工程3.選擇FPGA器件3.2.1建立設(shè)計工程步驟1:軟件啟動圖4-1進(jìn)入MAX+plusII,建立一個新的設(shè)計文件步驟2:創(chuàng)建工程步驟3:選擇FPGA器件EP1C12Q240C8Assignments--Device1.建立原理圖文件2.輸入基本單元符號3.放置輸入輸出引腳符號4.連線5.為引線和引腳命名6.保存設(shè)計文件3.2.2源文件輸入

(以原理圖文件為例)步驟1:建立原理圖文件

步驟2:輸入基本單元符號

步驟2:輸入基本單元符號

(1)在圖形編輯器窗口的工作區(qū)中雙擊鼠標(biāo)左鍵,或單擊工具欄的符號按鈕步驟2:輸入基本單元符號

(2)選擇所需要的圖元或符號步驟3:放置輸入輸出引腳符號

步驟4:連線

符號之間的連線包括信號線NodeLine和總線BusLine。Quartus?Ⅱ軟件會自動根據(jù)端口是單信號端口還是總線端口畫出信號線或總線。連線:將鼠標(biāo)移動到其中一個端口上,這時鼠標(biāo)指示符自動變?yōu)椤?”形狀,按住鼠標(biāo)的左鍵并拖動鼠標(biāo)到達(dá)第二個端口,放開左鍵即可。連線拐彎:在需要拐彎處放開鼠標(biāo)左鍵,然后再繼續(xù)按下左鍵拖動即可。連線刪除:單擊這根連接線并按Del鍵即可。步驟5:為引線和引腳命名步驟6:保存設(shè)計文件1.編譯過程:選擇Tools菜單的CompilerTool項3.2.3編譯

2.分析綜合(Analysis&Synthesis)1.建立波形仿真文件2.功能仿真和時序仿真設(shè)置3.啟動仿真器3.2.4仿真驗證

步驟1:建立波形仿真文件

(1)創(chuàng)建一個新的矢量波形文件步驟1:建立波形仿真文件

(1)創(chuàng)建一個新的矢量波形文件(2)在矢量波形文件中加入輸入、輸出節(jié)點選擇View的UtilityWindows下的NodeFinder命令,彈出NodeFinder界面,查找要加入波形文件中的節(jié)點名;在Filter列表中選擇Pins:all,在Named欄中鍵入“*”,然后點擊List按鈕,在NodesFound欄即列出設(shè)計中的所有節(jié)點名;選擇要加入波形文件中的節(jié)點,然后按住鼠標(biāo)左鍵,拖動到波形編輯器左邊Name列的空白處放開。

步驟1:建立波形仿真文件

(3)編輯波形步驟2:功能仿真和時序仿真設(shè)置

(1)選擇Assignments的Settings…命令,在Settings對話框的Category列表中選擇Simulator,顯示仿真器頁面(2)功能仿真類型選擇Functional,選擇Processing的GenerateFunctionalSimulationNetlist命令,產(chǎn)生功能仿真網(wǎng)表文件;時序仿真類型選Timing,編譯設(shè)計產(chǎn)生時序仿真的網(wǎng)表文件。步驟3:啟動仿真器

在完成上面的仿真器設(shè)置以后,選擇Processing的StartSimulation命令即可啟動仿真器。同時狀態(tài)窗口和仿真報告窗口自動打開,并在狀態(tài)窗口中顯示仿真進(jìn)度以及所用時間。仿真結(jié)束后,在仿真報告窗口顯示輸出節(jié)點的仿真波形。1.引腳分配

(1)選擇Assignments/AssignmentEditor菜單命令,在分配編輯器的類別(Category)列表中選擇Locationspin,或直接選擇Assignments的Pins菜單命令。(2)用鼠標(biāo)左鍵雙擊To單元,將彈出包含所有引腳的下拉框,從中選擇一個引腳名。(3)用鼠標(biāo)左鍵雙擊Location單元,從下拉框中可以指定目標(biāo)器件的引腳號。(4)完成所有設(shè)計中引腳的指定,關(guān)閉AssignmentEditor界面,保存分配。(5)在進(jìn)行編譯之前,檢查引腳分配是否合法。選擇Processing→Start→StartI/OAssignmentAnalysis菜單命令,當(dāng)提示I/O分配分析成功時,點擊OK按鈕關(guān)閉提示。3.2.5器件編程

2.編程(1)全局編譯選擇Processing/StartCompilation,全局編譯成功后,可以進(jìn)行編程下載。(2)打開編程器窗口選擇Tool/Programer命令,打開編程器窗口。(3)設(shè)置下載形式第一次使用下載時,需要選擇下載形式。在編程器窗口,點擊HardwareSetup按鈕,打開HardwareSetup對話框,然后點擊AddHardware,選擇USB-Blaster[USB-0]后單擊SelectHardware,則把下載形式設(shè)置為USB-Blaster[USB-0](4)下載下載可以選擇JTAG方式和AS方式。JTAG方式把文件直接下載到FPGA里面,AS方式把文件下載到配置芯片里面。選擇AddFile,添加.sof文件,選中Program/Configure,點擊Start后開始下載。3.2.5器件編程

將設(shè)計項目設(shè)置成可調(diào)用元件

File---Create/Update---CreatesymbolFilesforCurrentFile設(shè)計頂層文件

File---new---blockdiagram/schematicFile;

保存在相同目錄;設(shè)置成頂層文件:PROJECT/SETASTOP—LEVELENTITY;

分析綜合;建立仿真文件,進(jìn)行仿真。3.2.6層次設(shè)計講解張三3.4Vivado軟件操作Vivado為Xilinx公司2012年推出的新一代可編程邏輯器件集成開發(fā)工具,支持XilinxZynq系列產(chǎn)品。Vivado包含綜合、實現(xiàn)、仿真、調(diào)試等工具,同時還支持高層次綜合(HLS)功能,使FPGA設(shè)計更加高效。Vivado軟件已由最初的2012版更新到2022版。本教程將基于Vivado2017.4版本,以設(shè)計一個4位二進(jìn)制加法計數(shù)器為例,介紹該軟件的基本開發(fā)使用流程。3.4.1Vivado簡介在Vivado啟動界面的菜單欄中選擇“File”→“NewProject”命令,或點擊“QuickStart”欄下的“CreateProject”新建工程,在新建工程設(shè)置界面,輸入工程名“cnt_4”,工程名通常為設(shè)計程序的實體名,工程存放路徑選擇為E:/FPGA/vivado_test,如圖所示。3.4.2

新建工程單擊“Next”按鈕,彈出新建工程類型選擇界面,默認(rèn)選擇RTLProject;單擊“Next”按鈕,出現(xiàn)編程語言選擇界面,本例將Targetlanguage設(shè)置為VHDL,Simulatorlanguage也設(shè)置為VHDL,如圖所示。3.4.2

新建工程點擊“Next”按鈕,出現(xiàn)約束文件添加界面,本例暫不添加約束文件,繼續(xù)點擊“Next”按鈕,出現(xiàn)目標(biāo)芯片選擇界面,本例選擇Zynq-7000系列下的型號為xc7z020clg400-2的FPGA芯片,如圖所示。3.4.2

新建工程點擊“Next”按鈕,出現(xiàn)新建工程概要界面,顯示新建工程名、目標(biāo)芯片等信息,點擊“Finish”按鈕,完成工程創(chuàng)建,新建工程界面如圖所示。3.4.2

新建工程在工程管理區(qū)點擊PROJECTMANAGER欄下的AddSources圖標(biāo),彈出新建文件類型選擇界面,選擇默認(rèn)的“Addorcreatedesignsources”選項;點擊“Next”按鈕,在彈出界面中選擇“CreateFile”按鈕;在文件名設(shè)置窗口輸入文件名cnt_4,如圖所示。3.4.3

新建VHDL源文件點擊“OK”按鈕,顯示源文件添加完成界面,如圖所示。3.4.3

新建VHDL源文件點擊“Finish”按鈕,顯示端口定義對話框,如圖所示??梢栽谠搶υ捒蛑卸x端口信號名及端口類型,也可不用定義端口信息,在后面程序設(shè)計時輸入端口信號名及類型,本例不在該對話框中定義端口,直接單擊“OK”按鈕,在彈出的對話框中選擇“Yes”。3.4.3

新建VHDL源文件在文件管理區(qū)顯示出新建的源文件“cnt_4.vhd”,如圖所示,雙擊該文件,在界面右邊編輯區(qū)顯示新建源文件模板,定義了庫、程序包、實體名、結(jié)構(gòu)體名。3.4.3

新建VHDL源文件在模板中輸入程序代碼,輸入完成后的代碼如圖所示。程序編輯完成后,點擊保存按鈕進(jìn)行保存。3.4.3

新建VHDL源文件在界面左邊工程管理區(qū)“SYNTHESIS”下點擊“RunSynthesis”綜合工具對輸入的源文件進(jìn)行綜合,若輸入程序沒有語法錯誤,則綜合通過,彈出綜合完成對話框,如圖所示。若輸入程序有語法錯誤,則綜合不通過,需根據(jù)錯誤提示信息對程序進(jìn)行修改,修改后再次綜合,直至程序綜合完成,確保程序無語法錯誤。在綜合完成對話框中,點擊Cancel按鈕,暫不執(zhí)行Implementation實現(xiàn)操作。3.4.3

新建VHDL源文件程序綜合正確表明無語法錯誤,程序邏輯功能是否正確不能確定,需要通過波形仿真來測試。下面對上述程序描述的4位二進(jìn)制加法計數(shù)器進(jìn)行波形仿真,驗證其邏輯功能是否正確。本例將使用VHDL硬件描述語言編寫波形測試激勵文件,設(shè)置輸入信號的波形。3.4.4

波形仿真在工程管理區(qū)點擊PROJECTMANAGER欄下的AddSources圖標(biāo),彈出新建文件類型選擇界面,選擇“Addorcreatesimulationsources”選項;點擊“Next”按鈕,在彈出界面中選擇“CreateFile”;在文件名設(shè)置窗口輸入文件名cnt_4_tb,如圖所示。3.4.4

波形仿真——創(chuàng)建波形文件點擊“OK”按鈕,在顯示的源文件添加界面點擊“Finish”按鈕;端口定義對話框可定義端口信號名及端口類型,也可暫不定義端口信息,在后面程序設(shè)計時輸入端口信號名及類型,本例不在該對話框中定義端口,直接單擊“OK”按鈕,在彈出的對話框中選擇“Yes”,則完成波形激勵文件的創(chuàng)建,如圖所示。3.4.4

波形仿真——創(chuàng)建波形文件點擊“OK”按鈕,在顯示的源文件添加界面點擊“Finish”按鈕;端口定義對話框可定義端口信號名及端口類型,也可暫不定義端口信息,在后面程序設(shè)計時輸入端口信號名及類型,本例不在該對話框中定義端口,直接單擊“OK”按鈕,在彈出的對話框中選擇“Yes”,則完成波形激勵文件的創(chuàng)建,如圖所示。3.4.4

波形仿真——編輯波形文件在文件管理區(qū)“SimulationSources”的“sim_1”下顯示新建波形激勵文件cnt_4_tb.vhd,雙擊該文件,在界面右邊編輯區(qū)顯示新建文件模板,在模板中輸入程序代碼,輸入完成后的波形激勵文件代碼如圖所示。程序編輯完成后,點擊保存按鈕進(jìn)行保存。3.4.4

波形仿真——創(chuàng)建波形文件在工程管理區(qū)右鍵點擊“SIMULATION”,在顯示列表中選擇SimulationSettings選項;在仿真參數(shù)設(shè)置界面,點擊“Simulation”圖標(biāo),在xsim.simulate.runtime欄設(shè)置仿真時間,本例仿真時間設(shè)置為1000ns,如圖所示,設(shè)置完成后點擊OK按鈕。3.4.4

波形仿真——波形仿真參數(shù)設(shè)置在工程管理區(qū)點擊“SIMULATION”下的“RunSimulation”圖標(biāo),在顯示列表中選擇RunBehavioralSimulation選項,波形仿真結(jié)果如圖所示。3.4.4

波形仿真由仿真波形圖可以看出,在復(fù)位信號有效時間內(nèi),計數(shù)器cnt值為0,復(fù)位無效后,在每個時鐘信號的上升沿觸發(fā)下,計數(shù)器cnt加1,實現(xiàn)了程序設(shè)計的四位二進(jìn)制加法計數(shù)器功能。在工程管理區(qū)點擊“RTLANALYSIS”下的“OpenElaboratedDesign”圖標(biāo),在彈出的窗口中點擊“OK”按鈕,顯示RTL綜合原理圖,如圖所示。3.4.5

管腳定義在菜單欄選擇“Window”→“I/OPorts”命令;在彈出的管腳定義界面設(shè)置輸入輸出信號連接的FPGA芯片管腳,如圖所示。3.4.5

管腳定義管腳定義完成后,點擊保存按鈕,彈出約束文件設(shè)置對話框,輸入文件名cnt_4,文件類型默認(rèn)“XDC”格式,點擊“OK”按鈕,則在文件管理區(qū)Constraints欄下顯示新建的約束文件cnt_4.xdc。雙擊打開cnt_4.xdc約束文件,在文本編輯區(qū)顯示文件內(nèi)容,如圖所示,根據(jù)約束文件管腳定義格式,也可通過新建約束源文件,輸入管腳約束代碼,實現(xiàn)管腳定義功能。3.4.5

管腳定義下載配置過程包括生成比特流文件,啟動編程工具將生成的比特流文件下載到FPGA內(nèi)部,或?qū)⑸傻谋忍亓魑募D(zhuǎn)換成EEPROM文件,并下載到FPGA的配置存儲芯片中。下面介紹JTAG下載模式下將比特流文件直接下載到FPGA內(nèi)部的流程。3.4.6

下載配置在工程管理區(qū)點擊“PROGRAMANDDEBUG”下的“GenerateBitstream”圖標(biāo),在彈出的窗口中點擊“OK”按鈕,執(zhí)行結(jié)束后將在工程目錄下生成cnt_4.bit下載文件,如圖所示。3.4.6

下載配置——生成下載文件在工程管理區(qū)點擊“PROGRAMANDDEBUG”下的“OpenHardwareManager”圖標(biāo),彈出下載管理界面,如圖所示。使用下載電纜連接開發(fā)板與計算機(jī),開發(fā)板上電,點擊下載管理界面中的“AutoConnect”圖標(biāo)自動連接FPGA設(shè)備,右鍵點擊掃描到的FPGA芯片xc7z020,選擇ProgramDevice,將下載文件cnt_4.bit下載到FPGA芯片內(nèi)部。3.4.6

下載配置——下載第4章VHDL語言基礎(chǔ)常見的HDL有ABEL、AHDL、VHDL、VerilogHDL和SystemC等。HDLIEEE工業(yè)標(biāo)準(zhǔn)硬件描述語言VHDL、Verilog超高速集成電路硬件描述語言VHDL,美國國防部研究計劃硬件描述語言HDL第4章VHDL語言基礎(chǔ)覆蓋面廣,描述能力強(qiáng),多層次硬件描述語言VHDL有良好的可讀性,既是程序又是文件VHDL的移植性很強(qiáng)VHDL生命周期長,硬件描述與器件工藝無關(guān)代碼量大,書寫煩瑣VHDL第4章VHDL語言基礎(chǔ)基本組成語言要素本章內(nèi)容:4.1基本結(jié)構(gòu)參數(shù)部分實體部分結(jié)構(gòu)體例:2選1多路選擇器的VHDL描述4.1基本結(jié)構(gòu)sy0a1b2選1多路選擇器的VHDL描述4.1基本結(jié)構(gòu)2選1多路選擇器的VHDL描述方法一:ENTITYmux21aISPORT(a,b:INBIT;s:INBIT;y:OUTBIT);ENDENTITYmux21a;ARCHITECTUREoneOFmux21aISSIGNALd,e:BIT;BEGINd<=aAND(NOTS);e<=bANDs;y<=dORe;ENDARCHITECTUREone;4.1基本結(jié)構(gòu)實體結(jié)構(gòu)體2選1多路選擇器的VHDL描述方法二:ENTITYmux21aISPORT(a,b,s:INBIT;y:OUTBIT);ENDENTITYmux21a;ARCHITECTUREoneOFmux21aISBEGINPROCESS(a,b,s)BEGINIFs='0'THENy<=a;ELSEy<=b;ENDIF;ENDPROCESS;ENDARCHITECTUREone;4.1基本結(jié)構(gòu)sy0a1b【例4-1】

LIBRARYieee;--庫程序包調(diào)用

USEieee.std_logic_1164.ALL;

USEieee.std_logic_unsigned.ALL;

4.1基本結(jié)構(gòu)ENTITYcntm16IS--實體cntm16

GENERIC(cntwidth:integer:=4);

PORT

(ci:INstd_logic;

nreset:INstd_logic;

clk:INstd_logic;

co:OUTstd_logic;

qcnt:BUFFERstd_logic_vector(cntwidth-1DOWNTO0)

);

ENDcntm16;

4.1基本結(jié)構(gòu)ARCHITECTUREbehaveOFcntm16IS--結(jié)構(gòu)體

BEGIN

co<=’1’WHEN(qcnt=”1111”ANDci=’1’)ELSE‘0’;

PROCESS(clk,nreset)

BEGIN

IF(nreset=’0’)THEN

qcnt<=”0000”

ELSIF(clk’eventANDclk=’1’)THEN

IF(ci=’1’)THEN

qcnt<=qcnt+1;

ENDIF;

ENDIF;

ENDPROCESS;

ENDbehave;

4.1基本結(jié)構(gòu)模塊結(jié)構(gòu)

參數(shù)部分:庫(LIBRARY)、程序包(USE);

實體(ENTITY):[類屬]、端口(PORT);

結(jié)構(gòu)體(ARCHITECTURE):賦值、進(jìn)程(PROCESS-IF)。

4.1基本結(jié)構(gòu)4.1基本結(jié)構(gòu)調(diào)用程序包語句實體及實體聲明語句結(jié)構(gòu)體1結(jié)構(gòu)體2結(jié)構(gòu)體n標(biāo)準(zhǔn)程序包標(biāo)準(zhǔn)程序包定義程序包定義程序包進(jìn)程1進(jìn)程2進(jìn)程nVHDL程序設(shè)計約定

語句結(jié)構(gòu)描述中方括號“[]”內(nèi)的內(nèi)容為可選內(nèi)容。程序文字的大小寫是不加區(qū)分的。程序中的注釋使用雙橫線“--”。建議書寫使用層次縮進(jìn)格式。建議各個源程序文件的命名均與其實體名一致。4.1基本結(jié)構(gòu)庫說明

存放已經(jīng)編譯的實體、結(jié)構(gòu)體、程序包和配置,用于設(shè)計共享,是編程資源。

library<庫名>;

4.1.1參數(shù)部分程序包引用使用USE子句指明要使用庫中某一個設(shè)計單元。

use<庫名>.<程序包名>.all;【例4-2】LIBRARYieee;

USEieee.std_logic_1164.ALL;實體(ENTITY)

實體是一個設(shè)計實體的表層設(shè)計單元,其功能是對這個設(shè)計實體與外部電路進(jìn)行接口描述。它規(guī)定了設(shè)計單元的輸入/輸出接口信號或引腳,是設(shè)計實體經(jīng)封裝后對外的一個通信界面。類似于原理圖中的一個部件符號。4.1.2實體部分實體格式ENTITY實體名IS[GENERIC(常數(shù)名:數(shù)據(jù)類型[:設(shè)定值])];--類屬表

PORT--端口表(端口名:方向(端口模式)端口類型;

:;

端口名:方向(端口模式)端口類型

);END實體名;ENTITY實體名IS

4.1.2實體部分GENERIC類屬參數(shù)

定義端口界面常數(shù)(端口寬度、器件延遲時間)。類屬參量的值可由設(shè)計實體的外部提供。書寫格式:GENERIC([常數(shù)名:數(shù)據(jù)類型[:設(shè)定值]{;常數(shù)名:數(shù)據(jù)類型[:=設(shè)定值]});例4-1

GENERIC(cntwidth:integer:=4);

4.1.2實體部分PORT端口

用于定義模塊所有的輸入/輸出信號,相當(dāng)于定義一個模塊符號需要定義端口信號名、端口模式、端口數(shù)據(jù)類型例4-1

4.1.2實體部分CICONRESETQCNT[3..0]CLKCNTM16端口模式端口模式說明(以設(shè)計實體為主體)IN輸入,只讀模式,將變量或信號信息通過該端口讀入OUT輸出,單向賦值模式,將信號通過該端口輸出BUFFER具有讀功能的輸出模式,可以讀或?qū)懀荒苡幸粋€驅(qū)動源INOUT雙向,可以通過該端口讀入或?qū)懗鲂畔ORT端口模式端口數(shù)據(jù)類型VHDL數(shù)據(jù)類型:預(yù)定義數(shù)據(jù)類型、自定義數(shù)據(jù)類型只能使用已經(jīng)定義的數(shù)據(jù)類型例4-1中數(shù)據(jù)類型Std_logic和Std_logic_vector,在ieee.std_logic_1164.all程序包中說明,使用時首先打開。實體實例【例4-3】4位全加器的實體描述。Libraryieee;Useieee.std_logic_1164.all;Entityadd4isPort(a,b:instd_logic_vector(3downto0);Ci:instd_logic;Sum:outstd_logic_vector(3downto0);Co:outstd_logic);Endadd4;結(jié)構(gòu)體(ARCHITECTURE)

結(jié)構(gòu)體主要用來描述實體的內(nèi)部結(jié)構(gòu),即描述一個實體的功能。描述方式行為描述方式、數(shù)據(jù)流描述方式、結(jié)構(gòu)描述方式、混合描述方式4.1.3結(jié)構(gòu)體部分結(jié)構(gòu)體格式ARCHITECTURE結(jié)構(gòu)體名OF實體名IS[結(jié)構(gòu)體說明部分];BEGIN

結(jié)構(gòu)體描述部分;END結(jié)構(gòu)體名;4.1.3結(jié)構(gòu)體部分結(jié)構(gòu)體組成4.1.3結(jié)構(gòu)體部分行為描述

描述該設(shè)計單元的功能,主要使用函數(shù)、過程和進(jìn)程語句,以算法形式描述數(shù)據(jù)的變換和傳送

結(jié)構(gòu)體描述風(fēng)格例4-4Libraryieee;Useieee.std_logic_1164.all;Useieee.std_logic_unsigned.all;Useieee.std_logic_arith.all;Entityeqcomp4isPort(a,b:instd_logic_vector(3downto0);equals:outstd_logic);Endeqcomp4;Architecturebehavioralofeqcomp4isBeginComp:process(a,b)BeginIfa=bthenEquals<=’1’;ElseEquals<=’0’;Endif;Endprocesscomp;Endbehavioral;

行為描述結(jié)構(gòu)描述

描述該設(shè)計單元的硬件結(jié)構(gòu),調(diào)用庫中的元件或是設(shè)計模塊,主要使用元件說明語句及元件例化語句

結(jié)構(gòu)體描述風(fēng)格例4-5U0xnor2x(0)a(0)b(0)U1xnor2x(1)a(1)b(1)U2xnor2x(2)a(2)b(2)U3xnor2x(3)a(3)b(3)U4and4equalsabcdyArchitecturestructofeqcomp4isComponentxnor2--元件說明

Port(a,b:instd_logic;X:outstd_logic);Endcomponent;Componentand4--Port(a,b,c,d:instd_logic;y:outstd_logic);Endcomponent;Signalx:std_logic_vector(0to3);

結(jié)構(gòu)描述BeginU0:xnor2portmap(a(0),b(0),x(0));--元件例化

U1:xnor2portmap(a(1),b(1),x(1));U2:xnor2portmap(a(2),b(2),x(2));U3:xnor2portmap(a(3),b(3),x(3));U4:and4portmap(x(0),x(1),x(2),x(3),equals);Endstruct;

結(jié)構(gòu)描述數(shù)據(jù)流描述從信號到信號的數(shù)據(jù)流的路徑形式進(jìn)行描述。使用并行的信號賦值語句,既顯式表示了該設(shè)計單元的行為,也隱式表示了該設(shè)計單元的結(jié)構(gòu)。

結(jié)構(gòu)體描述風(fēng)格例4-6Architecturedataflowofeqcomp4isBeginEquals<=’1’when(a=b)else‘0’;并行信號賦值語句Enddataflow;

一個實體可有多種方案的結(jié)構(gòu)體,但仿真和綜合時要用configuration配置語句選擇一個結(jié)構(gòu)體映射到硬件電路,即為實體選擇、指定或者激活一個結(jié)構(gòu)體。

結(jié)構(gòu)體配置4.1.3結(jié)構(gòu)體部分4.1.4語法小結(jié)數(shù)據(jù)類型信號賦值屬性庫和程序包實體結(jié)構(gòu)體端口定義端口模式邏輯操作符IF語句變量對象進(jìn)程語句順序語句并行語句說明部分元件說明元件例化信號對象類屬定義CASE語句條件操作符配置條件信號賦值數(shù)字文字規(guī)則運算符運算符重載類型定義4.2VHDL語言要素文字規(guī)則數(shù)據(jù)對象數(shù)據(jù)類型運算符屬性4.2.1文字規(guī)則標(biāo)示符數(shù)值字符串下標(biāo)4.2.1文字規(guī)則標(biāo)示符1、標(biāo)識符由字母、數(shù)字及下劃線組成;

2、以字母開頭;

3、下劃線不能放在結(jié)尾;

4、下劃線不能連用;

5、不能使用保留字;

6、VHDL不區(qū)分大小寫。4.2.1文字規(guī)則數(shù)值表示(1)整數(shù)表示

整數(shù)表示十進(jìn)制數(shù)值,如:

11,123,135E2(=13500),12_345_678(=12345678)

(2)實數(shù)表示

實數(shù)也表示十進(jìn)制數(shù)值,必須帶有小數(shù)點,如:

1.252.01.56E-3(0.00156)1_120.123_678(11120.123678)數(shù)值表示(3)數(shù)制基數(shù)表示

有5部分組成:十進(jìn)制數(shù)表示數(shù)值的基數(shù);隔離符號“#”;該基數(shù)下對應(yīng)的數(shù)值;隔離符號“#”;十進(jìn)制表示的指數(shù)部分。

2#1110#--二進(jìn)制表示數(shù)值14

8#120#--八進(jìn)制表示數(shù)值80

16#A0#--十六進(jìn)制表示數(shù)值160

10#12#E2--十進(jìn)制表示數(shù)值1200

16#D#E1--十六進(jìn)制表示數(shù)值2084.2.1文字規(guī)則字符串

字符、字符串:單引號引起來的ASCII字符(數(shù)值、符號或字母);雙引號中的一維的字符數(shù)組。

如:‘R’,‘a(chǎn)’,‘*’,‘Z’,‘-’

,‘0’;“ERROR”,“NOTE”

兩種類型字符串:文字字符串和數(shù)位字符串(位矢量,是BIT數(shù)據(jù)類型的一維數(shù)組)。B“1_0101_1010”--二進(jìn)制數(shù)數(shù)組,長度是9O“17”--八進(jìn)制數(shù)數(shù)組,長度為6X“A2E0”--十六進(jìn)制數(shù)數(shù)組,位矢數(shù)組長度是164.2.1文字規(guī)則下標(biāo)名及下標(biāo)段名1、用于指示數(shù)組型變量或信號的某一元素或某一段元素

2、語句格式分別為:

名(表達(dá)式);

名(表達(dá)式1to/downto表達(dá)式2);

3、signala,b:bit_vector(7downto0);

signalc,d:bit;

a<=“01000111”;--給a(7)到a(0)賦值為“01000111”

c<=a(6);--把a(6)值’1’

賦值給c

b(7downto4)<=a(3downto0);--a的低4位賦給b的高4位

b(0to3)<=a(4to7);--a的高4位賦給b的低4位

d<=a(0);--把a(0)值’1’

賦值給d

4.2.2數(shù)據(jù)對象數(shù)據(jù)對象類似于一種容器,接受不同數(shù)據(jù)類型的賦值

常量變量信號對象種類:

信號signal、變量variable、常量constant、文件file。

常量:不對應(yīng)電路中的物理量,但可以說明全局量。在結(jié)構(gòu)體、實體、程序包、進(jìn)程、函數(shù)、過程中均可使用。

變量:程序運算的中間量,并不對應(yīng)電路中的物理量。變量說明局部量,用于進(jìn)程、函數(shù)、過程。

信號:電路中的物理量,對應(yīng)于電路的連線和節(jié)點。信號說明全局量,用于描述結(jié)構(gòu)體、實體、程序包。

4.2.2數(shù)據(jù)對象對象特點:

1、信號和變量可以被連續(xù)地賦值;

2、常量只能被賦值一次;

3、信號和變量的賦值形式和執(zhí)行過程不同:變量是立即賦值(:=),沒有延遲,而信號賦值要有一定的延遲(<=)。4.2.2數(shù)據(jù)對象對象說明的格式

對象種類對象名:數(shù)據(jù)類型[:=表達(dá)式];

1、對象種類:Constant(常數(shù))、Signal(信號)、Variable(變量)、File(文件)

2、表達(dá)式用于設(shè)定初始值,是可選項。

4.2.2數(shù)據(jù)對象【例4-8】常量說明實例:CONSTANTDBUS﹕BIT_VECTOR:=“01011010”;定義BIT_VECTOR位矢量型常量DBUS,取值“01011010”。CONSTANTVCC﹕REAL:=5.0;定義REAL實數(shù)型常量VCC,取值5.0。CONSTANTDELY﹕TIME:=25ns;定義TIME時間型常量DELY,取值25ns。4.2.2數(shù)據(jù)對象【例4-9】變量說明實例:VARIABLEx,y:INTEGER;定義變量x和y,整數(shù)類型。VARIABLEcount:INTEGERRANGE0TO255:=10;定義變量count,整數(shù)類型,取值在0-255,初始值為10。4.2.2數(shù)據(jù)對象【例4-10】信號說明實例:SIGNALsys_clk:BIT:=’0’;

SIGNALdata_bus:Std_Logic_Vector(7Downto0):=(others=>’1’);

4.2.2數(shù)據(jù)對象【例4-12】

libraryieee;useieee.std_logic_1164.all;useieee.std_logic_arith.all;useieee.std_logic_unsigned.all;

entitybcdadderisport(op1,op2:inintegerrange0to9;result:outintegerrange0to31);endbcdadder;4.2.2數(shù)據(jù)對象architecturebehaveofbcdadderisconstantajustnum:integer:=6;signalbinadd:integerrange0to18;beginbinadd<=op1+op2;process(binadd)variabletmp:integer:=0beginifbinadd>9thentmp:=adjustnum;elsetmp:=0;endif;result<=binadd+tmp;endprocess;endbehave;4.2.2數(shù)據(jù)對象4.2.3數(shù)據(jù)類型VHDL是一種強(qiáng)類型語言,要求設(shè)計實體中的每一個常數(shù)、信號、變量、函數(shù)以及設(shè)定的各種參量都必須具有確定的數(shù)據(jù)類型,并且只有數(shù)據(jù)類型相同的量才能互相傳遞和作用。VHDL中的數(shù)據(jù)類型:標(biāo)量(整數(shù)、浮點、枚舉、物理)、復(fù)合(數(shù)組、記錄)、文件、存取

。VHDL中的數(shù)據(jù)類型引用方式有:預(yù)定義、自定義

和類型轉(zhuǎn)換等。標(biāo)準(zhǔn)數(shù)據(jù)類型(可直接引用)在VHDL標(biāo)準(zhǔn)程序包STANDARD中定義的,在實際使用中,已自動包含進(jìn)VHDL的源文件中,因而不必通過USE語句以顯式調(diào)用。

4.2.3數(shù)據(jù)類型標(biāo)準(zhǔn)數(shù)據(jù)類型(1)整數(shù)(INTEGER)

整數(shù)類型的數(shù)代表正整數(shù)、負(fù)整數(shù)和零。整數(shù)在硬件電路中是用二進(jìn)制表示的,但其不能被看作位矢量(枚舉型),不能使用邏輯操作符。整數(shù)常量的書寫方式示例如下:2--十進(jìn)制整數(shù)10E4--十進(jìn)制整數(shù)16#D2#--十六進(jìn)制整數(shù)2#11011010#--二進(jìn)制整數(shù)標(biāo)準(zhǔn)數(shù)據(jù)類型(2)實數(shù)

VHDL的實數(shù)類型類似于數(shù)學(xué)上的實數(shù),或稱浮點數(shù),取值范圍為-1.0E38~+1.0E38。書寫時一定要有小數(shù)。僅能在VHDL仿真器中使用,VHDL綜合器不支持實數(shù),因為實數(shù)類型的實現(xiàn)相當(dāng)復(fù)雜,目前在電路規(guī)模上難以承受。實數(shù)常量的書寫方式舉例如下:65971.333333 --十進(jìn)制浮點數(shù)8#43.6#E+4--八進(jìn)制浮點數(shù)43.6E-4 --十進(jìn)制浮點數(shù)(3)位(BIT)

位數(shù)據(jù)類型也屬于枚舉型,取值‘1’或‘0’??梢赃M(jìn)行邏輯運算,運算結(jié)果仍是位數(shù)據(jù)類型。VHDL綜合器用一個二進(jìn)制位表示BIT。在程序包STANDARD中定義的源代碼是:TYPEBITIS(‘0’,‘1’);例:signala,b,c:bit;c<=aandb;

標(biāo)準(zhǔn)數(shù)據(jù)類型(4)位矢量(BIT_VECTOR)

位矢量是基于BIT數(shù)據(jù)類型的數(shù)組。在程序包STANDARD中定義的源代碼是:TYPEBIT_VECTORISARRAY(NATURALRANGE<>)OFBIT;位矢量是用雙引號括起來的一組位數(shù)據(jù)。Signala:bit_vector(7downto0):=”11001010”;

標(biāo)準(zhǔn)數(shù)據(jù)類型(5)布爾(BOOLEAN)

布爾數(shù)據(jù)類型實際上是一個二值枚舉型數(shù)據(jù)類型,它的取值有FALSE和TRUE兩種??梢赃M(jìn)行關(guān)系運算和邏

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論