寫作時間:2020-08-11
代碼
module c2(reset,clk_in,clk_out);
input clk_in,reset;
output clk_out;
reg clk_out;
always @(posedge clk_in)
begin
if(!reset) clk_out=0;
else clk_out=~clk_out;
end
endmodule
testbench
`timescale 100ns /100ps //1ns是仿真時間,100ps是精度 ps是10^-12,ns是10^-9
`define clk_cycle 50
module c2_vlg_tst();
// constants
// general purpose registers
//reg eachvec;
// test vector input registers
reg clk_in;
reg reset;
// wires
wire clk_out;
// assign statements (if any)
c2 i1 (
// port map - connection between master ports and signals/registers
.clk_in(clk_in),
.clk_out(clk_out),
.reset(reset)
);
always #`clk_cycle clk_in = ~clk_in;
initial
// optional sensitivity list
// @(event1 or event2 or .... eventn)
begin
// code executes for every event on sensitivity list
// insert code here --> begin
clk_in = 0;
reset = 1;
#100 reset = 0;
#100 reset = 1;
$display("Running testbench");
#100 $stop;
//@eachvec;
// --> end
end
endmodule
modelsim 仿真
一點坑總結:
1)我裝的是18.1lite ,應選擇modelsim_altera,而不是modelsim
2)仿真時間機關說明,
`timescale 100ns /100ps 表示: 1ns是仿真時間,100ps是精度 。
3)主程式的代碼命名,需要和檔案名一緻。其他的module 可以随便命名。
THE END~