verilog - 最高有效位的 32 位 OR 操作 Verilog 意外结果
问题描述
我的问题是为什么最重要的位会得到一个意想不到的 x?
module Or32(//32-Bit-Or
input [31:0] a,
input [31:0] b,
output [31:0] o
);
integer i;
reg [31:0]mid;
always@* begin
for (i = 0;i < 31; i++) begin
mid[i] = a[i] || b[i];
end
end
assign o = mid;
endmodule
解决方案
x
由于您的循环条件,最重要的位得到了。
for (i = 0;i < 31; i++)
满足的最后一个值i < 31
是30
,但你mid
最重要的位是31
。将您的条件更改为i < 32
。
推荐阅读
- tensorflow - Tensorflow 安装无法在 Raspbian strech virtualbox 上运行
- r - R - ggplot 忽略多变量图中的一个变量中的 NA 值
- html - 如果初始文本对齐为中心,如何左对齐文本的第二行
- c# - 麻烦将数据从表单绑定到操作方法模型。列表
在 ViewModel 中使用 - rxjs - VirtualTimeScheduler 和 TestScheduler 有什么区别?
- image - 当我想在 openstack 云中启动 Ubuntu 实例时,我在哪里可以找到要使用的合适映像?
- python - 如何使用pypdf2检查pdf密码是否正确
- linux - 如何知道一个opengl函数是否会阻塞?
- typo3 - 如何确保在每种情况下都加载我的扩展的 TypoScript?
- android - 我的布局没有填满整个活动宽度