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

下載本文檔

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

文檔簡(jiǎn)介

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

教材和參考書(shū)教材:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

設(shè)計(jì)

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

ASIC設(shè)計(jì)SOPC/SOC混合ASIC設(shè)計(jì)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電路符號(hào)表示

PLD的互補(bǔ)緩沖器PLD的互補(bǔ)輸入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分類(lèi)

按集成密度分類(lèi)

1.2.2PLD分類(lèi)

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

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

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

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

1.2.2PLD分類(lèi)

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

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

1.3PLD邏輯表示法

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

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

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

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

1.4.1PLD設(shè)計(jì)流程

1.4.2PLD開(kāi)發(fā)工具

Lattice

Diamond軟件Lattice

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

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

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

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

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

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

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

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

IP可分為軟核、固核和硬核。軟核是用VHDL、VerilogHDL等硬件描述語(yǔ)言描述的功能模塊,是與具體實(shí)現(xiàn)的工藝無(wú)關(guān)的IP核。固核是以網(wǎng)表文件的形式提交用戶使用的IP核,是完成了綜合后的可重用IP模塊。硬核是一些已經(jīng)經(jīng)過(guò)布局、并對(duì)尺寸和功耗進(jìn)行優(yōu)化的、不能由使用者修改的IP核。硬核以設(shè)計(jì)的最終階段產(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è)計(jì)編程方法。

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

1.3PLD邏輯表示法

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

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

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

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

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

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

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

