技術(shù)頻道

娓娓工業(yè)
您現(xiàn)在的位置: 中國(guó)傳動(dòng)網(wǎng) > 技術(shù)頻道 > 應(yīng)用方案 > 基于FPGA的函數(shù)發(fā)生器設(shè)計(jì)

基于FPGA的函數(shù)發(fā)生器設(shè)計(jì)

時(shí)間:2014-04-09 16:40:08來(lái)源:張乙丑

導(dǎo)語(yǔ):?傳統(tǒng)數(shù)字函數(shù)發(fā)生器多數(shù)由單片機(jī)或DSP來(lái)實(shí)現(xiàn)。而基于FPGA等可編程邏輯器件的可編程邏輯技術(shù)是近年來(lái)發(fā)展起來(lái)的新興技術(shù),F(xiàn)PGA器件具有很高的集成度以及靈活的編程方式,因此,可以考慮利用 FPGA器件,將數(shù)字函數(shù)發(fā)生器與FPGA相結(jié)合,設(shè)計(jì)出一種簡(jiǎn)單而高效的數(shù)字函數(shù)發(fā)生器系統(tǒng)[1]。

摘要 基于FPGA的函數(shù)發(fā)生器主要實(shí)現(xiàn)方波、鋸齒波和正弦波等,基于FPGA/CPLD開(kāi)發(fā)設(shè)計(jì)數(shù)字系統(tǒng)設(shè)計(jì)的函數(shù)發(fā)生器電路簡(jiǎn)單、可靠性好,而且EDA工具可以在硬件條件不足的情況下對(duì)其進(jìn)行編譯、綜合、布線(xiàn),可實(shí)現(xiàn)大致地系統(tǒng)仿真。本系統(tǒng)使用VHDL語(yǔ)言編寫(xiě),實(shí)現(xiàn)方波、鋸齒波和正弦波等。最后,通過(guò)QuartusⅡ進(jìn)行軟件仿真測(cè)試和使用實(shí)驗(yàn)箱DICE-EH2000實(shí)驗(yàn)系統(tǒng)進(jìn)行硬件驗(yàn)證,使整個(gè)設(shè)計(jì)更加緊湊、穩(wěn)定且可靠。

關(guān)鍵詞 FPGA 函數(shù)發(fā)生器 VHDL QuartusⅡ

DesignofFunctiongeneratorBasedonFPGA

1引言

傳統(tǒng)數(shù)字函數(shù)發(fā)生器多數(shù)由單片機(jī)或DSP來(lái)實(shí)現(xiàn)。而基于FPGA等可編程邏輯器件的可編程邏輯技術(shù)是近年來(lái)發(fā)展起來(lái)的新興技術(shù),F(xiàn)PGA器件具有很高的集成度以及靈活的編程方式,因此,可以考慮利用FPGA器件,將數(shù)字函數(shù)發(fā)生器與FPGA相結(jié)合,設(shè)計(jì)出一種簡(jiǎn)單而高效的數(shù)字函數(shù)發(fā)生器系統(tǒng)[1]。

本文所設(shè)計(jì)的函數(shù)發(fā)生器是一個(gè)基于FPGA的數(shù)字頻率合成器,該系統(tǒng)在軟件仿真時(shí),選用了實(shí)驗(yàn)箱DICE-EH2000實(shí)驗(yàn)系統(tǒng)Altera公司生產(chǎn)的ACEX系列的EP1K30TC144-3[2]。ACEX系列是Altera公司在98年推出的2.5VSRAM工藝的PLD(FPGA),從3萬(wàn)門(mén)到25萬(wàn)門(mén),主要有10K30E、10K50E、10K100E、帶嵌入式存儲(chǔ)塊(EAB)。較早期的型號(hào)還有FLEX10K(5V)、FLEX10KA(3.3v)、5v的10K和3.3v的10KA已基本不推廣,10KE目前也已使用較少,逐漸被ACEX1K和Cyclone取代。ACEX1K是2000年推出的2.5v低價(jià)格SRAM工藝PLD(FPGA),結(jié)構(gòu)與10KE類(lèi)似,帶嵌入式存儲(chǔ)塊(EAB),部分型號(hào)帶PLL,主要有1K10,1K30,1K50,1K100。AXEC系列如表1-1所示。

表1-1AXEC系列

就本設(shè)計(jì)而言,重點(diǎn)在于能夠編寫(xiě)基于FPGA實(shí)現(xiàn)方波、鋸齒波和正弦波等函數(shù)的發(fā)生器的VHDL源程序。當(dāng)然,配合D/A轉(zhuǎn)換器、示波器,實(shí)現(xiàn)硬件的既定功能。因此,整個(gè)設(shè)計(jì)主要完成了以下幾項(xiàng)工作:

①根據(jù)需求確定軟件的實(shí)現(xiàn)方案;

②編寫(xiě)調(diào)試發(fā)生器的VHDL源程序;

③用QuartusⅡ?qū)υ摵瘮?shù)發(fā)生器進(jìn)行仿真測(cè)試。

④通過(guò)開(kāi)發(fā)板與示波器的連接觀(guān)察輸出波形。

2FPGA簡(jiǎn)介

FPGA[3]是英文FieldProgrammableGateArray的縮寫(xiě),即現(xiàn)場(chǎng)可編程門(mén)陣列,是在PAL、GAL、EPLD等可編程器件的基礎(chǔ)上進(jìn)一步發(fā)展的產(chǎn)物。它是作為專(zhuān)用集成電路(ASIC)領(lǐng)域中的一種半定制電路而出現(xiàn)的,既解決了定制電路的不足,又克服了原有可編程器件門(mén)電路數(shù)有限的缺點(diǎn)。FPGA采用了邏輯單元陣列LCA(LogicCellArray)這樣一個(gè)新概念,內(nèi)部包括可配置邏輯模塊CLB(ConfigurableLogicBlock)、輸出輸入模塊IOB(InputOutputBlock)和內(nèi)部連線(xiàn)(Interconnect)三個(gè)部分。FPGA的特點(diǎn)主要有:

1)采用FPGA設(shè)計(jì)ASIC電路,用戶(hù)不需要投片生產(chǎn),就能得到合用的芯片。

2)FPGA可做其它全定制或半定制ASIC電路的中試樣片。

3)FPGA內(nèi)部有豐富的觸發(fā)器和I/O引腳。

4)FPGA是ASIC電路中設(shè)計(jì)周期最短、開(kāi)發(fā)費(fèi)用最低、風(fēng)險(xiǎn)最小的器件之一。

5)FPGA采用高速CHMOS工藝,功耗低,可以與CMOS、TTL電平兼容。可以說(shuō),F(xiàn)PGA芯片是小批量系統(tǒng)提高系統(tǒng)集成度、可靠性的最佳選擇之一。

目前FPGA的品種很多,有XILINX的XC系列、TI公司的TPC系列、ALTERA公司的FIEX系列等。FPGA是由存放在片內(nèi)RAM中的程序來(lái)設(shè)置其工作狀態(tài)的,因此,工作時(shí)需要對(duì)片內(nèi)的RAM進(jìn)行編程。用戶(hù)可以根據(jù)不同的配置模式,采用不同的編程方式。加電時(shí),F(xiàn)PGA芯片將EPROM中數(shù)據(jù)讀入片內(nèi)編程RAM中,配置完成后,F(xiàn)PGA進(jìn)入工作狀態(tài)。掉電后,F(xiàn)PGA恢復(fù)成白片,內(nèi)部邏輯關(guān)系消失,因此,F(xiàn)PGA能夠反復(fù)使用。FPGA的編程無(wú)須專(zhuān)用的FPGA編程器,只須用通用的EPROM、PROM編程器即可。當(dāng)需要修改FPGA功能時(shí),只需換一片EPROM即可。這樣,同一片F(xiàn)PGA不同的編程數(shù)據(jù),可以產(chǎn)生不同的電路功能。因此,F(xiàn)PGA的使用非常靈活。FPGA有多種配置模式:并行主模式為一片F(xiàn)PGA加一片EPROM的方式;主從模式可以支持一片PROM編程多片F(xiàn)PGA;串行模式可以采用串行PROM編程FPGA;外設(shè)模式可以將FPGA作為微處理器的外設(shè),由微處理器對(duì)其編程FPGA是80年代中期出現(xiàn)的高密度可編程邏輯器件(PLD)。FPGA器件及其系統(tǒng)軟件是開(kāi)發(fā)大規(guī)模數(shù)字集成電路的最新技術(shù)。它利用計(jì)算機(jī)輔助設(shè)計(jì),以電路原理圖、VHDL、布爾方程、真值表或狀態(tài)機(jī)等格式,輸入設(shè)計(jì)邏輯,然后經(jīng)一系列變換,將輸入的邏輯轉(zhuǎn)換成適合于FPGA器件結(jié)構(gòu)的圖形文件或文本形式。此時(shí)不僅可以觀(guān)察整個(gè)設(shè)計(jì)在器件中實(shí)際布線(xiàn)的結(jié)果,了解各網(wǎng)絡(luò)的延時(shí)特性,進(jìn)行人工修改或編輯;從而可利用模擬手段,對(duì)設(shè)計(jì)的輸入、輸出及任意點(diǎn)信號(hào)進(jìn)行模擬仿真,包括驗(yàn)證設(shè)計(jì)功能是否正確的功能模擬,以及確定最終設(shè)計(jì)是否滿(mǎn)足相位和延時(shí)要求的定時(shí)模擬。把經(jīng)過(guò)模擬驗(yàn)證后的設(shè)計(jì)文件轉(zhuǎn)換成比特流文件或PROM(可編程只讀存儲(chǔ)器)格式文件,把常規(guī)的編程器對(duì)EPROM(可擦可編程只讀存儲(chǔ)器)編程。然后把這EPROM與FPGA器件適當(dāng)連接,加上(5V)電源。此FPGA器件就可作為大規(guī)模專(zhuān)用集成電路使用。用不同的設(shè)計(jì)文件配置同一塊FPGA"白片",則可實(shí)現(xiàn)不同的邏輯功能。FPGA器件可實(shí)現(xiàn)所有數(shù)字電路功能。目前,器件集成度已經(jīng)達(dá)到了兩萬(wàn)門(mén)數(shù)量級(jí),工作頻率可達(dá)300MHz以上。一般可在幾個(gè)小時(shí)或幾天內(nèi)完成一個(gè)設(shè)計(jì),并可隨時(shí)修改。這加速了產(chǎn)品設(shè)計(jì)開(kāi)發(fā)的進(jìn)程,免去了昂貴的ASIC(專(zhuān)用集成電路)器件半導(dǎo)體生產(chǎn)工藝費(fèi)用及投資風(fēng)險(xiǎn)。FPGA技術(shù)是電子工程師不可缺少的好幫手在發(fā)達(dá)國(guó)家,PLD技術(shù)已經(jīng)成為大學(xué)電子類(lèi)專(zhuān)業(yè)的必修課程,它已經(jīng)象單片機(jī)一樣廣泛的應(yīng)用在各種需要數(shù)字邏輯的領(lǐng)域。然而,在國(guó)內(nèi),PLD技術(shù)才剛剛起步。

