FPGA原理與應(yīng)用 課件 第三章 Vivado集成開(kāi)發(fā)環(huán)境概述_第1頁(yè)
FPGA原理與應(yīng)用 課件 第三章 Vivado集成開(kāi)發(fā)環(huán)境概述_第2頁(yè)
FPGA原理與應(yīng)用 課件 第三章 Vivado集成開(kāi)發(fā)環(huán)境概述_第3頁(yè)
FPGA原理與應(yīng)用 課件 第三章 Vivado集成開(kāi)發(fā)環(huán)境概述_第4頁(yè)
FPGA原理與應(yīng)用 課件 第三章 Vivado集成開(kāi)發(fā)環(huán)境概述_第5頁(yè)
已閱讀5頁(yè),還剩101頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第三章

Vivado集成開(kāi)發(fā)環(huán)境概述

3.1軟件介紹

3.2設(shè)計(jì)導(dǎo)論3.3設(shè)計(jì)套件目錄3.4調(diào)試過(guò)程Part1軟件介紹3.1軟件介紹Vivado

Vivado是由Xilinx公司推出的一款集成式設(shè)計(jì)環(huán)境(IDE),它主要用于FPGA設(shè)計(jì)和開(kāi)發(fā)。這款工具整合了綜合、實(shí)現(xiàn)、布局布線等關(guān)鍵工具,為數(shù)字電路設(shè)計(jì)提供了全面的支持。在Vivado中,綜合器可以將高級(jí)語(yǔ)言描述的設(shè)計(jì)轉(zhuǎn)換為邏輯電路,而實(shí)現(xiàn)器則可以將邏輯電路映射到目標(biāo)FPGA,并進(jìn)行布局布線。Vivado的強(qiáng)大功能和易用性使其在FPGA設(shè)計(jì)領(lǐng)域備受歡迎,廣泛應(yīng)用于通信、嵌入式系統(tǒng)、數(shù)字信號(hào)處理等領(lǐng)域。它支持多種數(shù)據(jù)輸入方式,內(nèi)嵌綜合器以及仿真器,可以完成從新建工程、設(shè)計(jì)輸入、分析綜合、約束輸入到

設(shè)計(jì)實(shí)現(xiàn),最終生成bitstream下載到FPGA的全部開(kāi)發(fā)流程。本書以Vivado2024.1版本為例。3.1.1軟件安裝軟件安裝步驟在xilinx官網(wǎng)搜索或點(diǎn)擊下方鏈接下載(),根據(jù)電腦系統(tǒng)下載Vivado2024.1版本安裝包。雙擊打開(kāi)“FPGAsAdaptiveSoCsUnified2024.105222023Win64.exe”文件。后面按照安裝步驟提示完成軟件的安裝。3.1.1軟件安裝軟件安裝步驟此過(guò)程中需要輸入下載時(shí)的AMD的賬號(hào)和密碼,選擇自己需要的版本進(jìn)行安裝3.1.1軟件安裝軟件安裝步驟選擇對(duì)應(yīng)的工具,這里就選擇Vivado,然后點(diǎn)擊下一步3.1.1軟件安裝軟件安裝步驟根據(jù)個(gè)人的需要選擇對(duì)應(yīng)的FPGA的組件,這里選擇的器件越多,電腦所需要的內(nèi)存越多。3.1.1軟件安裝軟件安裝步驟全部都選擇同意,然后繼續(xù)點(diǎn)擊下一步3.1.1軟件安裝軟件安裝這里可以調(diào)整軟件的安裝目錄,安裝在合適的位置。切記不要安裝在系統(tǒng)盤,否則可能直接爆滿。3.1.1軟件安裝軟件破解軟件安裝完成后,停留在此窗口。單擊“LoadLicense”,即可加載破解文件。破解文件: /s/1GWGnLNiMOuwbpmWGgwylXw?pwd=bn8v

提取碼:bn8v加載完成之后會(huì)彈出successful的窗口,則表示破解成功。3.1.2用戶界面軟件的主界面Vivado2024.1軟件的主界面如左圖所示。主界面主要包含菜單欄、主工具欄、流程導(dǎo)航窗口、數(shù)據(jù)窗口區(qū)域、狀態(tài)欄和結(jié)果窗口等部分。從上到下依次為設(shè)置(Settings)、添加工程(Addsources)、語(yǔ)言模板(LanguageTemplates)、IP目錄(IPCatalog)、IP集成器(IPINTEGRATOR)、塊設(shè)計(jì)(CreateBlockDesign)、仿真(RunSimulation)、RTL分析、綜合(RunSynthesis、編程和調(diào)試(PROGRAMANDDEBUG)等。3.1.2用戶界面菜單常見(jiàn)操作該菜單主要是對(duì)項(xiàng)目的一些操作?!癋lownavigator”:提供對(duì)命令和工具的訪問(wèn),包含從設(shè)計(jì)輸入到生成比特流的整個(gè)過(guò)程?!癆ddSources”:添加源文件?!癛unSimulation”:開(kāi)始仿真。“RunSynthes”:分析綜合?!癝ources窗口”:顯示層次結(jié)構(gòu)(Hierarchy)、IP源文件(IPSources)、庫(kù)(Libraries)和編譯順序(CompileOrder)的視圖?!癗etlist窗口”:提供分析后的(elaborated)或綜合后的(synthesized)邏輯設(shè)計(jì)的分層視圖?!癙rojectSummary”:提供了當(dāng)前工程的摘要信息,它在運(yùn)行設(shè)計(jì)命令時(shí)動(dòng)態(tài)地更新。用于顯示和編輯基于文本的文件和報(bào)告的TextEditor。3.1.2用戶界面常用操作主工具欄:主工具欄提供了對(duì)VivadoIDE中最常用命令的單擊訪問(wèn)。主菜單:主菜單欄提供對(duì)VivadoIDE命令的訪問(wèn)。常用的命令會(huì)一直顯示(例如,F(xiàn)ile>Project>Open),而其他命令只在設(shè)計(jì)活動(dòng)時(shí)顯示(例如,Reports>ReportDRC)。一些菜單命令有一個(gè)相關(guān)的鍵盤快捷方式,該快捷方式列在該菜單命令的旁邊。窗口布局(Layout)選擇器:VivadoIDE提供預(yù)定義的窗口布局,以方便設(shè)計(jì)過(guò)程中的各種任務(wù)。布局選擇器使大家能夠輕松地更改窗口布局,大家也可以使用菜單欄中的“Layout”菜單來(lái)更改窗口布局。3.1.2用戶界面常用操作

原理圖(Schematic)窗口,器件(Device)窗口,封裝(Package)窗口?!癟clConsole”:允許您輸入Tcl命令,并查看以前的命令和輸出的歷史記錄?!癕essages”:顯示當(dāng)前設(shè)計(jì)的所有消息,按進(jìn)程和嚴(yán)重性分類,包括“Error”,

“Critical”,“Warning”等等

“Log”:顯示由綜合、實(shí)現(xiàn)和仿真run創(chuàng)建的日志文件。“Reports”:提供對(duì)整個(gè)設(shè)計(jì)流程中的活動(dòng)run所生成的報(bào)告的快速訪問(wèn)?!癉esignsRuns”:管理當(dāng)前工程的runs。3.1.3工程創(chuàng)建工程創(chuàng)建啟動(dòng)Vivado,在Vivado開(kāi)發(fā)環(huán)境里點(diǎn)擊“CreateProject”,創(chuàng)建新工程。彈出窗口點(diǎn)擊“Next”,在彈出的窗口中輸入工程名和存放的工程路徑,工程名在這里取“project_1”;工程路徑不能含有中文字符,路徑名也不宜太長(zhǎng)。點(diǎn)擊“Next”后,在后面彈出的窗口,在工程類型中選擇“Project_1”;目標(biāo)語(yǔ)言Targetlanguage中選擇“Verilog”。在添加文件窗口中直接點(diǎn)擊“Next”,不添加任何文件。在器件選擇頁(yè)面中根據(jù)自己使用的FPGA開(kāi)發(fā)板進(jìn)行選擇。點(diǎn)擊“Finish”完成工程創(chuàng)建。3.1.3工程創(chuàng)建工程創(chuàng)建啟動(dòng)Vivado,在Vivado開(kāi)發(fā)環(huán)境里點(diǎn)擊“CreateProject”,創(chuàng)建新工程。彈出窗口點(diǎn)擊“Next”,在彈出的窗口中輸入工程名和存放的工程路徑,工程名在這里取“project_1”;工程路徑不能含有中文字符,路徑名也不宜太長(zhǎng)。點(diǎn)擊“Next”后,在后面彈出的窗口,在工程類型中選擇“Project_1”;目標(biāo)語(yǔ)言Targetlanguage中選擇“Verilog”。在添加文件窗口中直接點(diǎn)擊“Next”,不添加任何文件。在器件選擇頁(yè)面中根據(jù)自己使用的FPGA開(kāi)發(fā)板進(jìn)行選擇。點(diǎn)擊“Finish”完成工程創(chuàng)建。3.1.3工程創(chuàng)建工程創(chuàng)建啟動(dòng)Vivado,在Vivado開(kāi)發(fā)環(huán)境里點(diǎn)擊“CreateProject”,創(chuàng)建新工程。彈出窗口點(diǎn)擊“Next”,在彈出的窗口中輸入工程名和存放的工程路徑,工程名在這里取“project_1”;工程路徑不能含有中文字符,路徑名也不宜太長(zhǎng)。點(diǎn)擊“Next”后,在后面彈出的窗口,在工程類型中選擇“Project_1”;目標(biāo)語(yǔ)言Targetlanguage中選擇“Verilog”。在添加文件窗口中直接點(diǎn)擊“Next”,不添加任何文件。在器件選擇頁(yè)面中根據(jù)自己使用的FPGA開(kāi)發(fā)板進(jìn)行選擇。點(diǎn)擊“Finish”完成工程創(chuàng)建。3.1.3工程創(chuàng)建工程創(chuàng)建啟動(dòng)Vivado,在Vivado開(kāi)發(fā)環(huán)境里點(diǎn)擊“CreateProject”,創(chuàng)建新工程。彈出窗口點(diǎn)擊“Next”,在彈出的窗口中輸入工程名和存放的工程路徑,工程名在這里取“ex1”;工程路徑不能含有中文字符,路徑名也不宜太長(zhǎng)。點(diǎn)擊“Next”后,在后面彈出的窗口,在工程類型中選擇“ex1”;目標(biāo)語(yǔ)言Targetlanguage中選擇“Verilog”。在添加文件窗口中直接點(diǎn)擊“Next”,不添加任何文件。在器件選擇頁(yè)面中根據(jù)自己使用的FPGA開(kāi)發(fā)板進(jìn)行選擇。點(diǎn)擊“Finish”完成工程創(chuàng)建。3.1.3工程創(chuàng)建創(chuàng)建VerilogHDL文件

工程創(chuàng)建完成后隨之進(jìn)入到Vivido軟件界面。點(diǎn)擊PROJECTMANAGER下的AddSources(或者快捷鍵Alt+A)。

選擇“Addorcreatedesignsources”添加或創(chuàng)建設(shè)計(jì)源文件,點(diǎn)擊“Next”。注:拆創(chuàng)建仿真文件是選擇“Addorcreatesimulationsources”即可。選擇創(chuàng)建文件“CreateFile”。文件命名為“ex1”,點(diǎn)擊“OK”。再點(diǎn)擊“Finish”完成“ex1.v”文件的添加。在彈出的DefineModule模塊定義中,可以指定“ex1.v”文件的模塊名稱,默認(rèn)不變?yōu)椤癳x1”。雙擊“ex1.v”打開(kāi)文件,可以編輯代碼。3.1.4實(shí)例講解簡(jiǎn)單加法器設(shè)計(jì)c為a加b,當(dāng)a,b都為1時(shí)c為2,驗(yàn)證了所設(shè)計(jì)得代碼是正確的。設(shè)計(jì)文件代碼:modulev2(a,b,c);inputa,b;output[1:0]c;assignc=a+b;endmodule測(cè)試文件代碼:modulev2_tb;rega,b;wire[1:0]c;initialbegina=0;b=0;#33a=0;b=1;#44a=1;b=1;#22a=1;b=0;#55a=0;b=0;#33a=0;b=1;#44a=1;b=1;#22a=1;b=0;#55a=0;b=0;endv1u1(.a(a),.b(b),.c(c));endmodule3.1.5Vivado的功能特性VivadoDesignSuite提供全新構(gòu)建的SoC增強(qiáng)型、以IP和系統(tǒng)為中心的下一代開(kāi)發(fā)環(huán)境,以解決系統(tǒng)級(jí)集成和實(shí)現(xiàn)的生產(chǎn)力瓶頸。與Xilinx前一代的設(shè)計(jì)平臺(tái)ISE相比,Vivado在各方面的性能都有了明顯的提升,而且,隨著Vivado環(huán)境的不斷優(yōu)化,其性能還會(huì)進(jìn)一步提高。右表給出了Vivado在性能提升方面的說(shuō)明。Vivado集成設(shè)計(jì)環(huán)境支持下面業(yè)界已經(jīng)建立的設(shè)計(jì)標(biāo)準(zhǔn):(1)Tel;(2)AXI4,IP-XACT;(3)Synopsys設(shè)計(jì)約束(SynopsysDesignConstraints,SDC);(4)Verilog,VHDL,SystemVerilog;(5)SystemC,C,C++。VivadoDesignSuite加速設(shè)計(jì)生產(chǎn)力加速實(shí)現(xiàn)加速集成和驗(yàn)證(1)實(shí)現(xiàn)速度提升4倍;(1)IP集成速度提高4倍;(2)器件利用率提升20%;(2)RTL仿真速度提高3倍;(3)最多3個(gè)速度級(jí)性能優(yōu)勢(shì);(3)C/C++至RTL的轉(zhuǎn)換速度提高4倍;(4)功耗降低35%;

