多種EDA工具的FPGA協(xié)同設(shè)計(jì)
FPGA在電子市場上占有舉足輕重的地位。現(xiàn)在的問題是:現(xiàn)在市場在FPGA開發(fā)方面的EDA工具令人眼花繚亂,各自側(cè)重點(diǎn)不同,性能也不一樣,我們應(yīng)該如何選擇?為了加速FPGA的開發(fā),選擇并協(xié)調(diào)好各種EDA工具顯得非常重要,本文將探討上述問題并給出一種解決方案。本文以Altera公司的FPGA為目標(biāo)器件,通過開發(fā)實(shí)例介紹FPGA開發(fā)的完整的流程及開發(fā)過程中使用到的開發(fā)工具,包括QuartusII、FPGA CompilerII、Modelsim,并重點(diǎn)解說如何使用這三個(gè)工具進(jìn)行協(xié)同設(shè)計(jì)。
二、FPGA的開發(fā)流程及實(shí)例
FPGA的開發(fā)分為設(shè)計(jì)輸入、功能仿真、設(shè)計(jì)綜合、前仿真、布局布線、時(shí)序仿真、時(shí)序分析和編程下載幾個(gè)步驟。設(shè)計(jì)流程如圖1所示。
我們的開發(fā)實(shí)例是“帶順序選擇和奇偶檢驗(yàn)的串并數(shù)據(jù)轉(zhuǎn)換接口”。接口電路可以實(shí)現(xiàn)數(shù)據(jù)的串并轉(zhuǎn)換,并根據(jù)控制信號確定輸出的并行數(shù)據(jù)的順序,以及輸出奇偶檢驗(yàn)位。開發(fā)實(shí)例是用來說明FPGA的開發(fā)流程和各種EDA工具的協(xié)同設(shè)計(jì),因此這里的描述重點(diǎn)并在設(shè)計(jì)本身。開發(fā)實(shí)例使用的目標(biāo)器件是Altera公司FLEX10KE系列的EPF10K30ETC114-1;開發(fā)軟件有QuartusII2.0、FPGA CompilerII 3.6和Modelsim5.6SE。
Quartus II是Altera公司的第四代可編程邏輯器件集成開發(fā)環(huán)境,提供從設(shè)計(jì)輸入到器件編程的全部功能。 Quartus II可以產(chǎn)生并識(shí)別EDIF網(wǎng)表文件、VHDL網(wǎng)表文件和Verilog HDL網(wǎng)表文件,為其他EDA工具提供了方便的接口;可以在Quartus II集成環(huán)境中自動(dòng)運(yùn)行其他EDA工具。
Mentor Graphics公司的Modelsim是業(yè)界較好的仿真工具,其仿真功能強(qiáng)大,且圖形化界面友好,而且具有結(jié)構(gòu)、信號、波形、進(jìn)程、數(shù)據(jù)流等窗口。
FPGA Compiler II是一個(gè)完善的FPGA邏輯分析、綜合和優(yōu)化工具,它從HDL形式未優(yōu)化的網(wǎng)表中產(chǎn)生優(yōu)化的網(wǎng)表文件,包括分析、綜合和優(yōu)化三個(gè)步驟。
如果設(shè)計(jì)的硬件系統(tǒng)不是很大,對綜合和仿真的要求不是很高,我們完全可以在Quartus II中完成設(shè)計(jì)。實(shí)際上,這個(gè)開發(fā)實(shí)例完全可以在Quartus II這個(gè)集成的開發(fā)環(huán)境中完成。下面,我先介紹一下如何在Quartus II中完成設(shè)計(jì),然后再介紹如何利用Quartus II提供的第三方EDA工具的接口與其他EDA工具(包括綜合工具FPGA Compiler II和仿真工具M(jìn)odelSim5.6SE)完成協(xié)同設(shè)計(jì)。
1. 基于Quartus II的FPGA的開發(fā)
利用Quartus II軟件的開發(fā)流程可概括為以下幾步:設(shè)計(jì)輸入、設(shè)計(jì)編譯、設(shè)計(jì)時(shí)序分析、設(shè)計(jì)仿真和器件編程。
(1)設(shè)計(jì)輸入
Quartus II軟件在File菜單中提供“New Project Wizard...”向?qū)?,引?dǎo)設(shè)計(jì)者完成項(xiàng)目的創(chuàng)建。當(dāng)設(shè)計(jì)者需要向項(xiàng)目中添加新的VHDL文件時(shí),可以通過“New”選項(xiàng)選擇添加。在這里我們創(chuàng)建項(xiàng)目“s_to_p”,編寫“s_to_p.vhd文件”,并將文件添加到項(xiàng)目中。
(2)設(shè)計(jì)編譯
Quartus II編譯器完成的功能有:檢查設(shè)計(jì)錯(cuò)誤、對邏輯進(jìn)行綜合、提取定時(shí)信息、在指定的Altera系列器件中進(jìn)行適配分割,產(chǎn)生的輸出文件將用于設(shè)計(jì)仿真、定時(shí)分析及器件編程。
①首先確定軟件處于Compile Mode,可以通過Processing菜單進(jìn)行選擇。
②在Processing菜單中選擇Compiler Settings項(xiàng)。在這里可以進(jìn)行器件選擇、模式設(shè)定、綜合和適配選項(xiàng)設(shè)定及設(shè)計(jì)驗(yàn)證等。我們選擇FLEX10KE系列型號為EPF10K30ETC114-1的器件,并選擇在編譯后進(jìn)行時(shí)序分析。
③單擊Processing菜單下的“Start Compilation”項(xiàng),開始編譯過程。
④查看編譯結(jié)果。編譯結(jié)果以樹狀結(jié)構(gòu)組織在Compilation Report中,包含項(xiàng)目的設(shè)置信息,以及編譯設(shè)置、編譯效果等信息,同時(shí)也包含了靜態(tài)時(shí)序信息。
(3)設(shè)計(jì)定時(shí)分析
單擊Project菜單下的“Timing Settings...”選項(xiàng),可以方便地完成時(shí)間參數(shù)的設(shè)定。Quartus II軟件的時(shí)序分析功能在編譯過程結(jié)束之后自動(dòng)運(yùn)行,并在編譯報(bào)告的Timing Analyses文件夾中顯示。其中我們可以得到最高頻率fmax、輸入寄存器的建立時(shí)間tsu、輸出寄存器時(shí)鐘到輸出的延遲tco和輸入保持時(shí)間th等時(shí)間參數(shù)的詳細(xì)報(bào)告,從中可以清楚地判定是否達(dá)到系統(tǒng)的時(shí)序要求。本設(shè)計(jì)實(shí)例電路的fmax可達(dá)到192.31MHz。
(4)設(shè)計(jì)仿真
Quartus II軟件允許設(shè)計(jì)者使用基于文本的向量文件(.vec)作為仿真器的激勵(lì),也可以在Quartus II軟件的波形編輯器中產(chǎn)生向量波形文件(.vwf)作為仿真器的激勵(lì)。通過Quartus II的波形編輯器,我們編輯波形文件“s_to_p.vwf”用于仿真。接著,在Processing菜單下選擇“Simulate Mode”選項(xiàng)進(jìn)入仿真模式,選擇“Simulator Settings...”對話框進(jìn)行仿真設(shè)置。在這里可以選擇激勵(lì)文件、仿真模式(功能仿真或時(shí)序仿真)等,我們選擇時(shí)序仿真,單擊“Run Simulator”即開始仿真過程。完成仿真后,我們可以通過時(shí)序仿真得到的波形判斷系統(tǒng)設(shè)計(jì)是否達(dá)到要求。
(5)器件編程
設(shè)計(jì)者可以將配置數(shù)據(jù)通過MasterBlaster或ByteBlasterMV通信電纜下載到器件當(dāng)中,通過被動(dòng)串行(Passive Serial)配置模式或JTAG模式對器件進(jìn)行配置編程,還可以在JTAG模式下給多個(gè)器件進(jìn)行編程。利用Quartus II軟件給器件編程或配置時(shí),首先需要打開編程器(在New菜單選項(xiàng)中選擇打開Chain Description File),在編程器中可以進(jìn)行編程模式設(shè)置(Mode下拉框)、硬件配置(Programming Hardware對話框)及編程文件選擇(Add File...按鈕),將以上配置存盤產(chǎn)生.cdf文件,其中存儲(chǔ)了器件的名稱、器件的設(shè)計(jì)及硬件設(shè)置等編程信息。當(dāng)以上過程正確無誤后,單擊Start按鈕即可開始對器件進(jìn)行編程配置。這里我們需要根據(jù)外圍硬件電路設(shè)計(jì)的情況進(jìn)行選擇。
2.多種EDA工具協(xié)同設(shè)計(jì)
在FPGA設(shè)計(jì)的各個(gè)環(huán)節(jié)都有不同公司提供不同的EDA工具。每個(gè)EDA工具都有自己的特點(diǎn)。一般情況,由FPGA廠商提供的集成開發(fā)環(huán)境,如Quartus II,在設(shè)計(jì)綜合和設(shè)計(jì)仿真環(huán)節(jié)都不是非常優(yōu)秀,因此一般都會(huì)提供第三方EDA工具的接口,讓用戶更方便地利用其他EDA工具。在這方面,作為EDA集成開發(fā)環(huán)境的Quartus II做得很好,不僅可以產(chǎn)生并識(shí)別EDIF網(wǎng)表文件、VHDL網(wǎng)表文件和Verilog HDL網(wǎng)表文件,為其他EDA工具提供了方便的接口,而且可以在Quartus II集成環(huán)境中自動(dòng)運(yùn)行其他EDA工具。
在FPGA的開發(fā)中,如果選用Altera公司器件的話,Quartus II+FPGA Compiler II+Modelsim的工具組合是非常理想的選擇。如圖2所示,使用這三個(gè)EDA工具對實(shí)例進(jìn)行協(xié)同設(shè)計(jì)的流程。下面,我們將詳細(xì)介紹這三個(gè)工具的協(xié)同設(shè)計(jì)。
(1)設(shè)計(jì)輸入和綜合
在FPGA Compiler II中編輯“s_to_p.vhd”設(shè)計(jì)文件,并進(jìn)行邏輯分析、綜合和優(yōu)化。使用FPGA Compiler II綜合時(shí),我們能夠設(shè)置綜合的各種約束條件及優(yōu)化重點(diǎn),并選擇不同廠家的器件。在設(shè)計(jì)中,我們使用File菜單中的“Design Wizard”,創(chuàng)建項(xiàng)目,添加“s_to_p.vhd”設(shè)計(jì)文件,并選擇Altera公司FLEX10KE系列型號為EPF10K30ETC114-1的器件為目標(biāo)器件,在設(shè)置完成后,軟件將自動(dòng)開始綜合和優(yōu)化。綜合、優(yōu)化后,我們可以查看結(jié)果和綜合所得到的原理圖,看看是否能滿足要求。接著,在Synthesis菜單中選擇“Export Netlist...”打開導(dǎo)出網(wǎng)表的對話框。在這里,可以設(shè)置和導(dǎo)出用于布局布線和前仿真的網(wǎng)表。在項(xiàng)目對應(yīng)的文件夾中,“s_to_p.edf”是用于Quartus II布局布線的,而“s_to_p.vhd”(注意:這個(gè)文件和源文件具有相同的名字)則用于Modelsim前仿真的。
(2)功能仿真和前仿真
使用Modelsim來進(jìn)行功能仿真和前仿真。在Modelsim進(jìn)行功能仿真和前仿真的操作一摸一樣,只是輸入的源程序不同罷了。首先,我們要?jiǎng)?chuàng)建項(xiàng)目,選擇對應(yīng)的工作庫,并將源文件加入到項(xiàng)目中。接著選擇Compile菜單中的“Compile...”對源文件進(jìn)行編譯,并編寫測試臺(tái)(可以是Macro文件,也可以是TestBench)。最后,選擇Simulate菜單中的“Simulate...”,在“Simulate”對話框中選擇仿真需要實(shí)體,采用對應(yīng)的測試臺(tái)進(jìn)行仿真,驗(yàn)證系統(tǒng)的邏輯功能及綜合后的邏輯功能的正確性。
(3)布局布線和時(shí)序分析
如果仿真結(jié)果沒有問題,接下來的工作就是布局布線。在布局布線之前,先對Quartus II的設(shè)計(jì)環(huán)境進(jìn)行設(shè)置。在Project菜單中選擇“EDA Tool Setting...”,打開EDA工具設(shè)置對話框。在這里,我們能選擇設(shè)計(jì)輸入和綜合工具,仿真工具,時(shí)序分析工具和版圖級工具。現(xiàn)在,我們關(guān)心的是設(shè)計(jì)輸入和綜合工具還有仿真工具,分別在對應(yīng)的列表框中選擇FPGA Compiler II和Modelsim。注意仿真工具還要確定輸出語言。布局布線的輸入源文件是經(jīng)FPGA Compiler II綜合、優(yōu)化的輸出文件。在這里,F(xiàn)PGA Compiler II 的輸出文件“s_to_p.edf”即是Quartus II布局布線的輸入文件。對這個(gè)文件進(jìn)行編譯和時(shí)序分析,就可以得到布局布線后的用于時(shí)序仿真和編程下載的文件。觀察編譯結(jié)果,發(fā)現(xiàn)時(shí)序分析中fmax為204.08MHz,就這個(gè)指標(biāo)而言,采用FPGA Compiler II綜合、優(yōu)化顯然比采用Quartus II綜合的效果要好。編譯輸出的文件中有幾個(gè)是下面步驟要用到的:一個(gè)是時(shí)序仿真文件,軟件將這些文件都存于項(xiàng)目文件夾下面的“Simulation”文件夾中,包括描述電路的邏輯結(jié)構(gòu)的網(wǎng)表文件“s_to_p.vho”和對應(yīng)的延時(shí)標(biāo)準(zhǔn)格式文件“s_to_p_vhd.sdo”;另一個(gè)是編程下載文件,包括不同格式的“s_to_p.sof”和“s_to_p.pof”。
(4)時(shí)序仿真
進(jìn)行時(shí)序仿真前,我們要確定已經(jīng)獲得針對特定FPGA輸出網(wǎng)表文件,對應(yīng)延時(shí)標(biāo)準(zhǔn)格式文件,以及廠家提供的與特定FPGA對應(yīng)的庫文件。其中網(wǎng)表文件和標(biāo)準(zhǔn)延時(shí)格式文件是布局布線時(shí)產(chǎn)生的文件,而庫文件則是由廠商提供,在Quartus II軟件的安裝目錄中可以找到。本設(shè)計(jì)中,網(wǎng)表文件時(shí)“s_to_p.vho”,延時(shí)標(biāo)準(zhǔn)格式文件是“s_to_p_vhd.sdo”,并由于選用Altera公司FLEX10KE系列的EPF10K30ETC114-1為目標(biāo)器件,所以庫文件是“FLEX10KE_ATOMS.VHD”和“FLEX10KE_COMPONENTS.VHD”。 確定輸入文件后,我們就能利用Modelsim進(jìn)行時(shí)序仿真。
首先,建立項(xiàng)目,將上述文件添加到項(xiàng)目中去,并在“work”庫中新建 “flex10ke” 庫。
接著,打開“Compile”對話框,先在“flex10ke” 庫中編譯文件“flex10ke _atoms.vhd”和“flex10ke _compomnets.vhd”,再在“work”庫中編譯文件“s_to_p.vho”(注意一定要弄清楚編譯次序)。
編譯完成之后,我們就可以進(jìn)行仿真了。時(shí)序仿真與功能仿真和前仿真不同的是時(shí)序仿真需要加入延時(shí)標(biāo)準(zhǔn)格式文件。打開“Simulate”對話框,選擇要仿真的實(shí)體“s_to_p”,并在選擇SDF標(biāo)簽,加入延時(shí)標(biāo)準(zhǔn)格式文件是“s_to_p_vhd.sdo”。其他的操作和功能仿真和前仿真相同。從時(shí)序仿真的結(jié)果,我們可以進(jìn)行最接近硬件的一次設(shè)計(jì)驗(yàn)證。
(5)編程下載
利用集成開發(fā)環(huán)境Quartus II中的編程工具,根據(jù)外圍硬件電路的情況,設(shè)置編程模式,我們能很方便地完成編程下載工作,在硬件上對設(shè)計(jì)進(jìn)行驗(yàn)證。
三、結(jié)論
在實(shí)際的FPGA的開發(fā)中,選用Quartus II+FPGA Compiler II+Modelsim的EDA工具組合能很好地規(guī)劃設(shè)計(jì)流程,充分利用各EDA工具的優(yōu)點(diǎn),提高開發(fā)效率。
參考文獻(xiàn)
1 石俊斌,林輝.在PLD開發(fā)中提高VHDL的綜合質(zhì)量,單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2003年,第4期
2 孫富明,李笑盈.基于多種EDA工具的FPGA設(shè)計(jì),電子技術(shù)應(yīng)用,2002年1月,第1期
3 林敏,方穎立.VHDL數(shù)字系統(tǒng)設(shè)計(jì)與高層綜合. 北京,電子工業(yè)出版社,2002年1月,12~61
4 Altera Corporation,“QuartusII Help Version 2.0”.
5 Model Technology Incorporated,“ModelSim SE User's Manual Version 5.6”
6 Synopsys Incorporated,“FPGA Compiler II/FPGA Express VHDL Reference Manual Version 1999,05”
評論