【发布时间】:2014-02-23 20:22:50
【问题描述】:
我对这个问题有些困惑:
"编写一个verilog模块,用于n位整数的全加。令参数,位数,等于3。从测试台调用此模块,并在测试台中指定要添加的数字数组。将八进制值分配给 X 和 Y 数组。进位为 0。"
是的,这是家庭作业。
我能够为 n 位加法器编写模块:
module addern(carryin, X, Y, S, carryout, overflow);
parameter n = 3;
input carryin;
input [n-1:0] X, Y;
output reg [n-1:0] S;
output reg carryout, overflow;
always @(X,Y, carryin)
begin
{carryout, S} = X + Y + carryin;
overflow = (X[n-1] & Y[n-1] & ~S[n-1]) | (~X[n-1] & ~Y[n-1] & S[n-1]);
end
endmodule
我了解问题的这一部分。但是,我不确定如何实现八进制数加法。 verilog 中有没有办法表明数组保存的是八进制值,而不是二进制?
verilog 中有什么类似于 typecast 的东西吗?例如,input (octal) [n-1:0] X, Y,并在测试台上做同样的事情。
感谢任何建设性的意见。
【问题讨论】:
-
你不需要;只需将你的总数分成三个一组。
-
好点。那么我是否只需将参数
n更改为9?我唯一关心的是问题的措辞。例如,在页面下方,它表示将 X 显式设置为 [0,1,3]。 -
他们要求你做的就是为 X 分配一个八进制文字 -
x = 9'o013 -
这是有道理的。如果我这样做,verilog 是否足够智能以添加八进制数字,即
parameter n = 3;? -
八进制、十六进制和十进制只是在一天结束时可视化数字的方式,当以数字方式存储时它们是二进制的。
标签: verilog