在线咨询 切换到宽版
eetop公众号 创芯大讲堂 创芯人才网

 找回密码
 注册

手机号码,快捷登录

手机号码,快捷登录

搜帖子
查看: 3943|回复: 3

非常简单的累加器,verilog

[复制链接]
发表于 2021-3-6 11:01:40 | 显示全部楼层 |阅读模式
悬赏666资产未解决

累加器结构

module mash(CLK, RST,IN_X, COUT);


parameter WIDE = 3;

input                    CLK;
input                    RST;
input  [WIDE-1:0]        IN_X;

output                   COUT;




reg   [WIDE-1:0]     sum_d;
reg   [WIDE-1:0]     out;




always @(posedge CLK or posedge RST )
  begin
     if (RST)
             begin

               sum_d <=0;
              end
     else
          begin
            sum_d <= out;

          end
   end


always @(posedge CLK or posedge RST )
  begin
     if (!RST)
             begin
               {COUT,out} <= 0;
              end
     else
          begin
           {COUT,out} <= IN_X + sum_d;;

          end
   end  

endmodule   

这是累加器
下面是测试代码

module main();

reg clk;
reg rst;
reg  [15:0] in;

wire [15:0] cout;

mash DUT(.CLK(clk),.RST(rst),.IN_X(in), .COUT(cout));

initial begin
    clk =  0;
    forever #5  clk =~clk;
  end

initial begin
    rst =  0;

    #20 rst=  1;

  end
initial begin


    in = 6;


   #1000;
   $finish;
end

initial begin
    $fsdbDumpfile("adder_tb.fsdb");
    $fsdbDumpvars();
end

这是波形



哪里出了问题,希望大神可以给指导一下。

image.png
image.png
image.png
 楼主| 发表于 2021-3-6 11:02:50 | 显示全部楼层

这是希望出现的结果

image.png
回复

使用道具 举报

发表于 2021-3-6 18:00:48 | 显示全部楼层
always代码rst写的不对,检查一下应该时negedge 并且 if中要用 !rst
回复

使用道具 举报

 楼主| 发表于 2021-3-7 21:13:34 | 显示全部楼层


   
xcykii 发表于 2021-3-6 18:00
always代码rst写的不对,检查一下应该时negedge 并且 if中要用 !rst


非常感谢,是我激励弄错了。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条

手机版| 小黑屋| 关于我们| 联系我们| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2025-9-13 16:27 , Processed in 0.017033 second(s), 5 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表