2.1FPGA工作原理與簡(jiǎn)介

FPGA是在PAL、GAL、EPLD、CPLD等可編程器件的基礎(chǔ)上進(jìn)一步發(fā)展的產(chǎn)物。它是作為ASIC領(lǐng)域中的一種半定制電路而出現(xiàn)的,即解決了定制電路的不足,又克服了原有可編程器件門(mén)電路有限的缺點(diǎn)。

由于FPGA需要被反復(fù)燒寫(xiě),實(shí)現(xiàn)組合邏輯的基本結(jié)構(gòu)不可能像ASIC那樣通過(guò)固定的與非門(mén)來(lái)完成,而只能采用一種易于反復(fù)配置的結(jié)構(gòu)。查找表可以很好地滿(mǎn)足這一要求,目前主流FPGA都采用了基于SRAM工藝的查找表結(jié)構(gòu),也有一些軍品和宇航級(jí)FPGA采用Flash或者熔絲與反熔絲工藝的查找表結(jié)構(gòu)。通過(guò)燒寫(xiě)文件改變查找表內(nèi)容的方法來(lái)實(shí)現(xiàn)對(duì)FPGA的重復(fù)配置。

對(duì)于一個(gè)n輸入的邏輯運(yùn)算,不管是與或非運(yùn)算還是異或運(yùn)算等等,最多只可能存在2n種結(jié)果。所以如果事先將相應(yīng)的結(jié)果存放于一個(gè)存貯單元,就相當(dāng)于實(shí)現(xiàn)了與非門(mén)電路的功能。FPGA的原理也是如此,通過(guò)燒寫(xiě)文件去配置查找表的內(nèi)容,從而在相同的電路情況下實(shí)現(xiàn)了不同的邏輯功能。

查找表(Look-Up-Table)簡(jiǎn)稱(chēng)為L(zhǎng)UT,LUT本質(zhì)上就是一個(gè)RAM。目前FPGA中多使用4輸入的LUT,所以每一個(gè)LUT可以看成一個(gè)有4位地址線(xiàn)的的RAM。當(dāng)用戶(hù)通過(guò)原理圖或HDL語(yǔ)言描述了一個(gè)邏輯電路以后,PLD/FPGA開(kāi)發(fā)軟件會(huì)自動(dòng)計(jì)算邏輯電路的所有可能結(jié)果,并把真值表(即結(jié)果)事先寫(xiě)入RAM,這樣,每輸入一個(gè)信號(hào)進(jìn)行邏輯運(yùn)算就等于輸入一個(gè)地址進(jìn)行查表,找出地址對(duì)應(yīng)的內(nèi)容,然后輸出即可。

由于基于LUT的FPGA具有很高的集成度,其器件密度從數(shù)萬(wàn)門(mén)到數(shù)千萬(wàn)門(mén)不等,可以完成極其復(fù)雜的時(shí)序與邏輯組合邏輯電路功能,所以適用于高速、高密度的高端數(shù)字邏輯電路設(shè)計(jì)領(lǐng)域。其組成部分主要有可編程輸入/輸出單元、基本可編程邏輯單元、內(nèi)嵌SRAM、豐富的布線(xiàn)資源、底層嵌入功能單元、內(nèi)嵌專(zhuān)用單元等,主要設(shè)計(jì)和生產(chǎn)廠(chǎng)家有Xilinx、Altera、Lattice、Actel、Atmel和QuickLogic等公司,其中最大的是Xilinx、Altera、Lattice三家。

如前所述,F(xiàn)PGA是由存放在片內(nèi)的RAM來(lái)設(shè)置其工作狀態(tài)的,因此工作時(shí)需要對(duì)片內(nèi)RAM進(jìn)行編程。用戶(hù)可根據(jù)不同的配置模式,采用不同的編程方式。FPGA有如下幾種配置模式:

l并行模式:并行PROM、Flash配置FPGA;

l主從模式:一片PROM配置多片F(xiàn)PGA;

l串行模式:串行PROM配置FPGA;

l外設(shè)模式:將FPGA作為微處理器的外設(shè),由微處理器對(duì)其編程。

目前,F(xiàn)PGA市場(chǎng)占有率最高的兩大公司Xilinx和Altera生產(chǎn)的FPGA都是基于SRAM工藝的,需要在使用時(shí)外接一個(gè)片外存儲(chǔ)器以保存程序。上電時(shí),F(xiàn)PGA將外部存儲(chǔ)器中的數(shù)據(jù)讀入片內(nèi)RAM,完成配置后,進(jìn)入工作狀態(tài);掉電后FPGA恢復(fù)為白片,內(nèi)部邏輯消失。這樣FPGA不僅能反復(fù)使用,還無(wú)需專(zhuān)門(mén)的FPGA編程器,只需通用的EPROM、PROM編程器即可。Actel、QuickLogic等公司還提供反熔絲技術(shù)的FPGA,只能下載一次,具有抗輻射、耐高低溫、低功耗和速度快等優(yōu)點(diǎn),在軍品和航空航天領(lǐng)域中應(yīng)用較多,但這種FPGA不能重復(fù)擦寫(xiě),開(kāi)發(fā)初期比較麻煩,費(fèi)用也比較昂貴。Lattice是ISP技術(shù)的發(fā)明者,在小規(guī)模PLD應(yīng)用上有一定的特色。早期的Xilinx產(chǎn)品一般不涉及軍品和宇航級(jí)市場(chǎng),但目前已經(jīng)有QPro-R等多款產(chǎn)品進(jìn)入該類(lèi)領(lǐng)域。

2.2FPGA芯片結(jié)構(gòu)

目前主流的FPGA仍是基于查找表技術(shù)的,已經(jīng)遠(yuǎn)遠(yuǎn)超出了先前版本的基本性能,并且整合了常用功能(如RAM、時(shí)鐘管理和DSP)的硬核(ASIC型)模塊。如圖2-1所示(注:圖2-1只是一個(gè)示意圖,實(shí)際上每一個(gè)系列的FPGA都有其相應(yīng)的內(nèi)部結(jié)構(gòu)),F(xiàn)PGA芯片主要由6部分完成,分別為:可編程輸入輸出單元、基本可編程邏輯單元、完整的時(shí)鐘管理、嵌入塊式RAM、豐富的布線(xiàn)資源、內(nèi)嵌的底層功能單元和內(nèi)嵌專(zhuān)用硬件模塊。

圖2-1FPGA芯片的內(nèi)部結(jié)構(gòu)

2.3軟核、硬核以及固核的概念

核是具有知識(shí)產(chǎn)權(quán)核的集成電路芯核總稱(chēng),是經(jīng)過(guò)反復(fù)驗(yàn)證過(guò)的、具有特定功能的宏模塊,與芯片制造工藝無(wú)關(guān),可以移植到不同的半導(dǎo)體工藝中。到了SOC階段,IP核設(shè)計(jì)已成為ASIC電路設(shè)計(jì)公司和FPGA提供商的重要任務(wù),也是其實(shí)力體現(xiàn)。對(duì)于FPGA開(kāi)發(fā)軟件,其提供的IP核越豐富,用戶(hù)的設(shè)計(jì)就越方便,其市場(chǎng)占用率就越高。目前,IP核已經(jīng)變成系統(tǒng)設(shè)計(jì)的基本單元,并作為獨(dú)立設(shè)計(jì)成果被交換、轉(zhuǎn)讓和銷(xiāo)售。

從IP核的提供方式上,通常將其分為軟核、硬核和固核這3類(lèi)。從完成IP核所花費(fèi)的成本來(lái)講,硬核代價(jià)最大;從使用靈活性來(lái)講,軟核的可復(fù)用使用性最高。

(1)軟核

軟核在EDA[5]設(shè)計(jì)領(lǐng)域指的是綜合之前的寄存器傳輸級(jí)(RTL)模型;具體在FPGA設(shè)計(jì)中指的是對(duì)電路的硬件語(yǔ)言描述,包括邏輯描述、網(wǎng)表和幫助文檔等。軟核只經(jīng)過(guò)功能仿真,需要經(jīng)過(guò)綜合以及布局布線(xiàn)才能使用。其優(yōu)點(diǎn)是靈活性高、可移植性強(qiáng),允許用戶(hù)自配置;缺點(diǎn)是對(duì)模塊的預(yù)測(cè)性較低,在后續(xù)設(shè)計(jì)中存在發(fā)生錯(cuò)誤的可能性,有一定的設(shè)計(jì)風(fēng)險(xiǎn)。軟核是IP核應(yīng)用最廣泛的形式。

(2)固核

