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

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 3771|回复: 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


非常感谢,是我激励弄错了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

GMT+8, 2025-6-23 20:58 , Processed in 0.017571 second(s), 8 queries , Gzip On, MemCached On.

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