AAT 发表于 2010-6-27 23:49:09

verilog异步触发问题

两个敏感信号,a,b,其中我要b信号实现异步触发
请问高手我能否这样写
reg c;
regcount
always @(posedge a or posedge b)
begin
count<=count+1;
temp<=16'h1234;
if(b==1)
   begin
   c <=temp;
   
    end
end
为什么提示这个错误:The logic for count does not match a standard flip-flop

VVC 发表于 2010-6-28 01:24:16

乱七八糟,不明白楼主写这段代码要实现一个什么功能?为什么没有时钟?

CHAN 发表于 2010-6-28 01:59:43

最好把整个源程序贴出来看看!

CHANG 发表于 2010-6-28 02:47:08

你的c跟a无关吗?,<br>
那就把c单独拿出来放在以b为敏感表的always块里。<br>
另外你定义count时末尾少了;<br>
不知道是不是这个原因导致error。

ups 发表于 2010-6-28 04:22:59

应该视位宽定义和后面的1宽度不同造成的吧

CHA 发表于 2010-6-28 05:07:14

我作仿真时也出过&ldquo;The logic for count does not match a standard flip-flop &rdquo;类似的问题,<br>
可能是信号&ldquo;C&rdquo;在多于一个模块中赋值的问题。有整个的程序吗?

HANG 发表于 2010-6-28 06:51:47

c &lt;=temp;<br>
这里temp是什么东西,有没有declare,temp又想实现什么功能?

CHAN 发表于 2010-6-28 08:36:20

楼主最好给个全的代码!不然别人看不懂的,也没法帮你解决问题!

ups 发表于 2010-6-28 09:53:26

这个程序 没有能够看明白 。。。

longt 发表于 2010-6-28 10:36:35

module register (c,a,b,rst);<br>
output c;<br>
input a,b,rst;<br>
wire temp;<br>
reg c;<br>
regcount;<br>
assign temp=16'h1234;<br>
always @(posedge a or posedge b or posedge rst) begin<br>
&nbsp; &nbsp; if(rst) begin<br>
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;count&lt;=0;<br>
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;c&lt;=0;<br>
&nbsp; &nbsp; end<br>
&nbsp; &nbsp; else<br>
if (a)&nbsp; &nbsp;&nbsp;&nbsp;<br>
count&lt;=count+1;<br>
else<br>
if(b)&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;<br>
c &lt;=temp ;&nbsp; &nbsp;&nbsp;&nbsp;<br>
end&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;<br>
endmodule<br>
<br>
揣摩楼主的用意,写了段代码,请大家指正了~
页: [1]
查看完整版本: verilog异步触发问题