固核在EDA設(shè)計(jì)領(lǐng)域指的是帶有平面規(guī)劃信息的網(wǎng)表;具體在FPGA設(shè)計(jì)中可以看做帶有布局規(guī)劃的軟核,通常以RTL代碼和對(duì)應(yīng)具體工藝網(wǎng)表的混合形式提供。將RTL描述結(jié)合具體標(biāo)準(zhǔn)單元庫(kù)進(jìn)行綜合優(yōu)化設(shè)計(jì),形成門(mén)級(jí)網(wǎng)表,再通過(guò)布局布線(xiàn)工具即可使用。和軟核相比,固核的設(shè)計(jì)靈活性稍差,但在可靠性上有較大提高。目前,固核也是IP核的主流形式之一。

(3)硬核

硬核在EDA設(shè)計(jì)領(lǐng)域指經(jīng)過(guò)驗(yàn)證的設(shè)計(jì)版圖;具體在FPGA設(shè)計(jì)中指布局和工藝固定、經(jīng)過(guò)前端和后端驗(yàn)證的設(shè)計(jì),設(shè)計(jì)人員不能對(duì)其修改。不能修改的原因有兩個(gè):首先是系統(tǒng)設(shè)計(jì)對(duì)各個(gè)模塊的時(shí)序要求很?chē)?yán)格,不允許打亂已有的物理版圖;其次是保護(hù)知識(shí)產(chǎn)權(quán)的要求,不允許設(shè)計(jì)人員對(duì)其有任何改動(dòng)。IP硬核的不許修改特點(diǎn)使其復(fù)用有一定的困難,因此只能用于某些特定應(yīng)用,使用范圍較窄。

3基于FPGA的開(kāi)發(fā)流程

3.1FPGA設(shè)計(jì)方法概論

FPGA是可編程芯片,因此FPGA的設(shè)計(jì)方法包括硬件設(shè)計(jì)和軟件設(shè)計(jì)兩部分。硬件包括FPGA芯片電路、存儲(chǔ)器、輸入輸出接口電路以及其他設(shè)備,軟件即是相應(yīng)的HDL程序以及最新才流行的嵌入式C程序。硬件設(shè)計(jì)是基礎(chǔ),但其方法比較固定,本節(jié)主要介紹軟件的設(shè)計(jì)方法。目前微電子技術(shù)已經(jīng)發(fā)展到SOC階段,即集成系統(tǒng)(IntegratedSystem)階段,相對(duì)于集成電路(IC)的設(shè)計(jì)思想有著革命性的變化。SOC是一個(gè)復(fù)雜的系統(tǒng),它將一個(gè)完整產(chǎn)品的功能集成在一個(gè)芯片上,包括核心處理器、存儲(chǔ)單元、硬件加速單元以及眾多的外部設(shè)備接口等,具有設(shè)計(jì)周期長(zhǎng)、實(shí)現(xiàn)成本高等特點(diǎn),因此其設(shè)計(jì)方法必然是自頂向下的從系統(tǒng)級(jí)到功能模塊的軟、硬件協(xié)同設(shè)計(jì),達(dá)到軟、硬件的無(wú)縫結(jié)合。這么龐大的工作量顯然超出了單個(gè)工程師的能力,因此需要按照層次化、結(jié)構(gòu)化的設(shè)計(jì)方法來(lái)實(shí)施。首先由總設(shè)計(jì)師將整個(gè)軟件開(kāi)發(fā)任務(wù)劃分為若干個(gè)可操作的模塊,并對(duì)其接口和資源進(jìn)行評(píng)估,編制出相應(yīng)的行為或結(jié)構(gòu)模型,再將其分配給下一層的設(shè)計(jì)師。這就允許多個(gè)設(shè)計(jì)者同時(shí)設(shè)計(jì)一個(gè)硬件系統(tǒng)中的不同模塊,并為自己所設(shè)計(jì)的模塊負(fù)責(zé);然后由上層設(shè)計(jì)師對(duì)下層模塊進(jìn)行功能驗(yàn)證。自頂向下的設(shè)計(jì)流程從系統(tǒng)級(jí)設(shè)計(jì)開(kāi)始,劃分為若干個(gè)二級(jí)單元,然后再把各個(gè)二級(jí)單元?jiǎng)澐譃橄乱粚哟蔚幕締卧?,一直下去,直到能夠使用基本模塊或者IP核直接實(shí)現(xiàn)為止,如圖3-1所示。流行的FPGA開(kāi)發(fā)工具都提供了層次化管理,可以有效地梳理錯(cuò)綜復(fù)雜的層次,能夠方便地查看某一層次模塊的源代碼以修改錯(cuò)誤。

圖3-1自頂向下的FPGA設(shè)計(jì)開(kāi)發(fā)流程

在工程實(shí)踐中,還存在軟件編譯時(shí)長(zhǎng)的問(wèn)題。由于大型設(shè)計(jì)包含多個(gè)復(fù)雜的功能模塊,其時(shí)序收斂與仿真驗(yàn)證復(fù)雜度很高,為了滿(mǎn)足時(shí)序指標(biāo)的要求,往往需要反復(fù)修改源文件,再對(duì)所修改的新版本進(jìn)行重新編譯,直到滿(mǎn)足要求為止。這里面存在兩個(gè)問(wèn)題:首先,軟件編譯一次需要長(zhǎng)達(dá)數(shù)小時(shí)甚至數(shù)周的時(shí)間;其次,重新編譯和布局布線(xiàn)后結(jié)果差異很大,會(huì)將已滿(mǎn)足時(shí)序的電路破壞。因此必須提出一種有效提高設(shè)計(jì)性能,繼承已有結(jié)果,便于團(tuán)隊(duì)化設(shè)計(jì)的軟件工具。FPGA廠(chǎng)商意識(shí)到這類(lèi)需求,由此開(kāi)發(fā)出了相應(yīng)的邏輯鎖定和增量設(shè)計(jì)的軟件工具。例如,Xilinx公司的解決方案就是PlanAhead。

Planahead允許高層設(shè)計(jì)者為不同的模塊劃分相應(yīng)FPGA芯片區(qū)域,并允許底層設(shè)計(jì)者在在所給定的區(qū)域內(nèi)獨(dú)立地進(jìn)行設(shè)計(jì)、實(shí)現(xiàn)和優(yōu)化,等各個(gè)模塊都正確后,再進(jìn)行設(shè)計(jì)整合。如果在設(shè)計(jì)整合中出現(xiàn)錯(cuò)誤,單獨(dú)修改即可,不會(huì)影響到其它模塊。Planahead將結(jié)構(gòu)化設(shè)計(jì)方法、團(tuán)隊(duì)化合作設(shè)計(jì)方法以及重用繼承設(shè)計(jì)方法三者完美地結(jié)合在一起,有效地提高了設(shè)計(jì)效率,縮短了設(shè)計(jì)周期。不過(guò)從其描述可以看出,新型的設(shè)計(jì)方法對(duì)系統(tǒng)頂層設(shè)計(jì)師有很高的要求。在設(shè)計(jì)初期,他們不僅要評(píng)估每個(gè)子模塊所消耗的資源,還需要給出相應(yīng)的時(shí)序關(guān)系;在設(shè)計(jì)后期,需要根據(jù)底層模塊的實(shí)現(xiàn)情況完成相應(yīng)的修訂。

3.2典型FPGA開(kāi)發(fā)流程

FPGA的設(shè)計(jì)流程就是利用EDA開(kāi)發(fā)軟件和編程工具對(duì)FPGA芯片進(jìn)行開(kāi)發(fā)的過(guò)程。FPGA的開(kāi)發(fā)流程一般如圖3-2所示,包括電路設(shè)計(jì)、設(shè)計(jì)輸入、功能仿真、綜合優(yōu)化、綜合后仿真、實(shí)現(xiàn)、布線(xiàn)后仿真、板級(jí)仿真以及芯片編程與調(diào)試等主要步驟。

圖3-2FPGA開(kāi)發(fā)的一般流程

(1)電路設(shè)計(jì)

在系統(tǒng)設(shè)計(jì)之前,首先要進(jìn)行的是方案論證、系統(tǒng)設(shè)計(jì)和FPGA芯片選擇等準(zhǔn)備工作。系統(tǒng)工程師根據(jù)任務(wù)要求,如系統(tǒng)的指標(biāo)和復(fù)雜度,對(duì)工作速度和芯片本身的各種資源、成本等方面進(jìn)行權(quán)衡,選擇合理的設(shè)計(jì)方案和合適的器件類(lèi)型。一般都采用自頂向下的設(shè)計(jì)方法,把系統(tǒng)分成若干個(gè)基本單元,然后再把每個(gè)基本單元?jiǎng)澐譃橄乱粚哟蔚幕締卧?,一直這樣做下去,直到可以直接使用EDA元件庫(kù)為止。

(2)設(shè)計(jì)輸入

設(shè)計(jì)輸入是將所設(shè)計(jì)的系統(tǒng)或電路以開(kāi)發(fā)軟件要求的某種形式表示出來(lái),并輸入給EDA工具的過(guò)程。常用的方法有硬件描述語(yǔ)言(HDL)和原理圖輸入方法等。原理圖輸入方式是一種最直接的描述方式,在可編程芯片發(fā)展的早期應(yīng)用比較廣泛,它將所需的器件從元件庫(kù)中調(diào)出來(lái),畫(huà)出原理圖。這種方法雖然直觀(guān)并易于仿真,但效率很低,且不易維護(hù),不利于模塊構(gòu)造和重用。更主要的缺點(diǎn)是可移植性差,當(dāng)芯片升級(jí)后,所有的原理圖都需要作一定的改動(dòng)。目前,在實(shí)際開(kāi)發(fā)中應(yīng)用最廣的就是HDL語(yǔ)言輸入法,利用文本描述設(shè)計(jì),可以分為普通HDL和行為HDL。普通HDL有ABEL、CUR等,支持邏輯方程、真值表和狀態(tài)機(jī)等表達(dá)方式,主要用于簡(jiǎn)單的小型設(shè)計(jì)。而在中大型工程中,主要使用行為HDL,其主流語(yǔ)言是VerilogHDL和VHDL。這兩種語(yǔ)言都是美國(guó)電氣與電子工程師協(xié)會(huì)(IEEE)的標(biāo)準(zhǔn),其共同的突出特點(diǎn)有:語(yǔ)言與芯片工藝無(wú)關(guān),利于自頂向下設(shè)計(jì),便于模塊的劃分與移植,可移植性好,具有很強(qiáng)的邏輯描述和仿真功能,而且輸入效率很高。

