verilog “function”函数一直报错 ,经qq群中的大佬指点,发现是在 function 函数内部的逻辑部分缺少 begin……end导致。在此记录一下。
function automatic [15:0] crc_16_w;
input [799:0] crc_data;
input [ 7:0] crc_num;
integer i,j;
reg [15:0] temp;
begin /******/
crc_16_w = 16'hffff;
i=0;
while(i < 100 )begin
temp = crc_data[(i*8)+:8]&16'h00ff;
if(i == (crc_num-1))
i = 100;
else
i = i + 1;
crc_16_w = crc_16_w ^ temp;
for(j=0;j<8;j = j+1)begin
if(crc_16_w&16'd1)begin
crc_16_w = crc_16_w[15:1];
crc_16_w = crc_16_w ^ 16'hA001;
end
else
crc_16_w = crc_16_w[15:1];
end
end
crc_16_w = (crc_16_w[15:8])|(crc_16_w<<8);
end /******/
endfunction