先看两段程序,初看上去他们似乎没有差别:
----1----------------------------------------------------
if key_clk'event and key_clk='1' then
sgl_fr_div < = sgl_fr_div + 1;
if sgl_fr_div=19 then
sgl_fr_div <= 0;
end if;
end if;
----2-----------------------------------------------------
if key_clk'event and key_clk='1' then
sgl_fr_div <= sgl_fr_div + 1;
if sgl_fr_div = 19 then
sgl_fr_div <= 0;
end if;
end if;
----------------------------------------------------------
我在刚开始调试的时候,用的是第1段,检查了N久,也没发现有什么语法错误,没办法,只好重新写一次,写出了第2段程序,居然通过了,又把第1段拷贝到第2段的位置,编译又是出错,很显然第1段在书写过程中出现了偏差,然后我在把第2段的程序一行一行的代替第1段,终于发现是在第二行上面出错了。把他们拷贝到记事本中对照,第1段中的<=中间有了空格,VHDL中信号的赋值符号是不能有空格的,他们是一个整体。以前在用C语言编程中也出现过类似的情况,当一段程序确信语法无误后(其实是有错误的,只是没发现而已),就只有重写,这时候问题就解决了。其实问题是一样的,就是因为书写过程中疏忽造成的,这种时候查错是最痛苦的。
by eleclike @2007-10-31
用户396421 2010-1-14 20:48
用户230889 2010-1-14 19:39
用户77505 2007-11-14 16:07
good
用户741296 2007-11-1 08:09
不懂!