(5)增量編譯速度提高一倍;

通過(guò)這些支持,使得:(1)電子設(shè)計(jì)自動(dòng)化(ElectronicDesignAutomation,EDA)生態(tài)系統(tǒng)更好地支持Vivado設(shè)計(jì)套件。此外,Vivado設(shè)計(jì)套件中集成了很多新的第三方工具。(2)本質(zhì)上,Vivado設(shè)計(jì)套件是基于Tcl的腳本。因此支持Synopsys設(shè)計(jì)約束(SDC)和Xilinx設(shè)計(jì)約束(XilinxDesignConstraints,XDC)格式。(3)除了提供傳統(tǒng)上對(duì)Verilog、VHDL和SystemVerilog綜合的支持,Vivado高級(jí)綜合HLS也可以使用C、C++或者SystemC語(yǔ)言定義邏輯。(4)使用標(biāo)準(zhǔn)的IP互連協(xié)議,例如AXI4和IP-XACT。這樣,使得更快和更容易地實(shí)現(xiàn)系統(tǒng)級(jí)設(shè)計(jì)集成。3.1.6Vivado的五大特征與前一代開(kāi)發(fā)平臺(tái)ISE相比,Xilinx新一代開(kāi)發(fā)平臺(tái)Vivado有5個(gè)顯著的特征,這5個(gè)特征也體現(xiàn)了其與ISE的重大差異。統(tǒng)一的數(shù)據(jù)模型——在ISE中,綜合后的網(wǎng)表文件為.ngc,Translate之后的網(wǎng)表文件為.ngd,布局、布線之后的網(wǎng)表文件為.ncd;在Vivado下,綜合和實(shí)現(xiàn)之后的網(wǎng)表文件均為.dcp。DCP成為統(tǒng)一的數(shù)據(jù)模型。業(yè)界標(biāo)準(zhǔn)的約束描述方式——在Vivado中,約束采用XDC描述,它是在SDC基礎(chǔ)上進(jìn)行了擴(kuò)展,添加了Xilinx特定的物理約束。相比于ISE中的UCF描述約束的方式,XDC更為靈活。融合Tcl腳本——Vivado融合了Tcl腳本,幾乎所有的菜單操作都有相應(yīng)的Tcl命令,而且用Tcl可以實(shí)現(xiàn)菜單無(wú)法操作的功能,如編輯綜合后的網(wǎng)表文件。事實(shí)上,XDC本身就是Tcl命令。除此之外,用戶也可以編寫自己的Tcl命令嵌入到Vivado中。Vivado提供了Tcl控制臺(tái)(TclConsole)和TelShell用來(lái)運(yùn)行Tcl腳本。3.1.6Vivado的五大特征以IP為核心的設(shè)計(jì)理念——Vivado提供了以IP為核心的設(shè)計(jì)理念,以實(shí)現(xiàn)最大化的設(shè)計(jì)復(fù)用。VivadoHLS和SystemGenerator兩個(gè)工具都可以將自身設(shè)計(jì)封裝為IP嵌入到VivadoIPCatalog中。此外,用戶自己的工程也可以通過(guò)Vivado下的IPPackager封裝為IP嵌入到VivadoIPCatalog中。體現(xiàn)UltraFast設(shè)計(jì)方法學(xué)——Xilinx提出的UltraFast設(shè)計(jì)方法學(xué)其根本宗旨是將問(wèn)題盡可能地放在設(shè)計(jì)初期解決,而不要等到設(shè)計(jì)實(shí)現(xiàn)階段才著手解決。因?yàn)樵谠O(shè)計(jì)初期解決問(wèn)題的方式更為靈活,措施也更為多樣;而到后期,往往只能在局部小范圍內(nèi)修正,常會(huì)出現(xiàn)調(diào)試好了A模塊,B模塊又出問(wèn)題的情況,甚至面臨不得不返工的窘境。Vivado將這一方法學(xué)貫穿其中,在RTL設(shè)計(jì)分析階段可以進(jìn)行設(shè)計(jì)檢查,檢查內(nèi)容包括代碼風(fēng)格和時(shí)序約束。在綜合后可以分析時(shí)序,發(fā)現(xiàn)潛在的布線擁塞問(wèn)題。與ISE不同的是,Vivado綜合后的時(shí)序報(bào)告是可信任的。3.1.6Vivado的五大特征統(tǒng)一的數(shù)據(jù)模型DCPVivado以IP為核心的設(shè)計(jì)理念

3.1.7Vivado的兩種工作模式

Vivado設(shè)計(jì)套件允許設(shè)計(jì)者根據(jù)自己的習(xí)慣,使用不同的方法運(yùn)行工具。設(shè)計(jì)者可以使用基于工程的方法自動(dòng)管理設(shè)計(jì)過(guò)程和設(shè)計(jì)數(shù)據(jù),也就是所說(shuō)的工程模式(ProjectMod)。當(dāng)在工程模式下時(shí),在磁盤上創(chuàng)建一個(gè)目錄結(jié)構(gòu),用于管理設(shè)計(jì)源文件,運(yùn)行結(jié)果和跟蹤工程狀態(tài)。通過(guò)一個(gè)運(yùn)行結(jié)構(gòu),來(lái)管理自動(dòng)地綜合和實(shí)現(xiàn)過(guò)程,以及跟蹤運(yùn)行狀態(tài)??梢酝ㄟ^(guò)單擊鼠標(biāo),在Vivado集成環(huán)境內(nèi)運(yùn)行完整的設(shè)計(jì)流程。另一種方法是,設(shè)計(jì)者可以選擇基于Tcl腳本的編譯風(fēng)格方式。通過(guò)這種方式,設(shè)計(jì)者自己可以管理源文件和設(shè)計(jì)流程。這種方式也稱為非工程模式(Non-ProjectMode)。當(dāng)在非工程模式下時(shí),通過(guò)源文件當(dāng)前所在的位置來(lái)訪問(wèn)源文件,以及通過(guò)存儲(chǔ)器中的流程來(lái)編譯設(shè)計(jì)。①通過(guò)使用Tcl命令,可以單獨(dú)運(yùn)行設(shè)計(jì)中的每一步;②使用Tcl命令,可以設(shè)置設(shè)計(jì)參數(shù)和實(shí)現(xiàn)選項(xiàng);③使用Tcl命令,設(shè)計(jì)者可以在設(shè)計(jì)處理的每個(gè)階段,保存設(shè)計(jì)檢查點(diǎn)和創(chuàng)建報(bào)告;

④此外,在每個(gè)設(shè)計(jì)階段,設(shè)計(jì)者可以打開(kāi)Vivado集成設(shè)計(jì)環(huán)境,用于設(shè)計(jì)分析和分配約束。當(dāng)設(shè)計(jì)者正在查看存儲(chǔ)器中活動(dòng)的設(shè)計(jì)時(shí),會(huì)自動(dòng)地提交流程中的變化。比如:設(shè)計(jì)者可以保存對(duì)新約束文件的更新或者設(shè)計(jì)檢查點(diǎn)。3.1.7Vivado的兩種工作模式在工程模式下,Vivado集成設(shè)計(jì)環(huán)境跟蹤設(shè)計(jì)歷史,保存相關(guān)的設(shè)計(jì)信息。然而,在這種模式下,由于很多是過(guò)程自動(dòng)處理的,所以設(shè)計(jì)者很少能控制處理的過(guò)程。例如在每次運(yùn)行時(shí),只是生成一組標(biāo)準(zhǔn)的報(bào)告文件。在工程模式下,提供了下面的自動(dòng)處理功能:

(1)源文件管理和狀態(tài);(2)通過(guò)VivadoIP目錄和Vivado集成器,實(shí)現(xiàn)IP配置和集成;(3)綜合信息和自動(dòng)生成標(biāo)準(zhǔn)的報(bào)告;(4)保存和重用工具設(shè)置和設(shè)計(jì)配置;(5)用多個(gè)綜合和實(shí)現(xiàn)運(yùn)行,進(jìn)行探索;(6)約束設(shè)置的使用和管理;(7)運(yùn)行結(jié)果的管理和狀態(tài);(8)流程導(dǎo)航;(9)工程總結(jié)。在非工程模式下,通過(guò)使用Tcl命令,執(zhí)行每個(gè)行為。在存儲(chǔ)器中,執(zhí)行所有的處理。因此,不會(huì)自動(dòng)生成文件或者報(bào)告。當(dāng)設(shè)計(jì)者每次對(duì)設(shè)計(jì)進(jìn)行編譯的時(shí)候,設(shè)計(jì)者必須定義所有的源文件,設(shè)置所有工具和設(shè)計(jì)配置的參數(shù),啟動(dòng)所有的實(shí)現(xiàn)命令,以及指定所需要生成的報(bào)告文件。由于沒(méi)有在磁盤上創(chuàng)建一個(gè)工程,源文件保留在它們最初的位置,只在設(shè)計(jì)者指定的位置創(chuàng)建運(yùn)行輸出。這個(gè)流程充分發(fā)揮Tcl命令的能力,可以充分地控制整個(gè)設(shè)計(jì)過(guò)程。流程元素工程模式非工程模式設(shè)計(jì)源文件管理自動(dòng)手動(dòng)流程導(dǎo)航引導(dǎo)手動(dòng)流程定制有限無(wú)限報(bào)告自動(dòng)手動(dòng)分析階段只有設(shè)計(jì)設(shè)計(jì)和設(shè)計(jì)檢查點(diǎn)工程模式和非工程模式特性比較Part2設(shè)計(jì)導(dǎo)論3.2設(shè)計(jì)流程(1)Vivado下的FPGA設(shè)計(jì)流程Vivado是Xilinx新一代針對(duì)7系列及后續(xù)FPGA的開(kāi)發(fā)平臺(tái)。在Vivado下的FPGA設(shè)計(jì)流程右圖所示??梢钥吹剑柚鶹ivado能夠完成FPGA的所有流程,包括設(shè)計(jì)輸入、設(shè)計(jì)綜合、設(shè)計(jì)實(shí)現(xiàn)、設(shè)計(jì)調(diào)試和設(shè)計(jì)驗(yàn)證。相比于Xilinx前一代開(kāi)發(fā)平臺(tái)ISE,Vivado的設(shè)計(jì)實(shí)現(xiàn)環(huán)節(jié)較為復(fù)雜,多了幾個(gè)步驟,如右圖中設(shè)計(jì)實(shí)現(xiàn)框內(nèi)的斜體字所示。這幾個(gè)步驟是可選的,但布局和布線則是必需的。正是這些步驟以及每個(gè)步驟自身的參數(shù)選項(xiàng)使得Vivado可以構(gòu)造不同的實(shí)現(xiàn)策略。3.2設(shè)計(jì)流程設(shè)計(jì)優(yōu)化可進(jìn)一步對(duì)綜合后的網(wǎng)表進(jìn)行優(yōu)化,如可以去除無(wú)負(fù)載的邏輯電路,可以優(yōu)化BRAM功耗(優(yōu)化BRAM的功耗是在設(shè)計(jì)優(yōu)化階段而非功耗優(yōu)化階段完成的)。功耗優(yōu)化則是借助觸發(fā)器的使能信號(hào)降低設(shè)計(jì)的動(dòng)態(tài)功耗。盡管功耗優(yōu)化可以在布局前運(yùn)行也可以在布局后運(yùn)行,但為了達(dá)到更好的優(yōu)化結(jié)果,最好在布局之前運(yùn)行。布局之后的功耗優(yōu)化是在保證時(shí)序的前提下進(jìn)行的,因而優(yōu)化受到限制。物理優(yōu)化可進(jìn)一步改善設(shè)計(jì)時(shí)序。對(duì)于關(guān)鍵時(shí)序路徑上的大扇出信號(hào),通過(guò)復(fù)制驅(qū)動(dòng)降低扇出,改善延時(shí);對(duì)于關(guān)鍵時(shí)序路徑上的與DSP48相關(guān)的寄存器,可以根據(jù)時(shí)序需要將寄存器從SLICE中移入到DSP48內(nèi)部或從DSP48內(nèi)部移出到SLICE中;對(duì)于關(guān)鍵路徑上的與BRAM相關(guān)的寄存器,可以根據(jù)時(shí)序需要將寄存器從SLICE中移入到BRAM內(nèi)部或從BRAM內(nèi)部移出到SLICE中。3.2設(shè)計(jì)流程從圖中可以看出:(1)Vivado設(shè)計(jì)套件提供了一個(gè)環(huán)境,該環(huán)境用于配置、實(shí)現(xiàn)、驗(yàn)證和集成IP。(2)通過(guò)Vivado提供的IP目錄,就可以快速地對(duì)XilinxIP、第三方IP和用戶IP進(jìn)行例化和配置。IP的范圍包括:邏輯、嵌入式處理器、數(shù)字信號(hào)處理(DigitalSignalProcessing,DSP)模塊或者基于C的DSP算法設(shè)計(jì)。一方面,將用戶IP進(jìn)行封裝,并且使封裝的IP符合IP-XACT協(xié)議。這樣,就可以在VivadoIP目錄中使用它;另一方面,XilinxIP利用AXI4互連標(biāo)準(zhǔn),從而實(shí)現(xiàn)更快速的系統(tǒng)級(jí)集成。在設(shè)計(jì)中,設(shè)計(jì)者可以通過(guò)RTL或者網(wǎng)表格式使用這些已經(jīng)存在的IP。Vivado系統(tǒng)級(jí)設(shè)計(jì)流程圖3.2設(shè)計(jì)流程(3)可以在設(shè)計(jì)流程的任意一個(gè)階段,對(duì)設(shè)計(jì)進(jìn)行分析和驗(yàn)證。(4)對(duì)設(shè)計(jì)進(jìn)行分析,包括:邏輯仿真、I/O和時(shí)鐘規(guī)劃、功耗分析、時(shí)序分析、設(shè)計(jì)規(guī)則檢查(DesignRuleCheck,DRC)、設(shè)計(jì)邏輯的可視化、實(shí)現(xiàn)結(jié)果的分析和修改以及編程和調(diào)試。(5)通過(guò)AMBAAXI4互連協(xié)議,VivadoIP集成器環(huán)境使得設(shè)計(jì)者能夠?qū)⒉煌腎P組合在一起。設(shè)計(jì)者可以使用塊圖風(fēng)格的接口交互式地配置和連接IP,并且可以像原理圖那樣,通過(guò)繪制DRC助手很容易地將整個(gè)接口連接在一起。然后,對(duì)這些IP塊設(shè)計(jì)進(jìn)行封裝,將其當(dāng)作單個(gè)的設(shè)計(jì)源。通過(guò)在一個(gè)設(shè)計(jì)工程或者在多個(gè)工程之間進(jìn)行共享,來(lái)使用設(shè)計(jì)塊。(6)VivadoIP集成器環(huán)境是主要的接口,通過(guò)使用Zynq器件或者M(jìn)icroBlaze處理器,創(chuàng)建嵌入式處理器設(shè)計(jì)。Vivado設(shè)計(jì)套件也集成了傳統(tǒng)的XPS,用于創(chuàng)建、配置和管理MicroBlaze微處理器軟核。在VivadoIDE環(huán)境中,集成和管理這些核。如果設(shè)計(jì)者選擇編輯XPS的源設(shè)計(jì),將自動(dòng)啟動(dòng)XPS工具。設(shè)計(jì)者也可以將XPS作為一個(gè)單獨(dú)的工具運(yùn)行,然后將最終的輸出文件作為VivadoIDE環(huán)境下的源文件。在VivadoIDE環(huán)境中,XPS不能用于Zynq器件,而是使用新的IP集成器環(huán)境。3.2設(shè)計(jì)流程(7)對(duì)于數(shù)字信號(hào)處理方面的應(yīng)用,Vivado提供了兩種設(shè)計(jì)方法:①使用XilinxSystemGenerator建模數(shù)字信號(hào)處理:Vivado設(shè)計(jì)套件集成了XilinxSystemGenerator工具,用于實(shí)現(xiàn)DSP的功能。當(dāng)設(shè)計(jì)者編輯一個(gè)DSP源設(shè)計(jì)時(shí),自動(dòng)啟動(dòng)SystemGenerator。設(shè)計(jì)者可以將SystemGenerator作為一個(gè)獨(dú)立運(yùn)行的工具,并且將其最終的輸出文件作為VivadoIDE的源文件。②使用高級(jí)綜合工具(High-LevelSynthesis,HLS)建模數(shù)字信號(hào)處理:Vivado設(shè)計(jì)套件集成了VivadoHLS,它提供了基于C語(yǔ)言的DSP功能,來(lái)自VivadoHLS的RTL輸出,作為VivadoIDE的RTL源文件。在VivadoIP封裝器中,將RTL的輸出封裝成符合IP-XACT標(biāo)準(zhǔn)的IP。這樣,在VivadoIP目錄中就變成了可用的IP。設(shè)計(jì)者也可以在SystemGenerator邏輯中使用VivadoHLS邏輯模塊。(8)Vivado設(shè)計(jì)套件中包含Vivado綜合、Vivado實(shí)現(xiàn)、Vivado時(shí)序分析、Vivado功耗分析和比特流生成。通過(guò)下面的一種方式:①VivadoIDE;②批處理Tcl腳本;③Vivado設(shè)計(jì)套件的TclShell;④VivadoIDETcl控制臺(tái)下,輸人Tcl命令。設(shè)計(jì)者就可以運(yùn)行整個(gè)的設(shè)計(jì)流程。3.2設(shè)計(jì)流程(9)設(shè)計(jì)者可以創(chuàng)建多個(gè)運(yùn)行,通過(guò)使用不同的綜合選項(xiàng)、實(shí)現(xiàn)選項(xiàng)、時(shí)序約束、物理約束和設(shè)計(jì)配置來(lái)進(jìn)行嘗試。這樣,可以幫助設(shè)計(jì)者改善設(shè)計(jì)結(jié)果,提高設(shè)計(jì)效率。

