




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
FPGA實戰(zhàn)訓練精粹目錄TOC\h\h第1章FPGA基本情況介紹\h1.1FPGA簡史\h1.2FPGA芯片(Xilinx)介紹\h1.3FPGA的應用領(lǐng)域\h1.4總結(jié)\h第2章FPGA設計基礎(chǔ)知識\h2.1軟件下載及安裝\h2.2Verilog基本語法介紹\h2.3FPGA開發(fā)流程\h2.4總結(jié)\h第3章FPGA初級設計\h3.1呼吸燈設計與實現(xiàn)\h3.2流水燈設計與實現(xiàn)\h3.3按鍵控制LED設計與實現(xiàn)\h3.4自動售貨機設計與實現(xiàn)\h3.5總結(jié)\h第4章FPGA中級設計\h4.1串口通信設計與實現(xiàn)\h4.2VGA設計與實現(xiàn)\h4.3VGA顯示圖像\h4.4Sobel算子實現(xiàn)\h4.5總結(jié)\h第5章FPGA高級設計\h5.1DDR3理論講解和實踐部分\h5.2PCI-e理論講解和實踐\h5.3總結(jié)\h第6章FPGA高級綜合設計\h6.1SystemGenerator介紹及安裝\h6.2SystemGenerator工具的基本使用方法\h6.3SystemGenerator實例\h6.4HLS介紹及安裝\h6.5HLS工具的基本使用方法\h6.6HLS實例——基于HLS的Sobel邊緣檢測\h6.7總結(jié)第1章FPGA基本情況介紹FPGA(FieldProgrammableGateArray,現(xiàn)場可編程門陣列)屬于可編程邏輯器件的一種,在20世紀90年代獲得突飛猛進的發(fā)展,經(jīng)過將近30年的發(fā)展,到目前已成為實現(xiàn)數(shù)字系統(tǒng)的主流平臺之一。本章主要介紹FPGA的基本歷史、基本結(jié)構(gòu)、應用領(lǐng)域及其最新進展,使初學者對FPGA能夠有基本的了解。1.1FPGA簡史本節(jié)從FPGA與ASIC、CPLD的區(qū)別,Altera與Xilinx的區(qū)別,Verilog與VHDL等方面對FPGA進行簡要介紹。1.1.1FPGA與ASIC1.FPGAFPGA是在PAL、GAL、CPLD等可編程器件的基礎(chǔ)上進一步發(fā)展的產(chǎn)物。它是作為專用集成電路(ApplicationSpecificIntegratedCircuit,ASIC)領(lǐng)域中的一種半定制電路而出現(xiàn)的,既解決了定制電路的不足,又克服了原有可編程器件門電路數(shù)有限的缺點。它是當今數(shù)字系統(tǒng)設計的主要硬件平臺,主要特點是完全由用戶通過軟件進行配置和編程,從而完成某種特定的功能,且可反復擦寫。在修改和升級時,不需要額外改變PCB電路板,只是在計算機上修改和更新程序,使硬件設計工作成為軟件開發(fā)工作,縮短系統(tǒng)設計的周期,提高實現(xiàn)的靈活性并降低成本。FPGA的特點:加電時,F(xiàn)PGA芯片將EPROM中的數(shù)據(jù)讀入片內(nèi)編程RAM中,配置完成后,F(xiàn)PGA進入工作狀態(tài)。掉電后,F(xiàn)PGA恢復成白片,內(nèi)部邏輯關(guān)系消失,因此,F(xiàn)PGA能夠反復使用。理論上,F(xiàn)PGA允許無限次的編程。FPGA的編程無須專用的FPGA編程器,只需用通用的EPROM、PROM編程器即可。FPGA內(nèi)部有豐富的觸發(fā)器和I/O引腳,能夠快速成品,不需要用戶介入芯片的布局布線和工藝問題,而且可以隨時改變邏輯功能,使用靈活。2.ASICASIC是應特定用戶要求和特定電子系統(tǒng)的需要而設計、制造的集成電路。用一句話總結(jié)就是市場上買不到的芯片。蘋果的A系列處理器就是典型的ASIC。ASIC是定制的,具體分為全定制和半定制?!とㄖ圃O計可以實現(xiàn)最小面積、最佳布線布局、最優(yōu)功耗速度積,得到最好的電特性。全定制設計的特點是精工細作,設計要求高、成本高、周期長?!ぐ攵ㄖ圃O計方法又分為基于標準單元的設計方法CBIC(CellBasedIC)和基于門陣列的設計方法。半定制主要適合開發(fā)周期短、低開發(fā)成本、投資風險小的小批量數(shù)字電路設計。ASIC的特點:面向特定用戶的需求,量身定制,執(zhí)行速度較快。ASIC在批量生產(chǎn)時與通用集成電路相比具有體積小、功耗低、可靠性高、性能高、保密性強、成本低等優(yōu)點。ASIC需要較長的開發(fā)周期,風險較大,一旦有問題,就會導致成片全部作廢,所以小公司已經(jīng)玩不起了。ASIC的基本結(jié)構(gòu)如圖1.1所示。圖1.1ASIC基本架構(gòu)近年來人工智能受到的關(guān)注越來越多,許多公司正在積極開發(fā)能實現(xiàn)移動端人工智能的硬件,尤其是能夠結(jié)合未來的物聯(lián)網(wǎng)應用。移動端人工智能的實現(xiàn)方法有兩大流派:FPGA流派和ASIC流派。FPGA流派的代表有Xilinx主推的Zynq平臺,而ASIC流派的代表有Movidius。下面來分析FPGA與ASIC的具體區(qū)別在哪里。3.FPGA和ASIC的區(qū)別(1)設計流程圖1.2所示為FPGA和ASIC設計流程。·FPGA:完整的FPGA設計流程包括功能描述、電路設計與輸入、功能仿真、綜合優(yōu)化、綜合后仿真、實現(xiàn)與布局布線、時序仿真、板級仿真與驗證、調(diào)試與加載配置。·ASIC:ASIC的設計流程(數(shù)字芯片)包括功能描述、模塊劃分、模塊編碼輸入、模塊級仿真驗證、系統(tǒng)集成和系統(tǒng)仿真驗證、綜合、STA(靜態(tài)時序分析)、形式驗證。圖1.2FPGA和ASIC設計流程說明在ASIC設計過程中,往往要用FPGA進行原型驗證。FPGA驗證是進行ASIC設計的重要環(huán)節(jié),其后還需要引入ASIC版本源碼,插入IOPAD、DFT,進行功耗估計和其他后端流程。完成FPGA驗證可以就完成了ASIC整套流程的50%~80%。從設計成本來考慮:小批量時,F(xiàn)PGA占優(yōu);大批量時,ASIC占優(yōu)。FPGA本身就是一個芯片,只是我們可以通過編程的方式修改內(nèi)部邏輯連接和配置實現(xiàn)自己想要的功能。實現(xiàn)ASIC就如從一張白紙開始,必須得有代碼,之后綜合,然后布局、布線,最后得到GDSII(一種時序提供格式)后去流片。(2)速度相同的工藝和設計,在FPGA上的速度應該比ASIC慢。因為FPGA內(nèi)部基于通用的結(jié)構(gòu),也就是LUT(LookUpTable),可以實現(xiàn)加法器、組合邏輯等。而ASIC,一般加法器就是加法器,比較器就是比較器,F(xiàn)PGA結(jié)構(gòu)上的通用性必然導致冗余。另外,F(xiàn)PGA的基本單元是LUT(LUT組成Slice,Slice組成CLB,這是Xilinx的結(jié)構(gòu)),為此,大的設計假如一個LUT實現(xiàn)不了,就得用兩個LUT,一個Slice實現(xiàn)不了,就要用CLB,不同結(jié)構(gòu)處于特定的位置,信號之間的互聯(lián)導致的wiredelay是不可忽略的一部分。而對于ASIC來說沒有結(jié)構(gòu)上的限制,而且對于特定的線路布局來說可以在空間上靠得很近,相對來說wiredelay和celldelay都應該比FPGA小。當然,LUT中也有DFF,作為高速的設計,一般都會在一個簡單的組合邏輯操作之后打一拍,再做下一步的處理。提示delay(延遲)分為celldelay和wiredelay。celldelay是指元器件內(nèi)部的delay,wiredelay是器件互連Pin-to-Pin的delay。(3)體積如果結(jié)構(gòu)完全相同,那么FPGA會被ASIC遠遠踢飛。FPGA要規(guī)模大得多才能實現(xiàn)ASIC相同的功能,主頻還只有幾分之一。(4)功耗在相同工藝條件下,F(xiàn)PGA的功耗要大于ASIC。尤其是基于占用大量硅面積的、每個單元6個晶體管的靜態(tài)存儲器(SRAM)的查尋表(LUT)和配置元件技術(shù)的FPGA,其功耗要比對等的ASIC大得多。(5)成本FPGA貴在單片,開發(fā)工具費用和硬件損耗風險基本不存在。ASIC貴在流片的費用和開發(fā)工具。NRE(Non-RecurringEngineering,一次性工程)費用隨著工藝的提高變得相當貴,除非芯片一次成功后即可量產(chǎn),否則單片費用將奇貴無比?。?)其他方面ASIC用于大型項目,而對于需要快速投放市場且支持遠程升級的小型項目,F(xiàn)PGA則更為適合。FPGA技術(shù)的主要優(yōu)勢仍是產(chǎn)品投放市場的時間較短。ASIC的優(yōu)勢在于加電后可立即運行,就單位邏輯大小而言,封裝選擇更多,還可以包括某些模擬邏輯。與此相對比,F(xiàn)PGA加載配置進入存儲器需要時間,因此不能立即工作。此外,F(xiàn)PGA的封裝也較復雜。FPGA內(nèi)部還包括接口I/O。I/O分為普通I/O和高速I/O。高速I/O支持高速的SERDES等,用于實現(xiàn)XAUI、PCI-e等高速接口,這些接口動輒幾Gbps。此外,種類多種多樣的硬核IP也是各FPGA廠商差異化競爭的利器,例如POWERPC、ARM等硬核IP,從而構(gòu)成CPU+FPGA于一體的集可編程性和可重構(gòu)的處理平臺。(7)兩者的定位FPGA和ASIC產(chǎn)品的使用要根據(jù)產(chǎn)品的定位和設計需要來選擇。ASIC產(chǎn)品適用于設計規(guī)模特別大(如CPU、DSP或多層交換芯片等)或者應用于技術(shù)非常成熟且利潤率非常低的產(chǎn)品(如家用電器和其他消費類電器)以及大量應用的通用器件(如RAM、PHY等)。FPGA產(chǎn)品適用于設計規(guī)模適中、產(chǎn)品要求快速占領(lǐng)市場或產(chǎn)品需要靈活變動的特性設計等方面的產(chǎn)品,如PDH、2.5GB以下的SDH設備和大部分的接口轉(zhuǎn)換芯片等。當然,具體選擇哪種產(chǎn)品來設計還要設計者充分考慮自己的產(chǎn)品定位來決定。(8)兩者在互相融合最明顯的莫過于處理器中開始集成FPGA,而可編程的ASIC也開始興起。隨著SoC(系統(tǒng)級芯片或系統(tǒng))成為主流,兩者的邊界也就不那么明顯了。(9)總結(jié)總的來說,就如同GPU和CPU一樣:GPU可以非常快速地處理圖像,但是要處理其他的東西,GPU則有些困難。CPU能處理很多的運算,也能處理圖像,只是慢而已。一旦你是沖著某個目的去的(ASIC),最快速的實現(xiàn)方式就可以。如果想要多方面兼顧(FPGA),就不可能在每一個方面都做到最好。在使用時,你必須權(quán)衡利弊。1.1.2FPGA與CPLDCPLD(ComplexProgrammableLogicDevice,復雜可編程邏輯器件)是從PAL和GAL器件發(fā)展出來的器件,相對而言規(guī)模大、結(jié)構(gòu)復雜,屬于大規(guī)模集成電路范圍,是一種用戶根據(jù)各自需要而自行構(gòu)造邏輯功能的數(shù)字集成電路。其基本設計方法是借助集成開發(fā)軟件平臺,用原理圖、硬件描述語言等方法生成相應的目標文件,通過下載電纜(“在系統(tǒng)”編程)將代碼傳送到目標芯片中來實現(xiàn)設計的數(shù)字系統(tǒng)。FPGA和CPLD的區(qū)別如下:(1)CPLD更適合完成各種算法和組合邏輯,F(xiàn)PGA更適合完成時序邏輯。換句話說,F(xiàn)PGA更適合觸發(fā)器豐富的結(jié)構(gòu),而CPLD更適合觸發(fā)器有限而乘積項豐富的結(jié)構(gòu)。(2)CPLD的連續(xù)式布線結(jié)構(gòu)決定了它的時序延遲是均勻和可預測的,而FPGA的分段式布線結(jié)構(gòu)決定了其延遲的不可預測性。(3)在編程上,F(xiàn)PGA比CPLD具有更大的靈活性。CPLD通過修改具有固定內(nèi)連電路的邏輯功能來編程,F(xiàn)PGA主要通過改變內(nèi)部連線的布線來編程;FPGA可在邏輯門下編程,而CPLD是在邏輯塊下編程的。(4)FPGA的集成度比CPLD高,具有更復雜的布線結(jié)構(gòu)和邏輯實現(xiàn)。(5)CPLD比FPGA使用起來更方便。CPLD的編程采用E2PROM或FastFlash技術(shù),無須外部存儲器芯片,使用簡單。而FPGA的編程信息需存放在外部存儲器上,使用方法復雜。(6)CPLD的速度比FPGA快,并且具有較大的時間可預測性。這是由于FPGA是門級編程,并且CLB之間采用分布式互聯(lián),而CPLD是邏輯塊級編程,并且其邏輯塊之間的互聯(lián)是集總式的。(7)在編程方式上,CPLD主要是基于E2PROM或FastFlash存儲器編程的,編程次數(shù)可達1萬次,優(yōu)點是系統(tǒng)斷電時編程信息也不丟失。CPLD又可分為在編程器上編程和在系統(tǒng)編程兩類。FPGA大部分是基于SRAM編程的,編程信息在系統(tǒng)斷電時丟失,每次上電時,需從器件外部將編程數(shù)據(jù)重新寫入SRAM中。其優(yōu)點是可以編程任意次,可在工作中快速編程,從而實現(xiàn)板級和系統(tǒng)級的動態(tài)配置。(8)CPLD保密性好,F(xiàn)PGA保密性差。(9)一般情況下,CPLD的功耗要比FPGA大,且集成度越高越明顯。隨著復雜可編程邏輯器件(CPLD)密度的提高,數(shù)字器件設計人員在進行大型設計時,既靈活又容易,而且產(chǎn)品可以很快進入市場。許多設計人員已經(jīng)感受到CPLD有容易使用、時序可預測和速度高等優(yōu)點。然而,過去由于受到CPLD密度的限制,他們只好轉(zhuǎn)向FPGA和ASIC?,F(xiàn)在,設計人員可以體會到密度高達數(shù)十萬門的CPLD所帶來的好處。1.1.3Altera與Xilinx要比較Xilinx和Altera公司的FPGA,就要清楚兩個大廠FPGA的結(jié)構(gòu),由于設計不同,兩家的FPGA結(jié)構(gòu)、參數(shù)也各不相同,但可以統(tǒng)一到LUT查找表上。1.Altera芯片(1)邏輯陣列模塊(LAB)邏輯陣列模塊的主要結(jié)構(gòu)是8個適應邏輯模塊(ALM),還包括一些進位鏈和控制邏輯等結(jié)構(gòu)。每個ALM中都包含了兩個可編程的寄存器、兩個專用全加器、一個進位鏈、一個共享算術(shù)鏈和一個寄存器鏈。(2)存儲器模塊(RAM)StratixII器件具有TriMatrix存儲結(jié)構(gòu),包括3種大小的嵌入式RAM塊。TriMatrix存儲器包括512位的M512塊、4KB的M4K塊和512KB的M-RAM塊,每個都可以配置支持各種特性。(3)數(shù)字信號處理模塊(DSP)DSP塊結(jié)構(gòu)是為實現(xiàn)多種最大性能和最小邏輯資源利用率的DSP功能而優(yōu)化的。(4)鎖相環(huán)(PLL)StratixII器件具有12個鎖相環(huán)和48個獨立系統(tǒng)時鐘,可以作為中央時鐘管理器以滿足系統(tǒng)時序需求。2.Xilinx芯片Xilinx的FPGA主要由可配置邏輯塊(CLB)、時鐘管理模塊(CMT)、存儲器(RAM/FIFO)、數(shù)字信號處理模塊(DSP)和一些專用模塊組成。(1)可配置邏輯塊(CLB)可配置邏輯塊是Xilinx的基本邏輯單元。s7系列的每個CLB包含兩個Slice,每個Slice由4個(A、B、C、D)6輸入LUT和8個寄存器REG組成。(2)時鐘管理模塊(CMT)時鐘管理模塊用于產(chǎn)生高質(zhì)量的時鐘。以Virtex-5系列器件為例,CMT包括兩個數(shù)字時鐘管理單元(DCM)和一個鎖相環(huán)電路(PLL)。(3)存儲器(RAM/FIFO)現(xiàn)代Xilinx的FPGA都有內(nèi)部的存儲器塊。以Virtex-5為例,內(nèi)部包含若干塊RAM,每一塊36KB,并且RAM的大小可以靈活配置。Virtex-5內(nèi)的RAM是同步的雙口RAM,并且可以配置為多速率的FIFO(FirstInFirstOut,先進先出)存儲器,極大地提高了設計的靈活性。(4)數(shù)字信號處理模塊(DSP)大多數(shù)的FPGA產(chǎn)品都提供了DSP。(5)一些專用模塊除了上述模塊外,在現(xiàn)代的Xilinx的FPGA產(chǎn)品中還有一些專用模塊,例如RocketIO千兆位級收發(fā)器、PCI-e端點模塊和三態(tài)以太網(wǎng)MAC模塊等。Xilinx與Altera的FPGA結(jié)構(gòu)最大的不同是邏輯單元部分:Xilinx的邏輯單元基本組成為可配置邏輯模塊(CLB),而Altera的為LAB,更深一層講,CLB和LAB里面也都是由LUT、觸發(fā)器等構(gòu)成的。兩個公司的FPGA組成各有特點,這也決定了它們的FPGA產(chǎn)品在功能上各有特點。現(xiàn)在的Altera已經(jīng)成被Intel收購,Xilinx和Intel正積極開拓通信軍工以外的市場,目前已經(jīng)在機器學習領(lǐng)域占據(jù)一席之地,無論面向服務器領(lǐng)域做Training(訓練)的high-end(可理解為高端)芯片,還是面對終端領(lǐng)域(如汽車電子),IoT(InternetofThings,物聯(lián)網(wǎng))設備的低功耗芯片都有不錯的應用前景。FPGA也跟隨摩爾定律在規(guī)模上不斷發(fā)展,不論是邏輯還是片內(nèi)存儲,現(xiàn)在的FPGA也不再是僅僅擅長定點運算,大量浮點DSP已經(jīng)開始使用,加上原有IO方面的優(yōu)勢,相信可以和GPU一較高下。最后,兩家FPGA都在向異構(gòu)架構(gòu)發(fā)展,Xilinx主推ARM+FPGA的架構(gòu),新的UltraScaleMPSOC更是配有4核A53、Mail400GPU、cortex-R5實時處理器;Altera也出過ARM的SOC,但是現(xiàn)在被Intel收購了,會不會投入x86的懷抱還是未知數(shù),目前其發(fā)展路線圖并不如Xilinx那么清晰。1.1.4Verilog與VHDLVerilogHDL是業(yè)界普遍采用的一種硬件描述語言,用于從算法級、門級到開關(guān)級的多種抽象設計層次的數(shù)字系統(tǒng)建模過程。被建模的數(shù)字系統(tǒng)對象的復雜性可以介于簡單的門和完整的電子數(shù)字系統(tǒng)之間。數(shù)字系統(tǒng)能夠按層次描述,并可在相同描述中顯式地進行時序建模。VerilogHDL從C編程語言中繼承了多種操作符和結(jié)構(gòu),其語法規(guī)則與C語言非常相似,盡管二者有著本質(zhì)上的區(qū)別??紤]到絕大多數(shù)的數(shù)字設計工程師都應該熟悉C語言,因此Verilog語言的入門相比VHDL語言更為簡單。VerilogHDL語言不僅定義了語法,還對每個語法結(jié)構(gòu)定義了清晰的模擬、仿真語義。因此,用這種語言編寫的模型能夠使用Verilog仿真器進行驗證。VerilogHDL提供了擴展的建模能力,其中許多擴展最初很難理解。但是,VerilogHDL語言的核心子集非常易于學習和使用,這對大多數(shù)建模應用來說已經(jīng)足夠。當然,完整的硬件描述語言足以對從最復雜的芯片到完整的電子系統(tǒng)進行描述。VHDL具有以下特點:(1)功能強大,設計靈活VHDL具有功能強大的語言結(jié)構(gòu),可以用簡潔明確的源代碼來描述復雜的邏輯控制。它具有多層次的設計描述功能,層層細化,最后可直接生成電路級描述。VHDL支持同步電路、異步電路和隨機電路的設計,這是其他硬件描述語言所不能比擬的。VHDL還支持各種設計方法,既支持自底向上的設計,又支持自頂向下的設計;既支持模塊化設計,又支持層次化設計。(2)支持廣泛,易于修改由于VHDL已經(jīng)成為IEEE標準所規(guī)范的硬件描述語言,目前大多數(shù)EDA(ElectronicsDesignAutomation,電子設計自動化)工具幾乎都支持VHDL,這為VHDL的進一步推廣和廣泛應用奠定了基礎(chǔ)。(3)強大的系統(tǒng)硬件描述能力VHDL具有多層次的設計描述功能,既可以描述系統(tǒng)級電路,又可以描述門級電路。描述既可以采用行為描述、寄存器傳輸描述或結(jié)構(gòu)描述,也可以采用三者混合的混合級描述。另外,VHDL支持慣性延遲和傳輸延遲,可以準確地建立硬件電路模型。VHDL支持預定義和自定義的數(shù)據(jù)類型,給硬件描述帶來較大的自由度,使設計人員能夠方便地創(chuàng)建高層次的系統(tǒng)模型。(4)獨立于器件的設計,與工藝無關(guān)設計人員用VHDL進行設計時,不需要首先考慮選擇完成設計的器件,就可以集中精力進行設計的優(yōu)化。當設計描述完成后,可以用多種不同的器件結(jié)構(gòu)來實現(xiàn)其功能。(5)很強的移植能力VHDL是一種標準化的硬件描述語言,同一個設計描述可以被不同的工具所支持,使得設計描述的移植成為可能。(6)易于共享和復用VHDL采用基于庫(Library)的設計方法,可以建立各種可再次利用的模塊。這些模塊可以預先設計或使用以前設計中的存檔模塊,將這些模塊存放到庫中,就可以在以后的設計中進行復用,使設計成果在設計人員之間進行交流和共享,減少硬件電路設計?,F(xiàn)在,VHDL和Verilog作為IEEE的工業(yè)標準硬件描述語言,又得到眾多EDA公司的支持,在電子工程領(lǐng)域已成為事實上的通用硬件描述語言。有專家認為,在新的世紀中,VHDL與Verilog語言將承擔起大部分的數(shù)字系統(tǒng)設計任務。提示具體采用Verilog還是VHDL作為設計語言并不重要。其實作為一個成熟的數(shù)字設計工程師,Verilog和VHDL都應該是熟悉的,最低的要求應該是能夠讀懂一種,熟練掌握另一種進行設計。硬件描述語言只是數(shù)字系統(tǒng)的設計工具,雖然掌握工具對于成功進行數(shù)字系統(tǒng)設計很重要,但是更為重要的是對于數(shù)字設計的基本原理和理論的學習,只有深入掌握了數(shù)字系統(tǒng)設計的基本原理和理論,才能設計出符合實際需求的數(shù)字系統(tǒng),只有在這樣的前提下,學習設計工具才是有意義的。1.2FPGA芯片(Xilinx)介紹本節(jié)主要談談Xilinx的FPGA芯片的結(jié)構(gòu)。目前,F(xiàn)PGA芯片仍是基于查找表技術(shù)的,但其概念和性能已經(jīng)遠遠超出查找表技術(shù)的限制,并且整合了常用功能的硬核模塊(如塊RAM、時鐘管理單元MMCM、DSP硬核乘加器等)。圖1.3所示為Xilinx公司推出的最新系列FPGA,采用的是ASMBL(AdvancedSiliconModularBlock)架構(gòu)。在ASMBL架構(gòu)中,每類資源以列形式存在。圖1.3ASMBL架構(gòu)1.2.1FPGA的基本結(jié)構(gòu)圖1.4所示為Xilinx公司Spartan-2系列FPGA的內(nèi)部結(jié)構(gòu)圖,從中可以看出FPGA芯片主要由7部分組成:可編程輸入輸出單元、基本可編程邏輯單元、完整的時鐘管理、嵌入塊式RAM、豐富的布線資源、內(nèi)核的底層功能單元和內(nèi)嵌專用硬件模塊。圖1.4FPGA芯片的內(nèi)部結(jié)構(gòu)注意Virtex5后續(xù)的Virtex系列、Spartan6后續(xù)的Spartan系列均為6輸入的LUT,之前的FPGA系列均為4輸入的LUT。每個模塊的功能如下。1.可編程輸入輸出單元(IOB)可編程輸入/輸出單元簡稱I/O單元,是芯片與外界電路的接口部分,完成不同于電氣特性下對輸入/輸出信號的驅(qū)動與匹配要求,其典型結(jié)構(gòu)如圖1.5所示。為了便于管理和適應多種電氣標準,F(xiàn)PGA的IOB被劃分為若干個bank,每個bank的接口標準由其接口電壓VCCO決定,一個bank只能有一種VCCO,但不同的bank的VCCO可以不同。只有相同電氣標準的端口才能連接在一起,VCCO電壓相同是接口標準的基本條件。FPGA內(nèi)的I/O按組分類,每組都能夠獨立地支持不同的I/O標準。通過軟件的靈活配置,可適配不同的電氣標準與I/O物理特性、調(diào)整驅(qū)動電流的大小、改變上拉電阻與下拉電阻。目前,I/O的頻率越來越高,一些高端的FPGA通過DDR寄存器技術(shù)可以支持高達2Gb/s的數(shù)據(jù)速率。外部輸入信號可以通過IOB模塊的存儲單元輸入到FPGA的內(nèi)部,也可以直接輸入FPGA內(nèi)部。當外部輸入信號經(jīng)過IOB模塊的存儲單元輸入到FPGA內(nèi)部時,其保持時間(holdtime)的要求可以降低,通常默認為0。IO塊內(nèi)部結(jié)構(gòu)如圖1.5所示。圖1.5IO塊內(nèi)部結(jié)構(gòu)示意圖2.可配置邏輯塊(CLB)CLB是FPGA內(nèi)的基本邏輯單元。CLB的實際數(shù)量和特性會依據(jù)器件的不同而不同,但是每個CLB都包含一個可配置開關(guān)矩陣,此矩陣由4或6輸入、一些選型電路(多路復用器等)和觸發(fā)器組成。開關(guān)矩陣是高度靈活的,可以對其進行配置,以便處理組合邏輯、移位寄存器或RAM。在Xilinx公司的FPGA器件中,CLB由多個(一般為4或2個)相同的Slice和附加邏輯構(gòu)成,如圖1-6所示。每個CLB模塊不僅可以用于實現(xiàn)組合邏輯、時序邏輯,還可以配置為分布式RAM和分布式ROM。典型的CLB結(jié)構(gòu)如圖1.6所示。圖1.6典型的CLB結(jié)構(gòu)示意圖Slice是Xilinx公司定義的基本邏輯單位?;?輸入LUT的傳統(tǒng)Slice內(nèi)部結(jié)構(gòu)如圖1.7所示。一個Slice由兩個4/6輸入的查找表函數(shù)、進位邏輯、算術(shù)邏輯、存儲邏輯和函數(shù)復用器組成。算術(shù)邏輯包括一個異或門(XORG)和一個專用與門(MULTAND),一個異或門可以使一個Slice實現(xiàn)2bit全加操作,專用與門用于提高乘法器的效率;進位邏輯由專用進位信號和函數(shù)復用器(MUXC)組成,用于實現(xiàn)快速的算術(shù)加減法操作;4輸入函數(shù)發(fā)生器用于實現(xiàn)4輸入LUT、分布式RAM或16比特移位寄存器。典型的4輸入Slice結(jié)構(gòu)如圖1.7所示。圖1.7典型的4輸入Slice結(jié)構(gòu)示意圖目前的FPGA一般都采用6輸入查找表,可以實現(xiàn)6輸入LUT或64比特移位寄存器,進位邏輯包括兩條快速進位鏈,用于提高CLB模塊的處理速度。基于6輸入LUT的Slice內(nèi)部結(jié)構(gòu)包括4個6輸入的LUT和8個寄存器,因此新一代的6輸入Slice,其邏輯能力從資源上講是“老”器件的4倍(26/24=4)。3.時鐘管理模塊業(yè)內(nèi)大多數(shù)FPGA均提供數(shù)字時鐘管理(賽靈思公司的全部FPGA均具有這種特性)。賽靈思公司推出先進的FPGA提供數(shù)字時鐘管理和相位環(huán)路鎖定。相位環(huán)路鎖定能夠提供精確的時鐘綜合,且能夠降低抖動,并實現(xiàn)過濾功能。PLL原理圖如圖1.8所示。圖1.8PLL原理圖4.嵌入式塊RAM(BRAM)嵌入式RAM模塊概況如圖1.9所示。圖1.9內(nèi)嵌的塊RAM大多數(shù)FPGA都具有內(nèi)嵌的塊RAM,這大大拓展了FPGA的應用范圍和靈活性。塊RAM可被配置為單端口RAM、雙端口RAM、內(nèi)容地址存儲器(CAM)以及FIFO等常用存儲結(jié)構(gòu)。RAM、FIFO是比較普及的概念,在此就不冗述了。CAM存儲器在其內(nèi)部的每個存儲單元中都有一個比較邏輯,寫入CAM中的數(shù)據(jù)會和內(nèi)部的每一個數(shù)據(jù)進行比較,并返回與端口數(shù)據(jù)相同的所有數(shù)據(jù)的地址,因而在路由的地址交換器中有廣泛的應用。除了塊RAM外,還可以將FPGA中的LUT靈活地配置成RAM、ROM和FIFO等結(jié)構(gòu)。在實際應用中,芯片內(nèi)部塊RAM的數(shù)量也是選擇芯片的一個重要因素。目前,6輸入LUT器件中的單片塊RAM的容量為36K比特,即位寬為36比特,深度為1024個,可以根據(jù)需要改變其位寬和深度,但要滿足兩個原則:·首先,修改后的容量不能大于36K比特?!て浯?,位寬最大不能超過72比特。當然,可以將多片塊RAM級聯(lián)起來形成更大的RAM,此時只受限于芯片內(nèi)塊RAM的數(shù)量,而不再受上面兩個原則的約束。5.豐富的布線資源布線資源連通FPGA內(nèi)部的所有單元,而連線的長度和工藝決定著信號在連線上的驅(qū)動能力和傳輸速度。FPGA芯片內(nèi)部有著豐富的布線資源,根據(jù)工藝、長度、寬度和分布位置的不同而劃分為4個不同的類別?!さ谝活愂侨植季€資源,用于芯片內(nèi)部全局時鐘和全局復位/置位的布線?!さ诙愂情L線資源,用以完成芯片Bank間的高速信號和第二全局時鐘信號的布線?!さ谌愂嵌叹€資源,用于完成基本邏輯單元之間的邏輯互連和布線?!さ谒念愂欠植际降牟季€資源,用于專有時鐘、復位等控制信號線。FPGA芯片的性能差異主要就是布線資源數(shù)量的差異,高端FPGA具有最好的布線資源,能夠?qū)崿F(xiàn)更高速的設計,更容易達到時序收斂。在實際設計中,設計者不需要直接選擇布線資源,布局布線器可自動根據(jù)輸入邏輯網(wǎng)表的拓撲結(jié)構(gòu)和約束條件選擇布線資源來連通各個模塊單元。從本質(zhì)上講,布線資源的使用方法和設計的結(jié)果有密切、直接的關(guān)系。6.底層內(nèi)嵌功能單元內(nèi)嵌功能模塊主要是指DLL(DelayLockedLoop)、PLL(PhaseLockedLoop)、DSP等軟處理核(SoftCore)?,F(xiàn)在越來越豐富的內(nèi)嵌功能單元使得單片F(xiàn)PGA成為系統(tǒng)級的設計工具,使其具備了軟硬件聯(lián)合設計的能力,逐步向SOC平臺過渡。DLL和PLL具有類似的功能,可以完成時鐘高精度、低抖動的倍頻和分頻,以及占空比調(diào)整和移相等功能。Xilinx公司生產(chǎn)的芯片上集成了PLL和DLL,Altera公司的芯片上集成了PLL,Lattice公司的新型芯片上同時集成了PLL和DLL。PLL和DLL可以通過IP核生成的工具方便地進行管理和配置。DLL的結(jié)構(gòu)如圖1.10所示。圖1.10典型的DLL模塊示意圖7.內(nèi)嵌專用硬核內(nèi)嵌專用硬核是相對底層嵌入的軟核而言的,指FPGA處理能力強大的硬核(HardCore),等效于ASIC電路。為了提高FPGA性能,芯片生產(chǎn)商在芯片內(nèi)部集成了一些專用的硬核。例如,為了提高FPGA的乘法速度,主流的FPGA中都集成了專用乘法器;為了適用通信總線與接口標準,很多高端的FPGA內(nèi)部都集成了串并收發(fā)器(SERDES),可以達到數(shù)十吉字節(jié)每秒的收發(fā)速度。賽靈思公司的高端產(chǎn)品不僅集成了PowerPC系列CPU,還內(nèi)嵌了DSPCore模塊,相應的系統(tǒng)級設計工具是EDK和PlatformStudio,并依此提出了片上系統(tǒng)(SystemonChip)的概念。通過PowerPC、Miroblaze、Picoblaze等平臺,能夠開發(fā)標準的DSP處理器及其相關(guān)應用,達到SOC的開發(fā)目的。此外,新推出的賽靈思的FPGA系列(如Virtex-5LXT)還內(nèi)建了PCI-e和三態(tài)以太網(wǎng)MAC硬核(TEMAC)。與軟核實現(xiàn)方式相比,硬核可以把功耗降低5~10倍,節(jié)約將近90%的邏輯資源。Xilinx三態(tài)以太網(wǎng)MAC核是一個可參數(shù)化的核,非常適合在網(wǎng)絡設備中使用,例如開關(guān)和路由器等。可定制的TEMAC核使系統(tǒng)設計者能夠?qū)崿F(xiàn)寬范圍的集成式以太網(wǎng)設計,從低成本10/100Mbps以太網(wǎng)到性能更高的1GB端口。TEMAC核設計符合IEEE802.3規(guī)范的要求,并且可以在1000Mbps、100Mbps和10Mbps模式下運行。另外,它還支持半雙工和全雙工操作。TEMAC核通過XilinxCOREGenerator工具提供,是Xilinx全套以太網(wǎng)解決方案的一部分。1.2.2軟核、硬核及固核IP(IntelligentProperty)核是具有知識產(chǎn)權(quán)核的集成電路芯核的總稱,是經(jīng)過反復驗證過的、具有特定功能的宏模塊,與芯片制造工藝無關(guān),可以移植到不同的半導體工藝中。到了SOC階段,IP核設計已成為ASIC電路設計公司和FPGA提供商的重要任務,也是其實力體現(xiàn)。對于FPGA開發(fā)軟件,其提供的IP核越豐富,用戶的設計就越方便,其市場占用率就越高。目前,IP核已經(jīng)變成系統(tǒng)設計的基本單元,并作為獨立設計成果被交換、轉(zhuǎn)讓和銷售。從IP核的提供方式上,通常將其分為軟核、固核和硬核3類。從完成IP核所花費的成本來講,硬核代價最大;從使用靈活性來講,軟核的可復用性最高。1.軟核軟核在EDA設計領(lǐng)域指的是綜合之前的寄存器傳輸級(RTL)模型;具體在FPGA設計中指的是對電路的硬件語言描述,包括邏輯描述、網(wǎng)表和幫助文檔等。軟核只經(jīng)過功能仿真,需要經(jīng)過綜合以及布局布線才能使用。其優(yōu)點是靈活性高、可移植性強,允許用戶自配置;缺點是對模塊的預測性較低,在后續(xù)設計中存在發(fā)生錯誤的可能性,有一定的設計風險。軟核是IP核應用最廣泛的形式。2.硬核硬核在EDA設計領(lǐng)域指經(jīng)過驗證的設計版圖;在FPGA設計中指布局和工藝固定、經(jīng)過前端和后端驗證的設計,設計人員不能對其進行修改。不能修改的原因有兩個:首先是系統(tǒng)設計對各個模塊的時序要求很嚴格,不允許打亂已有的物理版圖;其次是保護知識產(chǎn)權(quán)的要求,不允許設計人員對其有任何改動。IP硬核不許修改的特點使其復用有一定的困難,因此只能用于某些特定應用,使用范圍較窄。目前,所有的XilinxFPGA內(nèi)部都集成了CDM(時鐘管理單元)、DSP單元及BRAM等硬核資源,高端芯片中還包括SERDES、PCI-e、DDR3控制器、ARM/PowerPC以及XADC等硬核資源。3.固核固核在EDA設計領(lǐng)域指的是帶有平面規(guī)劃信息的網(wǎng)表;具體在FPGA設計中可以看作帶有布局規(guī)劃的軟核,通常以RTL代碼和對應具體工藝網(wǎng)表的混合形式提供。將RTL描述結(jié)合具體標準單元庫進行綜合優(yōu)化設計,形成門級網(wǎng)表,再通過布局布線工具即可使用。和軟核相比,固核的設計靈活性稍差,但在可靠性上有較大提高。目前,固核也是IP核的主流形式之一。1.2.37系列FPGA簡介在7系列芯片以前,Xilinx的兩個重要產(chǎn)品分別是面向高性能應用場景下的Virtex系列和面向低成本低功耗應用場景下的Spartan系列,不過這兩個系列從芯片內(nèi)部的布局布線、時鐘管理單元到內(nèi)部的BRAM等硬件模塊都有顯著的不同。開發(fā)人員在不同平臺間切換時,因為硬件模塊的定義不同,往往需要做一定的代碼修改,從而減慢了項目開發(fā)的速度。因此,在最新的7系列芯片中,Xilinx采用了統(tǒng)一的架構(gòu),F(xiàn)PGA內(nèi)硬件例化模塊都采用統(tǒng)一的定義,以幫助用戶快速完成設計的遷移。7系列FPGA采用了最新的28nm工藝,應用范圍更是涵蓋了所有的系統(tǒng)要求,從低功耗、小型化、成本敏感、大批量應用到超高連接帶寬、邏輯能力強和高性能,各種應用需要的信號處理能力它都具備。Xilinx7系列FPGA包括以下幾種。·Artix-7系列:為最低的成本和功耗做了優(yōu)化,為大批量應用的小型化封裝設計?!intex-7系列:為最大的性價比做了優(yōu)化,和前一代相比,提高一倍的性能。·Virtex-7系列:為最高的系統(tǒng)性能做了優(yōu)化,通過硅片堆疊技術(shù)(SSI)提供高性能、高容量的芯片。根據(jù)以上的系列分布,可以看到兩個顯著的變化:其一,低成本、低功耗的產(chǎn)品名為Artix,而不是原來的Spartan。其二,在原來高性能和低成本中間的產(chǎn)品線中增加了實現(xiàn)最大性價比的Kintex產(chǎn)品線,以往使用Virtex系列的產(chǎn)品都可以嘗試先在Kintex器件上做實驗。同時,因為芯片內(nèi)部硬件架構(gòu)相同,所以三個產(chǎn)品線的讀音也都類似。7系列FPGA有以下幾個主要的特征:·基于6輸入查找表(LUT)技術(shù)的先進的高性能FPGA邏輯,并且可配置為分布式存儲器?!в袃?nèi)建FIFO的36Kb雙端口BRAM,可作為片內(nèi)數(shù)據(jù)緩存。·支持速度高達1866Mb/s的DDR3接口的高性能SelectIOTM技術(shù)?!?nèi)建多個吉比特(Gb)收發(fā)器的高速串行連接器,速度從600Mb/s到最高28.05Gb/s,提供低功耗模式,優(yōu)化了芯片到芯片的接口?!び脩艨膳渲玫哪M接口(XADC)包括兩個12位1MSPS的ADC和片上溫度、電壓傳感器?!PSSlice包括25×18的乘法器、48位累加器和預加法器,可用于高性能濾波,其中包括優(yōu)化的對稱濾波。·強大的時鐘管理模塊CMT,連接相位鎖相環(huán)PLL和混合模式時鐘管理器MMCM,可用于高精度和低抖動的應用?!ぜ闪擞糜趚8Gen3端點和根端口設計的PCI-e硬核。·豐富的可配置選項,包括支持商用存儲器,帶有HMAC/SHA-256授權(quán)的256位AES加密及內(nèi)建的SEU檢測和糾錯單元?!じ咝阅艿凸牡?8nm工藝。HKMG、HPL處理,1.0V核心電壓處理技術(shù)和0.9V核心電壓選項用于更低的功耗應用。7系列FPGA和ZynqAPSoC平臺具有千絲萬縷的聯(lián)系。Zynq內(nèi)部的FPGA部分就是基于7系列FPGA的。兩個面向低端應用的Zynq芯片Zynq-7010和Zynq-7020使用Artix-7,兩個面向高端應用的Zynq芯片Zynq-7030和Zynq-7045使用Kintex-7。說明本書并不詳細介紹7系列FPGA內(nèi)部的結(jié)構(gòu),如果讀者對FPGA的結(jié)構(gòu)、資源和設計方法感興趣,請到Xilinx官網(wǎng)參考官方的文檔,或者閱讀其他關(guān)于FPGA內(nèi)部組織結(jié)構(gòu)的圖書。下面我們會簡單介紹FPGA的組成單元和內(nèi)部的資源,主要包括CLB、Slices、LUTs、BRAM、DSPSlices、PCI-e接口、XADC。(先列一張資源清單,讓大家有了解一下。)7系列FPGA資源如圖1.11所示。圖1.117系列FPGA資源圖1.11比較清楚地列出了7系列FPGA的資源,下面我們簡單介紹7系列的關(guān)鍵技術(shù)。(1)硅片堆疊(SSI)技術(shù)要設計出高容量的FPGA,是有很多挑戰(zhàn)的,Xilinx的解決方案是使用SSI技術(shù)。SSI技術(shù)允許使用多個超級邏輯區(qū)域(SLR)組成被動式內(nèi)插層(PassiveInterposerLayer),使用經(jīng)過行業(yè)領(lǐng)導者驗證的制造和裝配技術(shù)。在單FPGA上集成了多達10000個SLR連接,提供具有低延遲和低功耗的超高帶寬。(2)邏輯資源(CLB、Slice和LUT)7系列FPGA的LUT可以被配置為一個6輸入1輸出的LUT,或者兩個5輸入具有相同地址或邏輯輸入的獨立輸出的LUT。每一個LUT的輸出可以有選擇性地在FF(Flip-Flop)寄存。4個這樣的LUT和與之相關(guān)的8個FF再加上一些多路選擇器和算術(shù)進位邏輯組成了Slice,兩個Slice組成了CLB。25%~50%的Slice可以用LUT作為分布式64位RAM或者32位移位寄存器。CLB的一些關(guān)鍵特性如下:·真正6輸入LUT?!UT具有存儲功能。·具有寄存器和移位寄存器功能。說明詳細的CLB配置情況可從官網(wǎng)上下載UG474“7SeriesFPGAsConfigurableLogicBlockUserGuide”,以供參考。(3)時鐘管理7系列FPGA擁有多達24個時鐘管理通道(CMT),每個CMT都由一個混合模式時鐘管理器(MMCM)和一個鎖相環(huán)(PLL)組成。7系列FPGA提供6種不同類型的時鐘線(BUFG、BUFR、BUFIO、BUFH、BUFMR和高性能時鐘)來解決不同的需求,包括高扇出、短傳輸延遲和低抖動等需求。這一部分是FPGA的關(guān)鍵部分,可參考官方的UG472“7SeriesFPGAsClockingResourcesUserGuide”了解詳情。(4)BRAM(塊存儲器)大多數(shù)的FPGA都具有內(nèi)嵌的BRAM,這加強了FPGA的靈活性。BRAM可用于片內(nèi)數(shù)據(jù)緩沖、FIFO緩沖等。7系列的FPGA提供了30~1880個雙端口BRAM,每一個存儲36Kb的數(shù)據(jù)。每個BRAM都有兩個只共享數(shù)據(jù)的獨立端口。BRAM的特性包括:·雙端口36Kb的BRAM,最大位寬是72位?!た删幊痰腇IFO邏輯?!?nèi)建可選的糾錯電路。(5)DSPSlice7系列的FPGA集成了專用的、充分定制的、低功耗的DSPSlice。其增強的功能主要包括:·25×18的補碼乘法器/累加器,高分辨率為48位的信號處理器?!び糜趯ΨQ濾波器應用的低功耗預加法器。·一些高級特性(可選的流水線、可選的ALU和用于級聯(lián)的專用總線)。(6)輸入/輸出(I/O)塊7系列的FPGA的I/O塊使用不同的封裝,滿足物理和邏輯級別上不同的要求。物理級上,I/O塊支持一個范圍內(nèi)的驅(qū)動電壓和驅(qū)動強度,以及接收功能接口的不同I/O標準。7系列的FPGA有高性能HP和高范圍HR兩種類型I/O。邏輯級上,所有的I/O都能被配置為組合或者寄存方式,都支持DDR模式。(7)低功耗吉比特收發(fā)器7系列的FGPA提供的吉比特收發(fā)器具有以下特征:·提供高達6.6Gb/s(GTP)、12.5Gb/s(GTX)、13.1Gb/s(GTH)或28.05Gb/s(GTZ)線速率,是業(yè)內(nèi)第一個實現(xiàn)400Gb/s數(shù)據(jù)吞吐的單芯片?!ぶС中酒叫酒涌诘牡凸哪J?。·支持高級預發(fā)送、后加重、接收器線性(CTLE)和判決反饋均衡(DFE),包括用于額外余量的自適應均衡。(8)集成PCI-e模塊7系列的FPGA集成的PCI-e模塊包括如下重要的特性:·兼容PCI-e2.1或3.0基本規(guī)范,提供端點和根端口的能力?!じ鶕?jù)芯片類別,支持Gen1(2.5Gb/s)、Gen2(5Gb/s)和Gen3(8Gb/s)。·支持高級配置選項、高級錯誤報告(AER)(包括端到端的(ECRC)高級錯誤報告)和ECRC特性?!ぞ哂卸嘀毓δ芎蛦蝹€啟動I/O虛擬化(SR-IOV)支持。(9)XADC模塊全部的Xilinx7系列FGPA都集成了新的靈活模擬接口XADC。XADC結(jié)合了7系列FPGA的可編程能力,滿足板級數(shù)據(jù)采集和監(jiān)控的需求。這種獨特的組合被稱為敏捷的混合信號的模擬和可編程邏輯。欲了解更多信息,可訪問/ams。XADC模塊的主要特性包括:·雙12位1MSPS模擬到數(shù)字轉(zhuǎn)換(ADC)?!じ哌_17個靈活的用戶可配置邏輯輸入?!た蛇x片內(nèi)或者片外參考電壓?!て瑑?nèi)溫度(最大誤差±4℃)和電壓(最大誤差±1%)傳感器。1.3FPGA的應用領(lǐng)域FPGA從最初的邏輯黏合、接口互聯(lián)的角色逐漸成為大規(guī)模計算硬件平臺之一。FPGA未來的發(fā)力點分別在機器學習領(lǐng)域、5G無線通信領(lǐng)域、嵌入式視覺領(lǐng)域、工業(yè)物聯(lián)網(wǎng)領(lǐng)域、云計算平臺領(lǐng)域五大方面。1.3.1機器學習要想明白“深度學習”“機器學習”需要什么樣的硬件,必須了解深度學習的工作原理。首先在表層上,我們有一個巨大的數(shù)據(jù)集,并選定了一種深度學習模型。每個模型都有一些內(nèi)部參數(shù)需要調(diào)整,以便學習數(shù)據(jù)。而這種參數(shù)調(diào)整實際上可以歸結(jié)為優(yōu)化問題,在調(diào)整這些參數(shù)時,就相當于在優(yōu)化特定的約束條件。百度的硅谷人工智能實驗室(SVAIL)已經(jīng)為深度學習硬件提出了DeepBench基準。這一基準著重衡量的是基本計算的硬件性能,而不是學習模型的表現(xiàn)。這種方法旨在找到使計算變慢或低效的瓶頸。因此,重點在于設計一個對于深層神經(jīng)網(wǎng)絡訓練的基本操作執(zhí)行效果最佳的架構(gòu)。那么基本操作有哪些呢?現(xiàn)在的深度學習算法主要包括卷積神經(jīng)網(wǎng)絡(CNN)和循環(huán)神經(jīng)網(wǎng)絡(RNN)。基于這些算法,DeepBench提出以下4種基本運算:·矩陣相乘(MatrixMultiplication)幾乎所有的深度學習模型都包含這一運算,它的計算十分密集?!ぞ矸e(Convolution)這是另一個常用的運算,占用了模型中大部分的每秒浮點運算(浮點/秒)?!ぱh(huán)層(RecurrentLayers)模型中的反饋層,并且基本上是前兩個運算的組合。·AllReduce這是一個在優(yōu)化前對學習到的參數(shù)進行傳遞或解析的運算序列。在跨硬件分布的深度學習網(wǎng)絡上執(zhí)行同步優(yōu)化時(如AlphaGo的例子),這一操作尤其有效。除此之外,深度學習的硬件加速器需要具備數(shù)據(jù)級別和流程化的并行性、多線程和高內(nèi)存帶寬等特性。另外,由于數(shù)據(jù)的訓練時間很長,硬件架構(gòu)必須低功耗,因此效能功耗比(PerformanceperWatt)是硬件架構(gòu)的評估標準之一。1.GPUVSCPU在如今的深度學習平臺上,CPU面臨著一個很尷尬的處境:它很重要又不是太重要。它很重要,是因為它依舊是主流深度學習平臺的重要組成部分,機器學習領(lǐng)域的專家吳恩達曾利用16000顆CPU搭建了當時世界上最大的人工神經(jīng)網(wǎng)絡GoogleBrain并利用深度學習算法識別出了“貓”,又比如名震一時的AlphaGo就配置了多達1920顆CPU。但是它又不是太重要,相比于其他硬件加速工具,傳統(tǒng)的CPU在架構(gòu)上就有著先天的弱勢。圖1.12所示為CPU和GPU的區(qū)別。圖1.12CPUVSGPU圖1.12是CPU與GPU內(nèi)部結(jié)構(gòu)的對比??傮w上來說,二者都是由控制器(Control)、寄存器(Cache、DRAM)和邏輯單元(ArithmeticLogicUnit,ALU)構(gòu)成的,但是三者的比例卻有很大的不同。在CPU中,控制器和寄存器占據(jù)了結(jié)構(gòu)中很大一部分;與之相反,在GPU中,邏輯單元的規(guī)模則遠遠超過其他二者之和。說明這種不同的構(gòu)架就決定了CPU在指令的處理/執(zhí)行、函數(shù)的調(diào)用上有著很好的發(fā)揮,但由于邏輯單元所占比重較小,相對于GPU而言,在數(shù)據(jù)處理方面(算術(shù)運算或者邏輯運算)的能力就弱了很多。GPU進行數(shù)據(jù)處理的過程可以描述成:GPU從CPU處得到數(shù)據(jù)處理的指令,把大規(guī)模、無結(jié)構(gòu)化的數(shù)據(jù)分解成很多獨立的部分,然后分配給各個流處理器集群。每個流處理器集群再次把數(shù)據(jù)分解,分配給調(diào)度器所控制的多個計算核心,同時執(zhí)行數(shù)據(jù)的計算和處理。如果一個核心的計算算作一個線程,那么在這顆GPU中就有32×4×16=2048個線程同時進行數(shù)據(jù)的處理。盡管每個線程/Core的計算性能、效率與CPU中的Core相比低了不少,但是當所有線程都并行計算時,累加之后它的計算能力又遠遠高于CPU。對于基于神經(jīng)網(wǎng)絡的深度學習來說,它的硬件計算精度要求遠遠沒有對其并行處理能力的要求來的迫切。而這種并行計算能力轉(zhuǎn)化為對于硬件的要求就是盡可能大的邏輯單元規(guī)模。通常我們使用每秒鐘進行的浮點運算(Flops/s)來量化參數(shù)。不難看出,對于單精度浮點運算,GPU的執(zhí)行效率遠遠高于CPU。除了計算核心的增加外,GPU另一個比較重要的優(yōu)勢就是它的內(nèi)存結(jié)構(gòu)。(1)共享內(nèi)存。在NVIDIA披露的性能參數(shù)中,每個流處理器集群末端設有共享內(nèi)存。相比于CPU每次操作數(shù)據(jù)都要返回內(nèi)存再進行調(diào)用,GPU線程之間的數(shù)據(jù)通信不需要訪問全局內(nèi)存,而在共享內(nèi)存中就可以直接訪問。這種設置帶來最大的好處就是線程間通信速度的提高。(2)高速的全局內(nèi)存(顯存)。目前GPU上普遍采用GDDR5的顯存顆粒,不僅具有更高的工作頻率,從而帶來更快的數(shù)據(jù)讀?。瘜懭胨俣?,還具有更大的顯存帶寬。我們認為在數(shù)據(jù)處理中,速度往往最終取決于處理器從內(nèi)存中提取數(shù)據(jù)以及流入和通過處理器要花多少時間。在傳統(tǒng)的CPU構(gòu)架中,盡管有高速緩存(Cache)的存在,但是由于其容量較小,大量的數(shù)據(jù)只能存放在內(nèi)存(RAM)中。進行數(shù)據(jù)處理時,數(shù)據(jù)要從內(nèi)存中讀取,然后在CPU中運算,最后返回內(nèi)存中。由于構(gòu)架的原因,二者之間的通信帶寬通常在60Gb/s徘徊。與之相比,大顯存帶寬的GPU具有更大的數(shù)據(jù)吞吐量。在大規(guī)模深度神經(jīng)網(wǎng)絡的訓練中,必然帶來更大的優(yōu)勢。目前而言,越來越多的深度學習標準庫支持基于GPU的深度學習加速,通俗點描述就是深度學習的編程框架會自動根據(jù)GPU所具有的線程/Core數(shù)去自動分配數(shù)據(jù)的處理策略,從而達到優(yōu)化深度學習的時間,而這些軟件上的全面支持也是其他計算結(jié)構(gòu)所欠缺的。2.FPGA的潛在優(yōu)勢“CPU+GPU”或者“MIC”的計算模型被廣泛地應用于各種深度學習中。CPU與GPU都是利用現(xiàn)有的成熟技術(shù)去提供一種通用級的解決方法來滿足深度學習的要求,盡管Intel與NVIDIA不斷推出了KNL和Pascal等系列加速芯片來助陣深度學習,但這僅僅是大公司對于深度學習的一種妥協(xié),并不是一種針對性的專業(yè)解決方案。目前,在深度學習模型的訓練領(lǐng)域使用的基本是SIMD(SingleInstructionMultipleData,單指令多數(shù)據(jù)流架構(gòu))計算,即只需要一條指令就可以平行處理大批量數(shù)據(jù)。但是,在平臺完成訓練之后,它還需要進行推理環(huán)節(jié)的計算。這部分的計算更多的是MISD(MultipleInstructionSingleData,多指令流單數(shù)據(jù)流)。比如訊飛語音輸入法在同一時間要對數(shù)以百萬計的用戶的語音輸入進行識別并轉(zhuǎn)化為文字輸出。在這個階段,它們的作用遠不如訓練階段那么得心應手。未來,至少95%的深度學習都用于推斷,尤其是在移動端,只有不到5%的深度學習用于模型訓練。因此,尋找低功耗、高性能、低延時的加速硬件成了當務之急。在這種情況下,人們把目光投向了FPGA與ASIC。與GPU/CPU相比,F(xiàn)PGA與ASIC擁有良好的運行能效比,在實現(xiàn)相同性能的深度學習算法中,GPU所需的功耗遠遠大于FGPA與ASIC。浪潮與Intel于2016年底推出了FPGA加速卡F10A,是目前最高性能的加速卡,單芯片峰值運算能力達到1.5TFlops,功耗才35W,每瓦特功率為42GFlops,是GPU的數(shù)倍之高。其次,對于SIMD計算,GPU/CPU盡管具有很多邏輯核心,但是受限于馮諾依曼結(jié)構(gòu),無法發(fā)揮其并行計算的特點。FPGA與ASIC不僅可以做到并行計算,還能實現(xiàn)流水處理。這大大減小了輸入與輸出的延時比。針對移動端的深度學習,F(xiàn)PGA或者ASIC更多的會以SOC形式出現(xiàn),以更好地優(yōu)化神經(jīng)網(wǎng)絡結(jié)構(gòu),從而提升效率。1.3.25G無線圖1.13展示了Xilinx5G應用及對應解決方案示意圖,F(xiàn)PGA在推動5G發(fā)展中有很大的作用。圖1.13Xilinx5G應用及對應解決方案示意圖到2020年,預計將有超過500億的互聯(lián)設備。因此,5G網(wǎng)絡必須具有更高的可擴展性、智能性和異構(gòu)性。分布式小型基站、支持數(shù)百個天線的海量MIMO以及通過CloudRAN進行的集中式基帶處理等技術(shù)將顯著增大覆蓋范圍與數(shù)據(jù)吞吐量。網(wǎng)絡將需要通過回程及光前傳來進行安全連接,以完成處理。對于5G而言,F(xiàn)PGA的技術(shù)正在幫助解決容量、連接以及性能挑戰(zhàn),并靈活支持多標準、多頻帶和多子網(wǎng)絡,實現(xiàn)多樣物聯(lián)網(wǎng)驅(qū)動的5G應用。只有FPGA能夠提供這樣一個靈活的、基于標準的解決方案,融軟件可編程能力、多標準、多頻帶硬件優(yōu)化為一體,并將任意(any-to-any)連接以及保密性等功能緊密結(jié)合在一起,以滿足5G網(wǎng)絡的需求??蛻艨稍赯ynqMPSoC和UltraScaleFPGA芯片平臺上使用VivadoHLS、SDSoC和SDAccel軟件定義環(huán)境快速開發(fā)其應用。Xilinx推出業(yè)界首款帶有RF級模擬技術(shù)的RFSoC器件,可實現(xiàn)高性能ADC/DAC和SD-FEC與SoC的突破性集成。1.3.3嵌入式視覺圖1.14所示為Xilinx嵌入式視覺應用及對應解決方案的內(nèi)容。圖1.14Xilinx嵌入式視覺應用及對應解決方案示意圖1.嵌入式的發(fā)展前景當前嵌入式設計發(fā)展迅猛,有很多需求無法被現(xiàn)有的產(chǎn)品滿足。現(xiàn)有的產(chǎn)品包括單個處理器、單個ASIC、ASSP或者單純的FPGA方案,甚至這些方案的組合也都無法滿足需求。根據(jù)市場調(diào)查顯示,全新的嵌入式應用(比如汽車駕駛員輔助系統(tǒng)、智能視頻監(jiān)視、先進的工業(yè)控制、先進的工業(yè)遙測、先進的工業(yè)制導、企業(yè)級的工作站、廣播級的攝像機、多功能打印機、航空航天電子等應用)設計隨市場需求的旺盛,將成為新的利潤增長點。深入了解下一代嵌入式處理器的需要,我們會發(fā)現(xiàn)提高性能、減少成本、降低功耗、縮小外形、增加靈活性是主要需要?,F(xiàn)有方案的局限性也是相當明顯的,例如現(xiàn)有的微處理器缺乏足夠的信號處理能力,需要多芯片方案來搭建下一代的處理器系統(tǒng)。多芯片方案成本較高,功耗大,占用更多的空間,不利于縮小外形,同時如果采用現(xiàn)有的ASIC或ASSP方案,更新?lián)Q代的速度或者說差異化的能力都會受限,不能適應快速變化的需求,也很難提供差異化的競爭優(yōu)勢,這些局限性使我們看到下一代處理器需要解決和應對的問題。在市場需求推動下,為了滿足下一代應用處理的需求,Xilinx定義了Zynq-7000系列產(chǎn)品,并首先推出了4款(7010、7020、7030和7045)。它們都是高性能和低功耗的處理器平臺,是靈活和可擴展的解決方案。下面我們一起來初步了解Zynq-7000APSoC平臺的ARM+FPGA體系結(jié)構(gòu)。此體系結(jié)構(gòu)的左上角方塊就是ARM部分,在Zynq-7000APSoC平臺里稱為ProcessingSystem(PS)。外面包著它的是FPGA部分,稱為ProgrammableLogic(PL)。FPGA部分就是我們上一節(jié)介紹的7系列FPGA,內(nèi)部的資源和結(jié)構(gòu)與7系列FPGA一樣。Zynq-7000系列的亮點在于它包含完整的ARM處理子系統(tǒng),每一顆Zynq-7000系列的處理器都包含雙核的CortexTM-A9處理器,整個處理器的搭建都以處理器為中心,而且處理器子系統(tǒng)中集成了內(nèi)存控制器和大量的外設,使CortexTM-A9的核在Zynq-7000中完全獨立于可編程邏輯單元,也就是說,如果暫時沒有用到FPGA的部分,ARM處理器的子系統(tǒng)也可以獨立工作,這與以前的FPGA處理器有本質(zhì)區(qū)別,其是以處理器為中心的。另外,在可編程邏輯部分緊密地與ARM的處理單元相結(jié)合。FPGA的部分用于擴展子系統(tǒng),有豐富的擴展能力,有3000多個內(nèi)部互連,連接資源非常豐富,可提供100Gb/s以上的內(nèi)部帶寬。此外,在I/O接口方面,F(xiàn)PGA的優(yōu)點是I/O可以充分自定義,并在FPGA部分集成高速串行口(MultiGigabitTransceiver)。同時,在FPGA內(nèi)也繼承了模數(shù)轉(zhuǎn)換器(XADC)。2.Xilinx嵌入式視覺解決方案Xilinx可為嵌入式視覺開發(fā)人員提供一系列支持軟硬件設計的技術(shù)。Xilinx器件包括FPGA、SoC以及MPSoC。Xilinx的VivadoHLx設計環(huán)境可幫助硬件及平臺開發(fā)商開發(fā)最新嵌入式視覺硬件。這些工具支持業(yè)界最新高帶寬傳感器接口。Xilinx包括SDSoC在內(nèi)的SDx工具有助于軟件及算法開發(fā)人員在基于Eclipse的熟悉環(huán)境中采用C、C++和OpenCL等計算機語言進行開發(fā)。XilinxreVISION堆棧建立在SDx概念基礎(chǔ)之上,支持OpenCV和機器學習推斷,從而支持AlexNet、GoogLeNet、SqueezeNet、SSD和FCN等最普及的神經(jīng)網(wǎng)絡以及構(gòu)建定制神經(jīng)網(wǎng)絡(CNN/DNN)所需的功能元件。同時,該堆棧還允許設計團隊將預定義的優(yōu)化CNN實現(xiàn)方案用于網(wǎng)絡層。這得到了加速型OpenCV函數(shù)的有力補充,支持計算機視覺處理。1.3.4工業(yè)物聯(lián)網(wǎng)圖1.15所示為Xilinx工業(yè)物聯(lián)網(wǎng)應用及對應解決方案示意圖。工業(yè)物聯(lián)網(wǎng)(IIoT)正在推動第4輪工業(yè)革命。它極大地改變著制造、能源、交通運輸、城市、醫(yī)療以及其他工業(yè)行業(yè)。大部分專家認為IIoT時代已悄然來到,帶來了實實在在可測量的業(yè)務影響。IIoT可幫助企業(yè)從傳感器收集、聚集和分析數(shù)據(jù),從而最大限度地提高機器效率以及整個工作的吞吐量。應用包括運動控制、機器與機器通信、預測性維護、智能能源/電網(wǎng)、大數(shù)據(jù)分析以及智能互聯(lián)醫(yī)療系統(tǒng)等。圖1.15Xilinx工業(yè)物聯(lián)網(wǎng)應用及對應解決方案示意圖Xilinx提供了面向工業(yè)物聯(lián)網(wǎng)的靈活標準化解決方案,包括全可編程、實時處理、硬件優(yōu)化和針對保密和安全的“任意”互聯(lián)。XilinxSDAccel、SDSoC和VivadoHLS可幫助客戶快速開發(fā)更智能的互連差異化應用。1.3.5云計算圖1.16所示為Xilinx云計算應用及對應解決方案示意圖。圖1.16Xilinx云計算應用及對應解決方案示意圖數(shù)據(jù)中心需要工作負載優(yōu)化,以迅速適應來自廣泛虛擬化軟件應用不斷變化的吞吐量、延遲和功率需求。這些應用包括機器學習、視頻轉(zhuǎn)碼、圖像和語音識別、CloudRAN和大數(shù)據(jù)分析,以及存儲與網(wǎng)絡加速、高度靈活的高性能連接。Xilinx可使服務器通過工作負載優(yōu)化,以類似CPU和GPU方案的1/10時延及功耗實現(xiàn)10倍吞吐量。應用通過OpenCL、C和C++等語言編寫。靈活、基于標準的解決方案融軟件可編程能力、負載優(yōu)化和高性能數(shù)據(jù)中心互聯(lián)為一體,并與保密性緊密結(jié)合在一起,以滿足下一代云計算的需求。Xilinx產(chǎn)品系列包含UltraScale技術(shù),其可作為可擴展、可重新配置的加速平臺,針對任何工作負載按需進行優(yōu)化。Xilinx軟件定義開發(fā)環(huán)境SDAccel可幫助客戶使用OpenCL、C和C++的任意組合來開發(fā)其獨特應用。SDAccel部署獨有的架構(gòu)優(yōu)化型編譯器和部分重新配置技術(shù),這兩者的結(jié)合可通過靈活的運行時功能提供最高質(zhì)量的結(jié)果。1.3.6FPGA硬件加速平臺1.算法加速卷積神經(jīng)網(wǎng)絡(ConvolutionalNeuralNetwork,CNN)是一種典型的多層神經(jīng)網(wǎng)絡,是首個真正意義上成功訓練多個層次網(wǎng)絡的結(jié)構(gòu)模型。權(quán)值共享的網(wǎng)絡結(jié)構(gòu)使之在圖像處理、語音識別等領(lǐng)域有著重要的應用價值。CNN算法通常是在CPU或GPU上以軟件編程的方式進行實現(xiàn)的,方法雖簡單卻無法發(fā)揮CNN并行性的特點、訓練速度慢。FPGA含有豐富的計算資源,基于SRAM結(jié)構(gòu)的FPGA能夠在運行過程中對片上的資源進行重新配置,實現(xiàn)系統(tǒng)邏輯功能的切換、提高系統(tǒng)的靈活性和資源利用率。對生物大分子進行結(jié)構(gòu)預測是生物信息學研究的重要領(lǐng)域,具有重大的理論和應用價值。隨著基因測序技術(shù)的不斷發(fā)展,RNA和蛋白質(zhì)序列數(shù)據(jù)庫的規(guī)模急劇膨脹,現(xiàn)有結(jié)構(gòu)測定技術(shù)無法滿足不斷增長的序列數(shù)據(jù)庫的發(fā)展需求,基于序列信息對生物大分子的空間結(jié)構(gòu)進行預測成為生物信息學研究的熱點。生物大分子的結(jié)構(gòu)預測算法計算復雜性高,對數(shù)據(jù)的處理能力提出了更高的要求,迫切需要高性能計算的支持?;贔PGA平臺的算法加速器是高性能計算研究的重要方向之一,能較好地適應生物信息學算法特征多樣性的特點,在提高生物信息學算法性能方面具有廣闊的應用前景。2.數(shù)據(jù)庫加速FPGA領(lǐng)域研發(fā)需要軟件與硬件兩方面的支持。其中,硬件部分包括FPGA開發(fā)板與相應下載器,軟件部分包括FPGA設計過程中對應的EDA工具。FPGA芯片數(shù)據(jù)庫是實現(xiàn)軟、硬件協(xié)同工作的紐帶,實現(xiàn)一種簡明、精準的芯片數(shù)據(jù)庫描述方法是FPGA高效開發(fā)的一項重要內(nèi)容,同時對所描述的芯片數(shù)據(jù)庫信息實現(xiàn)簡潔、高效管理是至關(guān)重要的。針對現(xiàn)存芯片數(shù)據(jù)庫中存在的描述結(jié)構(gòu)單一、描述信息管理效率低的問題,研究人員提出了一種新型芯片結(jié)構(gòu)描述與管理方法,提高了FPGA芯片數(shù)據(jù)庫信息的準確性,并實現(xiàn)了芯片數(shù)據(jù)庫信息的高效率智能化管理。1.4總結(jié)本章就此結(jié)束,主要對FPGA的基本結(jié)構(gòu)、用途等進行了詳細的解釋,初學者可通過此部分對FPGA有初步的認識。下一章對FPGA軟件安裝和語法等基礎(chǔ)知識進行介紹。第2章FPGA設計基礎(chǔ)知識本章將對FPGA的基礎(chǔ)知識進行介紹,包括軟件的下載安裝、相關(guān)軟件進行關(guān)聯(lián),以便更好地使用,還會涉及Verilog語言特性的介紹和使用等。通過本章的學習,初學者可以順利安裝FPGA相關(guān)軟件,使這些軟件成為學習FPGA的尖兵利器。同時,Verilog語言的介紹會為第3、4、5章FPGA的設計打下基礎(chǔ)。2.1軟件下載及安裝本節(jié)主要對FPGA相關(guān)軟件的安裝方法進行介紹。初學者根據(jù)此安裝步驟即可順利安裝軟件。2.1.1ISE下載及安裝步驟01可以在ISE官網(wǎng)上下載軟件,下載后單擊xsetup安裝文件,直接進行安裝,如圖2.1所示。圖2.1單擊xsetup進行安裝步驟02安裝程序開始運行后,一直單擊Next按鈕,如圖2.2所示,直到出現(xiàn)如圖2.3所示的界面。圖2.2單擊Next按鈕步驟03勾選圖2.3中的兩個選項,單擊Next按鈕。圖2.3將兩個選項勾選并單擊Next按鈕步驟04出現(xiàn)如圖2.4所示的界面時,選擇ISEDesignSuiteSystemEdition選項,單擊Next按鈕。圖2.4選擇ISEDesignSuiteSystemEdition選項步驟05出現(xiàn)如圖2.5所示的界面時,勾選所有選項,然后單擊Next按鈕。圖2.5勾選所有選項步驟06出現(xiàn)如圖2.6所示的界面時選擇創(chuàng)建目錄等情況。此時最好選擇在C盤中安裝,并選中所有工具。圖2.6選擇創(chuàng)建目錄等情況步驟07配置完環(huán)境后,出現(xiàn)如圖2.7所示的安裝界面,此時單擊Install按鈕即可進行安裝。圖2.7單擊Install按鈕進行安裝步驟08安裝完成后,桌面上出現(xiàn)如圖2.8所示的圖標。圖2.8安裝完成2.1.2ModelSim下載及安裝步驟01下載ModelSim10.5,如圖2.9所示,自行選擇32位或64位。(本節(jié)以64位為例進行介紹。)圖2.9選擇32位或者64位軟件步驟02選擇安裝路徑,之后一直單擊Next按鈕直至安裝結(jié)束。選擇默認安裝路徑C:\modeltech64_10.5,如圖2.10所示。圖2.10安裝到C盤提示建議安裝至默認路徑,下面都以默認路徑操作。若沒有選擇默認路徑,則本文中所有C:\modeltech64_10.5都應該代替為自己選擇的路徑。步驟03最后安裝成功。2.1.3Vivado下載及安裝1.Vivado2016安裝步驟01從官網(wǎng)下載Vivado2016,解壓執(zhí)行xsetup.exe,開始安裝,如圖2.11所示。圖2.11解壓執(zhí)行xsetup.exe步驟02一直單擊Next按鈕,安裝過程中出現(xiàn)對話框,提示要不要更新到最新版,選擇不要,因為最新版的系統(tǒng)可能不穩(wěn)定,如圖2.12所示。圖2.12不要安裝最新版步驟03單擊Continue按鈕。勾選所有的IAgree復選框,然后單擊Next按鈕,如圖2.13所示。圖2.13選擇所有選項步驟04單擊VivadoHLDesignEdition,然后單擊Next按鈕,如圖2.14所示。圖2.14勾選第三個選項步驟05在圖2.15所示的對話框中選中方框內(nèi)的SoftwareDevelopmentKit(在以后做SOC功能時需要),如果此時未選,那么之后將無法使用。然后單擊Next按鈕。圖2.15勾選SDK安裝環(huán)境步驟06選擇自己所要安裝的路徑,然后單擊Next按鈕。根據(jù)之前勾選的軟件進行安裝。該軟件占用磁盤空間較大,若磁盤空間不足,則會出現(xiàn)紅色字體,如圖2.16所示。圖2.16磁盤空間不足(見下載資源)當磁盤空間足夠時,紅色字體將會全部消失,如圖2.17所示。圖2.17磁盤空間足夠,紅色字體消失(見下載資源)步驟07若第一次安裝Xilinx,則會彈出是否要創(chuàng)建Xilinx文件夾的對話框,此時單擊Yes按鈕即可,如圖2.18所示。圖2.18創(chuàng)建Xilinx文件夾步驟08然后單擊Install按鈕,如圖2.19所示。圖2.19進行安裝步驟09正在安裝軟件,差不多要半個小時到一個小時,請耐心等待,如圖2.20所示。圖2.20安裝提示2.1.4ISE關(guān)聯(lián)ModelSim步驟01按Windows鍵,然后選擇“所有程序→ISEDesignSuite”,在ISEDesignTools里找到SimulationLibraryCompilationWizard,如圖2.21所示。如果ModelSim是64位的就要選擇64位文件夾下的,32位的就選擇32位文件夾下的。步驟02找到ModelSim的安裝目錄,把modelsim.ini文件的只讀屬性去掉,如圖2.22所示。圖2.21找到Modelsim圖2.22去掉modelsim.ini文件的只讀屬性步驟03ISE仿真庫編譯工具選擇ModelSimSE。步驟04設置ModelSim仿真工具,啟動工具路徑,如圖2.23所示。圖2.23設置ModelSim仿真工具,啟動工具路徑步驟05語言選擇Verilogorvhdlorboth。選擇器件庫,如圖2.24所示。圖2.24選擇器件庫步驟06選擇默認Library存放路徑,如圖2.25所示。圖2.25選擇默認Library存放路徑步驟07一直單擊Next按鈕,直到出現(xiàn)編譯按鈕。單擊編譯按鈕進行編譯。步驟08生成編譯庫后,在Xilinx的默認路徑找到modelsim.ini文件并打開,如圖2.26所示。圖2.26找到modelsim.ini文件把選中部分復制到ModelSim安裝路徑下的modelsim.ini文件中,也就是之前把寫只讀屬性去掉的那個文件,如圖2.27所示。圖2.27選取modelsim.ini文件部分內(nèi)容復制完成后,關(guān)閉modelsim.ini文件,選中只讀屬性,如圖2.28所示。注意一旦編譯開始,就千萬不要中斷,如果中斷,只能重新裝系統(tǒng)才能編譯庫。如果第一次設置不正確,但是單擊了編譯庫,那么讓程序編譯完成之后再去更改設置。圖2.28將選中的內(nèi)容復制到安裝路徑下的ini文件中2.1.5Vivado關(guān)聯(lián)ModelSimVivado仿真編譯步驟如下。步驟01打開Vivado軟件,單擊Tools→CompileSimulationLibraries…菜單,出現(xiàn)如圖2.29所示的對話框。尋找仿真路徑,選擇ModelSim安裝路徑下的win64文件夾。圖2.29設置編譯庫路徑在自己想要的位置新建一個文件夾,用于存放編譯好的內(nèi)容,以便日后使用,如圖2.30所示。圖2.30選擇自己新建的文件夾步驟02單擊Compile(綜合)按鈕,如圖2.31所示。圖2.31開始進行編譯步驟03編譯過程如圖2.32所示,若單擊Background按鈕,則會將編譯進度隱藏。圖2.32編譯過程步驟04選擇仿真工具,單擊Simulation→SimulationSettings,如圖2.33所示。出現(xiàn)如圖2.34所示的界面,選擇ModelSimSimulator,然后單擊OK按鈕。圖2.33進行仿真設置圖2.34選擇ModelSimSimulator步驟05單擊開始仿真,如圖2.35所示。圖2.35開始仿真能夠正常打開ModelSim就關(guān)聯(lián)成功了。2.1.6UE(UltraEdit)的安裝和配置注意安裝時,安裝包不能放在中文文件夾路徑下,安裝步驟和普通軟件一樣,如圖2.36所示。圖2.36單擊箭頭所示的應用程序1.UE安裝步驟01單擊“立即安裝”按鈕開始安裝,如圖2.37所示。圖2.37開始安裝步驟02之后等待軟件運行即可,一直單擊“下一步”按鈕,如圖2.38所示。圖2.38單擊“下一步”按鈕步驟03遇到接受協(xié)議的地方,選擇“我接受此協(xié)議”,單擊“下一步”按鈕,如圖2.39所示。圖2.39接受協(xié)議步驟04在選擇完成還是定制的時候,選擇定制即可,如圖2.40所示。圖2.40選擇定制步驟05選擇安裝路徑,如圖2.41所示。圖2.41選擇安裝路徑步驟06一直單擊“下一步”按鈕,直到安裝完成,如圖2.42所示。圖2.42安裝完成2.設置Verilog程序高亮步驟01復制文件verilog.uew到UE注冊表的wordfiles文件夾內(nèi),如圖2.43所示。圖2.43復制verilog.uew到此處步驟02打開UE高級配置編輯,如圖2.44所示。圖2.44單擊“配置”步驟03單擊“編輯器顯示”列表項,如圖2.45所示。圖2.45單擊“編輯器顯示”列表項步驟04單擊“語法高亮”選項,如圖2.46所示。圖2.46單擊“語法高亮”選項步驟05選擇剛才存放verilog.uew文件的路徑,如圖2.47所示。圖2.47選擇存放ve
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 漁船租賃業(yè)務合同協(xié)議
- 銀行信托計劃保管合同模板
- 供港農(nóng)產(chǎn)品購銷合同代理協(xié)議(樣本)
- 國有林權(quán)出讓合同
- 畢業(yè)生實習與勞動合同解析
- 渠道合作銷售合同范本
- 合同法視角:股東不履行義務糾紛案例分析
- 新車銷售團隊心理素質(zhì)訓練考核試卷
- 木制拼圖游戲考核試卷
- 世界音樂教育項目的策劃與實施考核試卷
- 部編版小學(2024版)小學道德與法治一年級下冊《有個新目標》-第一課時教學課件
- 稅法(第5版) 課件 第13章 印花稅
- 建加油站申請書
- 2024-2025學年廣州市高二語文上學期期末考試卷附答案解析
- 咖啡店合同咖啡店合作經(jīng)營協(xié)議
- 2025年山東鋁業(yè)職業(yè)學院高職單招職業(yè)技能測試近5年常考版參考題庫含答案解析
- 全套電子課件:技能成就夢想
- 2024年教育公共基礎(chǔ)知識筆記
- 2025年江蘇農(nóng)林職業(yè)技術(shù)學院高職單招職業(yè)技能測試近5年??及鎱⒖碱}庫含答案解析
- 異構(gòu)數(shù)據(jù)融合技術(shù)-深度研究
- 北京市朝陽區(qū)2024-2025學年七年級上學期期末考試數(shù)學試卷(含答案)
評論
0/150
提交評論