"); //-->
2013年5月10日纠正:此篇文章发表于2013年5月10之前,提出的问题的原因是错误的,解决办法也是不适合的。
纠正如下:
我使用的代码编辑器是Notepad++,在右下角有格式,见下图
我常用的就是这个Dos\Windows。
可是有一次出现了下图的格式
这种格式下连“//”都会导致ERROR:HDLCompilers:26 - "codes/fq_divider.v" line 1 expecting 'endmodule', found 'EOF'。这个错误。在Dos\Windows环境下用中文输入法状态输入空格和换行是不会引起错误的。
纠正结束。
以下内容是2013.5.10前发表的:
在使用ISE时出现了一个很蹊跷的错误:ERROR:HDLCompilers:26 - "codes/fq_divider.v" line 1 expecting 'endmodule', found 'EOF'。
找了近一个小时找不到原因,保留代码重新建工程仍然这个错误。而代码看了几遍也没有发现语法问题,或者是中文输入的问题。
错误代码如下:
module fq_divider(clk,rst_n,fq_1M,fq_1Hz);
input clk;
input rst_n;
output fq_1M;
output fq_1Hz;
//产生1MHz
reg [1:0] counter_1M;
always @(posedge clk or negedge rst_n)
begin
if(!rst_n)
counter_1M <= 0;
else if(counter_1M == 2'd3)
counter_1M <= 0;
else
counter_1M <= counter_1M + 1'b1;
end
reg fq_1M;
always @(posedge clk or negedge rst_n)
begin
if(!rst_n)
fq_1M <= 0;
else if(counter_1M == 2'd3)
fq_1M <= !fq_1M;
end
//产生1Hz
reg [15:0] counter_1Hz;
always @(posedge clk or negedge rst_n)
begin
if(!rst_n)
counter_1Hz <= 0;
else if(counter_1Hz == 16'd62500)
counter_1Hz <= 0;
else
counter_1Hz <= counter_1Hz + 1'b1;
end
reg fq_1Hz;
always @(posedge clk or negedge rst_n)
begin
if(!rst_n)
fq_1Hz <= 0;
else if(counter_1Hz == 16'd62500)
fq_1Hz <= !fq_1Hz;
end
endmodule
删除endmodule上的空白行,问题解决。中文输入法输入的字母和符合还可以看出来,但是中文输入法输入的空格很难被发现,而且提示的错误往往很不准确。因此,千万注意!
另外:又有一个错误:
ERROR:NgdBuild:605 - logical root block 'fq_divider' with type 'fq_divider' is
unexpanded. Symbol 'fq_divider' is not supported in target 'spartan3a'.
也是过了很久才解决。
解决办法:将可能引起错误的空白行或空格删掉,以排除因为中文输入法输入的空白行或空格引起的错误。
下午又遇到更奇怪的问题,ISE编译都正确,仿真也进行。但是有一个信号从仿真开始就一直是高阻。查看代码没有问题。最后还是通过去掉空白行才把问题解决了。
*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。