haffman1 发表于 2012-4-5 21:15:51

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
结果输出正确。
如下图

haffman1 发表于 2012-4-5 21:22:31

第一张图怎么没有呢?

haffman1 发表于 2012-4-5 22:05:16

帖子快层了,顶起

uindex 发表于 2012-4-5 22:17:16

8'b0011_0000是ASCII的字符0,所以显示是0,
Radix改成Hex就行了。

haffman1 发表于 2012-4-5 22:47:44

uindex 发表于 2012-4-5 22:17 static/image/common/back.gif
8'b0011_0000是ASCII的字符0,所以显示是0,
Radix改成Hex就行了。

你这个好像只能在vwf文件里改吧,我改为HEX仿真还是为0,不知道什么原因。

haffman1 发表于 2012-4-5 23:00:58

uindex 发表于 2012-4-5 22:17 static/image/common/back.gif
8'b0011_0000是ASCII的字符0,所以显示是0,
Radix改成Hex就行了。

可以的。请问那就v里怎么将输出的ASCII声明为Hex。这个我确实是跟上位机进行通信。来转发ARM信号

uindex 发表于 2012-4-5 23:46:16

这个没招了,只会手工改成hex的;

wj78681969 发表于 2012-4-6 10:47:43

haffman1 发表于 2012-4-5 23:00 static/image/common/back.gif
可以的。请问那就v里怎么将输出的ASCII声明为Hex。这个我确实是跟上位机进行通信。来转发ARM信号 ...

小白路过,敢为你们说的设个HEX是指得什么?

DanielDeng 发表于 2012-4-6 11:15:29

reg b=8'b0011_0000;
似乎不能这样赋初始值吧?

ResetLife 发表于 2012-4-6 11:42:51

这赋值应该没问题吧

pocker5200 发表于 2012-4-6 21:50:30

本帖最后由 pocker5200 于 2012-4-6 21:57 编辑

这个ADD模块是几位的加法器,看一下原语呢。
{:lol:}我估计是4位的加法器.

haffman1 发表于 2012-4-6 22:18:50

这个模块名乱取的,主要是从中简化单独拿出来验证.看样子只能多添加几段代码了

pocker5200 发表于 2012-4-6 22:46:26

参考综合之后的RTL图,看看和原来的设计有没有出入。

xtx 发表于 2012-4-7 08:09:19

看rtl图吧,或者换种写法。
页: [1]
查看完整版本: verilog HDL语言一个诡异的问题