2.1.1Lattice公司的CPLD器件Lattice公司的isp系列器件主要包括ispLSI和ispMACH系列:2.1.2ispLSI1016輸出布線區(qū)ORPA0A1A2A3A4A5A6A7集總布線區(qū)(GRP)B7B6B5B4B3B2B1B0輸出布線區(qū)ORP通用邏輯塊(GLB)宏模塊時(shí)鐘分配網(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時(shí)鐘分配網(wǎng)絡(luò)CDN圖2-12.1.2ispLSI1016

通用邏輯模塊GLB2.1.2ispLSI1016

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

輸入/輸出單元IOC2.1.2ispLSI1016

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

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

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

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

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

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

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

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

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

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

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

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

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

1、ispLSI編程信號(hào)線:

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

SCLK:時(shí)鐘;

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

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

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

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

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

3、多個(gè)器件的編程

有并行和串行兩種方式,但都需要在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每個(gè)slice內(nèi)部包含兩個(gè)4輸入查找表LUT2.2FPGA結(jié)構(gòu)與工作原理4輸入查找表LUT2.2FPGA結(jié)構(gòu)與工作原理可配置I/O模塊IOB:可配置I/O模塊用來(lái)配置FPGA芯片引腳與外部模塊通信信號(hào)的傳輸方向及輸出信號(hào)的驅(qū)動(dòng)電流大小。FPGA的引腳可配置成:輸入信號(hào)、輸出信號(hào)、雙向傳輸信號(hào)及高阻態(tài)。可編程互聯(lián)資源IR:可編程互聯(lián)資源連接FPGA內(nèi)部的各功能模塊(如:IOB,CLB,交換矩陣、DCM、BlockRAM等),實(shí)現(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系列是第一款國(guó)產(chǎn)具有自主產(chǎn)權(quán)的千萬(wàn)門(mén)級(jí)高性能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兩個(gè)系列。AL3系列FPGA有5種器件,定位于低成本、低功耗可編程市場(chǎng),其內(nèi)部資源見(jiàn)表2-8。EG4是安路科技推出的“獵鷹”系列產(chǎn)品,有豐富的邏輯、DSP、BRAM、高速差分I/O端口等資源。SALELF系列FPGA共有3代產(chǎn)品,單芯片方案,即時(shí)啟動(dòng),無(wú)須外部Flash,支持OTP模式,55nm工藝,部分產(chǎn)品內(nèi)嵌硬核MCU。2.3.6高云半導(dǎo)體高云半導(dǎo)體FPGA有晨熙系列、小蜜蜂系列、Arora-V系列和GoBridge系列等。晨熙系列采用55nmSRAM工藝,具有高性能DSP、高速LVDS(低電壓差分信號(hào))接口及豐富的B-SRAM(塊狀SRAM)資源,適用于高速、低成本的應(yīng)用場(chǎng)合。晨熙系列主要有GW2A、GW2AR、GW2AN等產(chǎn)品。2.4編程與配置ISP編程與FPGA配置2.4編程與配置在系統(tǒng)編程

ISP(CPLD采用)

FPGA配置

主動(dòng)配置方式:由FPGA從外部程序存儲(chǔ)器EEPROM或Flash中主動(dòng)讀取配置代碼;被動(dòng)配置方式:由外部處理器將配置代碼寫(xiě)入到FPGA中。2.4編程與配置JTAG模式:在開(kāi)發(fā)軟件中通過(guò)下載電纜直接將配置代碼下載到FPGA,是項(xiàng)目設(shè)計(jì)驗(yàn)證階段常用的下載方式。2.5CPLD與FPGA比較CPLD相對(duì)FPGA內(nèi)部邏輯資源較少,且價(jià)格便宜;FPGA內(nèi)部資源多,并可嵌入微處理IP核;編程與配置;CPLD結(jié)構(gòu)適合于組合邏輯設(shè)計(jì),F(xiàn)PGA適合于時(shí)序邏輯設(shè)計(jì)。CPLD內(nèi)部邏輯單元間的連線為連續(xù)式布線,信號(hào)延遲時(shí)間可預(yù)測(cè),而FPGA內(nèi)邏輯單元間信號(hào)延遲不可預(yù)測(cè)。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)時(shí)序與功能門(mén)級(jí)仿真1、功能仿真2、時(shí)序仿真邏輯綜合器結(jié)構(gòu)綜合器1、isp方式下載2、JTAG方式下載3、針對(duì)SRAM結(jié)構(gòu)的配置

4、OTP器件編程

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

開(kāi)發(fā)過(guò)程:

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

二、源文件輸入

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

四、仿真驗(yàn)證

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

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

步驟2:輸入基本單元符號(hào)

步驟2:輸入基本單元符號(hào)

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

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

步驟4:連線

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

下載配置——下載第4章VHDL語(yǔ)言基礎(chǔ)常見(jiàn)的HDL有ABEL、AHDL、VHDL、VerilogHDL和SystemC等。HDLIEEE工業(yè)標(biāo)準(zhǔn)硬件描述語(yǔ)言VHDL、Verilog超高速集成電路硬件描述語(yǔ)言VHDL,美國(guó)國(guó)防部研究計(jì)劃硬件描述語(yǔ)言HDL第4章VHDL語(yǔ)言基礎(chǔ)覆蓋面廣,描述能力強(qiáng),多層次硬件描述語(yǔ)言VHDL有良好的可讀性,既是程序又是文件VHDL的移植性很強(qiáng)VHDL生命周期長(zhǎng),硬件描述與器件工藝無(wú)關(guān)代碼量大,書(shū)寫(xiě)煩瑣VHDL第4章VHDL語(yǔ)言基礎(chǔ)基本組成語(yǔ)言要素本章內(nèi)容:4.1基本結(jié)構(gòu)參數(shù)部分實(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)實(shí)體結(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;--庫(kù)程序包調(diào)用

USEieee.std_logic_1164.ALL;

USEieee.std_logic_unsigned.ALL;

4.1基本結(jié)構(gòu)ENTITYcntm16IS--實(shí)體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ù)部分:庫(kù)(LIBRARY)、程序包(USE);

實(shí)體(ENTITY):[類(lèi)屬]、端口(PORT);

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

4.1基本結(jié)構(gòu)4.1基本結(jié)構(gòu)調(diào)用程序包語(yǔ)句實(shí)體及實(shí)體聲明語(yǔ)句結(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è)計(jì)約定

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

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

library<庫(kù)名>;

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

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

USEieee.std_logic_1164.ALL;實(shí)體(ENTITY)

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

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

:;

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

);END實(shí)體名;ENTITY實(shí)體名IS

4.1.2實(shí)體部分GENERIC類(lèi)屬參數(shù)

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

GENERIC(cntwidth:integer:=4);

4.1.2實(shí)體部分PORT端口

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

