基于verilog hdl的19位计数器的仿真问题

2019-07-15 21:01发布

一个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

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
5条回答
电人
1楼-- · 2019-07-16 01:28
不清楚你的问题是什么
LangdonJia
2楼-- · 2019-07-16 07:07
电人 发表于 2018-4-16 08:54
不清楚你的问题是什么

testbench不懂怎么写。

LangdonJia
3楼-- · 2019-07-16 07:25
电人 发表于 2018-4-16 08:54
不清楚你的问题是什么

`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。
电人
4楼-- · 2019-07-16 08:07
为什么不用
always
#(PERIOD/2)  inclk=~inclk
来产生时序呢?
bubushao
5楼-- · 2019-07-16 08:30
 精彩回答 2  元偷偷看……

一周热门 更多>