Verilog高手请进,请教一个关于if的问题

问题在星号部分,我想用这个语句,当开关为1时,输出给LED1,0时输出给LED2,那里不对呢?程序报错near text "if"; expecting an identifier ("if" is a reserved keyword ), or "endmodule", or a parallel statement
程序如下
module a(clk,LED1,LED2,M,N,switch);
input clk;
output LED1,LED2;
integer temp;
input[2:0] M,N;
input switch;
always @(posedge clk)
begin
if(temp==N-1) temp<=0;
else temp<=temp+1;
end if;
end
***************************************************
if(switch==1)
assign LED1=(temp<M)?1:0;
else
assign LED2=(temp<M)?1:0;
***************************************************
endmodule

module a(clk,LED1,LED2,M,N,switch,rst_n);

input clk;

input rst_n;//增加一个异步复位按钮,才符合实际情况

output LED1,LED2;

//integer temp;在语句always中,左边的变量建议为寄存器类型

reg [2:0] temp;

input[2:0] M,N;

input switch;

always @(posedge clk or negedge rst_n)

begin

if(!rst_n)

 temp<=0;

else if(temp==N-1)

   temp<=0;

else 

   temp<=temp+1;

//end if;这句错误,没有这种写法

end

//***************************************************

//条件语句if-else是顺序语句,应该放在“always” 快内,因此你那样写会有错误

//if(switch==1)

//注意,我已经把你的开关融合到下面两个赋值语句中了

assign LED1=switch&(temp<M)?1:0;

//else

assign LED2=~switch&(temp<M)?1:0;

//***************************************************

endmodule

有详细的注释,如果不对的地方还望指正。

我觉得你应该把基础大好,这样才能后续的学习。

附上仿真图。

追问

高手啊 可以仿真!!!非常感谢 如果我的开关有两位 就是控制4个输出还能这样做么?

温馨提示:内容为网友见解,仅供参考
第1个回答  2011-04-23
没有end if这个写法吧,至少我没有见过~~~
相似回答