Quartus2中两级流水线加法器遇到的问题
时间:10-02
整理:3721RD
点击:
//两级流水线加法器代码
module a(cout, sum, ina, inb, cin, enable);
output cout;
output [7:0] sum;
input [7:0] ina, inb;
input cin, enable;
reg cout;
reg [7:0] sum;
reg [3:0] tempa, tempb, firsts;
reg firstc;
always @(posedge enable)
begin
{firstc,firsts} = ina[3:0] + inb[3:0] + cin;
tempa = ina[7:4];
//缓存未参与计算的数据
tempb = inb[7:4];
//
end
always @(posedge enable)
begin
//{cout,sum[7:4]} = tempa + tempb + firstc;
…………………………………1
//sum[3:0] = firsts;
………………………………………1
{cout, sum} = {tempa + tempb + firstc, firsts} ; ……………………………………………….2
end
endmodule
问题:我觉得1与2在语法是等效的,但我用2句时,QUARTUS会把COUT接GOUND。结果无进位。而1则是正确的。为什么啊?
module a(cout, sum, ina, inb, cin, enable);
output cout;
output [7:0] sum;
input [7:0] ina, inb;
input cin, enable;
reg cout;
reg [7:0] sum;
reg [3:0] tempa, tempb, firsts;
reg firstc;
always @(posedge enable)
begin
{firstc,firsts} = ina[3:0] + inb[3:0] + cin;
tempa = ina[7:4];
//缓存未参与计算的数据
tempb = inb[7:4];
//
end
always @(posedge enable)
begin
//{cout,sum[7:4]} = tempa + tempb + firstc;
…………………………………1
//sum[3:0] = firsts;
………………………………………1
{cout, sum} = {tempa + tempb + firstc, firsts} ; ……………………………………………….2
end
endmodule
问题:我觉得1与2在语法是等效的,但我用2句时,QUARTUS会把COUT接GOUND。结果无进位。而1则是正确的。为什么啊?
你的2肯定不对,你的2运算改变了sum[3:0]的内容
ding!
tongyang d e yi huo
没用过Altera的产品
我想问你这到底是在写组合逻辑还是时序逻辑,我感觉都不是
你以前是写DSP程序的吧?FPGA不是这样写的,建议用VHDL你就通不过编译了。