(10)Vivado集成開(kāi)發(fā)環(huán)境提供了I/O引腳規(guī)劃環(huán)境,用于將I/O端口分配到指定的封裝引腳上,或者分配到內(nèi)部晶圓的焊盤上。通過(guò)使用Vivado引腳規(guī)劃器內(nèi)的視圖和表格,設(shè)計(jì)者可以分析器件和設(shè)計(jì)相關(guān)的I/O數(shù)據(jù)。VivadoIDE提供了高級(jí)的布局規(guī)劃能力,用于幫助改善實(shí)現(xiàn)的結(jié)果。設(shè)計(jì)者可以將一個(gè)指定的邏輯,強(qiáng)迫放到芯片內(nèi)的某個(gè)特定區(qū)域。即:為了后面的運(yùn)行,通過(guò)交互的方式,鎖定到指定的位置或者布線。(11)VivadoIDE使設(shè)計(jì)者可以在對(duì)設(shè)計(jì)處理的每個(gè)階段,對(duì)設(shè)計(jì)進(jìn)行分析、驗(yàn)證和修改。通過(guò)對(duì)處理過(guò)程中所生成的中間結(jié)果進(jìn)行分析,設(shè)計(jì)者可以提高設(shè)計(jì)的性能。在將設(shè)計(jì)轉(zhuǎn)換成RTL后、綜合后和實(shí)現(xiàn)后,就可以運(yùn)行分析工具。(12)Vivado集成了Vivado仿真器,使得設(shè)計(jì)者可以在設(shè)計(jì)的每個(gè)階段,運(yùn)行行為級(jí)和結(jié)構(gòu)級(jí)的邏輯仿真。仿真器支持Verilog和VHDL混合模式仿真,并且以波形的形式顯示結(jié)果。此外,設(shè)計(jì)者也可以使用第三方的仿真器。(13)在VivadoIDE內(nèi),在對(duì)設(shè)計(jì)處理的每一個(gè)階段,設(shè)計(jì)者都可以對(duì)結(jié)果進(jìn)行交互分析。一些設(shè)計(jì)和分析特性包括:時(shí)序分析、功耗估計(jì)和分析、器件利用率統(tǒng)計(jì)、DRC、I/O規(guī)劃、布局規(guī)劃和交互布局,以及布線分析。(14)當(dāng)執(zhí)行實(shí)現(xiàn)過(guò)程后,對(duì)器件進(jìn)行編程。然后,在Vivado環(huán)境中對(duì)設(shè)計(jì)進(jìn)行分析。在RTL內(nèi)或者在綜合之后,很容易地識(shí)別調(diào)試信號(hào)。在RTL或者綜合網(wǎng)表中,插入和配置調(diào)試核。Vivado邏輯分析儀也可以進(jìn)行硬件驗(yàn)證。通過(guò)將接口設(shè)計(jì)成與Vivado仿真器一致,就可以使兩者共享波形視圖。Part3設(shè)計(jì)套件3.3Vivado設(shè)計(jì)套件采用28nm的半導(dǎo)體工藝,Xilinx公司推出了領(lǐng)先一代的硬件、軟件和I/O全面可編程的SoC—Zynq7000系列,在單芯片上將雙核ARMCortex-A9處理器系統(tǒng)(PS)與7系列Artix或KintexFPGA器件相同的可編程邏輯(PL)完美地結(jié)合在一起,在器件的架構(gòu)上具有以下的特點(diǎn):(1)處理器系統(tǒng)作為主設(shè)備負(fù)責(zé)為存儲(chǔ)器和通信外設(shè)等提供硬件支持,并且能夠在不對(duì)可編程邏輯部分加電或配置的情況下自主運(yùn)行,按照正常的軟件引導(dǎo)過(guò)程,從片內(nèi)的非易失存儲(chǔ)器ROM啟動(dòng),隨后執(zhí)行更復(fù)雜的引導(dǎo)載人程序。(2)可編程邏輯部分與處理器系統(tǒng)之間可以實(shí)現(xiàn)全面的互連傳輸,除了可以通過(guò)JTAG接口進(jìn)行配置外,也可以通過(guò)處理器配置訪問(wèn)端口載入部分或完整的配置??删幊踢壿嫴糠值钠骷軜?gòu)與7系列FPGA是完全相同的,所以在性能、規(guī)模和功耗上都有提高。Vivado設(shè)計(jì)套件提供了高度統(tǒng)一的設(shè)計(jì)環(huán)境,并配有全新的系統(tǒng)級(jí)和芯片級(jí)工具,構(gòu)建在共享、可擴(kuò)展的數(shù)據(jù)模型架構(gòu)和通用調(diào)試環(huán)境的基礎(chǔ)上。Vivado套件還是一款基于業(yè)界標(biāo)準(zhǔn)的開(kāi)放式環(huán)境,諸如AMBA?AXI4互聯(lián)、IP-XACTIP封裝元數(shù)據(jù)、工具命令語(yǔ)言(Tcl)、Synopsys設(shè)計(jì)約束(SDC)以及其他有助于設(shè)計(jì)流程滿足用戶需求的業(yè)界標(biāo)準(zhǔn)。Xilinx設(shè)計(jì)的Vivado套件支持各類可編程技術(shù)組合使用,并可擴(kuò)展到1億個(gè)ASIC等效門的設(shè)計(jì)。由于任何FPGA器件的集成設(shè)計(jì)套件的核心都是物理設(shè)計(jì)流程,包括綜合、布局規(guī)劃、布局布線、功耗和時(shí)序分析、優(yōu)化和ECO。所以后文結(jié)合物理設(shè)計(jì)流程分析Vivado設(shè)計(jì)套件的特性及超越前期的ISE軟件的優(yōu)越之處。3.3Vivado設(shè)計(jì)套件Xilinx公司利用Vivado設(shè)計(jì)打造了一個(gè)最先進(jìn)的設(shè)計(jì)實(shí)現(xiàn)流程,可以讓客戶更快地實(shí)現(xiàn)設(shè)計(jì)收斂。為了減少設(shè)計(jì)的迭代次數(shù)和總體設(shè)計(jì)時(shí)間,并提高整體生產(chǎn)力,Xilinx采用一個(gè)單一的、共享的、可擴(kuò)展的數(shù)據(jù)模型架構(gòu),建立其設(shè)計(jì)實(shí)現(xiàn)流程,這種框架也常見(jiàn)于當(dāng)今最先進(jìn)的ASIC設(shè)計(jì)環(huán)境。這種共享的、可擴(kuò)展的數(shù)據(jù)模型架構(gòu)可以讓實(shí)現(xiàn)流程中的綜合、仿真、布局規(guī)劃、布局布線等所有步驟在內(nèi)存數(shù)據(jù)模型上運(yùn)行,故在流程中的每一步都可以進(jìn)行調(diào)試和分析,這樣用戶就可在設(shè)計(jì)流程中盡早掌握關(guān)鍵設(shè)計(jì)指標(biāo)的情況,包括時(shí)序、功耗、資源利用和布線擁塞等。而且這些指標(biāo)的估測(cè)將在實(shí)現(xiàn)過(guò)程中隨著設(shè)計(jì)流程的推進(jìn)而趨向于更加精確。具體來(lái)說(shuō),這種統(tǒng)一的數(shù)據(jù)模型使Xilinx能夠?qū)⑵湫滦投嗑S分析布局布線引擎與套件的RTL綜合引擎、新型多語(yǔ)言仿真引擎,以及IP集成器(IPIntegrator)、引腳編輯器(PinEditor)、布局規(guī)劃器(FloorPlanner)、器件編輯器(DeviceEditor)等各工具緊密集成在一起??蛻艨梢酝ㄟ^(guò)使用該套件的全面交叉觀測(cè)功能來(lái)跟蹤并交叉觀測(cè)原理圖、時(shí)序報(bào)告、邏輯單元或其他視圖,直至HDL代碼中的給定問(wèn)題。這種可擴(kuò)展的數(shù)據(jù)模型架構(gòu)提供的緊密集成功能還增強(qiáng)了按鍵式流程的效果,從而可滿足用戶對(duì)工具實(shí)現(xiàn)最大自動(dòng)化、完成大部分工作的期望。同時(shí),這種模型還能夠滿足客戶對(duì)更高級(jí)的控制、更深入的分析以及掌控每個(gè)設(shè)計(jì)步驟進(jìn)程的需要。表3-3將FPGAVivado設(shè)計(jì)套件與原有的ISE設(shè)計(jì)軟件進(jìn)行了比較。3.3Vivado設(shè)計(jì)套件VivadoISE流程是一系列Tcl指令,運(yùn)行在單個(gè)存儲(chǔ)器中的數(shù)據(jù)庫(kù)上,靈活性和交互性更大流程由一系列程序組成,利用多個(gè)文件運(yùn)行和通信在存儲(chǔ)器中的單個(gè)共用數(shù)據(jù)模型可以貫穿整個(gè)流程運(yùn)行,允許做交互診斷、修正時(shí)序等許多事情:(1)模型改善速度;(2)減少存儲(chǔ)量;(3)交互的IP即插即用環(huán)境AXI4,IP_XACT流程的每個(gè)步驟要求不同的數(shù)據(jù)模型(NGC,NGD,NCD,NGM):(1)固定的約束和數(shù)據(jù)交換;(2)運(yùn)行時(shí)間和存儲(chǔ)量惡化;(3)影響使用的方便性共用的約束語(yǔ)言(XDC)貫穿整個(gè)流程:(1)約束適用于流程的任何級(jí)別;(2)實(shí)時(shí)診斷實(shí)現(xiàn)后的時(shí)序不能改變,對(duì)于交互診斷沒(méi)有反向兼容性