4.1.2實(shí)體部分CICONRESETQCNT[3..0]CLKCNTM16端口模式端口模式說(shuō)明(以設(shè)計(jì)實(shí)體為主體)IN輸入,只讀模式,將變量或信號(hào)信息通過(guò)該端口讀入OUT輸出,單向賦值模式,將信號(hào)通過(guò)該端口輸出BUFFER具有讀功能的輸出模式,可以讀或?qū)?,只能有一個(gè)驅(qū)動(dòng)源INOUT雙向,可以通過(guò)該端口讀入或?qū)懗鲂畔ORT端口模式端口數(shù)據(jù)類(lèi)型VHDL數(shù)據(jù)類(lèi)型:預(yù)定義數(shù)據(jù)類(lèi)型、自定義數(shù)據(jù)類(lèi)型只能使用已經(jīng)定義的數(shù)據(jù)類(lèi)型例4-1中數(shù)據(jù)類(lèi)型Std_logic和Std_logic_vector,在ieee.std_logic_1164.all程序包中說(shuō)明,使用時(shí)首先打開(kāi)。實(shí)體實(shí)例【例4-3】4位全加器的實(shí)體描述。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)體主要用來(lái)描述實(shí)體的內(nèi)部結(jié)構(gòu),即描述一個(gè)實(shí)體的功能。描述方式行為描述方式、數(shù)據(jù)流描述方式、結(jié)構(gòu)描述方式、混合描述方式4.1.3結(jié)構(gòu)體部分結(jié)構(gòu)體格式ARCHITECTURE結(jié)構(gòu)體名OF實(shí)體名IS[結(jié)構(gòu)體說(shuō)明部分];BEGIN

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

描述該設(shè)計(jì)單元的功能,主要使用函數(shù)、過(guò)程和進(jìn)程語(yǔ)句,以算法形式描述數(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è)計(jì)單元的硬件結(jié)構(gòu),調(diào)用庫(kù)中的元件或是設(shè)計(jì)模塊,主要使用元件說(shuō)明語(yǔ)句及元件例化語(yǔ)句

結(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--元件說(shuō)明

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

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

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

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

2、以字母開(kāi)頭;

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

4、下劃線不能連用;

5、不能使用保留字;

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

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

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

(2)實(shí)數(shù)表示

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

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

有5部分組成:十進(jìn)制數(shù)表示數(shù)值的基數(shù);隔離符號(hào)“#”;該基數(shù)下對(duì)應(yīng)的數(shù)值;隔離符號(hào)“#”;十進(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ī)則字符串

字符、字符串:?jiǎn)我?hào)引起來(lái)的ASCII字符(數(shù)值、符號(hào)或字母);雙引號(hào)中的一維的字符數(shù)組。

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

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

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

2、語(yǔ)句格式分別為:

名(表達(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(bǔ)(6)值’1’

賦值給c

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

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

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

賦值給d

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

常量變量信號(hào)對(duì)象種類(lèi):

信號(hào)signal、變量variable、常量constant、文件file。

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

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

信號(hào):電路中的物理量,對(duì)應(yīng)于電路的連線和節(jié)點(diǎn)。信號(hào)說(shuō)明全局量,用于描述結(jié)構(gòu)體、實(shí)體、程序包。

4.2.2數(shù)據(jù)對(duì)象對(duì)象特點(diǎn):

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

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

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

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

1、對(duì)象種類(lèi):Constant(常數(shù))、Signal(信號(hào))、Variable(變量)、File(文件)

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

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

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

4.2.2數(shù)據(jù)對(duì)象【例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ù)對(duì)象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ù)對(duì)象4.2.3數(shù)據(jù)類(lèi)型VHDL是一種強(qiáng)類(lèi)型語(yǔ)言,要求設(shè)計(jì)實(shí)體中的每一個(gè)常數(shù)、信號(hào)、變量、函數(shù)以及設(shè)定的各種參量都必須具有確定的數(shù)據(jù)類(lèi)型,并且只有數(shù)據(jù)類(lèi)型相同的量才能互相傳遞和作用。VHDL中的數(shù)據(jù)類(lèi)型:標(biāo)量(整數(shù)、浮點(diǎn)、枚舉、物理)、復(fù)合(數(shù)組、記錄)、文件、存取

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

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

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

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

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

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

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

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

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

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

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論