(3)功能仿真

功能仿真,也稱(chēng)為前仿真,是在編譯之前對(duì)用戶(hù)所設(shè)計(jì)的電路進(jìn)行邏輯功能驗(yàn)證,此時(shí)的仿真沒(méi)有延遲信息,僅對(duì)初步的功能進(jìn)行檢測(cè)。仿真前,要先利用波形編輯器和HDL等建立波形文件和測(cè)試向量(即將所關(guān)心的輸入信號(hào)組合成序列),仿真結(jié)果將會(huì)生成報(bào)告文件和輸出信號(hào)波形,從中便可以觀(guān)察各個(gè)節(jié)點(diǎn)信號(hào)的變化。如果發(fā)現(xiàn)錯(cuò)誤,則返回設(shè)計(jì)修改邏輯設(shè)計(jì)。常用的工具有ModelTech公司的ModelSim、Sysnopsys公司的VCS和Cadence公司的NC-Verilog以及NC-VHDL等軟件。

(4)綜合優(yōu)化

所謂綜合就是將較高級(jí)抽象層次的描述轉(zhuǎn)化成較低層次的描述。綜合優(yōu)化根據(jù)目標(biāo)與要求優(yōu)化所生成的邏輯連接,使層次設(shè)計(jì)平面化,供FPGA布局布線(xiàn)軟件進(jìn)行實(shí)現(xiàn)。就目前的層次來(lái)看,綜合優(yōu)化(Synthesis)是指將設(shè)計(jì)輸入編譯成由與門(mén)、或門(mén)、非門(mén)、RAM、觸發(fā)器等基本邏輯單元組成的邏輯連接網(wǎng)表,而并非真實(shí)的門(mén)級(jí)電路。真實(shí)具體的門(mén)級(jí)電路需要利用FPGA制造商的布局布線(xiàn)功能,根據(jù)綜合后生成的標(biāo)準(zhǔn)門(mén)級(jí)結(jié)構(gòu)網(wǎng)表來(lái)產(chǎn)生。為了能轉(zhuǎn)換成標(biāo)準(zhǔn)的門(mén)級(jí)結(jié)構(gòu)網(wǎng)表,HDL程序的編寫(xiě)必須符合特定綜合器所要求的風(fēng)格。由于門(mén)級(jí)結(jié)構(gòu)、RTL級(jí)的HDL程序的綜合是很成熟的技術(shù),所有的綜合器都可以支持到這一級(jí)別的綜合。常用的綜合工具有Synplicity公司的Synplify/SynplifyPro軟件以及各個(gè)FPGA廠(chǎng)家自己推出的綜合開(kāi)發(fā)工具。

(5)綜合后仿真

綜合后仿真檢查綜合結(jié)果是否和原設(shè)計(jì)一致。在仿真時(shí),把綜合生成的標(biāo)準(zhǔn)延時(shí)文件反標(biāo)注到綜合仿真模型中去,可估計(jì)門(mén)延時(shí)帶來(lái)的影響。但這一步驟不能估計(jì)線(xiàn)延時(shí),因此和布線(xiàn)后的實(shí)際情況還有一定的差距,并不十分準(zhǔn)確。目前的綜合工具較為成熟,對(duì)于一般的設(shè)計(jì)可以省略這一步,但如果在布局布線(xiàn)后發(fā)現(xiàn)電路結(jié)構(gòu)和設(shè)計(jì)意圖不符,則需要回溯到綜合后仿真來(lái)確認(rèn)問(wèn)題之所在。在功能仿真中介紹的軟件工具一般都支持綜合后仿真。

(6)實(shí)現(xiàn)與布局布線(xiàn)

實(shí)現(xiàn)是將綜合生成的邏輯網(wǎng)表配置到具體的FPGA芯片上,布局布線(xiàn)是其中最重要的過(guò)程。布局將邏輯網(wǎng)表中的硬件原語(yǔ)和底層單元合理地配置到芯片內(nèi)部的固有硬件結(jié)構(gòu)上,并且往往需要在速度最優(yōu)和面積最優(yōu)之間作出選擇。布線(xiàn)根據(jù)布局的拓?fù)浣Y(jié)構(gòu),利用芯片內(nèi)部的各種連線(xiàn)資源,合理正確地連接各個(gè)元件。目前,F(xiàn)PGA的結(jié)構(gòu)非常復(fù)雜,特別是在有時(shí)序約束條件時(shí),需要利用時(shí)序驅(qū)動(dòng)的引擎進(jìn)行布局布線(xiàn)。布線(xiàn)結(jié)束后,軟件工具會(huì)自動(dòng)生成報(bào)告,提供有關(guān)設(shè)計(jì)中各部分資源的使用情況。由于只有FPGA芯片生產(chǎn)商對(duì)芯片結(jié)構(gòu)最為了解,所以布局布線(xiàn)必須選擇芯片開(kāi)發(fā)商提供的工具。

(7)時(shí)序仿真

時(shí)序仿真,也稱(chēng)為后仿真,是指將布局布線(xiàn)的延時(shí)信息反標(biāo)注到設(shè)計(jì)網(wǎng)表中來(lái)檢測(cè)有無(wú)時(shí)序違規(guī)(即不滿(mǎn)足時(shí)序約束條件或器件固有的時(shí)序規(guī)則,如建立時(shí)間、保持時(shí)間等)現(xiàn)象。時(shí)序仿真包含的延遲信息最全,也最精確,能較好地反映芯片的實(shí)際工作情況。由于不同芯片的內(nèi)部延時(shí)不一樣,不同的布局布線(xiàn)方案也給延時(shí)帶來(lái)不同的影響。因此在布局布線(xiàn)后,通過(guò)對(duì)系統(tǒng)和各個(gè)模塊進(jìn)行時(shí)序仿真,分析其時(shí)序關(guān)系,估計(jì)系統(tǒng)性能,以及檢查和消除競(jìng)爭(zhēng)冒險(xiǎn)是非常有必要的。在功能仿真中介紹的軟件工具一般都支持綜合后仿真。

(8)板級(jí)仿真與驗(yàn)證

板級(jí)仿真主要應(yīng)用于高速電路設(shè)計(jì)中,對(duì)高速系統(tǒng)的信號(hào)完整性、電磁干擾等特征進(jìn)行分析,一般都以第三方工具進(jìn)行仿真和驗(yàn)證。

(9)芯片編程與調(diào)試

設(shè)計(jì)的最后一步就是芯片編程與調(diào)試。芯片編程是指產(chǎn)生使用的數(shù)據(jù)文件(位數(shù)據(jù)流文件,BitstreamGeneration),然后將編程數(shù)據(jù)下載到FPGA芯片中。其中,芯片編程需要滿(mǎn)足一定的條件,如編程電壓、編程時(shí)序和編程算法等方面。邏輯分析儀(LogicAnalyzer,LA)是FPGA設(shè)計(jì)的主要調(diào)試工具,但需要引出大量的測(cè)試管腳,且LA價(jià)格昂貴。目前,主流的FPGA芯片生產(chǎn)商都提供了內(nèi)嵌的在線(xiàn)邏輯分析儀(如XilinxISE中的ChipScope、AlteraQuartusII中的SignalTapII以及SignalProb)來(lái)解決上述矛盾,它們只需要占用芯片少量的邏輯資源,具有很高的實(shí)用價(jià)值。

 

4VHDL簡(jiǎn)介

VHDL和VerilogHDL是目前世界上最流行的兩種硬件描述語(yǔ)言(HDL:HardwareDescriptionLanguage),均為IEEE標(biāo)準(zhǔn),被廣泛地應(yīng)用于基于可編程邏輯器件的項(xiàng)目開(kāi)發(fā)。二者都是在20世紀(jì)80年代中期開(kāi)發(fā)出來(lái)的,前者由GatewayDesignAutomation公司(該公司于1989年被Cadence公司收購(gòu))開(kāi)發(fā),后者由美國(guó)軍方研發(fā)。

VHDL語(yǔ)言以文本形式來(lái)描述數(shù)字系統(tǒng)硬件結(jié)構(gòu)和行為,是一種用形式化方法來(lái)描述數(shù)字電路和系統(tǒng)的語(yǔ)言,可以從上層到下層來(lái)逐層描述自己的設(shè)計(jì)思想。即用一系列分層次的模塊來(lái)表示復(fù)雜的數(shù)字系統(tǒng),并逐層進(jìn)行驗(yàn)證仿真,再把具體的模塊組合由綜合工具轉(zhuǎn)化成門(mén)級(jí)網(wǎng)表,接下去再利用布局布線(xiàn)工具把網(wǎng)表轉(zhuǎn)化為具體電路結(jié)構(gòu)的實(shí)現(xiàn)。目前,這種自頂向下的方法已被廣泛使用。概括地講,VHDL語(yǔ)言包含以下主要特征:

lVHDL語(yǔ)言既包含一些高級(jí)程序設(shè)計(jì)語(yǔ)言的結(jié)構(gòu)形式,同時(shí)也兼顧描述硬件線(xiàn)路連接的具體結(jié)構(gòu)。

l通過(guò)使用結(jié)構(gòu)級(jí)行為描述,可以在不同的抽象層次描述設(shè)計(jì)。VHDL語(yǔ)言采用自頂向下的數(shù)字電路設(shè)計(jì)方法,主要包括3個(gè)領(lǐng)域5個(gè)抽象層次。

lVHDL語(yǔ)言是并行處理的,具有同一時(shí)刻執(zhí)行多任務(wù)的能力。這和一般高級(jí)設(shè)計(jì)語(yǔ)言(例如C語(yǔ)言等)串行執(zhí)行的特征是不同的。

