執行菜單命令【File】-【New Project Wizard…】,創建工程向導。
在What is the working directory for this project?下選擇項目存儲地址工作目錄,What is the name of this project?下填寫工程名,最后一欄填寫頂層文件名。
添加已存在文件(可選),在【File name】下選擇已經存在的工程項目,利用【Add】或【Add all】命令添加文件到新工程,點擊【Next】
3、選擇器件,【Device family】-【Family】下選擇你要使用的FPGA芯片系列,這里我選擇ALtera公司的CycloneV系列(因為個人用的是友晶的DE1-SOC,芯片型號依個人不同而不同),並在【devices】下選擇具體芯片型號,點擊【Next】
設定第三方工具,【Design Entry/Synthesis】選擇邏輯綜合工具,這里可以不填,直接使用Quartus默認工具,【Simulation】下選擇仿真工具,這里一般需要quartus都配套安裝了Modelsim,點擊【Next】
顯示設置信息,顯示了項目路徑,項目名,頂層文件,芯片系列型號等設置信息,在檢察符合需要后點擊【Finish】,完成向導新建工作。
至此,就完成了一個工程的建立,后面的就是為了工程添加文件。
用框圖原理圖作為文件頂層(此文件可以直接用代碼編程完成,此處是借此講解如何將硬件原理圖轉化為程序文件)
1、選擇文件類型
立刻另存為,給頂層文件起名字(這里的名字要和工程名一樣)並為它定位
選擇BLOCK TOOL,繪制一個block
右鍵繪制出來的block,選擇屬性
給block命名
添加定義端口
用自帶的EDA工具生成一段代碼的模板
刪掉一些注釋,頂層文件就生成了
在生成文件的基礎上,添加自己的模塊代碼
將文件轉變為符號
完成后可以在symbol tool看到我們的工程符號
點擊生成管腳可以將建立的模型擴展出來
通過對文件進行編譯。
至此一個工程項目就建立完成了。下面就需要編寫它的仿真文件,對輸出信號進行分析。
編寫testbench
新建verlog文件
保存,用_tb表示testbench
編寫一個時標,時標是有一個分數組成的,分子是當前文件所用的時間單位,分母是分辨率。(最開始的符號是 `,就是esc鍵下面那個符號)
將待測試的模型裝載到testbench,將模型的例化頭貼到testbench,並為他起一個實例的名稱,用.操作符做接口的裝配,
申明要用到的信號,並與電路模型連接
編寫測試信號
整體代碼如下
`timescale 1ns/1ns
module apt_get_tb;
reg a,b;
wire c;
apt_get u1(
.a(a),
.b(b),
.c(c)
);
initial
begin
a=0;b=0;
#20 a=0;b=1;
#20 a=1;b=0;
#20 a=1;b=1;
end
endmodule
至此,測試平台就完成了。
將testbench用modelsim仿真
在assignment—setting中對設置進行更改
設置中的simulation進行如下設置后點擊testbench
添加testbench及仿真結束時間,(filename里添加的是.v文件不是.bak文件)
最后在quartus中設置modelsim的路徑,quartus->tools->option->EDA tool options ,在右邊選擇modelsim_altera的安裝路徑
這里要確保自己的quartus和modelsim都是已經取得了lincense的,否則是調用不了modelsim的
前仿
軟件自動跳轉modelsim生成仿真圖形,通過按鍵盤上的F鍵可以看他的全局圖
修改過的testbench文件保存后,可以按方向鍵上鍵,調用用過的.do 文件,即可重新仿真。
至此,前仿的驗證完成。
后仿
由於框圖原理圖不能作為一個國際標志在平台中互相傳遞,所以需要用系統工具將圖形改為代碼
完成后,將生成的文件加入到file中
為頂層的代碼編寫一個testbench
之后的步驟與前仿相同,但應理解的是此時做的是頂層的仿真,是后仿
綜合編譯后,就可以做頂層的前仿和后仿了,前仿按照之前的來,這里演示后仿
可以看到后仿與前仿存在着時序上的延遲,這是器件的延遲,這便是一個更真實的仿真結果。
(需要注意的是cyclone V系列的芯片已經不再支持時序仿真了,只能跑功能仿真,如果芯片類型選的是Cyclone V系列的話,它就會一致彈出
)
前仿看到的是邏輯功能間的關系,后仿不僅可以看到邏輯功能間的關系,還能看到他們時序間的關系。