標籤:
如果我們已經書寫了一段FSM代碼,現在想倒過來把它轉換成為狀態轉移圖,方便我們直觀地檢查我們書寫的狀態對不對(在寫論文什麼的畫圖太麻煩的時候,有個自動產生的是多方便啊!),應該怎麼弄呢?通過在Vivado中調用ModelSim,可以直接完成這個操作,下面我們就來看看這個神奇的轉換是如何完成的。
首先介紹一下軟體環境:
ü 作業系統win7 sp1 64位
ü Vivado2014.1 64位
ü Modelsim SE-64 10.2c
然後就是開啟Vivado,建立一個RTL工程,配置好器件……這個步驟大家都寫過了,所以在此略過。然後在Vivado中建立頂層檔案,然後輸入一段FSM代碼。接下來我們要先配置ModelSim的路徑,使得Vivado知道ModelSim在哪裡。方法是在Vivado中點擊功能表列的Tools---Options---General,在最後面的一行裡選擇ModelSim的安裝路徑,1所示。
圖1 配置ModelSim的路徑
然後我們要為Xilinx的FPGA器件編譯產生供ModelSim模擬使用的庫。點擊Vivado工具列上的Tools---Compaile Simulation Libraries,2所示。
圖2 編譯模擬庫
在圖2的配置視窗中選擇模擬器類型(例如ModelSim、Active-HDL等)、程式設計語言(Verilog或者HDL或者全選)、庫的類型(Unisim或者SimPrim或者全選)、器件家族(例如Kintex/ Virtex/ Artix -7, ,Zynq-7000, Kintex/Virtex UltraScale系列,或者乾脆全選)。中間的框是選擇編譯之後輸出的庫檔案的路徑以及第三方模擬工具的路徑。最後是其它雜項,例如是否覆蓋現有的庫,是不是編譯32位的庫,是不是啟用囉嗦模式等。與ISE相比,在Vivado中編譯模擬庫只需要點擊這兩個步驟然後等待幾分鐘就可以了,步驟只有ISE的五分之一,需要我們決定的選擇框要少了非常多,花的時間則只有幾分鐘,比ISE編譯模擬庫的效率要高了好幾倍。
編譯很快就完成了。然後我們在Vivado設計流程管理器中點擊Simulation下面的Simulation Settings,3所示。
圖3 改變模擬設定
然後把模擬軟體佈建為ModelSim,4所示。
圖4 改變模擬軟體
在Vivado的模擬配置中,我們可以直接指定Vsim的選項,5所示。
圖5 指定Vsim選項
然後就可以在Vivado設計流程管理器中在Simulation上點擊右鍵,運行行為模擬了,6所示。
圖6 運行行為模擬
很不幸的是,ModelSim啟動之後遇到了錯誤,7所示。
圖7 模擬錯誤(單擊圖片可放大)
這也許是兩個軟體的版本不太相容造成的。為了在ModelSim裡顯示FSM,我們又必須使用-coverage –fsmdebug兩個參數,那怎麼辦呢?目前可以採用的辦法是,暫時不能在圖5中啟用相關的選項,重新運行行為模擬,此時在ModelSim啟動完成並且不抱錯。然後我們修改FSM1.do檔案,或者直接在ModelSim的命令視窗裡輸入下面的命令(加黑字型為更改的部分):
vsim -L unisims_ver -L unimacro_ver -L secureip -L xil_defaultlib -lib xil_defaultlib -voptargs=\"+acc\" -t 1ps -coverage -fsmdebug xil_defaultlib.FSM1 xil_defaultlib.glbl
此時我們便可以查看FSM的狀態轉移圖了,點擊ModelSim功能表列上的View---FSM List,然後在任務檢視裡點擊FSM List,就能看到狀態轉移圖了,8所示。
圖8 FSM的狀態轉移圖(單擊圖片可放大)
最後,感謝大家的支援
在Vivado中調用ModelSim產生FSM的狀態轉移圖