Quartus和Vivado簡單教程
由於兩個開發環境經常都能遇到,用了一個忘了另一個,這裡詳細描述一下兩個軟體開發的使用流程。
Quartus篇
1、創建一個工程
建議不要關閉quartus的歡迎界面,因為它很好用呀!直接點擊New Project Wizard 就可以創建一個新的工程
2、選擇目錄,填寫項目名稱
由於第三個框框要填頂層模塊的名稱,所以建議把項目名稱命名成頂層的名稱(填了一個,另一個自動填充,跟後面的testbench一樣)
3、選擇器件
4、選擇模擬器
一般新版的quartus自帶modelsim-altera,建議使用,調用獨立modelsim的話,每次都要編譯庫,特別慢,modelsim-altera已經編譯好了(如何使用modelsim獨立模擬可以參見專欄另一篇文章)
這時就已經建立完一個空的工程了,一般我都是在別的編輯器寫好代碼來quartus進行其他的操作,所以這裡就選擇添加文件,如果使用quartus的編輯器,直接new一個verilog HDL file/VHDL file就行了
5添加文件
下拉project navigator 選擇files,然後右鍵files文件夾添加文件,選擇目錄添加文件,多個文件它自己就直接添加了,單個文件需要點擊add,完成添加,這裡注意,建議把源代碼單獨放到一個文件夾裏,如果testbench文件也在這個目錄的話,不要添加它,因為它不需要綜合,現在添加的都要綜合,不然每次改動testbench項目都會過期,需要重新編譯,testbench在模擬的時候添加就可以了
6、返回層次級界面,就是添加files之前的目錄
雙擊你個頂層模塊名,它就可以自動打開相應的文件了,如果你一開始設置的頂層模塊名和實際的不一致,就是第2條提到的頂層模塊名,這時只要右鍵,setting,general,修改top-level entity保持一致就可以了
修改一致以後雙擊頂層,就可以打開代碼了
7、分析和綜合
設計流程的所有流程幾乎都在這個task窗口,直接點擊相應的功能即可,分析和綜合完成之後,你的各個模塊的層次結構就可以顯示在project navigator窗口了,每個模塊包含了那些模塊,層次特別清晰,下拉三角就可以展開了
8、功能模擬
綜合完成之後就可以功能模擬了,先要添加testbench,打開setting(右鍵頂層,或者工具欄assignments找到,下文中介紹過的選項卡就不再詳細說在哪了)找到eda tool setting中的simulation,選擇工具和語言,然後點擊compile testbench,選擇文件
同樣需要文件名和模塊名,建議保持一致,填寫兩個名字,添加文件,其他默認,一路確定就好了。
然後點擊tools,run simulation tool,rtl simulation,就可以自動調用你前面設置的模擬器了
如果需要調用獨立的modelsim,需要打開tools,options,找到EDA tool options設置modelsim的目錄即可
然後即可等待模擬運行。
注意:quartus沒有嵌入的模擬器,只有modelsim-altera,另外,同一個工程之只能打開一個modelsim,再開會報錯
9、時序分析
點擊工具欄中那個表一樣的圖標就可以打開(但是隻有佈局布線完成才能生成時序網表,查看報告)
首先創建一個時序網表,讀取或者添加sdc文件(約束文件)
有sdc文件的可以直接read,如需要新建的,點工具欄constraints,create clock,起一個名字,設置週期(默認百分之五十佔空比)選擇目標,然後點擊list會列出所有目標,雙擊相應的項,然後點擊tasks欄最下方的wirte sdc file即可保存剛才建立的約束,此時即可查看相應的報告
生成了約束之後(也可以直接使用tcl命令建立sdc文件),為佈局布線添加約束,setting,time quest timing analyzer添加sdc文件,重新編譯運行即可按照相應的約束進行
然後裏面有各種詳細的時序違規的分析,這裡就不再展開,後續的下載調試,因為我都是在xilinx上實現的,這裡使用較少就不誤導了
Vivado篇
這裡vivado自帶說明書(xilinx documentation navigator)裡面有相應的所有教程,左邊的design hub view裡面的vivado design hubs有所有的設計流程的使用教程,簡單易用,下面簡單介紹一下使用流程
1、創建工程
起名字(這裡可以隨便起,比quartus強),添加源文件(testbench調整為 模擬,其他的模擬&綜合),添加IP,添加約束,選擇器件
2、添加IP核
在project manager目錄下打開IP catalog添加IP(這裡以常用的時鐘管理為例)
選擇系統時鐘作為輸入,選擇兩個輸出時鐘,可以修改名字,設置埠
把它存在默認目錄下就好,vivado的默認目錄很人性化,然後確定生成IP
選擇out of context per IP,這裡指的單獨綜合,global即和整體設計一起綜合,別的地方有改動IP也要重新綜合
然後打開IP source選項卡,就可以看到生成的文件,包括模板,約束等一系列文件,打開模板複製埠到設計中就可以完成例化了
簡單瀏覽
在軟體的左邊顯示了設計的所有流程,按照順序即可進行相應的步驟
3、RTL analysis
第一步首先進行RTL分析,進行詳細描述,可以生成RTL視圖,個人感覺沒啥用,因為我感覺我沒怎麼用過它
4、simulation
選擇好testbench文件之後可以直接進行模擬,沒有quartus那麼麻煩,第一步如果沒有添加的話,可以選擇創建相應的文件,在project manager裏add source 即可選擇添加對應的文件,包括約束,源文件,模擬文件等,這裡比較好的是創建完就不用另外添加,quartus需要自己添加模擬文件和約束文件。
設置好模擬文件之後,點擊run simulation可以看到5種模擬,分別是功能模擬,綜合後功能,綜合後時序,實現後功能,實現後時序,這裡一般只使用功能模擬,時序的話進行綜合後功能模擬就可以了,其他的運行時間特別慢不建議使用,還不如直接debug。
5、綜合
第一次的話首先run synthesis,這裡可以看到clk IP核是不參與整體設計的綜合的,因為採用的是OOC設置,完成之後open synthesized design,進行約束
第一步,時序約束,直接edit timing constraints就可添加時序約束,如果使用了時鐘管理類的IP核它會自己進行默認的約束,例如我使用的默認系統時鐘,它會自己添加一個200M的時鐘約束,不允許修改(輸出時鐘好像不需要約束)
第二步,IO約束,分配管腳,這裡我是用的是圖形化的約束,綜合完成之後,選擇工具欄的layout為IO planning,選擇左下角的group by interface and bus展開所有列表,進行管腳分配
第三步,添加debug,為後面的debug添加mark,綜合後,打開綜合後的設計,選擇netlist就可以看到所有的nets,然後選擇想要觀察的信號,右鍵,mark debug
然後set up debug就可以看到剛才你mark的所有信號,點擊下一步,選擇深度,勾選兩個高級觸發和存儲設置,完成
然後保存所有設計,debug實質是添加了ILA的IP核,以約束的方式實現的,所以完成這三步,實際只對約束文件進行了修改
6、實現
完成上述的綜合以及約束之後就可以進行實現了(對應quartus的佈局布線),完成之後就可以查看時序報告和其他報告了
7、板級調試
實現完成之後就可以生成比特流文件,其實可以直接點生成比特流文件如果沒有綜合和實現,它會先綜合實現然後再進行文件生成,然後點開program and debug 的hardware manager連接器件,然後program device就可以下載到板子上了
添加了debug會自動彈到ILA界面,需要進行條件觸發,不同的時鐘域會生成不同的ILA核,然後在trigger setup界面選加號,添加並設置觸發條件
然後run trigger for this ila core就進入等待觸髮狀態了,然後進行複位觸發之後就可以進行數據採樣了
以上就是兩個軟體的簡單的設計流程
推薦閱讀: