确认下,fpga 中用verilog HDL 编写CASE
语句的项中是不是不能用加法运算的?
START:
begin
count<=cout+9`b1;
这种自加加入代码中后报出很多错误,
同时仿真也完全不正确。
不是这个打错的原因,
新加入的警告是这样的:Warning: Found combinational loop of 1 nodes
没了这句加法的话,这样的错误就没有了。
module EQ_sample(
in_clock, //输入时钟
Trigger, //触发
EN , //模块使能
Channel, //通道选择
out_cp , //输出信号
state
);
//parameter F_in=200;
input in_clock; //输入时钟
input EN; //模块使能
input Trigger; //触发
input [3:1] Channel; //通道选择
output out_cp; //输出信号
output [1:2] state;
reg [9:1] count; //内部时钟计数
reg [9:1] cpmax1=5;
reg [9:1] cpmax2=10;
reg count_start;
reg out_cp;
parameter KEEP=1,START=2;
reg [1:2] my_state;
initial
begin
out_cp=0;
count=9'b0;
cpmax1=5;
cpmax2=10;
my_state=KEEP;
end
assign state=my_state;
always
@ ( posedge Trigger,posedge in_clock )
begin
// out_cp=Trigger;
case (my_state)
KEEP:
// my_state=START;
begin
count=9`b0;
out_cp=0;
if(Trigger==1)
begin
my_state=START;
end
end
START:
begin
//count=count+9`b1;
if(count>1`b100)
out_cp=1;
else
out_cp=0;
end
default :
begin
my_state=KEEP;
end
endcase
end
endmodu