本帖最后由 GoldSunMonkey 于 2011-11-28 22:53 编辑
以前写过一篇文章如何处理未分配的管脚文章。
GSM教你使用ISE将未使用的管脚变成高阻态
http://bbs.21ic.com/icview-275872-1-1.html
很多人不以为然。
写一个听来的故事,给大家提提醒
一波三折——危险的“未分配”引脚
*第一折。半个月前,美国的同事对当前的一个工程进行了编译,并提交二进制文件
(FPGA配置文件)给软件工程师进行集成。结果该二进制文件导致了整个系统的崩溃:FPGA二进制文件
刚下载完毕,整个系统就不工作了。这一事件导致了美国FPGA工程师一整天的停工和系统恢复。Kevin给
出的分析结果是,FPGA给出的中断信号有问题,该信号经过CPLD转发到CPU后导致CPU反复跳入中断,
造成系统崩溃。后来,因为经过重新编译的二进制文件没有引发类似现象,该问题就被当作是一个偶然事
件被忽略了。
到了这一步,我找遍了“路灯下所有能找的地方”,只能向其他方向“胡乱”摸索了。我尝试了给来自
CPU的控制输入信号,包括所有的地址线,增加上拉电阻的方法,也没有成功。
经过了类似的一系列摸索,最终我在PlanAhead视图中发现了蹊跷:在该工程中竟然存在没有分配布局位
置的输出引脚,而这些输出引脚在该项目中并没有被实际的输入逻辑驱动,这些引脚被工具缺省地连接
到了逻辑“0”上。通过比较成功和失败两次编译结果中给出的最终引脚分配报告,我发现,这些没有得到
位置约束的引脚竟然可能随机出现在任意的空闲引脚上。
通过进一步分析,在导致系统崩溃的编译结果中我最终找到了答案:一个没有逻辑驱动,也忘了分配布局
位置的输出引脚被工具随机分配到了FPGA没有用到(也没有位置约束)的一根CPU地址输入线上,这根地
址线就被短路到了“0”电平上,进而导致CPU外部总线上特定地址范围不能被CPU访问到,最终引发了系统崩溃。
一周热门 更多>