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

 找回密码
 注册

手机号码,快捷登录

手机号码,快捷登录

搜全文
查看: 2043|回复: 4

[讨论] 自己写的流水线乘法器问题

[复制链接]
发表于 2015-8-1 19:37:32 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

×
module chengfaqi(

input [3:0]  ain,
input [3:0]  bin,
input  clk, rst_n,

output [7:0] cout
    );

reg   [3:0]  ain_reg;
reg   [3:0]  bin_reg;

reg   [3:0]  cout0;
reg   [4:0]  cout1;
reg   [5:0]  cout2;
reg   [6:0]  cout3;

reg   [7:0]  cout_reg;

always@(posedge clk or negedge rst_n)
if(!rst_n)  
     begin   ain_reg <= #1 4'b0;
                  bin_reg <= #1 4'b0;
          end
else begin   ain_reg <= #1 ain;
             bin_reg <= #1 bin;
                               
     end

always@(posedge clk or negedge rst_n)
if(!rst_n)  
     begin
        cout0 <= #1 4'b0;
        cout1 <= #1 5'b0;
        cout2 <= #1 6'b0;
        cout3 <= #1 7'b0;
                  cout_reg <= #1 7'b0;
     end
else
     begin
        cout0 <= #1 (bin[0] == 1)?ain:4'b0;
        cout1 <= #1 (bin[1] == 1)?{ain,1'b0}:5'b0;
        cout2 <= #1 (bin[2] == 1)?{ain,2'b00}:6'b0;
        cout3 <= #1 (bin[3] == 1)?{ain,3'b000}:7'b0;
      cout_reg <= #1 cout1 + cout2 + cout3 + cout0;
     end

assign cout = cout_reg;
endmodule
       

仿真的波形如图:

问题来了,输出的结果怎么只延时一个时钟周期呢?我插入了三个寄存器啊,至少是个周期啊,结果是对的,但是不了解为什么?
 楼主| 发表于 2015-8-1 19:38:52 | 显示全部楼层
WD_IS~QGCL[49CENS9UJXH6.png 回复 1# 谁枫而飘
回复 支持 反对

使用道具 举报

发表于 2015-8-2 09:04:02 | 显示全部楼层
哪来的三级寄存器?两级好不好!这里“cout0 <= #1 (bin[0] == 1)?ain:4'b0;”的ain、bin,你是不是想用 ain_reg 、bin_reg的?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-8-2 10:36:40 | 显示全部楼层
回复 3# cutfor
对的,昨天晚上睡觉的时候,想到了可能是这个问题,我再去试试
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-8-2 10:57:26 | 显示全部楼层
回复 3# cutfor

bingo是这个问题,本来是想用ain_reg和bin_reg的,写错了,我擦,检查的时候没有检查出来
回复 支持 反对

使用道具 举报

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

本版积分规则

关闭

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


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

GMT+8, 2025-9-14 15:21 , Processed in 1.686945 second(s), 6 queries , Gzip On, Redis On.

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