在流程各個(gè)級(jí)別產(chǎn)生報(bào)告—RobustTclAPIRTL通過(guò)位文件控制:(1)利用編制腳本,靈活的非項(xiàng)目潛能;(2)專門的指令行選項(xiàng)在流程的任何級(jí)別保存checkpoint設(shè)計(jì):(1)網(wǎng)表文件;(2)約束文件;(3)布局和布線結(jié)果在流程的各個(gè)級(jí)別只利用獨(dú)立的工具:(1)系統(tǒng)設(shè)計(jì):PlatformStudio,SystemGenerator(2)RTL:COREGenerator,ISim,PlanAhead(3)NGC/EDIF;PlanAheadtool(4)NCD:FPGAEditor,PowerAnalyzer,ISim,PlanAhead(5)Bitfile:ChipScope,iMPACTVivado與ISE對(duì)比3.3Vivado設(shè)計(jì)套件FPGA工具設(shè)計(jì)流程的變遷(b)2000年早期的流程(a)1990年的流程(c)現(xiàn)代FPGA流程3.3Vivado設(shè)計(jì)套件Vivado中的設(shè)計(jì)約束文件在采用SDC的約束格式外,要增加對(duì)FPGA的I/O引腳分配,從而構(gòu)成它的約束文件XDC。Vivado-XDCISE-ucf約束從整個(gè)系統(tǒng)的視角約束只限于FPGA可適應(yīng)大型設(shè)計(jì)項(xiàng)目約束定位在較小的設(shè)計(jì)項(xiàng)目在指定的層次搜索搜索整個(gè)設(shè)計(jì)層次網(wǎng)線名稱保持不變,任何階段都能找到不同設(shè)計(jì)階段網(wǎng)線net的名稱會(huì)改變分別對(duì)clk0、clk1等定義一套u(yù)cf約束不了不同的clk綜合和PAR兩者之間不影響綜合和PAR要用兩套約束Vivado與ISE的約束文件對(duì)比Part4調(diào)試過(guò)程3.4Vivado的調(diào)試過(guò)程對(duì)FPGA的調(diào)試,是一個(gè)反復(fù)迭代,直到滿足設(shè)計(jì)功能和設(shè)計(jì)時(shí)序的過(guò)程。對(duì)于FPGA這樣比較復(fù)雜數(shù)字系統(tǒng)的調(diào)試,就是將其分解成一個(gè)個(gè)很小的部分。然后,對(duì)設(shè)計(jì)中的每個(gè)很小的部分通過(guò)仿真或者調(diào)試進(jìn)行驗(yàn)證。這樣要比在一個(gè)復(fù)雜設(shè)計(jì)完成后,再進(jìn)行仿真或者調(diào)試的效率要高得多。本節(jié)通過(guò)Vivado提供的調(diào)試功能對(duì)設(shè)計(jì)進(jìn)行調(diào)試,并給出了調(diào)試的設(shè)計(jì)原理和方法策略。Vivado的調(diào)試方法有多種,具體的調(diào)試流程可能因硬件設(shè)施、項(xiàng)目需求和Vivado版本而有所不同,設(shè)計(jì)者可以通過(guò)使用下面的設(shè)計(jì)和調(diào)試方法,來(lái)保證設(shè)計(jì)的正確性:(1)RTL級(jí)的設(shè)計(jì)仿真;(2)實(shí)現(xiàn)后設(shè)計(jì)仿真;(3)系統(tǒng)內(nèi)調(diào)試。3.4Vivado的調(diào)試過(guò)程系統(tǒng)內(nèi)調(diào)試本節(jié)將詳細(xì)介紹一下系統(tǒng)內(nèi)調(diào)試方法。(1)系統(tǒng)內(nèi)邏輯設(shè)計(jì)調(diào)試:Vivado集成設(shè)計(jì)環(huán)境包含邏輯分析特性,使設(shè)計(jì)者可以對(duì)一個(gè)實(shí)現(xiàn)后的FPGA器件進(jìn)行系統(tǒng)內(nèi)調(diào)試。在系統(tǒng)內(nèi)對(duì)設(shè)計(jì)進(jìn)行調(diào)試的好處包括:在真正的系統(tǒng)環(huán)境下,以系統(tǒng)要求的速度,調(diào)試設(shè)計(jì)的時(shí)序準(zhǔn)確性和實(shí)現(xiàn)后的設(shè)計(jì)。系統(tǒng)內(nèi)調(diào)試的局限性包括:與使用仿真模型相比,稍微降低了調(diào)試信號(hào)的可視性,潛在地延長(zhǎng)了設(shè)計(jì)/實(shí)現(xiàn)/調(diào)試迭代的時(shí)間。這個(gè)時(shí)間取決于設(shè)計(jì)的規(guī)模和復(fù)雜度。通常,Vivado工具提供了不同的方法,用于調(diào)試設(shè)計(jì)。設(shè)計(jì)者可以根據(jù)需要,使用這些方法。(2)系統(tǒng)內(nèi)串行I/O設(shè)計(jì)調(diào)試:為了實(shí)現(xiàn)系統(tǒng)內(nèi)對(duì)串行I/O驗(yàn)證和調(diào)試,Vivado集成開(kāi)發(fā)環(huán)境包括一個(gè)串行的I/O分析特性。這樣,設(shè)計(jì)者可以在基于FPGA的系統(tǒng)中,測(cè)量并且優(yōu)化高速串行I/O連接。這個(gè)特性,可以解決大范圍的系統(tǒng)內(nèi)調(diào)試和驗(yàn)證問(wèn)題,范圍從簡(jiǎn)單的時(shí)鐘和連接問(wèn)題,到復(fù)雜的余量分析和通道優(yōu)化問(wèn)題。與外部測(cè)量?jī)x器技術(shù)相比,使用Vivado內(nèi)的串行I/O分析儀可以測(cè)量接收器對(duì)接收信號(hào)進(jìn)行均衡后的信號(hào)質(zhì)量。這樣就可以在Tx到Rx通道的最優(yōu)點(diǎn)進(jìn)行測(cè)量。因此,就可以確保得到真實(shí)和準(zhǔn)確的數(shù)據(jù)。Vivado工具提供了用于生成設(shè)計(jì)的工具。該設(shè)計(jì)應(yīng)用吉比特收發(fā)器端點(diǎn)和實(shí)時(shí)軟件進(jìn)行測(cè)量,幫助設(shè)計(jì)者優(yōu)化高速串行I/O通道。3.4Vivado的調(diào)試過(guò)程系統(tǒng)內(nèi)調(diào)試系統(tǒng)內(nèi)調(diào)試包括三個(gè)重要的階段:(1)探測(cè)階段(Probingphase):用于標(biāo)識(shí)需要對(duì)設(shè)計(jì)中的哪個(gè)信號(hào)進(jìn)行探測(cè),以及探測(cè)的方法;(2)實(shí)現(xiàn)階段(Implementationphase):實(shí)現(xiàn)設(shè)計(jì),包括將額外的調(diào)試IP連接到被標(biāo)識(shí)為探測(cè)的網(wǎng)絡(luò);(3)分析階段(Analysisphase):通過(guò)與設(shè)計(jì)中的調(diào)試IP進(jìn)行交互,調(diào)試和驗(yàn)證設(shè)計(jì)功能。在探測(cè)階段分為兩個(gè)步驟:(1)識(shí)別需要探測(cè)的信號(hào)或者網(wǎng)絡(luò)。(2)確認(rèn)將調(diào)試核添加到設(shè)計(jì)中的方法。很多時(shí)候,設(shè)計(jì)者決定需要探測(cè)的信號(hào),以及探測(cè)這些信號(hào)的方法。它們之間互相影響。設(shè)計(jì)者可以手工添加調(diào)試IP元件例化到設(shè)計(jì)源代碼中(稱為HDL例化探測(cè)流程),設(shè)計(jì)者也可以讓Vivado工具自動(dòng)地將調(diào)試核插入到綜合后的網(wǎng)表中(稱為網(wǎng)表插入探測(cè)流程)3.4Vivado的調(diào)試過(guò)程調(diào)試目標(biāo)推薦的調(diào)試編程流程在HDL源代碼中識(shí)別調(diào)試信號(hào),同時(shí)保留靈活性,用于流程后面使能或者禁止調(diào)試(1)在HDL中,使用mark_debug屬性標(biāo)記需要調(diào)試的信號(hào)(2)使用SetupDebug向?qū)?lái)引導(dǎo)設(shè)計(jì)者通過(guò)網(wǎng)表插入探測(cè)流程在綜合后的設(shè)計(jì)網(wǎng)表中識(shí)別調(diào)試網(wǎng)絡(luò),不需要修改HDL源代碼(1)使用MarkDebug單擊菜單選項(xiàng),選擇在綜合設(shè)計(jì)的網(wǎng)表中需要調(diào)試的網(wǎng)絡(luò)(2)使用SetupDebug向?qū)?lái)引導(dǎo)設(shè)計(jì)者通過(guò)網(wǎng)表插入探測(cè)流程使用Tcl命令,自動(dòng)調(diào)試探測(cè)流程(1)使用set_propertyTcl命令,在調(diào)試網(wǎng)絡(luò)上設(shè)置mark_debug屬性(2)使用網(wǎng)表插入探測(cè)流程Tcl命令,創(chuàng)建調(diào)試核,并將其連接到調(diào)試網(wǎng)絡(luò)明確在HDL語(yǔ)言中,將信號(hào)添加到ILA調(diào)試核中(1)識(shí)別用于調(diào)試的HDL信號(hào)(2)使用HDL例化探測(cè)流程產(chǎn)生和例化一個(gè)集成邏輯分析儀(ILA)核,并且將它連接到設(shè)計(jì)中的調(diào)試信號(hào)不同調(diào)試方法的優(yōu)勢(shì)和權(quán)衡3.4Vivado的調(diào)試過(guò)程創(chuàng)建新的FIFO調(diào)試工程本節(jié)將創(chuàng)建一個(gè)新的FIFO調(diào)試工程。創(chuàng)建新的FIFO調(diào)試工程的步驟主要包括:(1)在Vivado主界面主菜單下,選擇File→NewProject。(2)出現(xiàn)NewProject-CreateaNewVivadoProject對(duì)話框界面。(3)單擊Next按鈕。(4)出現(xiàn)NewProject-ProjectName對(duì)話框界面。按下面參數(shù)設(shè)置:①Projectname:fifo_vhdl或者fifo_verilog。注:使用VHDL的讀者設(shè)置名字為fifo_vhdl,使用Verilog的讀者設(shè)置名字為fifo_verilog。②Projectlocation:E:/vivado_example。(5)單擊Next按鈕。(6)出現(xiàn)NewProject-ProjectType對(duì)話框界面,在該界面內(nèi)選擇RTLProject。選中Donotsecifysourceatthistime前的復(fù)選框。(7)單擊Next按鈕。(8)出現(xiàn)NewProject-DefaultPart對(duì)話框界面,在該界面內(nèi)選擇:xc7al00tcsg324-l。(9)單擊Next按鈕。(10)出現(xiàn)NewProject-NewProjectSummary對(duì)話框界面。(11)單擊Finish按鈕??傮w流程介紹與回顧LED閃爍示例新建工程設(shè)計(jì)輸入功能仿真分析與綜合約束輸入設(shè)計(jì)實(shí)現(xiàn)下載比特流LED閃爍示例LED閃爍示例新建工程打開(kāi)軟件,點(diǎn)擊“createProject”創(chuàng)建一個(gè)新的工程。LED閃爍示例輸入工程的名稱和路徑,名稱可以貼近這次工程的功能,例如這次的”led_twinkle“路徑地址不包含中文、空格或者其他一些特殊符號(hào)。這里會(huì)默認(rèn)勾選了“Createprojectsubdirectory”選項(xiàng),Vivado會(huì)在所選工程目錄下自動(dòng)創(chuàng)建一個(gè)與工程名同名的文件夾,用于存放工程內(nèi)的各種文件。Vivado會(huì)自動(dòng)管理工程文件夾內(nèi)的各種工程文件,并創(chuàng)建相應(yīng)的子目錄,這為大家的開(kāi)發(fā)工作帶來(lái)了很大的便捷。繼續(xù)點(diǎn)擊“Next”,接下來(lái)是工程類型的選擇,這里選擇“RTLProject”,如左圖所示:新建工程LED閃爍示例新建工程選擇RTLProject。各個(gè)選項(xiàng)的含義:“RTLProject”是指按照正常設(shè)計(jì)流程所選擇的類型,這也是常用的一種類型,“RTLProject”下的“Donotspecifysourcesatthistime”用于設(shè)置是否在創(chuàng)建工程向?qū)У倪^(guò)程中添加設(shè)計(jì)文件,如果勾選后,則不創(chuàng)建或者添加設(shè)計(jì)文件,下面一個(gè)不用管?!癙ost-synthesisProject”在導(dǎo)入第三方工具所產(chǎn)生的綜合后網(wǎng)表時(shí)才選擇;“I/OPlanningProject”一般用于在開(kāi)始RTL設(shè)計(jì)之前,創(chuàng)建一個(gè)用于早期IO規(guī)劃和器件開(kāi)發(fā)的空工程;“ImportedProject”用于從ISE、XST或SynopsysSynplify導(dǎo)入現(xiàn)有的工程源文件;“ExampleProject”是指創(chuàng)建一個(gè)Vivado提供的工程模板。LED閃爍示例新建工程選擇了“RTLProject”后,點(diǎn)擊“Next”,進(jìn)入添加源文件頁(yè)面。如果勾選“RTLProject”下的“Donotspecifysourcesatthistime”,則不會(huì)出現(xiàn)添加源文件的界面。在彈出添加源文件的界面后,可以在此處創(chuàng)建/添加源文件,當(dāng)然也可以直接點(diǎn)擊“Next”,創(chuàng)建完工程后再創(chuàng)建/添加源文件。這里先不添加,直接點(diǎn)擊“Next”,如右圖所示:LED閃爍示例新建工程接下來(lái)是添加約束文件,直接點(diǎn)擊“Next”,在創(chuàng)建完工程后創(chuàng)建/添加約束文件.LED閃爍示例新建工程接下來(lái)是選擇器件型號(hào),“Family”一欄選擇“Artix-7”、“Package”一欄選擇“fgg484”(A7_200T時(shí)選擇"fbg484”)、“Speed”一欄選擇“-2”,此時(shí)下面的器件列表就會(huì)自動(dòng)篩選出符合以上設(shè)置條件的器件。

(也可根據(jù)實(shí)際進(jìn)行選擇)

LED閃爍示例新建工程檢查一下,finish

LED閃爍示例新建工程進(jìn)入工程主界面LED閃爍示例設(shè)計(jì)輸入創(chuàng)建頂層文件,如圖點(diǎn)“+”。LED閃爍示例設(shè)計(jì)輸入如圖選擇第二個(gè)添加設(shè)計(jì)文件,next。LED閃爍示例設(shè)計(jì)輸入如圖點(diǎn)創(chuàng)建文件LED閃爍示例設(shè)計(jì)輸入填寫源文件名稱“l(fā)ed_twinkle”,可根據(jù)實(shí)際文件更改,然后ok。LED閃爍示例設(shè)計(jì)輸入這時(shí)可以看到創(chuàng)建的源文件,finish。LED閃爍示例設(shè)計(jì)輸入然后“OK”這個(gè)窗口用于設(shè)置源文件的模塊名稱和端口列表,Vivado會(huì)根據(jù)在此窗口中的設(shè)置,自動(dòng)地在HDL源文件中寫入相應(yīng)的verilog語(yǔ)句。我們會(huì)手動(dòng)輸入代碼,所以這里不作任何設(shè)置,直接點(diǎn)擊OK即可。LED閃爍示例設(shè)計(jì)輸入若出現(xiàn)此窗口“YES”LED閃爍示例設(shè)計(jì)輸入這時(shí)“Sources”窗口就出現(xiàn)了源文件。LED閃爍示例LED燈閃爍代碼moduleled_twinkle( input sys_clk, //系統(tǒng)時(shí)鐘

input sys_rst_n, //系統(tǒng)復(fù)位,低電平有效

output [1:0]led //LED燈);

//regdefinereg[25:0]cnt;//*****************************************************//**maincode//*****************************************************//對(duì)計(jì)數(shù)器的值進(jìn)行判斷,以輸出LED的狀態(tài)assignled=(cnt<26'd2500_0000)?2'b01:2'b10;//assignled=(cnt<26'd5)?2'b01:2'b10;//僅用于仿真//計(jì)數(shù)器在0~5000_000之間進(jìn)行計(jì)數(shù)always@(posedgesys_clkornegedgesys_rst_n)begin if(!sys_rst_n) cnt<=26'd0; elseif(cnt<26'd5000_0000)//elseif(cnt<26'd10)//僅用于仿真

cnt<=cnt+1'b1; else cnt<=26'd0;endendmodule雙擊打開(kāi)源文件,將其中的代碼替換為如下Led登閃爍代碼。LED閃爍示例設(shè)計(jì)輸入LED閃爍示例設(shè)計(jì)輸入可以調(diào)整字體大小,如圖。LED閃爍示例設(shè)計(jì)輸入LED閃爍示例設(shè)計(jì)輸入寫完代碼記得保存,如圖按鈕。保存后vivado會(huì)進(jìn)行語(yǔ)法檢查。在大多數(shù)情況下,VivadoIDE會(huì)自動(dòng)識(shí)別設(shè)計(jì)的頂層模塊,當(dāng)然,用戶也可以手動(dòng)指定頂層模塊。從“Sources”窗口的右擊菜單中選擇“SetasTop”來(lái)手動(dòng)定義頂級(jí)模塊LED閃爍示例功能仿真1、我們開(kāi)始在VivadoIDE中進(jìn)行仿真,首先創(chuàng)建一個(gè)TestBench。我們點(diǎn)擊“Sources”窗口中的

“+”號(hào)(AddSources命令),在彈出的窗口中選擇“AddorCreateSimulationSources”,next.LED閃爍示例功能仿真直接"createfile"LED閃爍示例功能仿真輸入TestBench的文件名稱“tb_led_twinkle”,一般測(cè)試文件會(huì)在源文件名稱前加tb_。這個(gè)文件只用于仿真,不能用于設(shè)計(jì)的綜合和實(shí)現(xiàn)。然后“OK”,”finish”LED閃爍示例功能仿真“OK”完成TestBench源文件的創(chuàng)建如果彈出窗口直接Yes.

這里就可以看到創(chuàng)建的文件了。LED閃爍示例功能仿真雙擊替換成左邊的代碼。為了讓讀者能夠更好的理解,這里我們就簡(jiǎn)單介紹一下TestBench源代碼。進(jìn)行仿真首先要規(guī)定時(shí)間單位,我們建議大家最好在Testbench里面統(tǒng)一規(guī)定時(shí)間單位,不要在工程代碼里定義,因?yàn)椴煌哪K如果時(shí)間單位不同可能會(huì)為仿真帶來(lái)一些問(wèn)題。代碼的第1行的timescale是Verilog語(yǔ)法中的不可綜合語(yǔ)法,用于定義仿真的時(shí)間表示仿真的單位時(shí)間為1ns,精度為1ps,這是Xilinx官方推薦的仿真單位時(shí)間和精度。代碼的第3行就是TestBench的模塊名定義,第6行至第10行是我們的數(shù)據(jù)類型定義,到了第13~18行是信號(hào)的初始化,第21行是時(shí)鐘信號(hào)的生成,50MHz時(shí)鐘對(duì)應(yīng)周期為20ns,第24行是被測(cè)模塊的調(diào)用。`timescale1ns/1ps

moduletb_led_twinkle();//輸入regsys_clk;regsys_rst_n;//輸出wire[1:0]led;//信號(hào)初始化initialbegin sys_clk=1'b0; sys_rst_n=1'b0; #200 sys_rst_n=1'b1;end//生成時(shí)鐘always#10sys_clk=~sys_clk;//例化待測(cè)設(shè)計(jì)led_twinkleu_led_twinkle( .sys_clk(sys_clk), .sys_rst_n(sys_rst_n), .led(led));endmoduleLED閃爍示例功能仿真在開(kāi)始仿真之前,大家有一點(diǎn)需要注意,我們?cè)赩ivado軟件中實(shí)現(xiàn)的功能是LED閃爍效果,它的間隔時(shí)間是500ms,如果我們想要仿真這個(gè)功能,那么我們仿真軟件運(yùn)行時(shí)間最低就是500ms。這500ms在我們看來(lái)是很短很短的,而對(duì)仿真軟件來(lái)說(shuō)是很漫長(zhǎng)的,畢竟我們的仿真時(shí)間單位可是1ns。為了便于我們仿真,這里我們需要稍微改動(dòng)“l(fā)ed_twinkle.v”文件的代碼,將計(jì)時(shí)器counter的最大計(jì)時(shí)值設(shè)為10,如下圖所示:到led_twinkle.v文件改一下注釋位置即可。待仿真結(jié)束后進(jìn)行分析和綜合時(shí),再將標(biāo)記為“僅用于仿真的”的語(yǔ)句注釋掉或者直接刪除。LED閃爍示例功能仿真如圖點(diǎn)擊進(jìn)行仿真。LED閃爍示例功能仿真到了仿真界面

1、下面分別介紹仿真界面中的各個(gè)子窗口:LED閃爍示例功能仿真(1)Scope窗口:Scope(范圍)是HDL設(shè)計(jì)的層次劃分。在Scope窗口中,您可以看到設(shè)計(jì)層次結(jié)構(gòu)。當(dāng)大家選擇了一個(gè)Scope層次結(jié)構(gòu)中的作用域時(shí),該作用域內(nèi)的所有HDL對(duì)象,包括reg、wire等都會(huì)出現(xiàn)在“Objects”窗口中。大家可以在“Objects”窗口中選擇HDL對(duì)象,并將它們添加到波形查看器中。(2)Object窗口:“Objects”窗口會(huì)顯示在“Scopes”窗口中選擇的范圍內(nèi)的所有HDL仿真對(duì)象。例如,我們?cè)赟cope窗口中選擇頂層模塊“l(fā)ed_twinkle”,在“Objects”窗口中就會(huì)自動(dòng)顯示出led_twinkle模塊中所有的對(duì)象??梢钥闯?,在led_twinkle頂層模塊中除了頂層端口sys_clk、sys_rst_n和led之外,還包括在內(nèi)部定義的計(jì)數(shù)器cnt。如圖所示:LED閃爍示例功能仿真右擊cnt,添加到波形窗口中的“cnt”計(jì)數(shù)器如下圖所示:LED閃爍示例功能仿真圖中可以放大縮小波形圖。LED閃爍示例功能仿真一般來(lái)說(shuō),每當(dāng)我們進(jìn)行一次仿真時(shí),都會(huì)把當(dāng)前波形的配置信息保存下來(lái),包括波形窗口中具有哪些信號(hào)等等,以便在下一次打開(kāi)仿真器進(jìn)行仿真時(shí),繼續(xù)使用上一次仿真的配置信息。我們點(diǎn)擊波形窗口中的保存按鈕,如下圖所示:LED閃爍示例功能仿真之后會(huì)彈出“SaveWaveform”對(duì)話框,提示用戶將當(dāng)前波形配置信息保存為“.wcfg”后綴的文件,且工具已經(jīng)自動(dòng)地輸入了文件名“tb_led_twinkle_behav”,文件的保存目錄也被工具自動(dòng)設(shè)置為了當(dāng)前的工程目錄,所以我們保持其默認(rèn)狀態(tài)即可,直接點(diǎn)擊“Save”。如下圖所示:LED閃爍示例功能仿真這里有個(gè)地方需要大家注意下,wcfg文件只是包含波形窗口的配置信息,并不包含波形的數(shù)據(jù)文件,波形的數(shù)據(jù)文件被存儲(chǔ)在另外的文件中。在點(diǎn)擊保存后會(huì)彈出一個(gè)消息框,詢問(wèn)用戶是否將剛剛創(chuàng)建的波形配置信息文件tb_led_twinkle_behav.wcfg添加到當(dāng)前工程中,我們直接點(diǎn)擊“Yes”即可。如下圖所示:LED閃爍示例功能仿真仿真工具欄:仿真工具欄包含運(yùn)行各個(gè)仿真動(dòng)作的命令按鈕。從左至右依次是:?Restart:將仿真時(shí)間重置為零,此時(shí)波形窗口中原有的波形都會(huì)被清除。下次執(zhí)行仿真時(shí),會(huì)從0時(shí)刻重新開(kāi)始。?Runall:運(yùn)行仿真,直到其完成所有事件或遇到HDL語(yǔ)句中的stop或stop或stop或finish命令為止。注意,如果沒(méi)有在TestBench語(yǔ)句中加入stop或stop或stop或finish命令,當(dāng)點(diǎn)擊Runall命令時(shí),仿真器會(huì)無(wú)休止地一直仿真下去,除非用戶點(diǎn)擊仿真工具欄中的“Break”按鈕來(lái)手動(dòng)地結(jié)束仿真。但是這里有個(gè)地方需要注意,如果此時(shí)需要仿真的設(shè)計(jì)比較復(fù)雜,則仿真器在運(yùn)行仿真時(shí)會(huì)耗費(fèi)電腦大量的CPU和內(nèi)存資源,此時(shí)有可能會(huì)造成電腦卡頓甚至死機(jī)的情況。所以,如果設(shè)計(jì)比較復(fù)雜,且沒(méi)有在TestBench語(yǔ)句中加入stop或stop或stop或finish命令,最好不要輕易點(diǎn)擊Runall命令。?RunFor:運(yùn)行特定的一段時(shí)間。緊隨在后面的兩個(gè)文本框用于設(shè)定仿真時(shí)長(zhǎng)的數(shù)值大小和時(shí)間單位。?Step:按步運(yùn)行仿真,每一步仿真一個(gè)HDL語(yǔ)句。?Break:暫停當(dāng)前仿真。?Relaunch:重新編譯仿真源并重新啟動(dòng)仿真。在使用Vivado仿真器來(lái)調(diào)試HDL設(shè)計(jì)時(shí),您可能會(huì)根據(jù)仿真結(jié)果來(lái)對(duì)您的HDL源代碼進(jìn)行修改。在修改完HDL源代碼后,可以點(diǎn)擊Relaunch按鈕來(lái)重新加載UUT設(shè)計(jì)和TestBench,以重新對(duì)修改后的HDL源代碼進(jìn)行仿真。此時(shí)就不需要再關(guān)閉并重新打開(kāi)仿真器了。介紹完各個(gè)窗口和命令按鈕的使用后,我們就可以開(kāi)始仿真了。在剛打開(kāi)仿真器時(shí),仿真器會(huì)首先將TestBench中的信號(hào)加入到波形窗口中,并執(zhí)行一段時(shí)長(zhǎng)的仿真,仿真的時(shí)長(zhǎng)由Settings設(shè)置窗口中的參數(shù)值指定,如下頁(yè)圖所示:LED閃爍示例功能仿真LED閃爍示例功能仿真可以看到,仿真器啟動(dòng)后默認(rèn)立即執(zhí)行的仿真時(shí)長(zhǎng)是1000ns。由于我們是在默認(rèn)立即執(zhí)行仿真結(jié)束之后,才加入了“cnt”計(jì)數(shù)器信號(hào),所以新加入的cnt信號(hào)并沒(méi)有波形。此時(shí)我們需要將仿真時(shí)刻重置為0,重新開(kāi)始仿真。點(diǎn)擊Restart按鈕,波形窗口中的當(dāng)前仿真時(shí)刻點(diǎn)(黃色標(biāo)尺)就會(huì)回歸到0ns,且原先的所有波形都被清除,如下圖所示:LED閃爍示例功能仿真此時(shí)點(diǎn)擊仿真工具欄中的RunFor按鈕,默認(rèn)仿真時(shí)長(zhǎng)是10us,如下圖所示:此時(shí)就可以看到波形窗口中就出現(xiàn)了波形,我們點(diǎn)擊波形窗口中的顯示工具欄中的“ZoomFit”按鈕,波形就會(huì)自動(dòng)縮放到整個(gè)窗口,如下圖所示:LED閃爍示例功能仿真cnt信號(hào)默認(rèn)顯示為16進(jìn)制,為了方便觀察,我們將其設(shè)置為10進(jìn)制。對(duì)cnt信號(hào)右鍵,如圖。LED閃爍示例功能仿真修改顯示后的波形如下圖所示:

這里可以看出,cnt每計(jì)數(shù)到10,led就翻轉(zhuǎn)一次。證明我們的HDL設(shè)計(jì)達(dá)到了我們想要的功能。

至此,仿真結(jié)束。LED閃爍示例分析與綜合功能仿真通過(guò)之后,就可以對(duì)設(shè)計(jì)進(jìn)行分析(Elaborated)了。我們首先將源代碼中為仿真而修改的部

分恢復(fù)成原來(lái)的代碼,如圖所示:LED閃爍示例分析與綜合點(diǎn)擊“FlowNavigator”窗口中的“OpenElaboratedDesign”按鈕,如圖所示此時(shí),Vivado會(huì)編譯RTL源文件進(jìn)行全面的語(yǔ)法檢查,并在Messages窗口中給出相應(yīng)的“Error”和“Warning”。打開(kāi)分析后(Elaborated)的設(shè)計(jì)后,Vivado會(huì)生成頂層原理圖視圖,并在默認(rèn)viewlayout中顯示設(shè)計(jì),如下圖所示:LED閃爍示例分析與綜合可以看到,此時(shí)窗口布局已經(jīng)發(fā)生了變化,新增了Schematic(原理圖)、Netlist(網(wǎng)表)等窗口。此時(shí),底部的Messages窗口會(huì)顯示出現(xiàn)在分析階段產(chǎn)生的消息,如下圖所示:LED閃爍示例分析與綜合可以看出,我們的led_twinkle源代碼并沒(méi)有產(chǎn)生警告或者錯(cuò)誤。此時(shí),我們也可以進(jìn)行I/O引腳分配,在右上角的窗口布局(Layout)選擇器中選擇“I/OPlaning”,如下圖所示:LED閃爍示例分析與綜合IO規(guī)劃相關(guān)的子窗口,如下圖所示:LED閃

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論