设计教训如何成就称职的FPGA**工程师?

分享到:
334
下一篇 >

  作为ASIC领域中一种半定制电路,FPGA的发展不但解决了定制电路不足,并且进行了深入的交谈,希望;接着在实现阶段和综合阶段找办法,主要是通过工具选项进行一些特定的优化设置;再搞不定就要修改代码,从根本上进行设计逻辑和路径的优化;有人关心还是搞不定怎么办,只四个阶段。每个阶段都很关键,都不

  这是一个FPGA内嵌硬核CPU的系统,它的软件代码在每次上电时从一颗外部的FLASH中加载。CPU本身只有一组总线接口,这个总线接口的逻辑都是自己设计的,FLASH运行软件的代码是直接使用了官方给出的非常坚挺的从来不出这个症状。开始我们一直怀疑是芯片厂商提供的所谓“工程样片”有猫腻,但是随着调试不断的深入,工程代码改进后不断产生新的编译结果,有些工程的逻辑编译居然无论如何都无法让工程跑起来,对比前后能跑和不能跑的工程,改动的地方确认是一些无关紧要的逻辑。

  和FAE谈到这些比较怪异的症状,并且我们也聊到了软件是从FLASH加载的,聊到了它们的时钟频率,FAE给了我一些启发和灵感。于是深入的去解析那份“舶来品”,发现了CPU读写代码接口中的等待信号非常可能就是罪魁祸首。

  我们做了一个假设,比如CPU以100MHz在跑,FLASH操作是20MHz。CPU需要每若干个时钟周期执行一次软件代码读操作,FLASH要响应这样一次操作要慢很多,因此FLASH就是通过wait信号来拖长CPU的操作时间,以保证完成这样的一次读操作。那么wait信号是由FLASH的时钟产生的,它会比CPU的时钟慢很多。

  存在那么一种情况,当CPU执行**个读操作时,好不容易等到了FLASH模块的wait信号,然后发出**次的读操作,而此时由于这个wait信号保持的时间还未结束,那么CPU误以为是给它的wait信号了,所以接着往下走了。如此一来,软件就大乱了。

  这般推测后,特权同学适时的对这个wait信号的产生逻辑做了一些处理,同时也明确的对此处的时钟进行了约束,此后经过恩天的验证果然不再有芯片在上电后无法运行的情况了。

  我们在碰到问题的时候,*主要的是要了解**的分析方法,在FPGA设计方面,这些分析方法尤其重要。特权同学认为,在FPGA开发过程中,不遇到问题是不可能的,时序问题的分析定位往往也是难上加难。很

  多时候在调试后期,特别是板级调试阶段,一个bug的出现,可能涉及FPGA内部的逻辑功能性错误或时序错误,也可能涉及到FPGA的硬件板级电路,如供电电路、外部芯片等的错误,这些错综复杂的情况往往让调试者晕头转向。

  而在应对这些问题时,以笔者的经验,首先要定位好问题所在,就要采取排除法,独立各个模块,先缩小问题的范围。接着有针对性的进行具体问题的排查,直到找着问题的根本原因。当然了,有时候某些问题可能不是单一故障引发的,或许有多种因素,这时候就要多从理论进行分析,多做试验进一步排查了。总之,这是一项很锻炼人的工作,很多工作也是建立在过往经验的基础上进行的。

  所以,作为一个工程师,笔者非常推崇大家从一开始就养成较真的习惯,遇到问题就一定要弄明白,并且将所遇到的问题落实到笔头,以报告的形式记录下来,当然不只是拿这样的报告去邀功请赏而已,更多的是借助报告撰写的过程提高自身的知识储备,毕竟每一个论点和论据的支撑都需要涉及大量的理论知识。

  到现在,现在大家对特权同学的这种FPGA思维和经验很敬仰吧。但谁也不是一蹴而就的,下面我们就让特权同学这个先行者给我们这些后来者分享相关经验。

  他认为电子技术的发展日新月异,若想成为一个称职的FPGA工程师,保持一颗谦卑的心态非常重要。

  笔者记忆中对一位小学老师的毕业留言印象深刻,那便是“学习学习再学习”这句让人终身受用的良言。笔者在电子发烧友的FPGA在线讲座中曾引述过一位业内前辈对FPGA发展的三个阶段划分,即入门阶段、进阶阶段和从业阶段。每个阶段都是一个学习的过程,甚至在从业阶段更是如此,面对纷繁复杂的设计和调试局面,如果没有很强的再学习欲望和能力,有时真的很难招架应对。

  在入门阶段和进阶阶段,掌握了FPGA设计的各种基本技能,在工程实践中便应该尽可能的遵循规范的开发流程,不要投机取巧甚至“偷工减料”,只有严谨认真的面对每一个设计项目,才可能高效、出色的完成任务。而这种严谨认真的态度,从一开始就应该养成。俗话说“习惯决定性格,性格决定命运”,笔者想说的其实也是这样一个浅显的道理。

  不知道大家对这期的技术文章了解如何,作为小编的我,可从吴老师身上学到了很多。希望能够给电子工程师提供设计参考价值。

你可能感兴趣: 可编程逻辑 图片 FPGA FLASH ASIC 工程师
无觅相关文章插件,快速提升流量