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

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则是正确的。为什么啊?

你的2肯定不对,你的2运算改变了sum[3:0]的内容

ding!

tongyang d e yi huo

没用过Altera的产品

我想问你这到底是在写组合逻辑还是时序逻辑,我感觉都不是

你以前是写DSP程序的吧?FPGA不是这样写的,建议用VHDL你就通不过编译了。

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

网站地图

Top