時間:2014-04-09 16:40:08來源:張乙丑
摘要 基于FPGA的函數(shù)發(fā)生器主要實現(xiàn)方波、鋸齒波和正弦波等,基于FPGA/CPLD開發(fā)設(shè)計數(shù)字系統(tǒng)設(shè)計的函數(shù)發(fā)生器電路簡單、可靠性好,而且EDA工具可以在硬件條件不足的情況下對其進行編譯、綜合、布線,可實現(xiàn)大致地系統(tǒng)仿真。本系統(tǒng)使用VHDL語言編寫,實現(xiàn)方波、鋸齒波和正弦波等。最后,通過QuartusⅡ進行軟件仿真測試和使用實驗箱DICE-EH2000實驗系統(tǒng)進行硬件驗證,使整個設(shè)計更加緊湊、穩(wěn)定且可靠。
關(guān)鍵詞 FPGA 函數(shù)發(fā)生器 VHDL QuartusⅡ
DesignofFunctiongeneratorBasedonFPGA
1引言
傳統(tǒng)數(shù)字函數(shù)發(fā)生器多數(shù)由單片機或DSP來實現(xiàn)。而基于FPGA等可編程邏輯器件的可編程邏輯技術(shù)是近年來發(fā)展起來的新興技術(shù),F(xiàn)PGA器件具有很高的集成度以及靈活的編程方式,因此,可以考慮利用FPGA器件,將數(shù)字函數(shù)發(fā)生器與FPGA相結(jié)合,設(shè)計出一種簡單而高效的數(shù)字函數(shù)發(fā)生器系統(tǒng)[1]。
本文所設(shè)計的函數(shù)發(fā)生器是一個基于FPGA的數(shù)字頻率合成器,該系統(tǒng)在軟件仿真時,選用了實驗箱DICE-EH2000實驗系統(tǒng)Altera公司生產(chǎn)的ACEX系列的EP1K30TC144-3[2]。ACEX系列是Altera公司在98年推出的2.5VSRAM工藝的PLD(FPGA),從3萬門到25萬門,主要有10K30E、10K50E、10K100E、帶嵌入式存儲塊(EAB)。較早期的型號還有FLEX10K(5V)、FLEX10KA(3.3v)、5v的10K和3.3v的10KA已基本不推廣,10KE目前也已使用較少,逐漸被ACEX1K和Cyclone取代。ACEX1K是2000年推出的2.5v低價格SRAM工藝PLD(FPGA),結(jié)構(gòu)與10KE類似,帶嵌入式存儲塊(EAB),部分型號帶PLL,主要有1K10,1K30,1K50,1K100。AXEC系列如表1-1所示。
表1-1AXEC系列
就本設(shè)計而言,重點在于能夠編寫基于FPGA實現(xiàn)方波、鋸齒波和正弦波等函數(shù)的發(fā)生器的VHDL源程序。當然,配合D/A轉(zhuǎn)換器、示波器,實現(xiàn)硬件的既定功能。因此,整個設(shè)計主要完成了以下幾項工作:
①根據(jù)需求確定軟件的實現(xiàn)方案;
②編寫調(diào)試發(fā)生器的VHDL源程序;
③用QuartusⅡ?qū)υ摵瘮?shù)發(fā)生器進行仿真測試。
④通過開發(fā)板與示波器的連接觀察輸出波形。
2FPGA簡介
FPGA[3]是英文FieldProgrammableGateArray的縮寫,即現(xiàn)場可編程門陣列,是在PAL、GAL、EPLD等可編程器件的基礎(chǔ)上進一步發(fā)展的產(chǎn)物。它是作為專用集成電路(ASIC)領(lǐng)域中的一種半定制電路而出現(xiàn)的,既解決了定制電路的不足,又克服了原有可編程器件門電路數(shù)有限的缺點。FPGA采用了邏輯單元陣列LCA(LogicCellArray)這樣一個新概念,內(nèi)部包括可配置邏輯模塊CLB(ConfigurableLogicBlock)、輸出輸入模塊IOB(InputOutputBlock)和內(nèi)部連線(Interconnect)三個部分。FPGA的特點主要有:
1)采用FPGA設(shè)計ASIC電路,用戶不需要投片生產(chǎn),就能得到合用的芯片。
2)FPGA可做其它全定制或半定制ASIC電路的中試樣片。
3)FPGA內(nèi)部有豐富的觸發(fā)器和I/O引腳。
4)FPGA是ASIC電路中設(shè)計周期最短、開發(fā)費用最低、風險最小的器件之一。
5)FPGA采用高速CHMOS工藝,功耗低,可以與CMOS、TTL電平兼容。可以說,F(xiàn)PGA芯片是小批量系統(tǒng)提高系統(tǒng)集成度、可靠性的最佳選擇之一。
目前FPGA的品種很多,有XILINX的XC系列、TI公司的TPC系列、ALTERA公司的FIEX系列等。FPGA是由存放在片內(nèi)RAM中的程序來設(shè)置其工作狀態(tài)的,因此,工作時需要對片內(nèi)的RAM進行編程。用戶可以根據(jù)不同的配置模式,采用不同的編程方式。加電時,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能夠反復使用。FPGA的編程無須專用的FPGA編程器,只須用通用的EPROM、PROM編程器即可。當需要修改FPGA功能時,只需換一片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è),由微處理器對其編程FPGA是80年代中期出現(xiàn)的高密度可編程邏輯器件(PLD)。FPGA器件及其系統(tǒng)軟件是開發(fā)大規(guī)模數(shù)字集成電路的最新技術(shù)。它利用計算機輔助設(shè)計,以電路原理圖、VHDL、布爾方程、真值表或狀態(tài)機等格式,輸入設(shè)計邏輯,然后經(jīng)一系列變換,將輸入的邏輯轉(zhuǎn)換成適合于FPGA器件結(jié)構(gòu)的圖形文件或文本形式。此時不僅可以觀察整個設(shè)計在器件中實際布線的結(jié)果,了解各網(wǎng)絡(luò)的延時特性,進行人工修改或編輯;從而可利用模擬手段,對設(shè)計的輸入、輸出及任意點信號進行模擬仿真,包括驗證設(shè)計功能是否正確的功能模擬,以及確定最終設(shè)計是否滿足相位和延時要求的定時模擬。把經(jīng)過模擬驗證后的設(shè)計文件轉(zhuǎn)換成比特流文件或PROM(可編程只讀存儲器)格式文件,把常規(guī)的編程器對EPROM(可擦可編程只讀存儲器)編程。然后把這EPROM與FPGA器件適當連接,加上(5V)電源。此FPGA器件就可作為大規(guī)模專用集成電路使用。用不同的設(shè)計文件配置同一塊FPGA"白片",則可實現(xiàn)不同的邏輯功能。FPGA器件可實現(xiàn)所有數(shù)字電路功能。目前,器件集成度已經(jīng)達到了兩萬門數(shù)量級,工作頻率可達300MHz以上。一般可在幾個小時或幾天內(nèi)完成一個設(shè)計,并可隨時修改。這加速了產(chǎn)品設(shè)計開發(fā)的進程,免去了昂貴的ASIC(專用集成電路)器件半導體生產(chǎn)工藝費用及投資風險。FPGA技術(shù)是電子工程師不可缺少的好幫手在發(fā)達國家,PLD技術(shù)已經(jīng)成為大學電子類專業(yè)的必修課程,它已經(jīng)象單片機一樣廣泛的應(yīng)用在各種需要數(shù)字邏輯的領(lǐng)域。然而,在國內(nèi),PLD技術(shù)才剛剛起步。
2.1FPGA工作原理與簡介
FPGA是在PAL、GAL、EPLD、CPLD等可編程器件的基礎(chǔ)上進一步發(fā)展的產(chǎn)物。它是作為ASIC領(lǐng)域中的一種半定制電路而出現(xiàn)的,即解決了定制電路的不足,又克服了原有可編程器件門電路有限的缺點。
由于FPGA需要被反復燒寫,實現(xiàn)組合邏輯的基本結(jié)構(gòu)不可能像ASIC那樣通過固定的與非門來完成,而只能采用一種易于反復配置的結(jié)構(gòu)。查找表可以很好地滿足這一要求,目前主流FPGA都采用了基于SRAM工藝的查找表結(jié)構(gòu),也有一些軍品和宇航級FPGA采用Flash或者熔絲與反熔絲工藝的查找表結(jié)構(gòu)。通過燒寫文件改變查找表內(nèi)容的方法來實現(xiàn)對FPGA的重復配置。
對于一個n輸入的邏輯運算,不管是與或非運算還是異或運算等等,最多只可能存在2n種結(jié)果。所以如果事先將相應(yīng)的結(jié)果存放于一個存貯單元,就相當于實現(xiàn)了與非門電路的功能。FPGA的原理也是如此,通過燒寫文件去配置查找表的內(nèi)容,從而在相同的電路情況下實現(xiàn)了不同的邏輯功能。
查找表(Look-Up-Table)簡稱為LUT,LUT本質(zhì)上就是一個RAM。目前FPGA中多使用4輸入的LUT,所以每一個LUT可以看成一個有4位地址線的的RAM。當用戶通過原理圖或HDL語言描述了一個邏輯電路以后,PLD/FPGA開發(fā)軟件會自動計算邏輯電路的所有可能結(jié)果,并把真值表(即結(jié)果)事先寫入RAM,這樣,每輸入一個信號進行邏輯運算就等于輸入一個地址進行查表,找出地址對應(yīng)的內(nèi)容,然后輸出即可。
由于基于LUT的FPGA具有很高的集成度,其器件密度從數(shù)萬門到數(shù)千萬門不等,可以完成極其復雜的時序與邏輯組合邏輯電路功能,所以適用于高速、高密度的高端數(shù)字邏輯電路設(shè)計領(lǐng)域。其組成部分主要有可編程輸入/輸出單元、基本可編程邏輯單元、內(nèi)嵌SRAM、豐富的布線資源、底層嵌入功能單元、內(nèi)嵌專用單元等,主要設(shè)計和生產(chǎn)廠家有Xilinx、Altera、Lattice、Actel、Atmel和QuickLogic等公司,其中最大的是Xilinx、Altera、Lattice三家。
如前所述,F(xiàn)PGA是由存放在片內(nèi)的RAM來設(shè)置其工作狀態(tài)的,因此工作時需要對片內(nèi)RAM進行編程。用戶可根據(jù)不同的配置模式,采用不同的編程方式。FPGA有如下幾種配置模式:
l并行模式:并行PROM、Flash配置FPGA;
l主從模式:一片PROM配置多片F(xiàn)PGA;
l串行模式:串行PROM配置FPGA;
l外設(shè)模式:將FPGA作為微處理器的外設(shè),由微處理器對其編程。
目前,F(xiàn)PGA市場占有率最高的兩大公司Xilinx和Altera生產(chǎn)的FPGA都是基于SRAM工藝的,需要在使用時外接一個片外存儲器以保存程序。上電時,F(xiàn)PGA將外部存儲器中的數(shù)據(jù)讀入片內(nèi)RAM,完成配置后,進入工作狀態(tài);掉電后FPGA恢復為白片,內(nèi)部邏輯消失。這樣FPGA不僅能反復使用,還無需專門的FPGA編程器,只需通用的EPROM、PROM編程器即可。Actel、QuickLogic等公司還提供反熔絲技術(shù)的FPGA,只能下載一次,具有抗輻射、耐高低溫、低功耗和速度快等優(yōu)點,在軍品和航空航天領(lǐng)域中應(yīng)用較多,但這種FPGA不能重復擦寫,開發(fā)初期比較麻煩,費用也比較昂貴。Lattice是ISP技術(shù)的發(fā)明者,在小規(guī)模PLD應(yīng)用上有一定的特色。早期的Xilinx產(chǎn)品一般不涉及軍品和宇航級市場,但目前已經(jīng)有QPro-R等多款產(chǎn)品進入該類領(lǐng)域。
2.2FPGA芯片結(jié)構(gòu)
目前主流的FPGA仍是基于查找表技術(shù)的,已經(jīng)遠遠超出了先前版本的基本性能,并且整合了常用功能(如RAM、時鐘管理和DSP)的硬核(ASIC型)模塊。如圖2-1所示(注:圖2-1只是一個示意圖,實際上每一個系列的FPGA都有其相應(yīng)的內(nèi)部結(jié)構(gòu)),F(xiàn)PGA芯片主要由6部分完成,分別為:可編程輸入輸出單元、基本可編程邏輯單元、完整的時鐘管理、嵌入塊式RAM、豐富的布線資源、內(nèi)嵌的底層功能單元和內(nèi)嵌專用硬件模塊。
圖2-1FPGA芯片的內(nèi)部結(jié)構(gòu)
2.3軟核、硬核以及固核的概念
核是具有知識產(chǎn)權(quán)核的集成電路芯核總稱,是經(jīng)過反復驗證過的、具有特定功能的宏模塊,與芯片制造工藝無關(guān),可以移植到不同的半導體工藝中。到了SOC階段,IP核設(shè)計已成為ASIC電路設(shè)計公司和FPGA提供商的重要任務(wù),也是其實力體現(xiàn)。對于FPGA開發(fā)軟件,其提供的IP核越豐富,用戶的設(shè)計就越方便,其市場占用率就越高。目前,IP核已經(jīng)變成系統(tǒng)設(shè)計的基本單元,并作為獨立設(shè)計成果被交換、轉(zhuǎn)讓和銷售。
從IP核的提供方式上,通常將其分為軟核、硬核和固核這3類。從完成IP核所花費的成本來講,硬核代價最大;從使用靈活性來講,軟核的可復用使用性最高。
(1)軟核
軟核在EDA[5]設(shè)計領(lǐng)域指的是綜合之前的寄存器傳輸級(RTL)模型;具體在FPGA設(shè)計中指的是對電路的硬件語言描述,包括邏輯描述、網(wǎng)表和幫助文檔等。軟核只經(jīng)過功能仿真,需要經(jīng)過綜合以及布局布線才能使用。其優(yōu)點是靈活性高、可移植性強,允許用戶自配置;缺點是對模塊的預測性較低,在后續(xù)設(shè)計中存在發(fā)生錯誤的可能性,有一定的設(shè)計風險。軟核是IP核應(yīng)用最廣泛的形式。
(2)固核
固核在EDA設(shè)計領(lǐng)域指的是帶有平面規(guī)劃信息的網(wǎng)表;具體在FPGA設(shè)計中可以看做帶有布局規(guī)劃的軟核,通常以RTL代碼和對應(yīng)具體工藝網(wǎng)表的混合形式提供。將RTL描述結(jié)合具體標準單元庫進行綜合優(yōu)化設(shè)計,形成門級網(wǎng)表,再通過布局布線工具即可使用。和軟核相比,固核的設(shè)計靈活性稍差,但在可靠性上有較大提高。目前,固核也是IP核的主流形式之一。
(3)硬核
硬核在EDA設(shè)計領(lǐng)域指經(jīng)過驗證的設(shè)計版圖;具體在FPGA設(shè)計中指布局和工藝固定、經(jīng)過前端和后端驗證的設(shè)計,設(shè)計人員不能對其修改。不能修改的原因有兩個:首先是系統(tǒng)設(shè)計對各個模塊的時序要求很嚴格,不允許打亂已有的物理版圖;其次是保護知識產(chǎn)權(quán)的要求,不允許設(shè)計人員對其有任何改動。IP硬核的不許修改特點使其復用有一定的困難,因此只能用于某些特定應(yīng)用,使用范圍較窄。
3基于FPGA的開發(fā)流程
3.1FPGA設(shè)計方法概論
FPGA是可編程芯片,因此FPGA的設(shè)計方法包括硬件設(shè)計和軟件設(shè)計兩部分。硬件包括FPGA芯片電路、存儲器、輸入輸出接口電路以及其他設(shè)備,軟件即是相應(yīng)的HDL程序以及最新才流行的嵌入式C程序。硬件設(shè)計是基礎(chǔ),但其方法比較固定,本節(jié)主要介紹軟件的設(shè)計方法。目前微電子技術(shù)已經(jīng)發(fā)展到SOC階段,即集成系統(tǒng)(IntegratedSystem)階段,相對于集成電路(IC)的設(shè)計思想有著革命性的變化。SOC是一個復雜的系統(tǒng),它將一個完整產(chǎn)品的功能集成在一個芯片上,包括核心處理器、存儲單元、硬件加速單元以及眾多的外部設(shè)備接口等,具有設(shè)計周期長、實現(xiàn)成本高等特點,因此其設(shè)計方法必然是自頂向下的從系統(tǒng)級到功能模塊的軟、硬件協(xié)同設(shè)計,達到軟、硬件的無縫結(jié)合。這么龐大的工作量顯然超出了單個工程師的能力,因此需要按照層次化、結(jié)構(gòu)化的設(shè)計方法來實施。首先由總設(shè)計師將整個軟件開發(fā)任務(wù)劃分為若干個可操作的模塊,并對其接口和資源進行評估,編制出相應(yīng)的行為或結(jié)構(gòu)模型,再將其分配給下一層的設(shè)計師。這就允許多個設(shè)計者同時設(shè)計一個硬件系統(tǒng)中的不同模塊,并為自己所設(shè)計的模塊負責;然后由上層設(shè)計師對下層模塊進行功能驗證。自頂向下的設(shè)計流程從系統(tǒng)級設(shè)計開始,劃分為若干個二級單元,然后再把各個二級單元劃分為下一層次的基本單元,一直下去,直到能夠使用基本模塊或者IP核直接實現(xiàn)為止,如圖3-1所示。流行的FPGA開發(fā)工具都提供了層次化管理,可以有效地梳理錯綜復雜的層次,能夠方便地查看某一層次模塊的源代碼以修改錯誤。
圖3-1自頂向下的FPGA設(shè)計開發(fā)流程
在工程實踐中,還存在軟件編譯時長的問題。由于大型設(shè)計包含多個復雜的功能模塊,其時序收斂與仿真驗證復雜度很高,為了滿足時序指標的要求,往往需要反復修改源文件,再對所修改的新版本進行重新編譯,直到滿足要求為止。這里面存在兩個問題:首先,軟件編譯一次需要長達數(shù)小時甚至數(shù)周的時間;其次,重新編譯和布局布線后結(jié)果差異很大,會將已滿足時序的電路破壞。因此必須提出一種有效提高設(shè)計性能,繼承已有結(jié)果,便于團隊化設(shè)計的軟件工具。FPGA廠商意識到這類需求,由此開發(fā)出了相應(yīng)的邏輯鎖定和增量設(shè)計的軟件工具。例如,Xilinx公司的解決方案就是PlanAhead。
Planahead允許高層設(shè)計者為不同的模塊劃分相應(yīng)FPGA芯片區(qū)域,并允許底層設(shè)計者在在所給定的區(qū)域內(nèi)獨立地進行設(shè)計、實現(xiàn)和優(yōu)化,等各個模塊都正確后,再進行設(shè)計整合。如果在設(shè)計整合中出現(xiàn)錯誤,單獨修改即可,不會影響到其它模塊。Planahead將結(jié)構(gòu)化設(shè)計方法、團隊化合作設(shè)計方法以及重用繼承設(shè)計方法三者完美地結(jié)合在一起,有效地提高了設(shè)計效率,縮短了設(shè)計周期。不過從其描述可以看出,新型的設(shè)計方法對系統(tǒng)頂層設(shè)計師有很高的要求。在設(shè)計初期,他們不僅要評估每個子模塊所消耗的資源,還需要給出相應(yīng)的時序關(guān)系;在設(shè)計后期,需要根據(jù)底層模塊的實現(xiàn)情況完成相應(yīng)的修訂。
3.2典型FPGA開發(fā)流程
FPGA的設(shè)計流程就是利用EDA開發(fā)軟件和編程工具對FPGA芯片進行開發(fā)的過程。FPGA的開發(fā)流程一般如圖3-2所示,包括電路設(shè)計、設(shè)計輸入、功能仿真、綜合優(yōu)化、綜合后仿真、實現(xiàn)、布線后仿真、板級仿真以及芯片編程與調(diào)試等主要步驟。
圖3-2FPGA開發(fā)的一般流程
(1)電路設(shè)計
在系統(tǒng)設(shè)計之前,首先要進行的是方案論證、系統(tǒng)設(shè)計和FPGA芯片選擇等準備工作。系統(tǒng)工程師根據(jù)任務(wù)要求,如系統(tǒng)的指標和復雜度,對工作速度和芯片本身的各種資源、成本等方面進行權(quán)衡,選擇合理的設(shè)計方案和合適的器件類型。一般都采用自頂向下的設(shè)計方法,把系統(tǒng)分成若干個基本單元,然后再把每個基本單元劃分為下一層次的基本單元,一直這樣做下去,直到可以直接使用EDA元件庫為止。
(2)設(shè)計輸入
設(shè)計輸入是將所設(shè)計的系統(tǒng)或電路以開發(fā)軟件要求的某種形式表示出來,并輸入給EDA工具的過程。常用的方法有硬件描述語言(HDL)和原理圖輸入方法等。原理圖輸入方式是一種最直接的描述方式,在可編程芯片發(fā)展的早期應(yīng)用比較廣泛,它將所需的器件從元件庫中調(diào)出來,畫出原理圖。這種方法雖然直觀并易于仿真,但效率很低,且不易維護,不利于模塊構(gòu)造和重用。更主要的缺點是可移植性差,當芯片升級后,所有的原理圖都需要作一定的改動。目前,在實際開發(fā)中應(yīng)用最廣的就是HDL語言輸入法,利用文本描述設(shè)計,可以分為普通HDL和行為HDL。普通HDL有ABEL、CUR等,支持邏輯方程、真值表和狀態(tài)機等表達方式,主要用于簡單的小型設(shè)計。而在中大型工程中,主要使用行為HDL,其主流語言是VerilogHDL和VHDL。這兩種語言都是美國電氣與電子工程師協(xié)會(IEEE)的標準,其共同的突出特點有:語言與芯片工藝無關(guān),利于自頂向下設(shè)計,便于模塊的劃分與移植,可移植性好,具有很強的邏輯描述和仿真功能,而且輸入效率很高。
(3)功能仿真
功能仿真,也稱為前仿真,是在編譯之前對用戶所設(shè)計的電路進行邏輯功能驗證,此時的仿真沒有延遲信息,僅對初步的功能進行檢測。仿真前,要先利用波形編輯器和HDL等建立波形文件和測試向量(即將所關(guān)心的輸入信號組合成序列),仿真結(jié)果將會生成報告文件和輸出信號波形,從中便可以觀察各個節(jié)點信號的變化。如果發(fā)現(xiàn)錯誤,則返回設(shè)計修改邏輯設(shè)計。常用的工具有ModelTech公司的ModelSim、Sysnopsys公司的VCS和Cadence公司的NC-Verilog以及NC-VHDL等軟件。
(4)綜合優(yōu)化
所謂綜合就是將較高級抽象層次的描述轉(zhuǎn)化成較低層次的描述。綜合優(yōu)化根據(jù)目標與要求優(yōu)化所生成的邏輯連接,使層次設(shè)計平面化,供FPGA布局布線軟件進行實現(xiàn)。就目前的層次來看,綜合優(yōu)化(Synthesis)是指將設(shè)計輸入編譯成由與門、或門、非門、RAM、觸發(fā)器等基本邏輯單元組成的邏輯連接網(wǎng)表,而并非真實的門級電路。真實具體的門級電路需要利用FPGA制造商的布局布線功能,根據(jù)綜合后生成的標準門級結(jié)構(gòu)網(wǎng)表來產(chǎn)生。為了能轉(zhuǎn)換成標準的門級結(jié)構(gòu)網(wǎng)表,HDL程序的編寫必須符合特定綜合器所要求的風格。由于門級結(jié)構(gòu)、RTL級的HDL程序的綜合是很成熟的技術(shù),所有的綜合器都可以支持到這一級別的綜合。常用的綜合工具有Synplicity公司的Synplify/SynplifyPro軟件以及各個FPGA廠家自己推出的綜合開發(fā)工具。
(5)綜合后仿真
綜合后仿真檢查綜合結(jié)果是否和原設(shè)計一致。在仿真時,把綜合生成的標準延時文件反標注到綜合仿真模型中去,可估計門延時帶來的影響。但這一步驟不能估計線延時,因此和布線后的實際情況還有一定的差距,并不十分準確。目前的綜合工具較為成熟,對于一般的設(shè)計可以省略這一步,但如果在布局布線后發(fā)現(xiàn)電路結(jié)構(gòu)和設(shè)計意圖不符,則需要回溯到綜合后仿真來確認問題之所在。在功能仿真中介紹的軟件工具一般都支持綜合后仿真。
(6)實現(xiàn)與布局布線
實現(xiàn)是將綜合生成的邏輯網(wǎng)表配置到具體的FPGA芯片上,布局布線是其中最重要的過程。布局將邏輯網(wǎng)表中的硬件原語和底層單元合理地配置到芯片內(nèi)部的固有硬件結(jié)構(gòu)上,并且往往需要在速度最優(yōu)和面積最優(yōu)之間作出選擇。布線根據(jù)布局的拓撲結(jié)構(gòu),利用芯片內(nèi)部的各種連線資源,合理正確地連接各個元件。目前,F(xiàn)PGA的結(jié)構(gòu)非常復雜,特別是在有時序約束條件時,需要利用時序驅(qū)動的引擎進行布局布線。布線結(jié)束后,軟件工具會自動生成報告,提供有關(guān)設(shè)計中各部分資源的使用情況。由于只有FPGA芯片生產(chǎn)商對芯片結(jié)構(gòu)最為了解,所以布局布線必須選擇芯片開發(fā)商提供的工具。
(7)時序仿真
時序仿真,也稱為后仿真,是指將布局布線的延時信息反標注到設(shè)計網(wǎng)表中來檢測有無時序違規(guī)(即不滿足時序約束條件或器件固有的時序規(guī)則,如建立時間、保持時間等)現(xiàn)象。時序仿真包含的延遲信息最全,也最精確,能較好地反映芯片的實際工作情況。由于不同芯片的內(nèi)部延時不一樣,不同的布局布線方案也給延時帶來不同的影響。因此在布局布線后,通過對系統(tǒng)和各個模塊進行時序仿真,分析其時序關(guān)系,估計系統(tǒng)性能,以及檢查和消除競爭冒險是非常有必要的。在功能仿真中介紹的軟件工具一般都支持綜合后仿真。
(8)板級仿真與驗證
板級仿真主要應(yīng)用于高速電路設(shè)計中,對高速系統(tǒng)的信號完整性、電磁干擾等特征進行分析,一般都以第三方工具進行仿真和驗證。
(9)芯片編程與調(diào)試
設(shè)計的最后一步就是芯片編程與調(diào)試。芯片編程是指產(chǎn)生使用的數(shù)據(jù)文件(位數(shù)據(jù)流文件,BitstreamGeneration),然后將編程數(shù)據(jù)下載到FPGA芯片中。其中,芯片編程需要滿足一定的條件,如編程電壓、編程時序和編程算法等方面。邏輯分析儀(LogicAnalyzer,LA)是FPGA設(shè)計的主要調(diào)試工具,但需要引出大量的測試管腳,且LA價格昂貴。目前,主流的FPGA芯片生產(chǎn)商都提供了內(nèi)嵌的在線邏輯分析儀(如XilinxISE中的ChipScope、AlteraQuartusII中的SignalTapII以及SignalProb)來解決上述矛盾,它們只需要占用芯片少量的邏輯資源,具有很高的實用價值。
4VHDL簡介
VHDL和VerilogHDL是目前世界上最流行的兩種硬件描述語言(HDL:HardwareDescriptionLanguage),均為IEEE標準,被廣泛地應(yīng)用于基于可編程邏輯器件的項目開發(fā)。二者都是在20世紀80年代中期開發(fā)出來的,前者由GatewayDesignAutomation公司(該公司于1989年被Cadence公司收購)開發(fā),后者由美國軍方研發(fā)。
VHDL語言以文本形式來描述數(shù)字系統(tǒng)硬件結(jié)構(gòu)和行為,是一種用形式化方法來描述數(shù)字電路和系統(tǒng)的語言,可以從上層到下層來逐層描述自己的設(shè)計思想。即用一系列分層次的模塊來表示復雜的數(shù)字系統(tǒng),并逐層進行驗證仿真,再把具體的模塊組合由綜合工具轉(zhuǎn)化成門級網(wǎng)表,接下去再利用布局布線工具把網(wǎng)表轉(zhuǎn)化為具體電路結(jié)構(gòu)的實現(xiàn)。目前,這種自頂向下的方法已被廣泛使用。概括地講,VHDL語言包含以下主要特征:
lVHDL語言既包含一些高級程序設(shè)計語言的結(jié)構(gòu)形式,同時也兼顧描述硬件線路連接的具體結(jié)構(gòu)。
l通過使用結(jié)構(gòu)級行為描述,可以在不同的抽象層次描述設(shè)計。VHDL語言采用自頂向下的數(shù)字電路設(shè)計方法,主要包括3個領(lǐng)域5個抽象層次。
lVHDL語言是并行處理的,具有同一時刻執(zhí)行多任務(wù)的能力。這和一般高級設(shè)計語言(例如C語言等)串行執(zhí)行的特征是不同的。
lVHDL語言具有時序的概念。一般的高級編程語言是沒有時序概念的,但在硬件電路中從輸入到輸出總是有延時存在的,為了描述這一特征,需要引入時延的概念。VHDL語言不僅可以描述硬件電路的功能,還可以描述電路的時序。
4.1VHDL語言的歷史
1983年,GatewayDesignAutomation(GDA)[5]硬件描述語言公司的PhilipMoorby首創(chuàng)了VHDL。后來Moorby成為VHDL-XL的主要設(shè)計者和Cadence公司的第一合伙人。1984至1986年,Moorby設(shè)計出第一個關(guān)于VHDL的仿真器,并提出了用于快速門級仿真的XL算法,使VHDL語言得到迅速發(fā)展。1987年Synonsys公司開始使用VHDL行為語言作為綜合工具的輸入。1989年Cadence公司收購了Gateway公司,VHDL成為Cadence公司的私有財產(chǎn)。1990年初,Cadence公司把VHDL和VHDL-XL分開,并公開發(fā)布了VHDL。隨后成立的OVI(OpenVHDLInternational)組織負責VHDL的發(fā)展并制定有關(guān)標準,OVI由VHDL的使用者和CAE供應(yīng)商組成。1993年,幾乎所有ASIC廠商都開始支持VHDL,并且認為VHDL-XL是最好的仿真器。同時,OVI推出2.0版本的VHDL規(guī)范,IEEE則將OVI的VHDL2.0作為IEEE標準的提案。1995年12月,IEE制E定了VHDL的標準IEEE1364-1995。目前,最新的VHDL語言版本是2000年IEEE公布的VHDL2001標準,其大幅度地提高了系統(tǒng)級和可綜合性能。
4.2VHDL的主要能力
VHDL既是一種行為描述語言,也是一種結(jié)構(gòu)描述語言[6]。如果按照一定的規(guī)則和風格編寫代碼,就可以將功能行為模塊通過工具自動轉(zhuǎn)化為門級互連的結(jié)構(gòu)模塊。這意味著利用VHDL語言所提供的功能,就可以構(gòu)造一個模塊間的清晰結(jié)構(gòu)來描述復雜的大型設(shè)計,并對所需的邏輯電路進行嚴格的設(shè)計。
下面列出的是VHDL語言的主要功能:
l可描述順序執(zhí)行或并行執(zhí)行的程序結(jié)構(gòu);
l用延遲表示式或事件表達式來明確地控制過程的啟動時間;
l通過命名的事件來觸發(fā)其他過程里的激活行為或停止行為;
l提供了條件和循環(huán)等程序結(jié)構(gòu);
l提供了可帶參數(shù)且非零延續(xù)時間的任務(wù)程序結(jié)構(gòu);
l提供了可定義新的操作符的函數(shù)結(jié)構(gòu);
l提供了用于建立表達式的算術(shù)運算符、邏輯運算符和位運算符;
l提供了一套完整的表示組合邏輯基本元件的原語;
l提供了雙向通路和電阻器件的描述;
l可建立MOS器件的電荷分享和衰減模型;
l可以通過構(gòu)造性語句精確地建立信號模型;表4-1給出VHDL的表述能力。
表4-1VHDL語言能力總結(jié)
此外,VHDL語言還有一個重要特征就是:和C語言風格有很多的相似之處,學習起來比較容易。
5函數(shù)發(fā)生器的設(shè)計與實現(xiàn)
本設(shè)計中的函數(shù)發(fā)生器是通過VHDL語言來描述的,通過這樣一種硬件描述語言,根據(jù)設(shè)計要求中所需要使用到的功能,盡可能的滿足了實際應(yīng)用中的具體需求。設(shè)計要求通過本設(shè)計產(chǎn)生頻率可控的正弦波,方波,三角波和鋸齒波等波形。
5.1軟件設(shè)計思路
數(shù)字頻率合成器(DDFS)技術(shù)是一種可把一系列數(shù)字量形式信號通過DAC轉(zhuǎn)換成模擬量形式信號的合成技術(shù)[9]。目前使用最廣泛的一種DDFS方式是利用高速存儲器作查尋表,然后通過高速DAC產(chǎn)生已用數(shù)字形式存入的正弦波。圖5-1是DDFS的基本原理圖。
圖5-1DDFS基本原理圖
相位累加器由N位加法器與N位累加寄存器級聯(lián)構(gòu)成。時鐘脈沖每觸發(fā)一次,加法器便將頻率控制數(shù)據(jù)與累加寄存器輸出的累加相位數(shù)據(jù)相加,然后把相加后的結(jié)果送至累加寄存器的數(shù)據(jù)輸入端。累加寄存器將加法器在上一個時鐘作用后所產(chǎn)生的新相位數(shù)據(jù)反饋到加法器的輸入端,以使加法器在下一個時鐘的作用下繼續(xù)與頻率控制數(shù)據(jù)相加。這樣,相位累加器在參考時鐘的作用下將進行線性相位累加,相位累加器累加滿量時,就會產(chǎn)生一次溢出,以完成一個周期性的動作,這個周期就是DDFS合成信號的一個頻率周期,累加器的溢出頻率就是DDFS輸出的信號頻率。
用相位累加器輸出的數(shù)據(jù)作為取樣地址來對正弦波波形存儲器進行相位-幅值轉(zhuǎn)換,即可在給定的時間上確定輸出的波形幅值。
通過DAC可將數(shù)字量形式的波形幅值轉(zhuǎn)換成所要求的合成頻率模擬量形式信號,低通濾波器用于衰減和濾除不需要的取樣分量,以便輸出頻譜純凈的正弦波信號[10]。
對于計數(shù)容量為2N的相位累加器和具有M個相位取樣的正弦波波形存儲器,若頻率控制字為K,則DDFS系統(tǒng)輸出信號的頻率為:fo=fc×K/2N,而頻率分辨率則為:Δf=fomin=fc/2N。
波形的數(shù)據(jù)存放在RAM里,主要有正弦波、三角波、鋸齒波包括半正弦波、半三角波和半鋸齒波的數(shù)據(jù)。
要達到較高的頻率精度,必須利用DDFS來實現(xiàn)對輸出波形頻率的控制并按頻率要求對相位增量進行累加,然后以累加相位值作為地址碼來讀取存放在存儲器中的波形數(shù)據(jù)。通過改變相位增量寄存器的增量值(即步長),使相位累加器能夠輸出依據(jù)相位增量寄存器所給出的步長來改變波形存儲器的地址,從而改變波形每周期的點數(shù),從而達到改變輸出波形頻率的目的。該電路的設(shè)計關(guān)鍵在于用硬件構(gòu)造一個多位累加器來實現(xiàn)相位的累加。
根據(jù)DDFS的原理,輸出信號頻率fo與累加器時鐘fclk,累加器位數(shù)M,相位增量N的關(guān)系如下:
fo=(fclk*N)/2M
5.2源程序的說明
以下是數(shù)字函數(shù)發(fā)生器設(shè)計的部分源程序說明。(完整程序請見附錄)
1.調(diào)用雙口RAM:
雙口RAM擁有兩套讀寫資源,可以同時進行讀寫而相互不受影響。這里使用雙口RAM來實現(xiàn)波形查找表的功能,可以方便地使用外部控制器更改查找表中的內(nèi)容,也就更改了輸出波形的類型,從而簡單的實現(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.頻率合成輸出:
在每一個時鐘周期,頻率累加器以輸入的頻率字為步進進行自增累加;累加結(jié)果的高位送給相位累加器與相位字進行累加,可以理解為在這里加上相位偏置;相位累加器的輸出作為波形查找表的地址從查找表中讀出相應(yīng)的數(shù)據(jù)后送給D/A轉(zhuǎn)換器,最后經(jīng)過低通濾波器,后級放大等信號調(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)的時序仿真實現(xiàn)和驗證
在完成了軟件部分的設(shè)計就可以在所選用的仿真軟件上進行調(diào)試,以驗證所編寫的程序是否可以實現(xiàn)預先設(shè)定的功能。
5.3.1使用QuartusIITextEditor建立設(shè)計
QuartusIITextEditor[11]是一個靈活的工具,用于以AHDL、VHDL和VerilogHDL語言以及Tcl腳本語言輸入文本型設(shè)計。還可以使用TextEditor輸入、編輯和查看其它ASCII文本文件,包括為QuartusII軟件或由QuartusII軟件建立的那些文本文件。還可以用TextEditor將任何AHDL語句或節(jié)段模板、Tcl命令或任何支持的VHDL或VerilogHDL構(gòu)造模板插入當前文件中。AHDL、VHDL和VerilogHDL模板為您輸入HDL語法提供了一個簡便的方法,可以提高設(shè)計輸入的速度和準確度。還可以獲取有關(guān)所有AHDL元素、關(guān)鍵字和語句以及宏功能模塊和基本單元的上下文相關(guān)幫助。
5.3.2使用AssignmentEditor指定初始設(shè)計的約束條件
AssignmentEditor是用于在QuartusII軟件中建立和編輯分配的界面。分配用于在設(shè)計中為邏輯指定各種選項和設(shè)置,包括位置、I/O標準、時序、邏輯選項、參數(shù)、仿真和引腳分配。使用AssignmentEditor可以選擇分配類別;使用QuartusIINodeFinde選擇要分配的特定節(jié)點和實體;顯示有關(guān)特定分配的信息;添加、編輯或刪除選定節(jié)點的分配。還可以向分配添加備注,可以查看出現(xiàn)分配的設(shè)置和配置文件。
以下步驟描述使用AssignmentEditor進行分配的基本流程:
1.打開AssignmentEditor。
2.在Category欄中選擇相應(yīng)的類別分配。
3.在NodeFilter欄中指定相應(yīng)的節(jié)點或?qū)嶓w,或使用NodeFinder對話
框查找特定的節(jié)點或?qū)嶓w。
4.在顯示當前設(shè)計分配的電子表格中,添加相應(yīng)的分配信息。
AssignmentEditor中的電子表格提供適用的下拉列表,或允許您鍵入分配信息。當您添加、編輯和刪除分配時,消息窗口中將出現(xiàn)相應(yīng)的Tcl命令[12]。還可以將數(shù)據(jù)從AssignmentEditor導出到Tcl腳本文件(.tcl)或與電子表格兼容的文件中。建立和編輯分配時,QuartusII軟件對適用的分配信息進行動態(tài)驗證。如果分配或分配值無效,QuartusII軟件不會添加或更新數(shù)值,改為轉(zhuǎn)換為當前值或不接受該值。當您查看所有分配時,AssignmentEditor將顯示為當前工程而建立的所有分配,但當您分別查看各個分配類別時,AssignmentEditor將僅顯示與所選特定類別相關(guān)的分配。
圖5-3QuartusIIAssignmentEditor
5.3.3使用QuartusIIVHDL
可以使用Analysis&Synthesis分析并綜合VHDL和VerilogHDL設(shè)計[13]。Analysis&Synthesis包括QuartusIIIntegratedSynthesis,它完全支持VHDL和VerilogHDL語言,并提供控制綜合過程的選項。
如圖5-4中所示。
圖5-4Settings對話框的VHDLInput頁
Analysis&Synthesis構(gòu)建單個工程數(shù)據(jù)庫,將所有設(shè)計文件集成在設(shè)計實體或工程層次結(jié)構(gòu)中。QuartusII軟件用此數(shù)據(jù)庫進行其余工程處理。其它Compiler模塊對該數(shù)據(jù)庫進行更新,直到它包含完全優(yōu)化的工程。開始時,該數(shù)據(jù)庫僅包含原始網(wǎng)表;最后,它包含完全優(yōu)化且合適的工程,工程將用于為時序仿真、時序分析、器件編程等建立一個或多個文件。當它建立數(shù)據(jù)庫時,Analysis&Synthesis的分析階段將檢查工程的邏輯完整性和一致性,并檢查邊界連接和語法錯誤。
Analysis&Synthesis還在設(shè)計實體或工程文件的邏輯上進行綜合和技術(shù)映射。它從VerilogHDL和VHDL中推斷觸發(fā)器、鎖存器和狀態(tài)機。它為狀態(tài)機建立狀態(tài)分配,并作出能減少所用資源的選擇。此外,它還用Altera參數(shù)化模塊庫(LPM)函數(shù)中的模塊替換運算符,例如+或-,而該函數(shù)已為Altera器件做了優(yōu)化。Analysis&Synthesis使用多種算法來減少門的數(shù)量,刪除冗余邏輯以及盡可能有效地利用器件體系結(jié)構(gòu)??梢允褂眠壿嬤x項分配自定義綜合。Analysis&Synthesis還應(yīng)用邏輯綜合技術(shù),以協(xié)助實施工程時序要求,并
優(yōu)化設(shè)計以滿足這些要求。消息窗口和Report窗口的消息區(qū)域顯示Analysis&Synthesis生成的任何消息。Status窗口記錄工程編譯期間在Analysis&Synthesis中處理所花的時間。
5.3.4控制Analysis&Synthesis
可以使用以下選項和功能來控制QuartusIIAnalysis&Synthesis:
l編譯器指令和屬性
lQuartusII邏輯選項
lQuartusII綜合網(wǎng)表優(yōu)化選項
1.使用編譯器指令和屬性
QuartusII軟件支持編譯器指令,這些指令也稱為編譯指示??梢栽赩erilogHDL或VHDL代碼中包括translate_on和translate_off等編譯器指令作為備注。這些指令不是VerilogHDL或VHDL命令;但是,綜合工具使用它們以特定方式推動綜合過程。仿真器等其它工具則忽略這些指令并將它們作為備注處理。還可以指定屬性,這些屬性有時稱為編譯指示或指令,用于推動特定設(shè)計元素的綜合過程。它還提供一些屬性,作為QuartusII邏輯選項。
2.使用QuartusII邏輯選項
QuartusII邏輯選項允許您在不編輯源代碼的情況下設(shè)置屬性??梢栽贏ssignmentEditor中指定QuartusII邏輯選項。QuartusII邏輯選項用于保留寄存器、指定通電時的邏輯電平、刪除重復或冗余的邏輯、優(yōu)化速度或區(qū)域、控制扇出、設(shè)置狀態(tài)機的編碼級別以及控制其它許多選項。使用QuartusII綜合網(wǎng)表優(yōu)化選項QuartusII綜合優(yōu)化選項用于設(shè)置選項,在許多Altera器件系列的綜合期間優(yōu)化網(wǎng)表。這些優(yōu)化選項對標準編譯期間出現(xiàn)的優(yōu)化進行補充,并且是在全編譯的Analysis&Synthesis階段出現(xiàn)。這些優(yōu)化對綜合網(wǎng)表進行更改,通常有利于區(qū)域和速度的改善。Settings對話框(Assignments菜單)的
NetlistOptimizations頁用于指定網(wǎng)表優(yōu)化選項,其中包括以下綜合優(yōu)化選項:
l進行WYSIWYG基本單元再綜合
l進行邏輯門級寄存器重新定時
l允許寄存器重新定時,在Tsu/Tco和Fmax之間進行取舍
5.3.5使用QuartusII仿真器進行仿真設(shè)計
可以使用QuartusII仿真器在工程中仿真任何設(shè)計[14]。視所需的信息類型而定,可以進行功能仿真以測試設(shè)計的邏輯運算,也可以進行時序仿真以在目標器件中測試設(shè)計的邏輯運算和最差時序。
QuartusII軟件可以仿真整個設(shè)計,或仿真設(shè)計的任何部分??梢栽诠こ讨袑⑷魏卧O(shè)計實體指定為仿真焦點。在仿真設(shè)計時,仿真器仿真焦點實體及其所有附屬設(shè)計實體指定仿真器設(shè)置通過建立仿真器設(shè)置,指定要仿真的類型、仿真涵蓋的時間段、激勵向量以及其它仿真選項??梢允褂肧ettings對話框(Assignments菜單)或仿真器SettingsWizard(Processing菜單)建立仿真器設(shè)置的自定義組,也可以使用每次建立新工程時自動生成的默認仿真器設(shè)置。建立波形文件
QuartusIIWaveformEditor可以建立和編輯用于波形格式仿真的輸入矢量。使用WaveformEditor,可以將輸入矢量添加到波形文件中,此文件描述設(shè)計中的邏輯行為。
QuartusII軟件支持矢量波形文件(.vwf)、表文件(.tbl)、矢量文件(.vec)和矢量表輸出文件(.tbl)格式的波形文件??梢栽贛AX+PLUS®II軟件中將MAX+PLUSII仿真器通道文件(.scf)另存為表文件,然后使用WaveformEditor打開表文件并另存為矢量波形文件。
圖5-5QuartusIIWaveformEditor
5.3.6在QuartusII軟件中進行時序分析
TimingAnalyzer在全編譯期間對設(shè)計自動進行時序分析。以下準則描述了使用QuartusIITimingAnalyzer可以完成的一些任務(wù):
l使用定時設(shè)置向?qū)Вˋssignments菜單)、Settings對話框(Assignments菜單)和AssignmentEditor,指定初始工程范圍的時序要求和個別時序要求。
l在全編譯期間進行時序分析或在初始編譯之后單獨進行時序分析。
l使用報告窗口、時序逼近布局圖和list_pathsTcl命令查看時序結(jié)果。
指定時序要求時序要求允許為整個工程、特定的設(shè)計實體或個別實體、節(jié)點和引腳指定所需的速度性能??梢允褂枚〞r設(shè)置向?qū)Вˋssignments菜單)幫助您建立初始工程范圍時序設(shè)置。指定初始時序設(shè)置之后,可以再次使用定時設(shè)置向?qū)Щ蚴褂肧ettings對話框(Assignments菜單)修改設(shè)置??梢允褂肁ssignmentEditor(Assignments菜單)進行個別時序設(shè)置。指定工程范圍時序分配和/或單個時序分配之后,通過編譯設(shè)計或在初始編譯之后通過單獨運行TimingAnalyzer來運行時序分配。如果未指定時序要求設(shè)置或選項,QuartusIITimingAnalyzer將使用默認設(shè)置運行分析。默認情況下,TimingAnalyzer計算并報告每個寄存器的fMAX、每個輸入寄存器的tSU和tH、每個輸出寄存器的tCO、所有引腳至引腳路徑間的tPD、延緩時間、保持時間、最小tCO以及當前設(shè)計實體的最小tPD。
使用Settings對話框或定時設(shè)置向?qū)?,可以指定以下時序要求和其它選項:
l工程的總頻率要求或各個時鐘信號的設(shè)置
l延時要求、最短延時要求和路徑切割選項
l報告選項,包括數(shù)字或源以及目標寄存器,且不包括路徑
l時序驅(qū)動編譯選項指定工程范圍的時序設(shè)置
工程范圍的時序設(shè)置包括最大頻率、建立時間、保持時間、時鐘至輸出延時和引腳至引腳延時以及最低時序要求。還可以設(shè)置工程范圍的時鐘設(shè)置和多個時鐘域、路徑切割選項和默認外部延時[15]。
1.要求描述
a)fMAX(最大頻率)
在不違反內(nèi)部建立(tSU)和保持(tH)時間要求下可以達到的最大時鐘頻率。
b)tSU(時鐘建立時間)
在觸發(fā)寄存器計時的時鐘信號已經(jīng)在時鐘引腳確立之前,經(jīng)由數(shù)據(jù)輸入或使能端輸入而進入寄存器的數(shù)據(jù)必須在輸入引腳處出現(xiàn)的時間長度。
c)tH(時鐘保持時間)
在觸發(fā)寄存器計時的時鐘信號已經(jīng)在時鐘引腳確立之后,經(jīng)由數(shù)據(jù)輸入或使能端輸入而進入寄存器的數(shù)據(jù)必須在輸入引腳處保持的時間長度。
d)tCO(時鐘至輸出延時)
時鐘信號在觸發(fā)寄存器的輸入引腳上發(fā)生轉(zhuǎn)換之后,在由寄存器饋送信號的輸出引腳上取得有效輸出所需的時間。
e)tPD(引腳至引腳延時)
輸入引腳處信號通過組合邏輯進行傳輸并出現(xiàn)在外部輸出引腳上所需的時間。
f)最小tCO(時鐘至輸出延時)
時鐘信號在觸發(fā)寄存器的輸入引腳上發(fā)生轉(zhuǎn)換之后,在由寄存器饋送信號的輸出引腳上取得有效輸出所需的最短時間。這個時間總是代表外部引腳至引腳延時。
g)最短tPD(時鐘至輸出延時)
指定可接受的最少的引腳至引腳延時,即輸入引腳信號通過組合邏輯傳輸并出現(xiàn)在外部輸出引腳上所需的時間。
2.指定個別時序分配
可以使用AssignmentEditor對個別實體、節(jié)點和引腳進行個別時序分配。個別時序分配超越工程范圍要求(如果它們比工程范圍要求更加嚴格)。AssignmentEditor支持點到點時序分配和通配符,用于在做分配時標識特定節(jié)點。輸入的引腳和節(jié)點時序要求保存在當前層次結(jié)構(gòu)中最高層實體的實體設(shè)置文件(.esf)中。
可以在TimingAnalyzer中進行以下類型的個別時序分配:
l個別時鐘設(shè)置:允許通過定義時序要求和設(shè)計中所有時鐘信號之間的關(guān)系,進行精確的多時鐘時序分析
l多周期路徑:需要一個以上時鐘周期才能穩(wěn)定下來的寄存器之間的路徑??梢栽O(shè)置多周期路徑,指示TimingAnalyzer調(diào)整其度量,并避免不當?shù)剡`反建立或保持時間。
l剪切路徑:默認情況下,如果沒有設(shè)置時序要求或只使用默認的fMAX時鐘設(shè)置,QuartusII軟件將切斷不相關(guān)時鐘域之間的路徑。如果設(shè)置了各個時鐘分配,但沒有定義時鐘分配之間的關(guān)系,QuartusII也將切斷不相關(guān)時鐘域之間的路徑。還可以定義設(shè)計中特定路徑的剪切路徑。_最少延時要求:特定節(jié)點或組的個別tH、最小tCO和最小tPD時序要求??梢詫μ囟ü?jié)點或組進行這些分配,以超越工程范圍最小時序要求。
l外部延時:指定信號從外部寄存器(器件之外)到達輸入引腳的延時。
l設(shè)計中特定節(jié)點的個別tSU、tPD和tCO要求。
3.進行時序分析
指定時序設(shè)置和分配之后,就可以通過全編譯運行TimingAnalyzer。完成編譯之后,可以使用Start>StartTimingAnalyzer命令(Processing菜單)重新單獨運行時序分析,或通過選擇Start>StartMinimumTimingAnalysis(Processing菜單)運行最少時序分析。
4.查看時序分析結(jié)果
運行時序分析之后,可以在編譯報告的TimingAnalyzer文件夾中查看時序分析結(jié)果。然后,可以列出時序路徑以驗證電路性能,確定關(guān)鍵速度路徑以及限制設(shè)計性能的路徑,并進行另外的時序分配。此外,還可以使用list_pathsTcl命令查找并查看設(shè)計中任何延時路徑的信息。報告窗口的時序分析部分列出報告的時鐘建立和保持的時序信息;tSU、tH、tPD、tCO;最小脈沖寬度要求;在時序分析期間忽略的任何時序分配;以及TimingAnalyzer生成的任何消息。默認情況下,TimingAnalyzer還報告最佳情況最少時鐘至輸出時間和最佳情況最少點到點延時。
報告窗口包括以下類型的時序分析信息:
l時序要求的設(shè)置
l停滯和最少停滯
l源和目標時鐘名稱
l源和目標節(jié)點名稱
l所需的和實際的點到點時間
l所需的保持關(guān)系
l實際fMAX
圖5-6Report窗口中的時序分析結(jié)果
可以從Report窗口的TimingAnalyzer部分直接進入AssignmentEditor、ListPaths和LocateinTimingClosureFloorplan命令,從而可以進行個別時序分配和查看延時路徑信息。此外,還可以使用list_pathsTcl命令列出延時路徑信息??梢允褂肁ssignmentEditor在TimingAnalyzer報告中對任何路徑進行個別時序分配。此功能還可以用來方便地對路徑進行點到點分配。以下步驟描述在AssignmentEditor中進行個別時序分配的基本流程:
1.在Category欄中,單擊Timing,以指示您要做的分配的類別。
2.在電子表格中單擊DestinationName(To)單元格并使用NodeFinder查找節(jié)點,或鍵入標識要分配目標節(jié)點的節(jié)點名稱和/或通配符。
3.在電子表格中單擊SourceName(From)單元格并使用NodeFinder查找節(jié)點,或鍵入標識要分配源節(jié)點的節(jié)點名稱和/或通配符。
4.在電子表格中,雙擊Option單元格并選擇您要做的時序分配。對于要求賦值的分配,可以雙擊Value單元格并鍵入或選擇相應(yīng)的分配值。還可以使用LocateinTimingClosureFloorplan命令(Project菜單)在時序逼近布局圖中查找路徑,允許利用時序逼近布局圖功能對特定路徑做分配??梢允褂肔istPaths命令(右邊按鈕彈出菜單),在消息窗口的TimingAnalyzer報告小窗口中顯示任何路徑的中間延時。它允許用戶查找引腳至引腳、寄存器至寄存器和時鐘至輸出引腳延時路徑,并顯示在Report窗口中出現(xiàn)的設(shè)計的任何延時路徑的信息。請參見圖5-7。
圖5-7OutputfromListPaths命令
結(jié)果:最后在示波器上可以觀察到頻率可控的正弦波,方波,鋸齒波三角波。
6結(jié)論
本文通過對FPGA器件和數(shù)字函數(shù)發(fā)生器的詳細闡述,通過仔細研究FPGA和DDFS原理后,根據(jù)項目設(shè)計的背景及實際需要,基于FPGA器件設(shè)計并實現(xiàn)了數(shù)字函數(shù)發(fā)生器的設(shè)計,完成了實現(xiàn)正弦波,三角波,鋸齒波,方波的功能要求,并用DICE-EH2000實驗箱和示波器實現(xiàn)了其功能。與使用單片機、DSP或嵌入式ARM等其他芯片實現(xiàn)數(shù)字函數(shù)發(fā)生器相比,本設(shè)計更符合整個項目開發(fā)過程中的實際情況,用FPGA進行數(shù)字系統(tǒng)的設(shè)計靈活方便,周期短。而且,當參考時鐘頻率和相位累加器的位寬滿足一定的要求時,輸出分辨率可以非常小。使用DDS技術(shù)產(chǎn)生的任意波在精度上非常高,誤差很小。
總的來說,本設(shè)計利用FPGA構(gòu)建數(shù)字函數(shù)發(fā)生器,一方減少了使用專用集成芯片帶來的成本增加和資源浪費;另一方面,通過軟件時序仿真,減少了設(shè)計周期,提高了系統(tǒng)的穩(wěn)定性。設(shè)計完成后,在DICE-EH2000實驗箱和示波器上進行了硬件驗證,并獲得通過??梢哉f,在多數(shù)場合中,可以用它來實現(xiàn)數(shù)字函數(shù)發(fā)生器的基本功能。
標簽:
中國傳動網(wǎng)版權(quán)與免責聲明:凡本網(wǎng)注明[來源:中國傳動網(wǎng)]的所有文字、圖片、音視和視頻文件,版權(quán)均為中國傳動網(wǎng)(www.wangxinlc.cn)獨家所有。如需轉(zhuǎn)載請與0755-82949061聯(lián)系。任何媒體、網(wǎng)站或個人轉(zhuǎn)載使用時須注明來源“中國傳動網(wǎng)”,違反者本網(wǎng)將追究其法律責任。
本網(wǎng)轉(zhuǎn)載并注明其他來源的稿件,均來自互聯(lián)網(wǎng)或業(yè)內(nèi)投稿人士,版權(quán)屬于原版權(quán)人。轉(zhuǎn)載請保留稿件來源及作者,禁止擅自篡改,違者自負版權(quán)法律責任。
產(chǎn)品新聞
更多>2025-04-30
性能躍升20%!維宏NK300CX Plus數(shù)控系統(tǒng)...
2025-04-11
rpi-image-gen:樹莓派軟件鏡像構(gòu)建的終...
2025-04-08
【產(chǎn)品解讀】全面提升精密制造檢測節(jié)拍...
2025-03-31
激光閃耀 智慧引領(lǐng) | WISE MASER 黑武士...
2025-03-20