题解 | #流水线乘法器#

流水线乘法器

http://www.nowcoder.com/practice/be97f63817c543fe9260d46d971a7283

  1. 定义部分积寄存器part_mul,大小和mul_out相同;
reg [size*2-1:0] part_mul[size-1:0];
  1. 根据乘数mul_b的第 j 位是否为1来决定部分积的值,若为1,其值等于被乘数左移 j 位,若为0,该部分积置零,用左移8位实现;
part_mul[j] <= {4'd0, mul_a} << (mul_b[j]? j: 8);

完整代码:

`timescale 1ns/1ns

module multi_pipe#(
	parameter size = 4
)(
	input 						clk 		,   
	input 						rst_n		,
	input	[size-1:0]			mul_a		,
	input	[size-1:0]			mul_b		,
 
 	output	reg	[size*2-1:0]	mul_out		
);
    reg [size*2-1:0] part_mul[size-1:0];
    integer j;
            
    always@(posedge clk or negedge rst_n)begin
        if(~rst_n)begin
            mul_out <= 0;
            for(j=0;j<size;j=j+1)
                part_mul[j] = 0; 
        end
        else begin
            for(j=0;j<size;j=j+1)
                part_mul[j] <= {4'd0, mul_a} << (mul_b[j]? j: 8); 
            mul_out <= part_mul[0]+part_mul[1]+part_mul[2]+part_mul[3];
        end
    end
   
endmodule
全部评论
为啥我写了两个always块就不对了呢
点赞 回复 分享
发布于 2023-03-11 10:49 安徽

相关推荐

ProMonkey2024:5个oc?厉害! 但是有一个小问题:谁问你了?😡我的意思是,谁在意?我告诉你,根本没人问你,在我们之中0人问了你,我把所有问你的人都请来 party 了,到场人数是0个人,誰问你了?WHO ASKED?谁问汝矣?誰があなたに聞きましたか?누가 물어봤어?我爬上了珠穆朗玛峰也没找到谁问你了,我刚刚潜入了世界上最大的射电望远镜也没开到那个问你的人的盒,在找到谁问你之前我连癌症的解药都发明了出来,我开了最大距离渲染也没找到谁问你了我活在这个被辐射蹂躏了多年的破碎世界的坟墓里目睹全球核战争把人类文明毁灭也没见到谁问你了(别的帖子偷来的,现学现卖😋)
点赞 评论 收藏
分享
11-14 16:13
已编辑
重庆科技大学 测试工程师
Amazarashi66:不进帖子我都知道🐮❤️网什么含金量
点赞 评论 收藏
分享
6 收藏 评论
分享
牛客网
牛客企业服务