lVHDL語(yǔ)言具有時(shí)序的概念。一般的高級(jí)編程語(yǔ)言是沒(méi)有時(shí)序概念的,但在硬件電路中從輸入到輸出總是有延時(shí)存在的,為了描述這一特征,需要引入時(shí)延的概念。VHDL語(yǔ)言不僅可以描述硬件電路的功能,還可以描述電路的時(shí)序。

4.1VHDL語(yǔ)言的歷史

1983年,GatewayDesignAutomation(GDA)[5]硬件描述語(yǔ)言公司的PhilipMoorby首創(chuàng)了VHDL。后來(lái)Moorby成為VHDL-XL的主要設(shè)計(jì)者和Cadence公司的第一合伙人。1984至1986年,Moorby設(shè)計(jì)出第一個(gè)關(guān)于VHDL的仿真器,并提出了用于快速門(mén)級(jí)仿真的XL算法,使VHDL語(yǔ)言得到迅速發(fā)展。1987年Synonsys公司開(kāi)始使用VHDL行為語(yǔ)言作為綜合工具的輸入。1989年Cadence公司收購(gòu)了Gateway公司,VHDL成為Cadence公司的私有財(cái)產(chǎn)。1990年初,Cadence公司把VHDL和VHDL-XL分開(kāi),并公開(kāi)發(fā)布了VHDL。隨后成立的OVI(OpenVHDLInternational)組織負(fù)責(zé)VHDL的發(fā)展并制定有關(guān)標(biāo)準(zhǔn),OVI由VHDL的使用者和CAE供應(yīng)商組成。1993年,幾乎所有ASIC廠(chǎng)商都開(kāi)始支持VHDL,并且認(rèn)為VHDL-XL是最好的仿真器。同時(shí),OVI推出2.0版本的VHDL規(guī)范,IEEE則將OVI的VHDL2.0作為IEEE標(biāo)準(zhǔn)的提案。1995年12月,IEE制E定了VHDL的標(biāo)準(zhǔn)IEEE1364-1995。目前,最新的VHDL語(yǔ)言版本是2000年IEEE公布的VHDL2001標(biāo)準(zhǔn),其大幅度地提高了系統(tǒng)級(jí)和可綜合性能。

4.2VHDL的主要能力

VHDL既是一種行為描述語(yǔ)言,也是一種結(jié)構(gòu)描述語(yǔ)言[6]。如果按照一定的規(guī)則和風(fēng)格編寫(xiě)代碼,就可以將功能行為模塊通過(guò)工具自動(dòng)轉(zhuǎn)化為門(mén)級(jí)互連的結(jié)構(gòu)模塊。這意味著利用VHDL語(yǔ)言所提供的功能,就可以構(gòu)造一個(gè)模塊間的清晰結(jié)構(gòu)來(lái)描述復(fù)雜的大型設(shè)計(jì),并對(duì)所需的邏輯電路進(jìn)行嚴(yán)格的設(shè)計(jì)。

下面列出的是VHDL語(yǔ)言的主要功能:

l可描述順序執(zhí)行或并行執(zhí)行的程序結(jié)構(gòu);

l用延遲表示式或事件表達(dá)式來(lái)明確地控制過(guò)程的啟動(dòng)時(shí)間;

l通過(guò)命名的事件來(lái)觸發(fā)其他過(guò)程里的激活行為或停止行為;

l提供了條件和循環(huán)等程序結(jié)構(gòu);

l提供了可帶參數(shù)且非零延續(xù)時(shí)間的任務(wù)程序結(jié)構(gòu);

l提供了可定義新的操作符的函數(shù)結(jié)構(gòu);

l提供了用于建立表達(dá)式的算術(shù)運(yùn)算符、邏輯運(yùn)算符和位運(yùn)算符;

l提供了一套完整的表示組合邏輯基本元件的原語(yǔ);

l提供了雙向通路和電阻器件的描述;

l可建立MOS器件的電荷分享和衰減模型;

l可以通過(guò)構(gòu)造性語(yǔ)句精確地建立信號(hào)模型;表4-1給出VHDL的表述能力。

表4-1VHDL語(yǔ)言能力總結(jié)

此外,VHDL語(yǔ)言還有一個(gè)重要特征就是:和C語(yǔ)言風(fēng)格有很多的相似之處,學(xué)習(xí)起來(lái)比較容易。

 

5函數(shù)發(fā)生器的設(shè)計(jì)與實(shí)現(xiàn)

本設(shè)計(jì)中的函數(shù)發(fā)生器是通過(guò)VHDL語(yǔ)言來(lái)描述的,通過(guò)這樣一種硬件描述語(yǔ)言,根據(jù)設(shè)計(jì)要求中所需要使用到的功能,盡可能的滿(mǎn)足了實(shí)際應(yīng)用中的具體需求。設(shè)計(jì)要求通過(guò)本設(shè)計(jì)產(chǎn)生頻率可控的正弦波,方波,三角波和鋸齒波等波形。

5.1軟件設(shè)計(jì)思路

數(shù)字頻率合成器(DDFS)技術(shù)是一種可把一系列數(shù)字量形式信號(hào)通過(guò)DAC轉(zhuǎn)換成模擬量形式信號(hào)的合成技術(shù)[9]。目前使用最廣泛的一種DDFS方式是利用高速存儲(chǔ)器作查尋表,然后通過(guò)高速DAC產(chǎn)生已用數(shù)字形式存入的正弦波。圖5-1是DDFS的基本原理圖。

圖5-1DDFS基本原理圖

相位累加器由N位加法器與N位累加寄存器級(jí)聯(lián)構(gòu)成。時(shí)鐘脈沖每觸發(fā)一次,加法器便將頻率控制數(shù)據(jù)與累加寄存器輸出的累加相位數(shù)據(jù)相加,然后把相加后的結(jié)果送至累加寄存器的數(shù)據(jù)輸入端。累加寄存器將加法器在上一個(gè)時(shí)鐘作用后所產(chǎn)生的新相位數(shù)據(jù)反饋到加法器的輸入端,以使加法器在下一個(gè)時(shí)鐘的作用下繼續(xù)與頻率控制數(shù)據(jù)相加。這樣,相位累加器在參考時(shí)鐘的作用下將進(jìn)行線(xiàn)性相位累加,相位累加器累加滿(mǎn)量時(shí),就會(huì)產(chǎn)生一次溢出,以完成一個(gè)周期性的動(dòng)作,這個(gè)周期就是DDFS合成信號(hào)的一個(gè)頻率周期,累加器的溢出頻率就是DDFS輸出的信號(hào)頻率。

用相位累加器輸出的數(shù)據(jù)作為取樣地址來(lái)對(duì)正弦波波形存儲(chǔ)器進(jìn)行相位-幅值轉(zhuǎn)換,即可在給定的時(shí)間上確定輸出的波形幅值。

通過(guò)DAC可將數(shù)字量形式的波形幅值轉(zhuǎn)換成所要求的合成頻率模擬量形式信號(hào),低通濾波器用于衰減和濾除不需要的取樣分量,以便輸出頻譜純凈的正弦波信號(hào)[10]。

對(duì)于計(jì)數(shù)容量為2N的相位累加器和具有M個(gè)相位取樣的正弦波波形存儲(chǔ)器,若頻率控制字為K,則DDFS系統(tǒng)輸出信號(hào)的頻率為:fo=fc×K/2N,而頻率分辨率則為:Δf=fomin=fc/2N。

波形的數(shù)據(jù)存放在RAM里,主要有正弦波、三角波、鋸齒波包括半正弦波、半三角波和半鋸齒波的數(shù)據(jù)。

要達(dá)到較高的頻率精度,必須利用DDFS來(lái)實(shí)現(xiàn)對(duì)輸出波形頻率的控制并按頻率要求對(duì)相位增量進(jìn)行累加,然后以累加相位值作為地址碼來(lái)讀取存放在存儲(chǔ)器中的波形數(shù)據(jù)。通過(guò)改變相位增量寄存器的增量值(即步長(zhǎng)),使相位累加器能夠輸出依據(jù)相位增量寄存器所給出的步長(zhǎng)來(lái)改變波形存儲(chǔ)器的地址,從而改變波形每周期的點(diǎn)數(shù),從而達(dá)到改變輸出波形頻率的目的。該電路的設(shè)計(jì)關(guān)鍵在于用硬件構(gòu)造一個(gè)多位累加器來(lái)實(shí)現(xiàn)相位的累加。

根據(jù)DDFS的原理,輸出信號(hào)頻率fo與累加器時(shí)鐘fclk,累加器位數(shù)M,相位增量N的關(guān)系如下:

fo=(fclk*N)/2M

5.2源程序的說(shuō)明

以下是數(shù)字函數(shù)發(fā)生器設(shè)計(jì)的部分源程序說(shuō)明。(完整程序請(qǐng)見(jiàn)附錄)

1.調(diào)用雙口RAM:

雙口RAM擁有兩套讀寫(xiě)資源,可以同時(shí)進(jìn)行讀寫(xiě)而相互不受影響。這里使用雙口RAM來(lái)實(shí)現(xiàn)波形查找表的功能,可以方便地使用外部控制器更改查找表中的內(nèi)容,也就更改了輸出波形的類(lèi)型,從而簡(jiǎn)單的實(shí)現(xiàn)任意波的輸出。

altsyncram_component:altsyncram

GENERICMAP(

intended_device_family=>"ACEX1K",

operation_mode=>"DUAL_PORT",

width_a=>8,

widthad_a=>10,

numwords_a=>1024,

width_b=>8,

widthad_b=>10,

numwords_b=>1024,

lpm_type=>"altsyncram",

width_byteena_a=>1,

outdata_reg_b=>"UNREGISTERED",

indata_aclr_a=>"NONE",

wrcontrol_aclr_a=>"NONE",

address_aclr_a=>"NONE",

address_reg_b=>"CLOCK0",

address_aclr_b=>"NONE",

outdata_aclr_b=>"NONE",

read_during_write_mode_mixed_ports=>"DONT_CARE",

power_up_uninitialized=>"FALSE",

init_file=>"sin_rom1024_2.mif"

)

