verilog HDL语言一个诡异的问题
本人遇到一个奇怪问题。程序如下module ADD(clk,a,c);
input clk;
input a;
output c;
reg c;
reg b=8'b0011_0000;
always @(posedge clk)
begin
c<=((~a) | b);
end
endmodule
我把输入a设置为8'b1111_1111,仿真出现问题:c输出为8'b0000_0000.为什么不是8'b0011_0000. 这个没有起作用。
如下图
我把各个数据位都改为四位。如下
input a;
output c;
reg c;
reg b=4'b0011;
always @(posedge clk)
begin
c<=((~a) | b);
end
endmodule
结果输出正确。
如下图
第一张图怎么没有呢? 帖子快层了,顶起 8'b0011_0000是ASCII的字符0,所以显示是0,
Radix改成Hex就行了。 uindex 发表于 2012-4-5 22:17 static/image/common/back.gif
8'b0011_0000是ASCII的字符0,所以显示是0,
Radix改成Hex就行了。
你这个好像只能在vwf文件里改吧,我改为HEX仿真还是为0,不知道什么原因。 uindex 发表于 2012-4-5 22:17 static/image/common/back.gif
8'b0011_0000是ASCII的字符0,所以显示是0,
Radix改成Hex就行了。
可以的。请问那就v里怎么将输出的ASCII声明为Hex。这个我确实是跟上位机进行通信。来转发ARM信号 这个没招了,只会手工改成hex的; haffman1 发表于 2012-4-5 23:00 static/image/common/back.gif
可以的。请问那就v里怎么将输出的ASCII声明为Hex。这个我确实是跟上位机进行通信。来转发ARM信号 ...
小白路过,敢为你们说的设个HEX是指得什么? reg b=8'b0011_0000;
似乎不能这样赋初始值吧? 这赋值应该没问题吧 本帖最后由 pocker5200 于 2012-4-6 21:57 编辑
这个ADD模块是几位的加法器,看一下原语呢。
{:lol:}我估计是4位的加法器.
这个模块名乱取的,主要是从中简化单独拿出来验证.看样子只能多添加几段代码了 参考综合之后的RTL图,看看和原来的设计有没有出入。 看rtl图吧,或者换种写法。
页:
[1]