微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > 问个流水线加法器的问题

问个流水线加法器的问题

时间:10-02 整理:3721RD 点击:
module adder8_2(cout ,sum ,clk ,cina ,cinb ,cin) ;
input [7 :0]cina ,cinb;
input clk ,cin;
output [7 :0] sum;
output cout;
reg cout ;
reg cout1 ;
reg[3 :0]sum1;
reg[7 :0]sum;
always @(posedge clk) begin //第4 位相加;
{cout1 , sum1} = cina [3 : 0] + cinb [3 : 0] + cin ;
end
always @(posedge clk) begin  //高4 位相加,并且将8 位拼接起来;
{cout ,sum} = {{cina[7],cina [7 :4]} +{cinb[7], cinb[7 :4] + cout1} ,sum1};
end
endmodule
一个2级流水线的加法看不懂这一句{cout ,sum} = {{cina[7],cina [7 :4]} +{cinb[7], cinb[7 :4] + cout1} ,sum1};
cina[7]是什么意思?

符号位扩展啊,结果要比输入多一位的

always @(posedge clk) begin  //高4 位相加,并且将8 位拼接起来;
{cout ,sum} = {{cina[7],cina [7 :4]} +{cinb[7], cinb[7 :4] + cout1} ,sum1};
看不懂谁告诉下?

如果要实现2级流水加法的话
{cout ,sum} = {{1'b0,cina [7 :4]} +{1'b0,cinb[7 :4] + cout1} ,sum1};
否则的话实现的就不是2个数相加了

2楼很对
就是符号位扩展

{cout ,sum} = {{cina[7],cina [7 :4]} +{cinb[7], cinb[7 :4] + cout1} ,sum1};
是怎么实现8位链接的?
{cina[7],cina [7 :4]} +{cinb[7], cinb[7 :4] + cout1}能具体解释下么

{cina[7],cina [7 :4]}
+{cinb[7], cinb[7 :4]}
+                     cout1
=进位,和的高4位

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top