文章目錄
- 前言
- 一、設計檔案撰寫
- 二、仿真檔案撰寫
- 三、波形信號查看
- 總結
前言
上一期文章分享了testbench(激勵)檔案的撰寫,這期文章對上期文章的理論做一個實際上機操作,
一、設計檔案撰寫
首先打開Robei EDA,點擊加號,新建一個模塊,輸入模塊名,還有引腳數量,

修改引腳名,定義引腳型別,輸入設計代碼,下面左邊為設計輸入代碼,右邊為完整代碼,

完整設計代碼:
module flow_led(
sys_clk,
sys_rst_n,
led);
//---Ports declearation: generated by Robei---
input sys_clk;
input sys_rst_n;
output [3:0] led;
wire sys_clk;
wire sys_rst_n;
reg [3:0] led;
//----Code starts here: integrated by Robei-----
//reg define
reg [23:0] counter;
//計數器對系統時鐘計數,計時0.2秒(仿真時,設定為10)
always @(posedge sys_clk or negedge sys_rst_n) begin
if (!sys_rst_n)
counter <= 24'd0;
else if (counter < 24'd10)
counter <= counter + 1'b1;
else
counter <= 24'd0;
end
//通過移位暫存器控制IO口的高低電平,從而改變LED的顯示狀態
always @(posedge sys_clk or negedge sys_rst_n) begin
if (!sys_rst_n)
led <= 4'b0001;
else if(counter == 24'd10)
led[3:0] <= {led[2:0],led[3]};
else
led <= led;
end
endmodule //flow_led
二、仿真檔案撰寫
點擊加號,新建一個testbench,輸入模塊名,還有引腳數量,

輸入激勵代碼,這里需要注意的是,Robei 的模型有四種型別:“module”,“model”,“testbench” 和“constrain”, 如果你想仿真之后看波形應該將頂層的仿真模塊型別設定成“testbench”,同時,testbench 的模塊輸入埠型別應為“reg”,輸出型別應為“wire”, 還有記得在end前面輸入$finish,

完整仿真代碼:
`timescale 1ns/1ns
module flow_led_tb();
reg sys_clk;
reg sys_rst_n;
wire [3:0] led;
//----Code starts here: integrated by Robei-----
parameter T = 20;
initial begin
sys_clk = 1'b0;
sys_rst_n = 1'b0;
#10 sys_rst_n = 1'b1;
#10000 sys_rst_n = 1'b0;
$finish;
end
always #(T/2) sys_clk = ~sys_clk;
initial begin
$dumpfile ("D:/a/flow_led/flow_led_tb.vcd");
$dumpvars;
end
//---Module instantiation---
flow_led flow_led1(
.sys_clk(sys_clk),
.sys_rst_n(sys_rst_n),
.led(led));
endmodule //flow_led_tb
三、波形信號查看

注意:Robei EDA軟體沒有注冊可以看仿真波形,但是,但是仿真的模塊數目有限制,
總結
相比于Modelsim和vivado,robei的仿真方便了很多,因為本人能力有限,如果有錯的地方,歡迎指正,謝謝,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/254826.html
標籤:其他
上一篇:【路徑規劃】基于matlab蟻群演算法的三維路徑規劃【含Matlab原始碼 179期】
下一篇:電感如何選型?
