一个19位计数器的仿真问题
module counter(inclk,rst_n,en,out);
input inclk,rst_n,en;
output[18:0] out;
reg[18:0] out,value_r;
always @(posedge inclk ornegedge rst_n)
if(~rst_n) value_r<=19'b0;
else
if(en)
begin
value_r<=value_r+19'h1;
end
else
if(!en)
begin
out<=value_r;
value_r<=0;
end
initial value_r<=0;endmodule
以上是源程序。
主要是pin planner的设置问题以及testbench的编写问题。
芯片型号是:Cyclone IV E
EP4CE15F17C8
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
testbench不懂怎么写。
`timescale 1ns/1ns
module counter_TB;
reg inclk;
reg rst_n;
reg en;
wire [18:0] out;
parameter PERIOD=50;
initial
begin
inclk=0;
forever #(PERIOD/2)
inclk= ~inclk;
end
initial
begin
en<=1'b0;
forever #((PERIOD/2)*5)
en<= ~en;
end
initial
begin
rst_n=1;
end
counter counter1
(
.inclk (inclk),
.rst_n (rst_n),
.en (en),
.out (out)
);
task task_sysinit;
begin
end
endtask
initial
begin
task_sysinit;
end
endmodule
这个是我写的testbench。
但是输出信号out总是全0。
always
#(PERIOD/2) inclk=~inclk
来产生时序呢?
一周热门 更多>