第一章Modelsim編譯Xilinx庫
本章介紹如何編譯HDL必須的Xilinx庫和結(jié)構(gòu)仿真。
創(chuàng)建將被編譯庫的目錄
在編譯庫之前,最好先建立一個目錄(事實(shí)上必須建立一個目錄),步驟如下。(假設(shè)Modelsim的安裝目錄是“$Modeltech_6.0”,ISE的安裝目錄是“$Xilinx”)
◆在“$Modeltech_6.0/”目錄下建立一個名為XilinxLib的文件夾;
◆啟動Modelsim后,從“File”菜單項(xiàng)中點(diǎn)擊“ChangeDirectory”并指定到剛剛建立的那個文件夾“XilinxLib”;
◆接下來要做的事情是將Xilinx庫編譯到“XilinxLib”文件夾中。有三個庫需要被編譯。它們分別是“simprims”,“unisims”和“XilinxCoreLib”;(所有這些庫文件都在“$Xilinx/verilog/src”目錄下)
◆點(diǎn)擊Modelsim中的“Workspace”窗口,建立一個名為Xilinx_CoreLib的新庫;(這個操作創(chuàng)建一個名為“Xilinx_CoreLib”的文件夾,你可以在“Workspace”窗口中看到它)
◆現(xiàn)在開始編譯!在“Compile”菜單中點(diǎn)擊“Compile”,選擇“$Xinlinx/verilog/scr/XilinxCoreLib”目錄中所有的文件,在彈出的對話框中選中剛剛建立的“Xilinx_CoreLib”文件夾,再點(diǎn)擊“Compile”按鈕就可以了編譯了;
◆用同樣的方式編譯其他兩個本地庫(“simprims”和“unisims”);
第二章調(diào)用XilinxCORE-Generator
當(dāng)需要在設(shè)計(jì)中生成參數(shù)化和免費(fèi)的IP內(nèi)核(黑箱子)時,無論是通過原理圖方式還是HDL方式,CORE-Generator都是一個非常有用的程序。
利用CORE-Generator創(chuàng)建一個IP核
利用Xilinx提供的CORE-Generator來生成IP核是非常簡單的。內(nèi)核是全參數(shù)化的,這就意味著你只需要在空白處填入幾個數(shù)字和參數(shù),然后程序就會自動產(chǎn)生一個你所需要的
內(nèi)核。(有些內(nèi)核是全免費(fèi)的,有些則沒有這么慷慨)
利用CORE-Generator來生成IP核的步驟如下:
◆在“程序”中找到“Xilinx”項(xiàng),然后在“Accessories”中啟動單獨(dú)存在的“CORE-Generator”;
◆在“Part”標(biāo)簽欄中選擇恰當(dāng)?shù)腇PGA模型;
◆從“Generation”標(biāo)簽欄中選擇正確的設(shè)計(jì)流;(完成后按“OK”按鈕)
◆定制你的參數(shù)化內(nèi)核;
◆在內(nèi)核生成的同時,會彈出一個“ReadmeFile”的信息框來通知一些重要的信息;
◆“*.v”文件是用來作仿真和綜合用的,而“*.veo”文件是用來作綜合實(shí)例用的。(調(diào)用意味著把相應(yīng)的文件加入Synplify.Pro工程中,而實(shí)例指的是可以拷貝這個文件中的某些線到HDL設(shè)計(jì)的頂層模塊中去。退出?。?
第三章使用Synplify.Pro綜合HDL和內(nèi)核
綜合是將設(shè)計(jì)好的HDL代碼,圖形代碼和原理圖轉(zhuǎn)變成邏輯單元的技術(shù)。同與硬件執(zhí)行和物理布線非常接近的物理綜合相比,邏輯綜合是更高層次的綜合技術(shù)。
利用Synplify.Pro進(jìn)行邏輯綜合
Synplify.Pro對于大容量低價格的XilinxSpartan系列FPGA而言,有著非常好的綜合能力。
具體步驟如下:
◆首先創(chuàng)建一個工程;
◆往工程中加入HDL文件(我的演示文件有三個文件,CORE-Generator生成的“async_fifo.v”和“dcm4clk”和一個Verilog頂層文件“top.v”)。在Synplify.Pro環(huán)境中設(shè)置“ImplementationOption”;(如果讀者非常熟練的話,可以省略這步)
◆往CORE-Generator生成的兩個Verilog文件中插入Synplify.Pro能夠識別的指示這些指示告訴綜合器如何處理這兩個特殊的文件;
◆插入“/*synthesissyn_black_box*/”指示通知Synplify.Pro把模塊當(dāng)作黑箱子來處理,同時指示“/*synthesissyn_isclock=1*/”表示這個作為時鐘輸入端的端口不能被綜合器識別,因?yàn)樗硕丝诿鉀]有下層結(jié)構(gòu);
◆將工程保存在合適的地方,然后綜合這個工程;
◆在綜合完成后,選擇“TechnologyView”按鈕來觀察層次結(jié)構(gòu);(你可以發(fā)現(xiàn)內(nèi)核
◆不管你相信與否!Synplify.Pro已經(jīng)生成了你所希望的東西。(擁有專用Clock-Input-Buffer,IBUG連接的DCM結(jié)構(gòu),并且有一個從Global-Clock-Buffer,BUFG的反饋結(jié)構(gòu)“CLKFB”)
第四章綜合后的項(xiàng)目執(zhí)行
執(zhí)行是將生成的位文件下載到FPGA的最后一個步驟。
同時創(chuàng)建不同的時序模型(post-translate模型,post-map模型和post-PAR模型)和時序報告。
ISE,唯一可以用來執(zhí)行的工具
ISE控制著設(shè)計(jì)流的各個方面。通過ProjectNavigator界面,可以進(jìn)入所有不同的設(shè)計(jì)實(shí)體和實(shí)際執(zhí)行工具。同時也可以訪問于工程有關(guān)的文件和文檔。ProjectNavigator包含一個平坦的目錄結(jié)構(gòu);
在演示項(xiàng)目中,ISE的一些貧乏的功能不得不讓道給其他的第三方軟件,例如ModelSim.Pro和Synplify.Pro,因此ISE一般僅僅被用作執(zhí)行工具。
◆啟動ISE,用“EDIF”作為文件輸入;(“EDIF”文件由Synplify.Pro軟件生成,作為終端設(shè)計(jì)文件,可以被大多數(shù)的FPGA開發(fā)環(huán)境識別,例如ISE,Quartus,ispLevel。)
◆在建立了ISE工程后,可以加入其他兩個文件,一個是與內(nèi)核相關(guān)的“*.xco”文件,另一個是與DCM結(jié)構(gòu)有關(guān)的“*.xaw”;
◆現(xiàn)在可以生成需要仿真的所有的模塊;(點(diǎn)擊下劃紅線的選項(xiàng))
◆如果想仿真post-PAR模塊,最好首先定義引腳,特別是專用的外部時鐘引腳;
◆啟動“map”程序中的“Floorplaner”選項(xiàng)來定義引腳;
◆“DCMs”和“IBUFGs”應(yīng)該被放在正確的位置。
仿真是用來驗(yàn)證設(shè)計(jì)的時序和功能是否正確的調(diào)試方法之一。
在驗(yàn)證調(diào)試電路和觀察波形的過程中,應(yīng)該進(jìn)行四個不同類型的仿真。
不同的仿真類型針對的不同的平臺。功能仿真用來驗(yàn)證設(shè)計(jì)的功能是否正確;
post-translate仿真用來驗(yàn)證設(shè)計(jì)的基于原語延時;post-map仿真用來仿真基于原語延時和網(wǎng)絡(luò)延時;最后,post-PAR仿真在post-map仿真的基礎(chǔ)上加入了輸入輸出和布線延時。
我不會給出演示設(shè)計(jì)的全部詳細(xì)的仿真過程,但是給出了重點(diǎn)和重要的步驟。只給出了post-PAR仿真過程,列出了對于所有其他三種仿真需要的不同文件。(實(shí)際上,不同的文件是不同的參考時序模型:<DesignName>_translate.v是post-translate模型,<DesignName>_map.v是post-map模型。)
◆對于post-PAR仿真,需要四種類型的文件,“glb1.v”是用來作FPGA全局復(fù)位的(從“$Xilinx/verilog/src”目錄中拷貝),“<DesignName>_timesim.v”用來作post-PAR仿真(必須命名為<DesignName>.v),<TestBenchName.v>用來作仿真用和<DesignName>_timesim.sdf用來作時序后注。
◆post-map仿真跟上述類似,post-translate沒有“*.sdf”文件,功能仿真除了沒有“*.sdf”文件外還沒有“glb1.v”文件;
◆通過點(diǎn)擊“Simulation”菜單下的“StartSimulation”命令把前面討論過的三個Xilinx庫文件加入到當(dāng)前仿真庫中;
◆在“Design”欄中選擇“glb1”和“<TestbenchName>”,仿真設(shè)計(jì);
◆在“Transcript”窗口中輸入“addwave*”命令,你就可以到在波形窗口中出現(xiàn)了信號
來源:零八我的愛0次