版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、FPGA/CPLD在軟件無線電中的工程應(yīng)用,,前言,在數(shù)字化、信息化的時代,數(shù)字化集成電路應(yīng)用的非常廣泛。今天經(jīng)過長期的進步發(fā)展成為可以完成超大規(guī)模的復(fù)雜組合邏輯與時序邏輯的現(xiàn)場可編程邏輯器件(FPGA)。,前言,培訓(xùn)目標:更新數(shù)字電路的設(shè)計觀念,建立用PLD器件取代傳統(tǒng)TTL器件設(shè)計數(shù)字電路的思想。更新數(shù)字系統(tǒng)設(shè)計手段,學會使用硬件描述語言(Hardware Description Language)代替?zhèn)鹘y(tǒng)的數(shù)字電路設(shè)計方法來
2、設(shè)計數(shù)字系統(tǒng)。掌握Xilinx FPGA開發(fā)工具及仿真環(huán)境能夠利用FPGA實現(xiàn)高速實時數(shù)字信號處理系統(tǒng)的開發(fā)設(shè)計。掌握基于實時通信系統(tǒng)的流水線設(shè)計、 時鐘設(shè)計、乒乓操作設(shè)計等重要設(shè)計方法和技巧.掌握軟件無線電設(shè)計精髓,而且能夠獨立的利用FPGA開發(fā)設(shè)計高速數(shù)字化無線通信收發(fā)信機 。,前言寬帶中頻帶通采樣軟件無線電結(jié)構(gòu),前言軟件無線電發(fā)射機中FPGA軟件功能框圖,前言 軟件無線電接收機中FPGA軟件功能框圖,前言,可編程邏輯
3、器件的定義邏輯器件:用來實現(xiàn)某種特定邏輯功能的電子器件,最簡單的邏輯器件是與、或、非門(74LS00,74LS04等),在此基礎(chǔ)上可實現(xiàn)復(fù)雜的時序和組合邏輯功能??删幊踢壿嬈骷≒LD--Programmable Logic Device):器件的功能不是固定不變的,而是可根據(jù)用戶的需要而進行改變,即由編程的方法來確定器件的邏輯功能。,前言,PLD器件的優(yōu)點集成度高,可以替代多至幾千塊通用IC芯片極大減小電路的面積,降低功耗,提
4、高可靠性具有完善先進的開發(fā)工具提供語言、圖形等設(shè)計方法,十分靈活通過仿真工具來驗證設(shè)計的正確性可以反復(fù)地擦除、編程,方便設(shè)計的修改和升級靈活地定義管腳功能,減輕設(shè)計工作量,縮短系統(tǒng)開發(fā)時間保密性好,前言,PLD器件發(fā)展趨勢向高集成度、高速度方向進一步發(fā)展向低電壓和低功耗方向發(fā)展,5V?3.3V?2.5V?1.8V?更低內(nèi)嵌多種功能模塊RAM,ROM,F(xiàn)IFO,DSP,CPU向數(shù)、?;旌峡删幊谭较虬l(fā)展,前言大的P
5、LD生產(chǎn)廠家,www.xilinx.comFPGA的發(fā)明者,最大的PLD供應(yīng)商之一www.altera.com最大的PLD供應(yīng)商之一www.latticesemi.comISP技術(shù)的發(fā)明者www.actel.com提供軍品及宇航級產(chǎn)品,前言,PLD器件的分類--按集成度低密度PROM,EPROM,EEPROM,PAL,PLA,GAL只能完成較小規(guī)模的邏輯電路高密度,已經(jīng)有超過400萬門的器件EPLD ,CPLD
6、,FPGA可用于設(shè)計大規(guī)模的數(shù)字系統(tǒng)集成度高,甚至可以做到SOC(System On a Chip),前言,PLD器件的分類--按結(jié)構(gòu)特點基于與或陣列結(jié)構(gòu)的器件--陣列型PROM,EEPROM,PAL,GAL,CPLD基于門陣列結(jié)構(gòu)的器件--單元型FPGA,前言,PLD器件的分類--按編程工藝熔絲或反熔絲編程器件--Actel的FPGA器件體積小,集成度高,速度高,易加密,抗干擾,耐高溫只能一次編程,在設(shè)計初期階段不靈
7、活SRAM--大多數(shù)公司的FPGA器件可反復(fù)編程,實現(xiàn)系統(tǒng)功能的動態(tài)重構(gòu)每次上電需重新下載,實際應(yīng)用時需外掛EEPROM用于保存程序EEPROM--大多數(shù)CPLD器件可反復(fù)編程不用每次上電重新下載,但相對速度慢,功耗較大,前言,數(shù)字電路的基本組成任何組合電路都可表示為其所有輸入信號的最小項的和或者最大項的積的形式。時序電路包含可記憶器件(觸發(fā)器),其反饋信號和輸入信號通過邏輯關(guān)系再決定輸出信號。,前言PLD的邏輯符號表
8、示方法,前言PROM結(jié)構(gòu),PROM是可編程序只讀存儲器的簡稱,它具有一個固定的全解碼與門邏輯陣列和一個可編程的或門邏輯陣列.與陣列為全譯碼陣列,器件的規(guī)模將隨著輸入信號數(shù)量n的增加成2n指數(shù)級增長。因此PROM一般只用于數(shù)據(jù)存儲器,不適于實現(xiàn)邏輯函數(shù)。EPROM和EEPROM,用PROM實現(xiàn)組合邏輯電路功能,實現(xiàn)的函數(shù)為:,,,,固定連接點(與),編程連接點(或),前言 PLA結(jié)構(gòu),PLA(Programmable Logic
9、 Array)是可編程邏輯陣列的簡稱,它包含了可編程的與門和或門邏輯陣列,一般采用熔絲結(jié)構(gòu).它的內(nèi)部結(jié)構(gòu)在簡單PLD中有最高的靈活性。,前言 PAL結(jié)構(gòu),PAL(Programmable Array Logic)是可編程陣列邏輯的簡稱,它包含有一個可編程的與門邏輯陣列和一個固定的或門邏輯陣列.與陣列可編程使輸入項增多,或陣列固定使器件簡化?;蜿嚵泄潭黠@影響了器件編程的靈活性,,AnBnCn,AnBn,AnCn,BnCn,用PAL實
10、現(xiàn)全加器,前言GAL結(jié)構(gòu),GAL器件與PAL器件的區(qū)別在于用可編程的輸出邏輯宏單元(OLMC)代替固定的或陣列??梢詫崿F(xiàn)時序電路。,,邏輯宏單元,OLMC,前言 FPGA結(jié)構(gòu)原理圖,內(nèi)部結(jié)構(gòu)稱為LCA(Logic Cell Array)由三個部分組成:可編程邏輯塊(CLB)可編程輸入輸出模塊(IOB)可編程內(nèi)部連線(PIC),IOB,CLB包含多個邏輯單元,PIC,前言內(nèi)部晶體震蕩器,高速反向放大器用于和外部晶體相接,形成內(nèi)
11、部晶體振蕩器。提供將振蕩波形二分頻成對稱方波的功能。,前言CPLD與FPGA的區(qū)別1,FPGA器件含有豐富的觸發(fā)器資源,易于實現(xiàn)時序邏輯,如果要求實現(xiàn)較復(fù)雜的組合電路則需要幾個CLB結(jié)合起來實現(xiàn)。CPLD的與或陣列結(jié)構(gòu),使其適于實現(xiàn)大規(guī)模的組合功能,但觸發(fā)器資源相對較少。,前言CPLD與FPGA的區(qū)別2,前言CPLD與FPGA的區(qū)別3,FPGA為細粒度結(jié)構(gòu),CPLD為粗粒度結(jié)構(gòu)。FPGA內(nèi)部有豐富連線資源,CLB分塊較小,芯片的
12、利用率較高。CPLD的宏單元的與或陣列較大,通常不能完全被應(yīng)用,且宏單元之間主要通過高速數(shù)據(jù)通道連接,其容量有限,限制了器件的靈活布線,因此CPLD利用率較FPGA器件低。,前言CPLD與FPGA的區(qū)別4,FPGA為非連續(xù)式布線,CPLD為連續(xù)式布線。FPGA器件在每次編程時實現(xiàn)的邏輯功能一樣,但走的路線不同,因此延時不易控制,要求開發(fā)軟件允許工程師對關(guān)鍵的路線給予限制。CPLD每次布線路徑一樣,CPLD的連續(xù)式互連結(jié)構(gòu)利用具有同樣長
13、度的一些金屬線實現(xiàn)邏輯單元之間的互連。連續(xù)式互連結(jié)構(gòu)消除了分段式互連結(jié)構(gòu)在定時上的差異,并在邏輯單元之間提供快速且具有固定延時的通路。CPLD的延時較小。,前言管腳的定義,特殊功能的管腳電源腳VCC和GND,VCC一般分為VCCINT和VCCIO兩種JTAG管腳:實現(xiàn)在線編程和邊界掃描配置管腳(FPGA):用于由EEPROM配置芯片信號管腳專用輸入管腳:全局時鐘、復(fù)位、置位可隨意配置其功能為:輸入、輸出、雙向、三態(tài),前言
14、PLD的設(shè)計步驟,前言設(shè)計輸入,HDL語言輸入邏輯描述功能強成為國際標準,便于移植原理圖輸入使用元件符號和連線等描述比較直觀,但設(shè)計大規(guī)模的數(shù)字系統(tǒng)時則顯得繁瑣原理圖與HDL的聯(lián)系與高級語言與匯編語言類似,前言設(shè)計處理,綜合和優(yōu)化優(yōu)化:將邏輯化簡,去除冗余項,減少設(shè)計所耗用的資源綜合:將模塊化層次化設(shè)計的多個文件合并為一個網(wǎng)表,使設(shè)計層次平面化映射把設(shè)計分為多個適合特定器件內(nèi)部邏輯資源實現(xiàn)的邏輯小塊的形式布局
15、與布線將已分割的邏輯小塊放到器件內(nèi)部邏輯資源的具體位置并利用布線資源完成各功能塊之間的連接生成編程文件生成可供器件編程使用的數(shù)據(jù)文件,前言模擬仿真,功能仿真不考慮信號傳輸和器件的延時時序仿真不同器件的內(nèi)部延時不一樣,不同的布局、布線延時也會有比較大的不同在線驗證利用實現(xiàn)手段測試器件最終功能和性能指標,前言在系統(tǒng)編程技術(shù)ISP--In System Program,對PLD的邏輯功能可隨時進行修改。優(yōu)點:方便硬件
16、的調(diào)試方便硬件版本的升級,類似于軟件升級,前言在系統(tǒng)編程技術(shù)ISP--In System Program,前言邊界掃描測試技術(shù)BST--Boundary Scan Test,據(jù)IEEE1149.1標準JTAG,用于解決大規(guī)模集成電路的測試問題?,F(xiàn)在新開發(fā)的可編程器件都支持邊界掃描技術(shù),并將其作為ISP接口。在FPGA/CPLD開發(fā)、DSP開發(fā)和嵌入式處理器的開發(fā)中應(yīng)用得非常廣泛。,前言 FPGA的知識平臺,FPGA技術(shù),
17、計算機,電子,計算機硬件,計算機軟件,通信 電子線路,數(shù)字信號處理,,,,,,,,前言數(shù)字信號處理系統(tǒng)的分類,非實時系統(tǒng): 信號處理的工作是可以事后進行。 實時系統(tǒng): 信號處理的工作必須在規(guī)定的很短的時間內(nèi)完 成。,前言數(shù)字信號處理系統(tǒng)的實現(xiàn),非實時系統(tǒng): 通用的計算機和利用通用計算機改裝的設(shè)備。 實時系統(tǒng): 信號處理專用的微處理器為核心的設(shè)備。,前言實時數(shù)字信號處理系統(tǒng)實現(xiàn)中存在的技
18、術(shù)難點,從算法和電路實現(xiàn)兩個方面考慮:如果由最快的信號處理專用的微處理器為核心的設(shè)備也來不及處理如此大量的數(shù)據(jù)怎么辦呢?,前言實時數(shù)字信號處理系統(tǒng)實現(xiàn)中存在的技術(shù)難點和解決辦法,算法方面:研究并行快速算法。電路實現(xiàn)方面: 設(shè)計并研制具有并行結(jié)構(gòu)的數(shù)字和計算邏輯結(jié)構(gòu)。,前言實時數(shù)字信號處理系統(tǒng)實現(xiàn)中存在的技術(shù)難點和解決辦法,電路實現(xiàn)的兩個方向: FPGA專用集成電路,前言實時數(shù)字信號處理系統(tǒng)實現(xiàn)中
19、存在的技術(shù)難點和解決辦法,用于信號處理的 FPGA 和專用集成 電路(ASIC)設(shè)計的方法: Verilog HDL建模、仿真、綜合和全面驗證。,第一章 FPGA/CPLD簡介1.1 FPGA/CPLD基本原理,其簡化的FPGA/CPLD結(jié)構(gòu)由4部分組成:輸入/輸出模塊、二維邏輯陣列模塊、連線資源和內(nèi)嵌存儲器結(jié)構(gòu)。FPGA和CPLD的內(nèi)部結(jié)構(gòu)稍有不同,F(xiàn)PGA的二維邏輯陣列模塊是基于查找(Look-Up-Table)結(jié)構(gòu)的,
20、而CPLD的二維邏輯陣列模塊是基于乘積項(Product-Term)結(jié)構(gòu)。通常FPGA中寄存器資源比較豐富,適合做同步時序的電路較多的設(shè)計; CPLD中組合邏輯資源比較豐富,適合做組合電路較多的設(shè)計。FPGA和CPLD在規(guī)模、價格及速度上也略有差異。,盡管FPGA和CPLD在某些方面有一些差異,但是對用戶而言,F(xiàn)PGA和CPLD的設(shè)計方法是相似的,使用EDA軟件的設(shè)計過程也沒有太大差別。設(shè)計時,只需要根據(jù)所選器件型號充分發(fā)揮器件的特
21、性就可以了,所以在我們講課的過程中,并未加以區(qū)分,而統(tǒng)稱為可編程邏輯器件。,1.2 FPGA/CPLD的特點,規(guī)模越來越大。隨著VLSI工藝的不斷提高,單一芯片內(nèi)部可以容納上百萬個晶體管, FPGA/ CPLD芯片規(guī)模也越來越大。芯片的規(guī)模越大所能實現(xiàn)的功能就越強,同時也更適于實現(xiàn)片上系統(tǒng)(soc).開發(fā)過程投資小。 FPGA/ CPLD芯片在出廠之前都做過百分百的測試,而且FPGA/ CPLD設(shè)計靈活,發(fā)現(xiàn)錯誤可直接更改設(shè)計,減少投
22、片風險,節(jié)省花費。所以不但許多復(fù)雜系統(tǒng)使用FPGA/ CPLD完成,甚至設(shè)計ASIC也要把實現(xiàn)FPGA/ CPLD功能樣機作為必需的步驟。FPGA/ CPLD一般可以反復(fù)的編程、檫除。在不改變外圍電路的情況下,設(shè)計不同片內(nèi)邏輯就能實現(xiàn)不同的電路功能。所以,用FPGA/ CPLD試制功能樣機,能以最快的速度占領(lǐng)市場。甚至有些領(lǐng)域,只能用FPGA/ CPLD完成系統(tǒng)的研制與開發(fā)。,1.2 FPGA/CPLD的特點,保密性能好。在某些場合下
23、,根據(jù)要求選用防止反向技術(shù)的FPGA/ CPLD,能很好的保護系統(tǒng)的安全性和設(shè)計者的知識產(chǎn)權(quán)。FPGA/ CPLD開發(fā)工具智能化,功能強大?,F(xiàn)在FPGA/ CPLD應(yīng)用各種工具可以完成輸入、綜合、實現(xiàn)到配置芯片等一系列功能。還有很多功能易學易用,設(shè)計的產(chǎn)品能快速推向市場。新型FPGA內(nèi)嵌CPU或DSP內(nèi)核,支持軟硬件協(xié)同設(shè)計,可以作為片上可編程系統(tǒng)(SOPC)的硬件平臺。,1.3 FPGA/CPLD的設(shè)計流程,一個完整的FPGA/C
24、PLD設(shè)計流程包括電路設(shè)計與輸入、功能仿真、綜合、綜合后仿真、實現(xiàn)、布線后仿真和下板調(diào)試等主要步驟。常用的設(shè)計輸入方法有硬件描述語言(HDL)和原理圖設(shè)計輸入方法。原理圖設(shè)計輸入法直觀、便于理解、元件庫資源豐富。但在大型設(shè)計中,其可維護性較差,不利于模塊建設(shè)與重用。最主要的缺點:當選用芯片升級換代后,所有原理圖都要做相應(yīng)的改動。目前進行大型工程設(shè)計時,最常用的設(shè)計方法是HDL設(shè)計輸入法。其中影響最為廣泛的HDL語言是Verilog HD
25、L和VHDL。它們的共同特點是利于由頂向下設(shè)計,利于模塊的劃分與復(fù)用,可移植性好,通用性好,設(shè)計不因芯片的工藝與結(jié)構(gòu)的變化而變化,更利于ASIC的移植。,1.3 FPGA/CPLD的設(shè)計流程,波形輸入和狀態(tài)機輸方法是兩種常用的輔助設(shè)計輸入方法。使用該輸入法時,只要繪制出激勵波形和輸出波形,EDA軟件就能自動地根據(jù)響應(yīng)關(guān)系進行設(shè)計。而使用狀態(tài)機輸入法時,設(shè)計者只需要畫出狀態(tài)轉(zhuǎn)移圖,EDA軟件就能自動地根據(jù)響應(yīng)關(guān)系進行設(shè)計。而使用狀態(tài)機輸入
26、法時,設(shè)計者只需要畫出狀態(tài)轉(zhuǎn)移圖,EDA軟件就能生成相應(yīng)的HDL代碼或者原理圖,使用很方便。但后兩種設(shè)計方法只能在某些特殊情況下緩解設(shè)計者的工作量,并不適合所有設(shè)計。,1.3 FPGA/CPLD的設(shè)計流程,電路設(shè)計完成后,要用專用仿真工具對設(shè)計進行功能仿真,驗證電路功能是否符合設(shè)計要求。通過仿真能及時發(fā)現(xiàn)設(shè)計中的錯誤,加快設(shè)計進度,提高設(shè)計的可靠性。綜合優(yōu)化(Synthesize)是指將HDL語言、原理圖等設(shè)計輸入翻譯成與、或、非門,
27、RAM,寄存器等基本邏輯單元組成的邏輯連接(網(wǎng)表),并根據(jù)目標與要求(約束條件)優(yōu)化所產(chǎn)生的邏輯連接,輸出edf和den等文件,供CPLD/FPGA廠家的布局步線器進行實現(xiàn)。,1.3 FPGA/CPLD的設(shè)計流程,綜合完成后需要檢查綜合結(jié)果是否與原設(shè)計一致,需要做綜合后仿真。在仿真時,把綜合生成的延時文件反標到綜合仿真模型中去,可估計門延時帶來的影響。綜合后仿真雖然比功能仿真精確一點,但是只能估計門延時,而不能估計連線延時,仿真結(jié)果與布
28、線后的實際情況還有一定的差距,并不十分準確。這種仿真的主要目的在于檢查綜合器的綜合結(jié)果是否與設(shè)計輸入一致。,1.3 FPGA/CPLD的設(shè)計流程,綜合結(jié)果的本質(zhì)是一些由與、或、非門、觸發(fā)器,RAM等基本邏輯單元組成的邏輯網(wǎng)表,它與芯片實際的配置情況還有較大差距。此時應(yīng)該使用FPGA/CPLD廠商提供的工具軟件,根據(jù)所選芯片的型號,將綜合輸出的邏輯網(wǎng)表適配到具體FPGA/CPLD器件上,這個過程就叫做實現(xiàn)(Implementation)過
29、程。Xilinx的實現(xiàn)過程分為:翻譯(Translate)、映射(Map)、布局布線(Place&Route)等3個步驟。因為只有器件開發(fā)商最了解器件的內(nèi)部結(jié)構(gòu),所以實現(xiàn)步驟必須選用器件開發(fā)商提供的工具軟件。,1.3 FPGA/CPLD的設(shè)計流程,布局布線之后應(yīng)該做時序仿真,時序仿真中應(yīng)該將布局布線的時延文件反標到設(shè)計中,使仿真既包含門延時,又包含連線延時信息。與前面各種仿真相比,這種后仿真包含的延時信息最為全面、準確,能較好地反映芯片
30、的實際工作情況。設(shè)計開發(fā)的最后步驟就是在線調(diào)試或者將生成的配置文件寫入芯片中進行測試。在ISE中對應(yīng)的工具是iMPACT。每個仿真步驟如果出現(xiàn)問題,就需要根據(jù)錯誤的定位返回到相應(yīng)的步驟更改或者重新設(shè)計。,1.4 FPGA/CPLD的常用開發(fā)工具,Xilinx作為當今世界上最大的FPGA/CPLD生產(chǎn)商之一,長期一來一直推動著FPGA/CPLD技術(shù)的發(fā)展。其開發(fā)的軟件也不斷升級換代,由早期的Foundation系列逐步發(fā)展到目前的IS
31、E系列。ISE是集成綜合環(huán)境的簡稱,是Xilinx提供的一套工具集,其集成工具可以完成上述整個FPGA/CPLD的開發(fā)過程。,ISE是一個集成環(huán)境,可以完成整個FPGA/CPLD開發(fā)的全過程。ISE界面風格簡潔流暢,易學易用。ISE有豐富的在線幫助信息,結(jié)合Xilinx的技術(shù)支持網(wǎng)站,一般設(shè)計過程中可能遇到的問題都能得到很好的解決。強大的設(shè)計輔助功能。ISE秉承了Xilinx設(shè)計軟件的強大輔助功能。,第二章 基本概念,若想把FPG
32、A/CPLD應(yīng)用到軟件無線電中,我們首先需要了解一些基本概念。,2.1 數(shù)字信號處理,FPGA/CPLD能夠應(yīng)用到軟件無線電中很大程度上依賴于數(shù)字信號處理技術(shù),說道數(shù)字信號處理,自然就會想到數(shù)學計算(或數(shù)學運算)?,F(xiàn)代計算機和通信系統(tǒng)中廣泛采用了數(shù)字信號處理的技術(shù)和方法?;舅悸肥窍劝研盘栍靡幌盗械臄?shù)字來表示,如果是連續(xù)的模擬信號,則需要通過采樣和模/數(shù)轉(zhuǎn)換,把信號轉(zhuǎn)換成一系列的數(shù)字信號。,2.2 計算,信號用數(shù)字表示后需要進行各種快速
33、的數(shù)學運算,這樣做的目的是多種多樣的,有的是為了加密,有的是通過調(diào)制來適于無線信道傳輸,有的是通過編碼來減少誤碼率以提高信道的通信質(zhì)量,有的是為了去掉噪聲等無關(guān)的信息也可以稱為濾波,有的是為了數(shù)據(jù)的壓縮以減少占用的頻道。有時也把某些種類的數(shù)字信號處理運算稱謂變換,如離散博里葉變換(DFT)、離散余弦變換(DCT)、小波變換(Wavelet-T)等。,2.2 計算,計算這門學問研究怎樣系統(tǒng)地有步驟地描述和轉(zhuǎn)換信息,實質(zhì)上它是一門覆蓋了多
34、個知識和技術(shù)范疇的學問,其中包括了計算的理論、分析、設(shè)計、效率和應(yīng)用。它提出的最基本的問題是什么樣的工作能自動完成,什么樣的不能。計算這個詞由傳統(tǒng)的觀點出發(fā),可以從3個不同的方面來研究計算,即從數(shù)學、科學和工程的不同角度。由現(xiàn)代觀點出發(fā),可以從4個主要的方面來研究計算,即算法和數(shù)據(jù)結(jié)構(gòu)、編程語言、體系結(jié)構(gòu)、軟件和硬件設(shè)計方法學。,2.3 算法和數(shù)據(jù)結(jié)構(gòu),為了準確地表示特定問題的信息并順利解決有關(guān)的計算問題,需要采用一些特殊方法并建立相
35、應(yīng)的模型。所謂算法就是解決特定問題的有序步驟,所謂數(shù)據(jù)結(jié)構(gòu)就是解決特定問題的相應(yīng)模型。,2.4 編程語言和程序,程序員利用一種由專家設(shè)計的既可以被人理解、也可以被計算機解釋的語言來表示算法問題的求解過程,這種語言就是編程語言,由它所表達的算法問題的求解過程就是程序。我們已經(jīng)熟悉通過編寫程序來解決計算問題,如C、PASCAL、FORTRAN、BASIC或匯編語言是幾種常用的編程語言。如果只研究算法。只在通用的計算機上運行程序或利用通用的C
36、PU來設(shè)計專用的微處理嵌入系統(tǒng),掌握上述語言就夠了。如果還需要設(shè)計和制造能進行快速計算的硬線邏輯專用電路,就必須學習數(shù)字電路的基本知識和硬件描述語言。因為現(xiàn)代復(fù)雜的數(shù)字邏輯系統(tǒng)的設(shè)計都是借助于EDA工具完成的,無論是電路系統(tǒng)的仿真還是綜合都需要掌握硬件描述語言。,2.5 系統(tǒng)結(jié)構(gòu)和硬線邏輯,計算機系統(tǒng)結(jié)構(gòu):是一門討論和研究通用的計算機中央處理器如何提高運算速度性能的學問。硬線邏輯: 由與門、或門、非門、觸發(fā)器、多路器等基本邏輯部件構(gòu)成
37、的邏輯系統(tǒng)。,2.6 設(shè)計方法學,復(fù)雜數(shù)字系統(tǒng)的設(shè)計是一個把思想(即算法)轉(zhuǎn)化為實際數(shù)字邏輯電路的過程。我們都知道同一個算法速度和性能價格比則有很大的差別。我們可以用許多種不同的方案來實現(xiàn)能實時完成算法運算的復(fù)雜數(shù)字系統(tǒng)電路。下面列出4種方案:1,以專用微處理機芯片為中心來構(gòu)成完成算法所需的電路系統(tǒng);2,用高密度的FPGA(從幾萬門到幾百萬門);3,設(shè)計專用的大規(guī)模集成電路(ASIC);4,利用現(xiàn)成的微處理機的IP核并結(jié)合專門設(shè)計的高速
38、ASIC運算電路。究竟采用什么方案要根據(jù)具體項目的技術(shù)指標、經(jīng)費、時間進度和生產(chǎn)批量綜合考慮而定。,2.6 設(shè)計方法學,上述第2.3.4種設(shè)計方案中,電路結(jié)構(gòu)的考慮和決策至關(guān)重要。有的電路結(jié)構(gòu)速度快,但所需的邏輯單元多,成本高;而有的電路結(jié)構(gòu)速度慢,但所需的邏輯單元少,成本低。復(fù)雜數(shù)字邏輯系統(tǒng)設(shè)計的過程往往需要通過多次仿真,從不同的結(jié)構(gòu)方案中找到一種符合工程技術(shù)要求的性能價格比最好的結(jié)構(gòu)。一個優(yōu)秀有經(jīng)驗的設(shè)計師,能通過硬件描述語言的頂層
39、仿真較快的確定合理的系統(tǒng)電路結(jié)構(gòu),減少由于總體結(jié)構(gòu)設(shè)計不合理而造成的返工,從而大大加快系統(tǒng)的設(shè)計進程。,2.7 專用硬線邏輯與微處理器的比較,在信號處理專用計算電路的設(shè)計中,以專用微處理器芯片為中心來構(gòu)成算法所需的電路系統(tǒng)是一種較好的辦法??梢岳矛F(xiàn)成的微處理器開發(fā)系統(tǒng),在算法已用C語言驗證的基礎(chǔ)上,在系統(tǒng)開發(fā)工具的幫助下,把該C語言程序轉(zhuǎn)換為專用微處理器的匯編語言程序,再編譯為機器代碼,然后加載到樣機系統(tǒng)的存儲區(qū),即可在系統(tǒng)開發(fā)工具的
40、環(huán)境下開始相關(guān)算法的運算仿真或運算。采用這種方法,設(shè)計周期短,可以利用的資源多,但速度、能耗、體積等性能受該微處理器芯片和外圍的限制。,2.7 專用硬線邏輯與微處理器的比較,用高密度的FPGA來構(gòu)成算法所需的電路系統(tǒng)也是一種較好的辦法。但必須購置有關(guān)的FPGA開發(fā)環(huán)境、布局布線和編程工具。有些FPGA廠商提供的開發(fā)環(huán)境不夠理想,其仿真工具和綜合工具性能不好,還需要利用性能較好的硬件描述語言仿真器、綜合工具,才能有效地進行復(fù)雜的硬線邏輯系
41、統(tǒng)的設(shè)計。由于FPGA是一種通用的器件,它的基本結(jié)構(gòu)必須適用于多種功能的電路,因而對某一種特殊應(yīng)用性能不如專門為特殊應(yīng)用設(shè)計的ASIC電路。,2.7 專用硬線邏輯與微處理器的比較,利用現(xiàn)成的微處理器IP核或根據(jù)某一特殊應(yīng)用設(shè)計的微處理器,并結(jié)合專門設(shè)計的高速ASIC運算電路,能設(shè)計出性能價格比最高的理想數(shù)字信號處理系統(tǒng)。這種方法結(jié)合了微處理器和專用的大規(guī)模集成電路的優(yōu)點,由于微處理器IP核的挑選結(jié)合了算法和應(yīng)用的特點,又加上專用的ASI
42、C在高速部分時的增強,能量體裁衣,因而各方面性能優(yōu)越。但由于設(shè)計和制造周期長、投片成本高,往往只有經(jīng)費充足,批量大的項目或重要項目才采用這一途徑。當然性能優(yōu)良的硬件描述語言仿真器、綜合工具是不可缺少的,另外對所采用的半導(dǎo)體廠家基本器件庫和IP庫的深入了解也是必須的。,2.8 C語言與硬件描述語言在算法運算電路設(shè)計中的關(guān)系和作用,國內(nèi)大多數(shù)學校以C語言為編程語言,算法的描述和驗證常用C語言來完成。例如,要設(shè)計GMSK調(diào)制器,必須先深入了解
43、GMSK調(diào)制器的算法,再編寫C語言程序來驗證算法的正確性。運行描述調(diào)制器的C語言,把在數(shù)據(jù)文件中的多組待調(diào)制的數(shù)據(jù)轉(zhuǎn)換為相應(yīng)的調(diào)制后數(shù)據(jù)并存入文件。再編寫一個加干擾的C語言程序,用于模擬信道。它能產(chǎn)生隨機噪聲并將其加入調(diào)制后的數(shù)據(jù)文件中。運行該加干擾程序,產(chǎn)生隨機噪聲的數(shù)據(jù)文件。然后再編寫一個解調(diào)器的C語言程序,運行該程序把帶噪聲的文件解調(diào)為另一個數(shù)據(jù)文件。,2.8 C語言與硬件描述語言在算法運算電路設(shè)計中的關(guān)系和作用,只要比較原始數(shù)據(jù)
44、文件和生成的文件便可知道調(diào)制和解調(diào)的程序是否正確。用這種方法就可以驗證算法的正確性。但這樣的數(shù)據(jù)處理其運行速度與程序的大小和計算機的運行速度有關(guān),不能獨立于計算機而存在。如果要設(shè)計一個專門的電路來進行這種對速度有要求的實時數(shù)據(jù)處理,除了 以上介紹的C程序外,還需要編寫硬件描述語言程序,進行仿真以便從電路結(jié)構(gòu)上保證算法能在規(guī)定的時間內(nèi)完成,并能與前端和后端的設(shè)備或器件正確無誤的交換數(shù)據(jù)。,2.8 C語言與硬件描述語言在算法運算電路設(shè)計中的
45、關(guān)系和作用,硬件描述語言編寫程序設(shè)計硬件的好處在于易于理解、易于維護、調(diào)試電路速度快等優(yōu)點。電路結(jié)構(gòu)確定之前,必須經(jīng)過多次仿真:1,C語言的功能仿真;2,C語言的并行結(jié)構(gòu)仿真;3,Verilog HDL的行為仿真;4, Verilog HDL RTL級仿真;5,綜合后門級結(jié)構(gòu)仿真;6,布局布線后仿真;7,電路實現(xiàn)驗證。,第三章 復(fù)雜數(shù)字邏輯系統(tǒng)的Verilog HDL設(shè)計方法概述,典型的復(fù)雜數(shù)字邏輯系統(tǒng)主要有:嵌入式微處理機系統(tǒng)
46、高速通信系統(tǒng)數(shù)字信號處理系統(tǒng)高速并行計算邏輯 高速編碼/解碼、加密/解密電路復(fù)雜的多功能智能接口門邏輯總數(shù)超過幾萬門達到幾百甚至達幾千 萬門的數(shù)字系統(tǒng),3.1 為什么要設(shè)計復(fù)雜的數(shù)字邏輯系統(tǒng)?,對嵌入式系統(tǒng)的性能要求越來越高 - 通用的微處理機不能滿足要求 - 硬件結(jié)構(gòu)是提高系統(tǒng)總體性能的關(guān)鍵 - 軟件只能提高系統(tǒng)的靈活性能 - 現(xiàn)代電子、通信系統(tǒng)的實時、高可靠、低功 耗要求 - 系統(tǒng)的功
47、能專一,但對其各種性能要求極高 - 降低系統(tǒng)的設(shè)計和制造成本,3.2 怎樣設(shè)計如此復(fù)雜的系統(tǒng)?,傳統(tǒng)的設(shè)計方法: - 查用器件手冊; - 選用合適的微處理器和電路芯片; - 設(shè)計面包板和線路板; - 調(diào)試; - 定型; - 設(shè)計復(fù)雜的系統(tǒng)(幾十萬門以上)極其困難。,3.2 怎樣設(shè)計如此復(fù)雜的系統(tǒng)?,現(xiàn)代的設(shè)計方法: - 選用合適的 EDA仿真工具; - 選用合適電路圖輸入和HDL編輯工具;
48、 - 逐個編寫可綜合HDL模塊; - 逐個編寫HDL測試模塊; - 逐個做Verilog HDL 電路邏輯訪真; - 編寫Verilog HDL總測試模塊; - 做系統(tǒng)電路邏輯總仿真;,3.2 怎樣設(shè)計如此復(fù)雜的系統(tǒng)?,現(xiàn)代的設(shè)計方法: - 選用合適的基本邏輯元件庫和宏庫 - 租用或購買必要的IP核; - 選用合適的綜合器; - 進行綜合得到門級電路結(jié)構(gòu); - 布局布線,得到時
49、延文件; - 后仿真; - 定型, FPGA編碼或ASIC投片,3.3 Top-Down 設(shè)計思想,用EDA設(shè)計數(shù)字系統(tǒng)的流程,3.4 采用硬件描述語言設(shè)計復(fù)雜數(shù)字邏輯系統(tǒng)的優(yōu)點,電路的邏輯功能容易理解;便于計算機對邏輯進行分析處理;把邏輯設(shè)計與具體電路的實現(xiàn)分成兩個獨立 的階段來操作;邏輯設(shè)計與實現(xiàn)的工藝無關(guān);邏輯設(shè)計的資源積累可以重復(fù)利用;可以由多人共同更好更快地設(shè)計非常復(fù)雜 的邏輯電路(幾十萬門以上的
50、邏輯系統(tǒng))。,3.5 有哪幾種硬件描述語言?各有什么特點?,Verilog HDL - 較多的第三方工具的支持 - 語法結(jié)構(gòu)比VHDL簡單 - 學習起來比VHDL容易 - 仿真工具比較好使 - 測試激勵模塊容易編寫,Verilog HDL 的發(fā)展歷史,3.5 有哪幾種硬件描述語言?各有什么特點?,VHDL - 比VerilogHDL早幾年成為I EEE標準; -
51、語法/結(jié)構(gòu)比較嚴格,因而編寫出的 模塊風格比較清晰; - 比較適合由較多的設(shè)計人員合作完成 的特大型項目(一百萬門以上)。,兩者建模能力的比較,,,,,,,3.6 Verilog HDL目前的應(yīng)用情況和適用設(shè)計,ASIC 和FPGA設(shè)計師可用它來編寫可綜合的代碼。描述系統(tǒng)的結(jié)構(gòu),做高層次的仿真。驗證工程師編寫各種層次的測試模塊對具體電路設(shè)計工程師所設(shè)計的模塊進行全面細致的驗證。庫模型的設(shè)
52、計:可以用于描述ASIC 和FPGA的基本單元(Cell)部件,也可以描述復(fù)雜的宏單元(Macro Cell)。,第4章 Verilog HDL 的基本語法4.1 Verilog HDL 概述,Verilog HDL是一種用于數(shù)字邏輯電路設(shè)計的語言:- 用Verilog HDL描述的電路設(shè)計就是該電路的 Verilog HDL模型。- Verilog HDL 既是一種行為描述的語言也是一種結(jié)構(gòu)描述的語言。,既可以用電路的功能描述
53、也可以用元器件和它們之間的連接來建立所設(shè)計電路的Verilog HDL模型。Verilog模型可以是實際電路的不同級別的抽象。這些抽象的級別和它們對應(yīng)的模型類型共有以下五種:系統(tǒng)級(system): 用高級語言結(jié)構(gòu)實現(xiàn)設(shè)計模塊的外部性能的模 算法級(algorithmic): 用高級語言結(jié)構(gòu)實現(xiàn)設(shè)計算法的模型。 RTL級(Register Transfer Level): 描述數(shù)據(jù)在寄存器之間流動和如何處理這些數(shù)據(jù)的模型。 門級
54、(gate-level): 描述邏輯門以及邏輯門之間的連接的模型。開關(guān)級(switch-level): 描述器件中三極管和儲存節(jié)點以及它們之間連接的模型。,一個復(fù)雜電路的完整Verilog HDL模型是由若個 Verilog HDL 模塊構(gòu)成的,每一個模塊又可以由若干個子模塊構(gòu)成。 利用Verilog HDL語言結(jié)構(gòu)所提供的這種功能就可以構(gòu)造一個模塊間的清晰層次結(jié)構(gòu)來描述極其復(fù)雜的大型設(shè)計。 Verilog HDL
55、行為描述語言作為一種結(jié)構(gòu)化和過程性的語言,其語法結(jié)構(gòu)非常適合于算法級和RTL級的模型設(shè)計。這種行為描述語言具有以下八項功能:,可描述順序執(zhí)行或并行執(zhí)行的程序結(jié)構(gòu)。用延遲表達式或事件表達式來明確地控制過程的啟動時間。通過命名的事件來觸發(fā)其它過程里的激活行為或停止行為。提供了條件、if-else、case、循環(huán)程序結(jié)構(gòu)。提供了可帶參數(shù)且非零延續(xù)時間的任務(wù)(task)程序結(jié)構(gòu)。提供了可定義新的操作符的函數(shù)結(jié)構(gòu)(function)。,
56、提供了用于建立表達式的算術(shù)運算符、邏輯運算符、位運算符。 Verilog HDL語言作為一種結(jié)構(gòu)化的語言也非常適合于門級和開關(guān)級的模型設(shè)計。 Verilog HDL的構(gòu)造性語句可以精確地建立信號的模型。這是因為在Verilog HDL中,提供了延遲和輸出強度的原語來建立精確程度很高的信號模型。信號值可以有不同的的強度,可以通過設(shè)定寬范圍的模糊值來降低不確定條件的影響。,Verilog HDL作為一種高級的硬件描述編程語言,
57、有著類似C語言的風格。其中有許多語句如:if語句、case語句等和C語言中的對應(yīng)語句十分相似。如果讀者已經(jīng)掌握C語言編程的基礎(chǔ),那么學習 Verilog HDL并不困難,我們只要對Verilog HDL某些語句的特殊方面著重理解,并加強上機練習就能很好地掌握它,利用它的強大功能來設(shè)計復(fù)雜的數(shù)字邏輯電路。下面我們將對Verilog HDL中的基本語法逐一加以介紹。,4.2 簡單的Verilog HDL模塊,下面先介紹幾個簡單的Verilo
58、g HDL程序,然后從中分析Verilog HDL程序的特性。例1: module adder ( count,sum,a,b,cin ); input [2:0] a,b; input cin; output count; output [2:0] sum;
59、 assign {count,sum}=a+b+cin; endmodule 這個例子描述了一個三位的加法器。從例子中可以看出整個Verilog HDL程序是嵌套在module和endmodule聲明語句里的。,例2:module compare ( equal,a,b ); output equal; //聲明輸出
60、信號equal input [1:0] a,b; //聲明輸入信號a,b assign equal=(a==b)?1:0; /*如果兩個輸入信號相等,輸出為1。否則為0*/endmodule 這個程序描述了一個比較器.在這個程序中,/*........*/和//.........表示注釋部分,注釋只是為了方便程序員理解程序,對編譯是不起作用的。,例3:module aaaa(a,clk,x_o
61、ut,y_out,rdy); input[15:0] a; input clk; output[15:0] x_out,y_out; output rdy; wire[15:0] phase_in; ppp ppp(a,clk,phase_in); cos2 cos2(phase_in,clk,x_out,y_o
62、ut,rdy); endmodule,module ppp(a,clk,phase_in);input[15:0] a;input clk;output[15:0] phase_in;reg[15:0] phase_in;reg[15:0] areg="0000000000000000";reg cou="0";,always@(posedge clk)begin
63、if(cou==0) beginareg<=a;cou<=1;endelse beginphase_in<=areg+16'hc90f;endendendmodule,在上述這個例子中存在著三個模塊:模塊aaaa、ppp和模塊cos2 . 模塊 aaaa是上層模塊。模塊ppp和模塊cos2則被稱為子模塊,其中cos2為FPGA開發(fā)環(huán)境自帶的IP核。 通過這種結(jié)構(gòu)性模塊構(gòu)造便可構(gòu)成特
64、大型模塊。,通過上面的例子可以看到: Verilog HDL程序是由模塊構(gòu)成的。模塊是可以進行層次嵌套的。正因為如此,才可以將大型的數(shù)字電路設(shè)計分割成不同的小模塊來實現(xiàn)特定的功能,最后通過頂層模塊調(diào)用子模塊來實現(xiàn)整體功能。 每個模塊要進行端口定義,并說明輸入輸出口,然后對模塊的功能進行行為邏輯描述。,Verilog HDL程序的書寫格式自由,一行可以寫幾個語句,一個語句也可以分寫多行。 除了endmodule語句外,每個語句
65、和數(shù)據(jù)定義的最后必須有分號 可以用/*.....*/和//...對Verilog HDL程序的任何部分作注釋。一個好的,有使用價值的源程序都應(yīng)當加上必要的注釋,以增強程序的可讀性和可維護性。,模塊的結(jié)構(gòu),Verilog的基本設(shè)計單元是“模塊”(block)。一個模塊是由兩部分組成的:一)描述接口;二)描述邏輯功能,即定義輸入是如何影響輸出的。下面舉例說明:,從上面的例子可以看出:- Verilog模塊結(jié)構(gòu)完全嵌在module和e
66、ndmodule聲明語句之間;- 每個Verilog程序包括四個主要部分:端口定義、I/O說明、內(nèi)部信號聲明、功能定義.,模塊的測試,如何檢查上述例子其功能是否正確? 需要有測試激勵信號輸入到被測模塊 需要記錄被測模塊的輸出信號 需要把用功能和行為描述的Verilog模塊 轉(zhuǎn)換為門級電路互連的電路結(jié)構(gòu)(綜合)。 需要對已經(jīng)轉(zhuǎn)換為門級電路結(jié)構(gòu)的邏輯 進行測試(門級電路仿真)。 需要對布局布線后的電路結(jié)構(gòu)進行測試。
67、 (布局布線后仿真)。,圖:,模塊的測試,測試模塊常見的形式:module t;reg …; //被測模塊輸入/輸出變量類型定義wire…; //被測模塊輸入/輸出變量類型定義initial begin …; …; …; end … …//產(chǎn)生測試信號always #delay begin …; end … …//產(chǎn)生測試信號Testedmd m(.in1(ina), .in2(i
68、nb), .out1(outa), .out2(outb) );//被測模塊的實例引用initial begin ….; ….; …. end //記錄輸出和響應(yīng)endmodule,模塊的測試,測試模塊中常用的過程塊:,always,所有的過程塊都在0時刻同時啟動;它們是并行的,在模塊中不分前后。 initial塊 只執(zhí)行一次。 always塊 只要符合觸發(fā)條件可以循環(huán)執(zhí)行。,模塊的測試,4.3 數(shù)據(jù)類型及其
69、常量變量,Verilog HDL中共有19種數(shù)據(jù)類型,我們先介紹4個最基本的數(shù)據(jù)類型:reg 、wire、 integer、 parameter。常量:在程序運行過程中,其值不能改變的量稱為常量。Verilog HDL中,整型常量有4種進制表示形式:1)二進制整數(shù) 2)十進制整數(shù) 3)十六進制整數(shù) 4)八進制整數(shù)Verilog HDL中,數(shù)字表達方式有 3種:1)〈位寬 〉〈進制 〉 〈數(shù)字〉2) 〈進制 〉 〈
溫馨提示
- 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- fpga在軟件無線電中的應(yīng)用
- FPGA技術(shù)在軟件無線電中的應(yīng)用.pdf
- 軟件無線電在機載遙測中的應(yīng)用.pdf
- DSP在軟件無線電技術(shù)中的應(yīng)用.pdf
- 軟件無線電的應(yīng)用
- 軟件無線電技術(shù)在DAB系統(tǒng)中的應(yīng)用.pdf
- 軟件無線電在直放站中的應(yīng)用研究.pdf
- 基于FPGA的軟件無線電DDC設(shè)計.pdf
- 小波調(diào)制及其在軟件無線電中的應(yīng)用.pdf
- 軟件無線電理論在VTS中的應(yīng)用研究.pdf
- 軟件無線電在移動通信基站中的應(yīng)用研究.pdf
- 軟件無線電技術(shù)在數(shù)字廣播中的應(yīng)用
- SVPWM算法優(yōu)化及其FPGA-CPLD實現(xiàn).pdf
- 軟件無線電數(shù)字下變頻FPGA實現(xiàn)的研究.pdf
- 基于軟件無線電數(shù)傳電臺的FPGA實現(xiàn).pdf
- 基于FPGA的軟件無線電硬件平臺的設(shè)計.pdf
- 軟件無線電在測量終端的應(yīng)用研究.pdf
- 軟件無線電數(shù)字下頻的FPGA實現(xiàn)研究.pdf
- 基于FPGA的軟件無線電技術(shù)(調(diào)制解調(diào))的實現(xiàn).pdf
- 基于FPGA的軟件無線電調(diào)制解調(diào)技術(shù)的實現(xiàn).pdf
評論
0/150
提交評論