資源描述:
《modelsim仿真必會教程》由會員上傳分享,免費在線閱讀,更多相關內容在行業(yè)資料-天天文庫。
1、Modelsim功能仿真新手教程Bywangjun850725@163.com操作系統(tǒng):win7軟件版本:modelsim6.5se本文只針對初學者,讓他們少走點彎路,modelsim軟件本身感覺還是比較難以使用的。本人才疏學淺,但有顆助人的心。大神請?zhí)^,不要鄙視我。如有錯誤,請不吝指點。QQ群:41143927建立工程省略N字,這沒有什么好說的。幾乎所有的軟件都是以工程為基礎的。添加設計文件因為我已經編輯好了文件,所以直接添加已經存在的。沒有人會用modelsim自帶的編輯器來寫程序(要是沒有選擇,我寧愿用記事本,如果你用了,我佩服你)。編譯文件沒有什么好說的,添加進去的文件全
2、部編譯就好了。如果你看編譯后的文件后面還有一個問號,你不爽,鼠標右鍵更新下就好了開始仿真Modelsimse版本是可以手動描繪激勵波形的,但這種方法太笨,太煩,修改起來很不方便,所以直接放棄。Simulate里有個startsimulate,點開這里有幾點要說明下1.要點開work庫,找到你testbench對應的那個模塊2.Resolution選不選關系不大,如果你設計文件指定了仿真時間的話3.Optimization,要把這個勾去掉,不然會優(yōu)化掉很多信號,這里也坑了我很久。功能仿真只要這么多,如果做后仿,library里要添加已經編譯好的器件庫,SDF里要添加.vo,.sdo文
3、件觀察波形添加信號到波形窗口的方法有很多,剛學手動添加,后來肯定是要在腳本里指定的,下面會有?首先要把設計中的信號添加到wave窗口里。鼠標左鍵按住不放,將對應的模塊拖到wave窗口里,這是最簡單的辦法。如果設計的模塊多了,每個模塊的信號不能很好的被區(qū)分,就可以在每個模塊的中間插入一個Divider,信號旁邊右鍵就可以看到,最好給起個名字如果你的模塊層次非常的多,信號的路徑名字就會占據本來就不大的屏幕時很不爽的。菜單Wave‐>Wavepreference‐>Displaysignalpath里面改成1就可以了?運行仿真在Transcript窗口里輸入Run1ms搞定,波形神馬的就
4、出現(xiàn)了。你要做的工作就是看波形是否是你想要的。?可以使用想要的快捷鍵來查看波形。f,全屏顯示波形;c,以波形圖上的黃線為軸放大波形等,具體請baidu。自動化仿真一個簡單的分頻器要你仿真10次,每次都重復上面這些步驟,你也會受不了的,更何況稍微大一點的設計。?你需要新建一個文本文檔,modelsim的默認后綴名是.do。但隨便什么后綴名都是可以的。因為種種其他原因,我把后綴名改成了.tcl。?一個簡單完整的腳本如下第1行:當你在仿真的時候,可以直接退出去,然后再次開始仿真第3行:加載你的設計文件,并指定最小時間為ns第5行:為每個模塊都增加一個分隔符,看起來舒服點,上面的圖有提到過
5、第6.7.8:testbench里的信號……第14行:指定信號的顯示方式是無符號數(shù)第15行:再指定信號顯示的顏色第16行:再指定信號顯示的別名,主要用于參數(shù)化狀態(tài)機的時候用第18行:運行仿真的時間,最大單位是ms,但最大時間不太清楚設計代碼我為什么不直接貼代碼,而是要上圖呢?如果你是初學者,抄一遍代碼是必要的;如果你不是,這代碼對你也沒有意義。Testbench先上圖,然后再說其他的。第1行:指定仿真的時間精度第2行:這樣主要是為了在功能仿真時稍微帶點延遲,方便觀察,有點后仿真的影子第4行:格式就是那么寫的,我不知道為什么第5.6.7行:你設計文件里的input端口在testben
6、ch里要聲明為reg;你設計文件里的output端口在testbench里要定義為wire第9‐13行:對testbench里reg的初始化時必不可少的第15行:生成時鐘,必不可少第17行:傳遞給設計文件的一個參數(shù)第19‐29行:產生復位信號的一個小任務。寫成任務時為了方便的在以后的設計中使用第31‐40行:對設計文件的例化?Testbench的語法還是有必要學一學的,特別是那些不可綜合的語句。不然設計寫好了,如何寫testbench會讓你頭疼的。$random,$readmem還是比較常用的?多看看別人寫的testbench,自然就會看到一些技巧其他?亂糟糟的代碼是我絕對不能接受
7、的,對齊是最基本的要求?不要去懷疑modelsim,出現(xiàn)了意想不到的情況首先就要想到是自己的問題。當然工具也會有錯,但一般人也發(fā)現(xiàn)不了(包括你)?復位,不論在testbench和設計文件里都非常重要。最關鍵的是沒有初始化modelsim是不工作的。紅線,藍線就是你看到的。紅線:為初始化的信號,例如reg;藍線:為初始化的信號,例如wire;還有很少見的白色虛線:modelsim模仿外部上拉的情況?當你不知道一個modelsim操作的命令是什么時,注意看你操作時tran