是语法问题!
if(data<10+5)出错了,原因在于data是输出,不能这样写,这和C语言不一样。
module check( clk, reset, in, data);
input clk,reset,in;//in定义后没有用到
output[7:0] data;
reg [7:0] data;
always @(posedge clk or posedge reset )
begin
if(reset)
data <= 8'h0;
else
data <= 8'h1;
if(2)
data <= 8'h3;
else
data <= 8'h4;
end
endmodule
这个程序没有实际意义,没有可综合的代码。
if(data<10+5)
data <= data +1;
else data <= 8'd5;
这段程序我直接删了,是错误的根源
若data<10成立则为1,1+5=6.这样肯定不可以的。
你这代码写的太乱了:
1) output [7:0] data;
2) always 中的 if...else 太混乱,而且不能 if(data<10+5),做判断,又在下面进行赋值;
3)if(2) 是什么意思,这个判断永远是成立的!
【1】只有两种情况
a> RESET;
b> not RESET。
所以
if(reset) //a>
data<=8'h00;
else //b>
begin
......
end
------
在 b>里面,你还:
if(2) //第一件事
else //第二件事
if(data<10+5) //第三件事
else //第四件事
------
提示你,只能做一件事!
【2】何为 if(2) ?
对同一个参数data得赋值最好在同一个判断条件下进行,你有多个并行的if..else,如果都成立的话,结果肯定会多驱动。还有写代码时最好把你的目的也发上来,也好有的放矢