马上注册,看完整文章,学更多FPGA知识。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
设计能力和定位问题能力,是FPGA里非常重要的技能,理论上掌握了这两个能力,什么东西都可以开发出来。FPGA不像软件那样,靠单步执行来检查结果,FPGA定位问题太难了,同一个错误现象,其原因真是千奇百怪,出现的地方也是不可预测的。
明德扬会教授大家通用的定位方法,掌握一个技巧,无论什么错误都能定位出来。
---------------------------------------------------------------------------------------------------------------------------------------------------------
定位问题的重要性 作为初学者,仿真和调试时经常遇到如下问题:时钟一直为低、信号为X态或高阻态、波形与想象中的不一致、功能实现不出来等。 这种情况下,大部分学员都是从网上求助的。由于其他人不知道你写的具体代码,所以根本无法得到有效的帮助和解决。
定位和解决问题,是工程师的基本能力,因此遇到问题不必急于求助,而应静下心来,自己解决。
明德扬的系列视频,教授您一个“任何问题都能找到”的定位问题方法和思路,并通过多个案例,让您一步步掌握定位问题和解决问题的最佳方法。 ---------------------------------------------------------------------------------------------------------------------------------------------------------- 定位最朴素思维:波形不正确,就找产生这个波形的“代码”,对着代码检查“此时此刻”为什么出错。
----------------------------------------------------------------------------------------------------------------------------------------------- 定位举例 下面举一个简单的例子,例如发现下面波形中,希望cnt值128,但结果为0(注:或者是红色、蓝色、其他值,总之就不是你想要的那个值),不正确,如下图。 1. 不用怀疑,就去找产生cnt的这份代码,如下图(注:不管这代码是测试文件、设计文件、其他模块给的,不管在哪里,总之就找出产生这个波形的代码出来!) 2. 对着错误的时刻,把代码和波形对照着看,看这个时候为什么出错。(一定要对着错误时刻找!一定是看此时此刻!!!) 3. 对着错误时刻分析代码。例如上图,此时rst_n等于1,所以第21行肯定没执行;此时cnt等于127,第23行条件不满足,所以第24行肯定没执行。所以一定是执行了第27行代码。一定是第27行代码,使得cnt变成0。(注:我们是要看此时此此刻条件是多少,看是哪一行代码执行了,就要这么仔细检查的)
4. 分析:希望是128,结果它是0,很容易就想到是溢出问题,所以可以推导出是cnt的位宽不够!
----------------------------------------------------------------------------------------------------------------------------------------------------------
本视频是明德扬查找定位问题的总纲视频。明德扬将错误类型归结为三类:软件工具错误、语法编译错误和功能错误。
本视频介绍了三种错误类型的解决方法和一般原则。其中语法错误中,我们创新性地提出了“代入法”,可以定位大部分的语法错误问题。
----------------------------------------------------------------------------------------------------------------------------------------------------------
一气呵成把代码写出来了,开开心心来仿真,本来想着马上就要看到结果了。但想得太天真了,最有可能出现的就是波形跟你想的不一样。即使潘老师这么有经验,也经常出现这样的情形。
这个时候怎么办?当然是硬着头皮去找问题啊,指望别人来告诉你是不现实的,没有多少人愿意花自己的时间给你解决定位问题。
但定位问题,你的思路对了吗?很多人第一反应就是去检查代码,从头浏览一遍,这是正确的定位思维吗?
本视频将告诉你正确的答案。
--------------------------------------------------------------------------------------------------------------------------------------------------------
有同学会怀疑,用明德扬的定位方法,真能什么问题都找到吗?万一我不是设计代码问题,而是测试文件问题,也能找到?
明德扬很有自信,没错!所有问题都能找到。本视频就告诉你,即使是测试文件问题,你也能通过我们的方法,顺藤摸瓜,把问题找到。
---------------------------------------------------------------------------------------------------------------------------------------------------------
我们是否曾经遇到这样的情况:已经找到具体的某一行代码有问题,通过波形和代码一一对照,波形就是与代码不一致,这个时候甚至你都怀疑仿真软件是否出现了BUG。
但是,首先相信一点,仿真软件出BUG的可能性微乎其微,本视频就通过一个具体的案例,教你如何定位这种错误。
相信一个真理,FPGA是很简单的,是0就是0,是1就是1,不会有奇怪的现象的。当你发现很奇怪的时候,一般就是自己粗心了。
-------------------------------------------------------------------------------------------------------------------------------------------------------
仿真出现高阻态(下图),是不是很常见?你是怎么定位的呢?是不是急急忙忙去求助?本视频告诉你,别急,高阻态也能用我们方法定位。
--------------------------------------------------------------------------------------------------------------------------------------------------------
又一个常见的错误类似,输出的值也是高阻类,再次看看用明德扬方法是如何定位的,提高一下能力,以后再遇到问题就不慌了。
---------------------------------------------------------------------------------------------------------------------------------------------------------
我明明在测试文件产生了时钟,但仿真时却发现时钟信号一直为0。你的第一反应是不是去检查代码?别忘了,我们一直强调的定位思维。任何错误都不要去检查代码来发现,而是要通过定位的思维。前者找到问题靠运气,后者找到问题那是一定的。
本视频用一个案例告诉你,通过我们方法去定位到某一行,认定就是这一行出错,盯着去思考,就能发现问题。
---------------------------------------------------------------------------------------------------------------------------------------------------------
以下是定位问题的相关文档,欢迎下载
定位问题 简介.docx
(35.5 KB, 下载次数: 1486)
|