FPGA程序的一种调试方案解读.docx
《FPGA程序的一种调试方案解读.docx》由会员分享,可在线阅读,更多相关《FPGA程序的一种调试方案解读.docx(12页珍藏版)》请在第一文库网上搜索。
1、FPGA程序的一种调试方案解读FPGA程序的调试,尤其是大型程序,一直都是耗时耗力的工作。首先是因为HD1语言沿空间并发扩展的特性不同于一般基于按时间线性叙事的计算机语言,各个元素之间的逻辑关系更加紧密,不易理解和思考,debug手段也不多。同时,FPGA程序的综合布线过程都比较缓慢,经常一个中等大小的程序会需要等待数十分钟才能得到输出文件,大型设计run隔夜是常见的事情,随便一个笔误都会带来很高的沉没成本。每次说到这里,都不由得回忆起多年以前某次出差做实验,邂逅过一位研究所大哥玩笑说最爱领导指派FPGA任务,因为只要按下综合按钮,便能安心歇息半个午后。那时候,天地初开,摸鱼这个词还没有发明,
2、也没有想到即便是当下最强最fancy的CPU也没能拯救这种等待。言归正传。在逻辑构思基本正确,程序编写大致规范的前提下,大多数的问题,都只是写代码时的一些小疏忽。通过实施功能仿真,其实可以把多数逻辑问题都找出来。但是,实际工作中,经常没有时间或耐心做仿真,而是直接编码后下硬件调试了。此时,通过仔细阅读综合器给出的警告信息,就可以在最耗时的布局布线之前把各种小问题找出来并修正,从而有效地提高开发效率。在调试阶段,如果遇到了难以理解的现象,回过头去分析警告信息也是一种有效的办法。在本文中,我们以ViVadO自带综合器为例、以Veri1Og为编程语言,看看如何理解和利用警告信息排除代码中的小bugo
3、(以上图片来自网络:Mydigita1designingdiarybyMandapati)为了方便叙述,我们先建一个样例工程,包含模块top和adder。为了避免像很多经典教科书中的“a=(b+)+(+c)”那样被指为“例子代码不注重软件工程”,特意把这个程序写的尽量贴近工程实际一些(除了没有注释)。首先它具有特定的功能,对两路并发输入的数据流先相加再累加。其次,数据端口定义采用时下常用的AXI-Stream风格。模块top是顶层模块,其源码Top”如下图。该模块具备时钟信号dk和异步复位信号rst。输入数据端口din_tdata31:0,配套流控握手信号din_tVaIid和din_trea
4、dy。在模块内部,输入数据首先被劈成2个16bit数据,代表要相加的两路数据流,并注入加法器模块adder。加法器的输出数据是adder_out15:0o第31行开始的a1ways语句则完成对加法结果的累加操作。累加结果从端口acc_tdata输出,配套数据有效标志acc_tva1idoTop.vtimesca1eIns/Ipsendendmodu1ewire15:0adder_d1fadder_d2,adder_out;wireadder_tva1id,adder_tready;a1ways(osedgeCikorposedgerst)beginif(rst)beginendendassig
5、naddejd1=din_tdata15:0;assignadder_d2=din-tdata31:16;assignadder_tready=1,b1;123456789101112131415161718293031323334353637383940414243444546modu1etop(inputinputinput31:0inputoutputoutputreg15:0outputregc1kfrstfdin-tdatafdin_tva1idfdin_tready,acc_tdataracc_tva1id);19adderadder1(20.c1k(e1k),21-rst(rst
6、)f22.din1(adder_d1)f23,din2(adder_d2)f24.din_tva1id(din-tva1id)f25din_tready(din_tready),26.dout(adder_out)f27.dout_tva1id(adder_tva1id)f28.dout-tready(adder_tready));acJtdata=16b0;acc_tva1id=1,b0;e1sebeginif(adder_tva1id)beginacc_tdata=acJtdata+adder_out;endacc_tva1id=adder_tva1id;再看看加法器的源码Adder.v,
7、如下图。两路数据din1和din2,共享同一组流控握手信号din_tva1id和din_tready。加法结果从端口dout输出。在模块内部,第14行的a1ways语句负责完成所有逻辑处理。核心语句在第21行:当输入数据有效而且后级设备准备好时,进行一次加法操作。写到这里作者也是十分感慨,三十多行代码就是为了伺候第23行的这个“+”号。17181920212223242526272829Adder.v3modu1eadder(4inpute1k,5inputrst,6input15:0din1f7input15:0din2f8inputdin-tva1idf9outputdin_tready,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- FPGA 程序 一种 调试 方案 解读