2.頻率合成輸出:

在每一個(gè)時(shí)鐘周期,頻率累加器以輸入的頻率字為步進(jìn)進(jìn)行自增累加;累加結(jié)果的高位送給相位累加器與相位字進(jìn)行累加,可以理解為在這里加上相位偏置;相位累加器的輸出作為波形查找表的地址從查找表中讀出相應(yīng)的數(shù)據(jù)后送給D/A轉(zhuǎn)換器,最后經(jīng)過(guò)低通濾波器,后級(jí)放大等信號(hào)調(diào)理電路形成模擬量的波形輸出。

FREQ_WORDS<=X"EEEEE";

PHASE_WORDS<="0000000000";

FreqAcc:PROCESS(CLK)

BEGIN

IF(CLK'EVENTANDCLK='1')THEN

reg_G_FreqWords<=FREQ_WORDS;--頻率字輸入同步

reg_G_PhaseWords<=PHASE_WORDS;--相位字輸入同步

arith_G_FreqAcc<=arith_G_FreqAcc+reg_G_FreqWords;--相位累加器

ENDIF;

ENDPROCESSFreqAcc;

--相位累加器

arith_G_PhaseAcc<=arith_G_FreqAcc(freq_adder_width-1DOWNTOfreq_adder_width-phase_words_width)+reg_G_PhaseWords;

--取累加器高位送LUT

reg_G_LUTAddress<=arith_G_PhaseAcc(phase_adder_width-1DOWNTOphase_adder_width-lut_add_width);

DDFSOUT<=reg_G_OutRegister;

5.3系統(tǒng)的時(shí)序仿真實(shí)現(xiàn)和驗(yàn)證

在完成了軟件部分的設(shè)計(jì)就可以在所選用的仿真軟件上進(jìn)行調(diào)試,以驗(yàn)證所編寫(xiě)的程序是否可以實(shí)現(xiàn)預(yù)先設(shè)定的功能。

5.3.1使用QuartusIITextEditor建立設(shè)計(jì)

QuartusIITextEditor[11]是一個(gè)靈活的工具,用于以AHDL、VHDL和VerilogHDL語(yǔ)言以及Tcl腳本語(yǔ)言輸入文本型設(shè)計(jì)。還可以使用TextEditor輸入、編輯和查看其它ASCII文本文件,包括為QuartusII軟件或由QuartusII軟件建立的那些文本文件。還可以用TextEditor將任何AHDL語(yǔ)句或節(jié)段模板、Tcl命令或任何支持的VHDL或VerilogHDL構(gòu)造模板插入當(dāng)前文件中。AHDL、VHDL和VerilogHDL模板為您輸入HDL語(yǔ)法提供了一個(gè)簡(jiǎn)便的方法,可以提高設(shè)計(jì)輸入的速度和準(zhǔn)確度。還可以獲取有關(guān)所有AHDL元素、關(guān)鍵字和語(yǔ)句以及宏功能模塊和基本單元的上下文相關(guān)幫助。

5.3.2使用AssignmentEditor指定初始設(shè)計(jì)的約束條件

AssignmentEditor是用于在QuartusII軟件中建立和編輯分配的界面。分配用于在設(shè)計(jì)中為邏輯指定各種選項(xiàng)和設(shè)置,包括位置、I/O標(biāo)準(zhǔn)、時(shí)序、邏輯選項(xiàng)、參數(shù)、仿真和引腳分配。使用AssignmentEditor可以選擇分配類(lèi)別;使用QuartusIINodeFinde選擇要分配的特定節(jié)點(diǎn)和實(shí)體;顯示有關(guān)特定分配的信息;添加、編輯或刪除選定節(jié)點(diǎn)的分配。還可以向分配添加備注,可以查看出現(xiàn)分配的設(shè)置和配置文件。

以下步驟描述使用AssignmentEditor進(jìn)行分配的基本流程:

1.打開(kāi)AssignmentEditor。

2.在Category欄中選擇相應(yīng)的類(lèi)別分配。

3.在NodeFilter欄中指定相應(yīng)的節(jié)點(diǎn)或?qū)嶓w,或使用NodeFinder對(duì)話(huà)

框查找特定的節(jié)點(diǎn)或?qū)嶓w。

4.在顯示當(dāng)前設(shè)計(jì)分配的電子表格中,添加相應(yīng)的分配信息。

AssignmentEditor中的電子表格提供適用的下拉列表,或允許您鍵入分配信息。當(dāng)您添加、編輯和刪除分配時(shí),消息窗口中將出現(xiàn)相應(yīng)的Tcl命令[12]。還可以將數(shù)據(jù)從AssignmentEditor導(dǎo)出到Tcl腳本文件(.tcl)或與電子表格兼容的文件中。建立和編輯分配時(shí),QuartusII軟件對(duì)適用的分配信息進(jìn)行動(dòng)態(tài)驗(yàn)證。如果分配或分配值無(wú)效,QuartusII軟件不會(huì)添加或更新數(shù)值,改為轉(zhuǎn)換為當(dāng)前值或不接受該值。當(dāng)您查看所有分配時(shí),AssignmentEditor將顯示為當(dāng)前工程而建立的所有分配,但當(dāng)您分別查看各個(gè)分配類(lèi)別時(shí),AssignmentEditor將僅顯示與所選特定類(lèi)別相關(guān)的分配。

圖5-3QuartusIIAssignmentEditor

5.3.3使用QuartusIIVHDL

可以使用Analysis&Synthesis分析并綜合VHDL和VerilogHDL設(shè)計(jì)[13]。Analysis&Synthesis包括QuartusIIIntegratedSynthesis,它完全支持VHDL和VerilogHDL語(yǔ)言,并提供控制綜合過(guò)程的選項(xiàng)。

如圖5-4中所示。

圖5-4Settings對(duì)話(huà)框的VHDLInput頁(yè)

Analysis&Synthesis構(gòu)建單個(gè)工程數(shù)據(jù)庫(kù),將所有設(shè)計(jì)文件集成在設(shè)計(jì)實(shí)體或工程層次結(jié)構(gòu)中。QuartusII軟件用此數(shù)據(jù)庫(kù)進(jìn)行其余工程處理。其它Compiler模塊對(duì)該數(shù)據(jù)庫(kù)進(jìn)行更新,直到它包含完全優(yōu)化的工程。開(kāi)始時(shí),該數(shù)據(jù)庫(kù)僅包含原始網(wǎng)表;最后,它包含完全優(yōu)化且合適的工程,工程將用于為時(shí)序仿真、時(shí)序分析、器件編程等建立一個(gè)或多個(gè)文件。當(dāng)它建立數(shù)據(jù)庫(kù)時(shí),Analysis&Synthesis的分析階段將檢查工程的邏輯完整性和一致性,并檢查邊界連接和語(yǔ)法錯(cuò)誤。

Analysis&Synthesis還在設(shè)計(jì)實(shí)體或工程文件的邏輯上進(jìn)行綜合和技術(shù)映射。它從VerilogHDL和VHDL中推斷觸發(fā)器、鎖存器和狀態(tài)機(jī)。它為狀態(tài)機(jī)建立狀態(tài)分配,并作出能減少所用資源的選擇。此外,它還用Altera參數(shù)化模塊庫(kù)(LPM)函數(shù)中的模塊替換運(yùn)算符,例如+或-,而該函數(shù)已為Altera器件做了優(yōu)化。Analysis&Synthesis使用多種算法來(lái)減少門(mén)的數(shù)量,刪除冗余邏輯以及盡可能有效地利用器件體系結(jié)構(gòu)??梢允褂眠壿嬤x項(xiàng)分配自定義綜合。Analysis&Synthesis還應(yīng)用邏輯綜合技術(shù),以協(xié)助實(shí)施工程時(shí)序要求,并

優(yōu)化設(shè)計(jì)以滿(mǎn)足這些要求。消息窗口和Report窗口的消息區(qū)域顯示Analysis&Synthesis生成的任何消息。Status窗口記錄工程編譯期間在A(yíng)nalysis&Synthesis中處理所花的時(shí)間。

5.3.4控制Analysis&Synthesis

可以使用以下選項(xiàng)和功能來(lái)控制QuartusIIAnalysis&Synthesis:

l編譯器指令和屬性

lQuartusII邏輯選項(xiàng)

lQuartusII綜合網(wǎng)表優(yōu)化選項(xiàng)

1.使用編譯器指令和屬性

QuartusII軟件支持編譯器指令,這些指令也稱(chēng)為編譯指示??梢栽赩erilogHDL或VHDL代碼中包括translate_on和translate_off等編譯器指令作為備注。這些指令不是VerilogHDL或VHDL命令;但是,綜合工具使用它們以特定方式推動(dòng)綜合過(guò)程。仿真器等其它工具則忽略這些指令并將它們作為備注處理。還可以指定屬性,這些屬性有時(shí)稱(chēng)為編譯指示或指令,用于推動(dòng)特定設(shè)計(jì)元素的綜合過(guò)程。它還提供一些屬性,作為QuartusII邏輯選項(xiàng)。

2.使用QuartusII邏輯選項(xiàng)

QuartusII邏輯選項(xiàng)允許您在不編輯源代碼的情況下設(shè)置屬性??梢栽贏(yíng)ssignmentEditor中指定QuartusII邏輯選項(xiàng)。QuartusII邏輯選項(xiàng)用于保留寄存器、指定通電時(shí)的邏輯電平、刪除重復(fù)或冗余的邏輯、優(yōu)化速度或區(qū)域、控制扇出、設(shè)置狀態(tài)機(jī)的編碼級(jí)別以及控制其它許多選項(xiàng)。使用QuartusII綜合網(wǎng)表優(yōu)化選項(xiàng)QuartusII綜合優(yōu)化選項(xiàng)用于設(shè)置選項(xiàng),在許多Altera器件系列的綜合期間優(yōu)化網(wǎng)表。這些優(yōu)化選項(xiàng)對(duì)標(biāo)準(zhǔn)編譯期間出現(xiàn)的優(yōu)化進(jìn)行補(bǔ)充,并且是在全編譯的Analysis&Synthesis階段出現(xiàn)。這些優(yōu)化對(duì)綜合網(wǎng)表進(jìn)行更改,通常有利于區(qū)域和速度的改善。Settings對(duì)話(huà)框(Assignments菜單)的

