2006年12月07日:以下是我的NIOS-II调试经历,与大家分享:
在拿到FPGA时,很高兴,可以搞NIOS了(一阵激动,都忘了常规检查流程啦!)。拿到时,朋友说调试过的没有问题。我就拿起电路图(pdf),找到时钟输入脚(125,奇怪为什么这个脚是普通IO脚,没看到全局时钟脚呢, 管它的就按此脚使用吧)。
就搞了个计数器,把时钟50M分频为5Hz从LED输出,点灯成功啦;
现就着手作NIOS功能吧,按例子作最小系统(CPU,片内RAM,1位IO输出)(建立SOPC/编译等等),插上USB-Blaster,下载sof文件。开始调试程序,在IDE环境下,Run->Debug As->NIOS II Hardware,出现下列信息:
Using cable "USB-Blaster [USB-0]", device 1, instance 0x00
Pausing target processor: not responding.
Resetting and trying again: FAILED
Leaving target processor paused
我的居然未连上(咋我没搞对哈???)。
一阵疑惑后,我想是不是输入的时钟需要加锁相环(有点笑人哈,有点瞎整),于是按例子加入锁相环,编译出现下列错误:
Error: Can't place fast PLL "pll1:u_pll|altpll:altpll_component|pll" because I/O pin "ext_clk" (port type INCLK of the PLL) is assigned to a location which is not connected to port type INCLK of any PLL on the device
这时我有点纳闷了,图上接的时钟就是这个IO脚,咋加入个加锁相环,提示加锁相环输入不能是这个脚哈,我也没看到全局时钟。 (这个没仔细看资料)
上FPGA_NIOS技术联盟找网友帮忙,当时有个网友(好像是柳城布衣吧)告诉我pll必须接在全局时钟脚上,其管脚是28,29,152,153 (回去看资料果然是这样的,太不认真啦)。
咋么办呢,原理图上没有画全局时钟脚,就飞线吧 (太自作聪明啦)。把时钟输入接在28脚上 (没有万用表也敢作, 后悔及啦。)
重上电,有试,还是老样子。(气到了,不调啦,改天借个表,再调调)。
第二天,拿会万用表测试,发现时钟与地相通啦 (当时,晕呀, 28脚和旁边的接地脚相连啦)。
把飞线取啦,居然全局时钟脚28和125是相连的 (考,我不白忙作啦)
再上电,还是相同的问题。我快崩溃了,没办法,又上网求助,这次得到网友(自由鸟)的帮助。发现复位部分有问题,板子上有部分电路没有电源电压。这次小心飞线。
再上电,测试时钟电压为1.5v, 下载sof文件,再测试时钟电压,变为0V啦,怪了,咋个回事。找到问题啦:原来综合设置中未处理的脚输出到地(我的时钟接在2个管脚上的)。
再次测试各个关键点(时钟、复位等等),确认无问题拉,再次上电。
嘿嘿,居然进入调试环境啦,按F5,可以单步运行啦,看到LED闪了,心里美滋滋的。
以上是我的调试经历,我作个小结:
a. 注意若不是自己作板子请对原理图和PCB图都检查。
b. 检查电源电压,复位脚等;
c. 检查输入时钟(电压为电源电压的1/2,或示波器测试)
d. 主要模块的电源、地线、互连线是否正常(我的出现部分模块没有电源电压);
在此,感谢帮助我的网友们 (自由鸟、柳城布衣等)。