1. 程式人生 > >Xilinx Vertex5 DDR2 SDRAM IP核模擬教程

Xilinx Vertex5 DDR2 SDRAM IP核模擬教程

在專案中使用Xilinx DDR2 SDRAM IP核之前,首先對該IP核進行模擬以瞭解IP核的時序和工作方式。 本人最近在使用Vertex5 版本的ddr2 SDRAM核,並使用ISE14.7版本生成;模擬工具使用modelsim SE.雖說官方有文件告訴我們如何進行模擬該IP核,但是具體到實踐中還是走了不少彎路,寫此部落格的目的就是將模擬該IP核的過程記錄下來,防止自己以後遺忘,同時如果能給看到這篇文章的人一點幫助也是極好的。廢話不多說,下面進入正題: 生成IP核的過程不再贅述。在生成IP核以後,可以看到在工程目錄下有三個資料夾docs、example_design、user_design.在這裡我們使用example_design裡面的檔案。我們將用到example_design資料夾裡面的 rtl 和 sim 資料夾裡面的.v檔案。 第一步:新建modelsim工程,在工程空白處右鍵點選,選擇add to project -> Existing File. 點選Browse,選擇Xilinx的工程目錄下的rtl和sim資料夾裡面的.v檔案(不是.v的檔案不需要)。

點選OK.

第二步:匯入檔案完成之後就可以對工程裡面的檔案進行編譯。然後你就會出錯! 這裡寫圖片描述 原因是在ddr2_model_c0.v和ddr2_model_c1.v(我這裡用到了兩個ddr2控制器,單控制器的話就只有ddr2_model.v),錯誤資訊告訴我們裡面有很多變數沒有定義。真的嗎?當然不是!原因是ddr2_model.v檔案裡面包含了一個引數檔案,就是sim資料夾裡面的ddr2_model_parameters.vh,這個引數檔案裡面包含了各種各樣的引數以適應不同的ddr2 sdram 晶片。開啟ddr2_model.v我們看到裡面有一句include程式碼包含了引數檔案,我們將包含檔案的路徑改為絕對路徑即可。例如我的就改為: `include “D:/Project_of_Software/Xilinx/MY_PROJECTS/ddr2_sdram_sim/ddr2_sdram_sim/ipcore_dir/ddr2_sdram_sim/example_design/sim/ddr2_model_parameters_c0.vh” 儲存並重新編譯,發現全部通過 這裡寫圖片描述

第三步:對工程進行模擬。 當你信心滿滿進行模擬,以為會直接出結果的時候,會發現自己錯了。。。 這裡寫圖片描述 你會出現各種vsim-3033的錯誤。原因是你的modelsim沒有新增Xilinx的模擬庫,所以裡面的很多unit modelsim不認識。所以需要加入庫檔案。當你點選start simulation時出現 這裡寫圖片描述 點選Libraries標籤,點選Add,找到編譯好的Xilinx庫,新增unisims_ver和unisim庫資料夾(此處注意,必須先新增unisims_ver庫資料夾,然後再新增unisim庫資料夾,不然會報錯。因為需要先編譯unisims_ver庫資料夾裡面的檔案)。然後回到Design標籤: 這裡寫圖片描述

點選OK。發現還是有錯… 這裡寫圖片描述 原因是沒有找到glbl.v檔案,這個檔案是用來配置模擬環境的。在 C:\Xilinx\14.7\ISE_DS\ISE\verilog\src資料夾裡面,直接找到這個檔案,然後新增到工程裡面去,重新編譯,這時候如果直接start simulation還是會出錯,下面我們採用命令的形式進行操作。在sim資料夾中包含一個sim.do檔案,這裡麵包含了模擬所需的各種命令。

第四步:使用命令進行模擬。 這裡寫圖片描述 開啟sim.do檔案,我們剛才一直在做的事事實上將71行之前的事情做完了,現在我們拷貝 73和74行的命令到modelsim底端的Transcript視窗中 這裡寫圖片描述 這裡我們同樣需要修改為絕對路徑(注意將“’\”改為“/”)。回車。最後再將第77行命令拷貝 點選回車,終於可以運行了 這裡寫圖片描述 然後拷貝83行將訊號新增到波形圖裡面,手動寫:run -all 命令即可出現波形。 這裡寫圖片描述 我們可以看到phy_init_done訊號由低變高,說明IP核初始化完畢,可以正常進行讀寫操作。 至此,Xilinx ddr2 SDRAM IP核模擬成功。