NetlistOptimizations頁(yè)用于指定網(wǎng)表優(yōu)化選項(xiàng),其中包括以下綜合優(yōu)化選項(xiàng):

l進(jìn)行WYSIWYG基本單元再綜合

l進(jìn)行邏輯門(mén)級(jí)寄存器重新定時(shí)

l允許寄存器重新定時(shí),在Tsu/Tco和Fmax之間進(jìn)行取舍

5.3.5使用QuartusII仿真器進(jìn)行仿真設(shè)計(jì)

可以使用QuartusII仿真器在工程中仿真任何設(shè)計(jì)[14]。視所需的信息類(lèi)型而定,可以進(jìn)行功能仿真以測(cè)試設(shè)計(jì)的邏輯運(yùn)算,也可以進(jìn)行時(shí)序仿真以在目標(biāo)器件中測(cè)試設(shè)計(jì)的邏輯運(yùn)算和最差時(shí)序。

QuartusII軟件可以仿真整個(gè)設(shè)計(jì),或仿真設(shè)計(jì)的任何部分??梢栽诠こ讨袑⑷魏卧O(shè)計(jì)實(shí)體指定為仿真焦點(diǎn)。在仿真設(shè)計(jì)時(shí),仿真器仿真焦點(diǎn)實(shí)體及其所有附屬設(shè)計(jì)實(shí)體指定仿真器設(shè)置通過(guò)建立仿真器設(shè)置,指定要仿真的類(lèi)型、仿真涵蓋的時(shí)間段、激勵(lì)向量以及其它仿真選項(xiàng)??梢允褂肧ettings對(duì)話(huà)框(Assignments菜單)或仿真器SettingsWizard(Processing菜單)建立仿真器設(shè)置的自定義組,也可以使用每次建立新工程時(shí)自動(dòng)生成的默認(rèn)仿真器設(shè)置。建立波形文件

QuartusIIWaveformEditor可以建立和編輯用于波形格式仿真的輸入矢量。使用WaveformEditor,可以將輸入矢量添加到波形文件中,此文件描述設(shè)計(jì)中的邏輯行為。

QuartusII軟件支持矢量波形文件(.vwf)、表文件(.tbl)、矢量文件(.vec)和矢量表輸出文件(.tbl)格式的波形文件??梢栽贛AX+PLUS®II軟件中將MAX+PLUSII仿真器通道文件(.scf)另存為表文件,然后使用WaveformEditor打開(kāi)表文件并另存為矢量波形文件。

圖5-5QuartusIIWaveformEditor

5.3.6在QuartusII軟件中進(jìn)行時(shí)序分析

TimingAnalyzer在全編譯期間對(duì)設(shè)計(jì)自動(dòng)進(jìn)行時(shí)序分析。以下準(zhǔn)則描述了使用QuartusIITimingAnalyzer可以完成的一些任務(wù):

l使用定時(shí)設(shè)置向?qū)Вˋssignments菜單)、Settings對(duì)話(huà)框(Assignments菜單)和AssignmentEditor,指定初始工程范圍的時(shí)序要求和個(gè)別時(shí)序要求。

l在全編譯期間進(jìn)行時(shí)序分析或在初始編譯之后單獨(dú)進(jìn)行時(shí)序分析。

l使用報(bào)告窗口、時(shí)序逼近布局圖和list_pathsTcl命令查看時(shí)序結(jié)果。

指定時(shí)序要求時(shí)序要求允許為整個(gè)工程、特定的設(shè)計(jì)實(shí)體或個(gè)別實(shí)體、節(jié)點(diǎn)和引腳指定所需的速度性能。可以使用定時(shí)設(shè)置向?qū)Вˋssignments菜單)幫助您建立初始工程范圍時(shí)序設(shè)置。指定初始時(shí)序設(shè)置之后,可以再次使用定時(shí)設(shè)置向?qū)Щ蚴褂肧ettings對(duì)話(huà)框(Assignments菜單)修改設(shè)置。可以使用AssignmentEditor(Assignments菜單)進(jìn)行個(gè)別時(shí)序設(shè)置。指定工程范圍時(shí)序分配和/或單個(gè)時(shí)序分配之后,通過(guò)編譯設(shè)計(jì)或在初始編譯之后通過(guò)單獨(dú)運(yùn)行TimingAnalyzer來(lái)運(yùn)行時(shí)序分配。如果未指定時(shí)序要求設(shè)置或選項(xiàng),QuartusIITimingAnalyzer將使用默認(rèn)設(shè)置運(yùn)行分析。默認(rèn)情況下,TimingAnalyzer計(jì)算并報(bào)告每個(gè)寄存器的fMAX、每個(gè)輸入寄存器的tSU和tH、每個(gè)輸出寄存器的tCO、所有引腳至引腳路徑間的tPD、延緩時(shí)間、保持時(shí)間、最小tCO以及當(dāng)前設(shè)計(jì)實(shí)體的最小tPD。

使用Settings對(duì)話(huà)框或定時(shí)設(shè)置向?qū)?,可以指定以下時(shí)序要求和其它選項(xiàng):

l工程的總頻率要求或各個(gè)時(shí)鐘信號(hào)的設(shè)置

l延時(shí)要求、最短延時(shí)要求和路徑切割選項(xiàng)

l報(bào)告選項(xiàng),包括數(shù)字或源以及目標(biāo)寄存器,且不包括路徑

l時(shí)序驅(qū)動(dòng)編譯選項(xiàng)指定工程范圍的時(shí)序設(shè)置

工程范圍的時(shí)序設(shè)置包括最大頻率、建立時(shí)間、保持時(shí)間、時(shí)鐘至輸出延時(shí)和引腳至引腳延時(shí)以及最低時(shí)序要求。還可以設(shè)置工程范圍的時(shí)鐘設(shè)置和多個(gè)時(shí)鐘域、路徑切割選項(xiàng)和默認(rèn)外部延時(shí)[15]。

1.要求描述

a)fMAX(最大頻率)

在不違反內(nèi)部建立(tSU)和保持(tH)時(shí)間要求下可以達(dá)到的最大時(shí)鐘頻率。

b)tSU(時(shí)鐘建立時(shí)間)

在觸發(fā)寄存器計(jì)時(shí)的時(shí)鐘信號(hào)已經(jīng)在時(shí)鐘引腳確立之前,經(jīng)由數(shù)據(jù)輸入或使能端輸入而進(jìn)入寄存器的數(shù)據(jù)必須在輸入引腳處出現(xiàn)的時(shí)間長(zhǎng)度。

c)tH(時(shí)鐘保持時(shí)間)

在觸發(fā)寄存器計(jì)時(shí)的時(shí)鐘信號(hào)已經(jīng)在時(shí)鐘引腳確立之后,經(jīng)由數(shù)據(jù)輸入或使能端輸入而進(jìn)入寄存器的數(shù)據(jù)必須在輸入引腳處保持的時(shí)間長(zhǎng)度。

d)tCO(時(shí)鐘至輸出延時(shí))

時(shí)鐘信號(hào)在觸發(fā)寄存器的輸入引腳上發(fā)生轉(zhuǎn)換之后,在由寄存器饋送信號(hào)的輸出引腳上取得有效輸出所需的時(shí)間。

e)tPD(引腳至引腳延時(shí))

輸入引腳處信號(hào)通過(guò)組合邏輯進(jìn)行傳輸并出現(xiàn)在外部輸出引腳上所需的時(shí)間。

f)最小tCO(時(shí)鐘至輸出延時(shí))

時(shí)鐘信號(hào)在觸發(fā)寄存器的輸入引腳上發(fā)生轉(zhuǎn)換之后,在由寄存器饋送信號(hào)的輸出引腳上取得有效輸出所需的最短時(shí)間。這個(gè)時(shí)間總是代表外部引腳至引腳延時(shí)。

g)最短tPD(時(shí)鐘至輸出延時(shí))

指定可接受的最少的引腳至引腳延時(shí),即輸入引腳信號(hào)通過(guò)組合邏輯傳輸并出現(xiàn)在外部輸出引腳上所需的時(shí)間。

2.指定個(gè)別時(shí)序分配

可以使用AssignmentEditor對(duì)個(gè)別實(shí)體、節(jié)點(diǎn)和引腳進(jìn)行個(gè)別時(shí)序分配。個(gè)別時(shí)序分配超越工程范圍要求(如果它們比工程范圍要求更加嚴(yán)格)。AssignmentEditor支持點(diǎn)到點(diǎn)時(shí)序分配和通配符,用于在做分配時(shí)標(biāo)識(shí)特定節(jié)點(diǎn)。輸入的引腳和節(jié)點(diǎn)時(shí)序要求保存在當(dāng)前層次結(jié)構(gòu)中最高層實(shí)體的實(shí)體設(shè)置文件(.esf)中。

可以在TimingAnalyzer中進(jìn)行以下類(lèi)型的個(gè)別時(shí)序分配:

l個(gè)別時(shí)鐘設(shè)置:允許通過(guò)定義時(shí)序要求和設(shè)計(jì)中所有時(shí)鐘信號(hào)之間的關(guān)系,進(jìn)行精確的多時(shí)鐘時(shí)序分析

l多周期路徑:需要一個(gè)以上時(shí)鐘周期才能穩(wěn)定下來(lái)的寄存器之間的路徑??梢栽O(shè)置多周期路徑,指示TimingAnalyzer調(diào)整其度量,并避免不當(dāng)?shù)剡`反建立或保持時(shí)間。

l剪切路徑:默認(rèn)情況下,如果沒(méi)有設(shè)置時(shí)序要求或只使用默認(rèn)的fMAX時(shí)鐘設(shè)置,QuartusII軟件將切斷不相關(guān)時(shí)鐘域之間的路徑。如果設(shè)置了各個(gè)時(shí)鐘分配,但沒(méi)有定義時(shí)鐘分配之間的關(guān)系,QuartusII也將切斷不相關(guān)時(shí)鐘域之間的路徑。還可以定義設(shè)計(jì)中特定路徑的剪切路徑。_最少延時(shí)要求:特定節(jié)點(diǎn)或組的個(gè)別tH、最小tCO和最小tPD時(shí)序要求。可以對(duì)特定節(jié)點(diǎn)或組進(jìn)行這些分配,以超越工程范圍最小時(shí)序要求。

l外部延時(shí):指定信號(hào)從外部寄存器(器件之外)到達(dá)輸入引腳的延時(shí)。

l設(shè)計(jì)中特定節(jié)點(diǎn)的個(gè)別tSU、tPD和tCO要求。

3.進(jìn)行時(shí)序分析

指定時(shí)序設(shè)置和分配之后,就可以通過(guò)全編譯運(yùn)行TimingAnalyzer。完成編譯之后,可以使用Start>StartTimingAnalyzer命令(Processing菜單)重新單獨(dú)運(yùn)行時(shí)序分析,或通過(guò)選擇Start>StartMinimumTimingAnalysis(Processing菜單)運(yùn)行最少時(shí)序分析。

4.查看時(shí)序分析結(jié)果

運(yùn)行時(shí)序分析之后,可以在編譯報(bào)告的TimingAnalyzer文件夾中查看時(shí)序分析結(jié)果。然后,可以列出時(shí)序路徑以驗(yàn)證電路性能,確定關(guān)鍵速度路徑以及限制設(shè)計(jì)性能的路徑,并進(jìn)行另外的時(shí)序分配。此外,還可以使用list_pathsTcl命令查找并查看設(shè)計(jì)中任何延時(shí)路徑的信息。報(bào)告窗口的時(shí)序分析部分列出報(bào)告的時(shí)鐘建立和保持的時(shí)序信息;tSU、tH、tPD、tCO;最小脈沖寬度要求;在時(shí)序分析期間忽略的任何時(shí)序分配;以及TimingAnalyzer生成的任何消息。默認(rèn)情況下,TimingAnalyzer還報(bào)告最佳情況最少時(shí)鐘至輸出時(shí)間和最佳情況最少點(diǎn)到點(diǎn)延時(shí)。

報(bào)告窗口包括以下類(lèi)型的時(shí)序分析信息:

l時(shí)序要求的設(shè)置

l停滯和最少停滯

l源和目標(biāo)時(shí)鐘名稱(chēng)

l源和目標(biāo)節(jié)點(diǎn)名稱(chēng)

l所需的和實(shí)際的點(diǎn)到點(diǎn)時(shí)間

l所需的保持關(guān)系

l實(shí)際fMAX

圖5-6Report窗口中的時(shí)序分析結(jié)果

可以從Report窗口的TimingAnalyzer部分直接進(jìn)入AssignmentEditor、ListPaths和LocateinTimingClosureFloorplan命令,從而可以進(jìn)行個(gè)別時(shí)序分配和查看延時(shí)路徑信息。此外,還可以使用list_pathsTcl命令列出延時(shí)路徑信息。可以使用AssignmentEditor在TimingAnalyzer報(bào)告中對(duì)任何路徑進(jìn)行個(gè)別時(shí)序分配。此功能還可以用來(lái)方便地對(duì)路徑進(jìn)行點(diǎn)到點(diǎn)分配。以下步驟描述在A(yíng)ssignmentEditor中進(jìn)行個(gè)別時(shí)序分配的基本流程:

1.在Category欄中,單擊Timing,以指示您要做的分配的類(lèi)別。

2.在電子表格中單擊DestinationName(To)單元格并使用NodeFinder查找節(jié)點(diǎn),或鍵入標(biāo)識(shí)要分配目標(biāo)節(jié)點(diǎn)的節(jié)點(diǎn)名稱(chēng)和/或通配符。

3.在電子表格中單擊SourceName(From)單元格并使用NodeFinder查找節(jié)點(diǎn),或鍵入標(biāo)識(shí)要分配源節(jié)點(diǎn)的節(jié)點(diǎn)名稱(chēng)和/或通配符。

4.在電子表格中,雙擊Option單元格并選擇您要做的時(shí)序分配。對(duì)于要求賦值的分配,可以雙擊Value單元格并鍵入或選擇相應(yīng)的分配值。還可以使用LocateinTimingClosureFloorplan命令(Project菜單)在時(shí)序逼近布局圖中查找路徑,允許利用時(shí)序逼近布局圖功能對(duì)特定路徑做分配??梢允褂肔istPaths命令(右邊按鈕彈出菜單),在消息窗口的TimingAnalyzer報(bào)告小窗口中顯示任何路徑的中間延時(shí)。它允許用戶(hù)查找引腳至引腳、寄存器至寄存器和時(shí)鐘至輸出引腳延時(shí)路徑,并顯示在Report窗口中出現(xiàn)的設(shè)計(jì)的任何延時(shí)路徑的信息。請(qǐng)參見(jiàn)圖5-7。

圖5-7OutputfromListPaths命令

結(jié)果:最后在示波器上可以觀(guān)察到頻率可控的正弦波,方波,鋸齒波三角波。

6結(jié)論

本文通過(guò)對(duì)FPGA器件和數(shù)字函數(shù)發(fā)生器的詳細(xì)闡述,通過(guò)仔細(xì)研究FPGA和DDFS原理后,根據(jù)項(xiàng)目設(shè)計(jì)的背景及實(shí)際需要,基于FPGA器件設(shè)計(jì)并實(shí)現(xiàn)了數(shù)字函數(shù)發(fā)生器的設(shè)計(jì),完成了實(shí)現(xiàn)正弦波,三角波,鋸齒波,方波的功能要求,并用DICE-EH2000實(shí)驗(yàn)箱和示波器實(shí)現(xiàn)了其功能。與使用單片機(jī)、DSP或嵌入式ARM等其他芯片實(shí)現(xiàn)數(shù)字函數(shù)發(fā)生器相比,本設(shè)計(jì)更符合整個(gè)項(xiàng)目開(kāi)發(fā)過(guò)程中的實(shí)際情況,用FPGA進(jìn)行數(shù)字系統(tǒng)的設(shè)計(jì)靈活方便,周期短。而且,當(dāng)參考時(shí)鐘頻率和相位累加器的位寬滿(mǎn)足一定的要求時(shí),輸出分辨率可以非常小。使用DDS技術(shù)產(chǎn)生的任意波在精度上非常高,誤差很小。

總的來(lái)說(shuō),本設(shè)計(jì)利用FPGA構(gòu)建數(shù)字函數(shù)發(fā)生器,一方減少了使用專(zhuān)用集成芯片帶來(lái)的成本增加和資源浪費(fèi);另一方面,通過(guò)軟件時(shí)序仿真,減少了設(shè)計(jì)周期,提高了系統(tǒng)的穩(wěn)定性。設(shè)計(jì)完成后,在DICE-EH2000實(shí)驗(yàn)箱和示波器上進(jìn)行了硬件驗(yàn)證,并獲得通過(guò)??梢哉f(shuō),在多數(shù)場(chǎng)合中,可以用它來(lái)實(shí)現(xiàn)數(shù)字函數(shù)發(fā)生器的基本功能。

 

標(biāo)簽:

點(diǎn)贊

分享到:

上一篇:基于PCI-9846武器數(shù)據(jù)鏈測(cè)試...

下一篇:神經(jīng)網(wǎng)絡(luò)PID控制策略在開(kāi)關(guān)磁...

中國(guó)傳動(dòng)網(wǎng)版權(quán)與免責(zé)聲明:凡本網(wǎng)注明[來(lái)源:中國(guó)傳動(dòng)網(wǎng)]的所有文字、圖片、音視和視頻文件,版權(quán)均為中國(guó)傳動(dòng)網(wǎng)(m.u63ivq3.com)獨(dú)家所有。如需轉(zhuǎn)載請(qǐng)與0755-82949061聯(lián)系。任何媒體、網(wǎng)站或個(gè)人轉(zhuǎn)載使用時(shí)須注明來(lái)源“中國(guó)傳動(dòng)網(wǎng)”,違反者本網(wǎng)將追究其法律責(zé)任。

本網(wǎng)轉(zhuǎn)載并注明其他來(lái)源的稿件,均來(lái)自互聯(lián)網(wǎng)或業(yè)內(nèi)投稿人士,版權(quán)屬于原版權(quán)人。轉(zhuǎn)載請(qǐng)保留稿件來(lái)源及作者,禁止擅自篡改,違者自負(fù)版權(quán)法律責(zé)任。

網(wǎng)站簡(jiǎn)介|會(huì)員服務(wù)|聯(lián)系方式|幫助信息|版權(quán)信息|網(wǎng)站地圖|友情鏈接|法律支持|意見(jiàn)反饋|sitemap

傳動(dòng)網(wǎng)-工業(yè)自動(dòng)化與智能制造的全媒體“互聯(lián)網(wǎng)+”創(chuàng)新服務(wù)平臺(tái)

網(wǎng)站客服服務(wù)咨詢(xún)采購(gòu)咨詢(xún)媒體合作

Chuandong.com Copyright ?2005 - 2024 ,All Rights Reserved 深圳市奧美大唐廣告有限公司 版權(quán)所有
粵ICP備 14004826號(hào) | 營(yíng)業(yè)執(zhí)照證書(shū) | 不良信息舉報(bào)中心 | 粵公網(wǎng)安備 44030402000946號(hào)