FPGA设计开发中应用仿真技术解决故障的方法

发布者:sheng44最新更新时间:2010-03-09 来源: 哈工大学信息与通信工程学院 张在兴关键字:FPGA  仿真技术  故障  QuartusII  ModelSim 手机看文章 扫描二维码
随时随地手机看文章

  本文针对FPGA实际开发过程中,出现故障后定位困难、反复修改代码编译时间过长、上板后故障解决无法确认的问题,提出了一种采用仿真的方法来定位、解决故障并验证故障解决方案。可以大大的节约开发时间,提高开发效率。

  FPGA近年来在越来越多的领域中应用,很多大通信系统(如通信基站等)都用其做核心数据的处理。但是过长的编译时间,在研发过程中使得解决故障的环节非常令人头痛。本文介绍的就是一种用仿真方法解决故障从而减少研发过程中的编译次数,最终达到准确定位故障、缩短解决故障时间的目的。文例所用到的软件开发平台为Altera公司的Quartus II,仿真工具为ModelSim。

  问题的提出

  系统开发在上板调试过程中,有时候出现的bug是很极端的情况或很少出现的情况,而现在通常的做法是:在故障出现的时候通过SignalTap把信号抓出来查找其问题的所在、修改程序;在改完版本后,先要对整个工程进行重新编译,然后再上板跑版本进行验证,看看故障是否解决。

  这样就会出现三个问题:

  ①有时候故障很难定位,只知道哪个模块出错,很难定位到具体的信号上,给抓信号带来麻烦。如果故障定位不准确,漏抓了关键信号,则需要重新在SignalTap里添加信号、编译版本并再次上板定位故障,浪费时间。

  ②故障定位后,修改代码还需要再编译一次产生新版本的下载文件,修改后若还有问题则要重复这一过程,这样从故障定位到修改完成需要很多次编译。

  ③上板重新进行验证时,如果这个bug的出现的几率很小,短时间内不再复现,并不能说明在极端情况下的故障真的被解决了。

  举例说明:

  例如在一个基带系统的FPGA逻辑版本中,输出模块调用了一个异步FIFO,某一时刻FIFO已空的情况下多读了一个数据,产生了bug,如图1所示。

SignalTap抓出的bug出现时的数据

图1 SignalTap抓出的bug出现时的数据

  该输出模块的功能是判断FIFO中是否有大于4个数据可读出,若大于则连续输出4个数据作为一组。系统中采用异步FIFO的内部读数据指针来做判断,而异步FIFO读写数据需要跨时钟域,需要至少2个时钟周期的握手时间,导致数据指针不准确。在判断的时钟沿,虽然显示有超过4个的数据可读,但是因为握手时间的延迟实际上FIFO中可能只有3个数据。

  图1中rdreq为FIFO的读使能信号,在4个时钟周期内有效,但是只读出了3个数(数据0D2086C9F被读了两次),因为FIFO在第4个时钟周期已经读空。这里应该改成同步FIFO,由于同步FIFO数据的读写只在一个时钟域内进行,就没有这个握手时间延迟的问题了。

  定位这个故障的时候我们可以很容易知道是哪个模块出了问题,但是具体是其内部的哪个信号还需要下些功夫,如果出错信号隐藏的很深,很难一次就抓到需要的信号;而且即使我们抓到了正确的信号,如果故障在改完之后没有解决,则还需要重新修改、再进行编译,耗费时间;即使改过之后故障不再复现,也有可能是因为bug出现的条件苛刻,无法证明故障真的解决了。

  针对这三个问题,笔者提出如下想法:

  虽然定位具体的出错信号很困难,但是定位是哪个模块出错很容易,在bug出现的时候我们可以抓出这个模块的全部输入信号,考虑是否可以利用这些信号在仿真环境下重建bug出现的条件,利用仿真环境具体定位错误信号的位置。

  定位好错误信号的具体位置后,修改代码,再用相同的条件进行仿真。这样可以通过对修改前后输出数据的对比,很直观的验证修改是否成功,从而在修改成功后只需编译一次即可,节省时间。

  上板后bug不复现也可以排除是由于极端情况很难满足造成的,去除了后顾之忧,彻底解决了故障。[page]

  仿真解决故障的方法

  通过对这个异步FIFO问题的解决,可以证明这种通过所抓信号建立bug存在条件,定位、清除bug的方法是可行的。步骤如下:

  ①将bug出现时SignalTap抓的信号保存成文档文件

  Quartus II 平台用SignalTap抓到信号的界面如图2所示。

SignalTap抓信号界面

图2 SignalTap抓信号界面

  在信号名称上单击右键,选择图2所示Create SignalTap II List File选项,生成如图3格式界面。

SignalTap II List File界面

图3 SignalTap II List File界面

  图3中界面上半部分显示的是list对信号个数及信号名的描述,下半部分是采样点所对应的信号值,带h的表示是十六进制数值。

  将list file另存为文本格式文件即可,如图4所示。

“另存为”选项界面

图4 “另存为”选项界面

  此后可以把这个文本文件中无用的描述删掉,只留SignalTap抓出来的数据(空格、h等符号也要删掉),另存为.dat文件供仿真使用。

  有了故障出现时的输入数据,我们就可以在仿真环境下构建故障出现的条件。[page]

  ②利用.dat文件建立bug出现的条件

  用verilog语言编写仿真文件(testbench),使用语句$readmemh或$readmemb将.dat文件中的数据存储到一个设定的ram中,如:$readmemh(“s.dat”,ram)。

  注意$readmemh读取是按照十六进制数据进行(认为.dat文件中的数据都是十六进制数),会自动将其转换为4位二进制数存入ram中,所以设定的ram位宽要是.dat文件中数据位宽的4倍;使用$readmemb时,存储SignalTap所抓信号时,信号都要先设定为binary类型,ram位宽就是.dat文件数据的位宽。ram的深度为.dat文件中数据的个数。

  然后在程序里把ram中数据按照所对应时钟沿输出到一个寄存器变量中,ram地址累加即可。

  always@(posedge clk)

  begin

  data<=ram[addr];

  addr<=addr+1\'b1;

  end

  复现bug存在条件时,需将模块的输入信号与ram中的数据位相对应,仿真文件调用模块时,将寄存器data对应位作为输入接入即可。

  在仿真环境中复现bug波形如图5所示。

modelsim环境下复现的出错数据

图5 modelsim环境下复现的出错数据

  把图5和图1进行比较,可见通过这种方法我们在仿真环境下建立了bug出错时的环境,得到相同的输出出错数据。

  ③修改程序后在仿真环境验证修改是否成功

  修改程序后,我们只要使用同样的环境进行仿真,并且有针对性的观察bug是否解决。本例中出现bug的原因是使用了异步FIFO,改成同步FIFO后,问题应该就会解决,我们可以通过仿真验证。修改程序后仿真的波形如图6所示。

修改程序后相同条件下的输出数据

图6 修改程序后相同条件下的输出数据

  由图6可见,修改后相同的条件FIFO读出4个数,说明没有读空,符合要求,bug解决。图7为版本编译后上板使用SignalTap抓取的信号波形,以作比较。

修改程序后SignalTap抓的信号

图7 修改程序后SignalTap抓的信号

  比较后易见,波形完全相同,说明方法可行。

  总结

  文中描述的方法可针对各种的故障的解决。在故障出现时,只需定位出错的模块,这些模块内嵌一些子模块也无妨;抓信号时将故障模块的输入输出信号抓出即可;利用输入信号重建故障环境,若仿真输出信号和所抓输出信号相同,说明故障环境建立正确;用这个仿真平台就可以具体定位是哪个子模块、哪个信号出错,而不需要在SignalTap中把这些信号抓出来;并且在修改代码后可以验证是否修改成功,节省时间,很明确的证明故障真的被解决了,事半功倍。

关键字:FPGA  仿真技术  故障  QuartusII  ModelSim 引用地址:FPGA设计开发中应用仿真技术解决故障的方法

上一篇:基于EP2SGX系列FPGA的PCI接口设计
下一篇:车用FPGA在赛车引擎控制单元中的应用

推荐阅读最新更新时间:2024-05-02 21:01

FPGA的DDS调频信号研究与实现
1 引言   直接数字 频率合成器 (DDS)技术,具有频率切换速度快,很容易提高频率分辨率、对硬件要求低、可编程全数字化便于单片集成、有利于降低成本、提高可靠性并便于生产等优点。目前各大 芯片 制造厂商都相继推出采用先进C MOS 工艺生产的高性能和多功能的DDS芯片,专用DDS芯片采用了特定工艺,内部数字信号抖动很小,输出信号的质量高。然而在某些场合,由于专用的DDS芯片的控制方式是固定的,故在工作方式、频率控制等方面与系统的要求差距很大,这时如果用高性能的FPGA器件设计符合自己需要的DDS电路就是一个很好的解决方法,它的可重配置性结构能方便的实现各种复杂的调制功能,具有很好的实用性和灵活性。    2DDS调频 信号发
[嵌入式]
<font color='red'>FPGA</font>的DDS调频信号研究与实现
电力电缆故障测试及原因分析
电力电缆多埋于地下,一旦发生故障,寻找起来十分困难,往往要花费数小时,甚至几天的时间,不仅浪费了大量的人力、物力,而且会造成难以估量的停电损失.如何准确、迅速、经济地查寻电缆故障便成了供电部门日益关注的问题. 电缆故障情况及埋设环境比较复杂,变化多,测试人员应熟悉电缆的埋设走向与环境,确切地判断出电缆故障性质,选择合适的仪器与测量方法,按照一定的程序工作,才能顺利地测出电缆故障点. 电缆故障探测有其固有的特点,现场测试人员曾形象地说探测电缆故障点 七分靠仪器,三分靠人 ,说明单纯地靠购买先进仪器是不能解决问题的.要重视操作人员的培训工作,生产单位和使用部门要经常交流信息、积累经验,加强电 缆故障探测技术的研讨,以促进我国电
[测试测量]
莱迪思Nexus技术平台:重新定义低功耗、小尺寸FPGA
物联网AI、嵌入式视觉、硬件安全、5G通信、工业和汽车自动化等新兴应用正在重新定义开发人员设计网络边缘产品的硬件要求。为了支持这些应用,网络边缘设备的硬件方案需要具备下列特征: •低功耗 •高性能 •高稳定性 •小尺寸 莱迪思的研发工程师几年前就开始着手FPGA开发工艺的创新,旨在为客户提供具备上述特性的硬件平台。最终莱迪思成为业界首个支持28nm全耗尽型绝缘体上硅(FD-SOI)工艺的低功耗FPGA供应商。该工艺由三星研发,与如今大多数半导体芯片采用的bulkCMOS工艺有些类似,但优势更为显著,能在显著降低器件尺寸和功耗的同时,大幅提升性能和稳定性。 除了支持全新的制造平台,莱迪思还依托其低功耗、小尺寸
[嵌入式]
莱迪思Nexus技术平台:重新定义低功耗、小尺寸<font color='red'>FPGA</font>
ADI推出故障检测和保护、低/超平电阻开关系列产品
这些开关可在过程控制和数据采集应用中实时识别和防范故障,提高了系统正常运行时间,并兼具最佳性能。 中国,北京——Analog Devices, Inc. (NASDAQ: ADI)最近推出了故障检测和保护、低/超平电阻开关系列产品: ADG5412F、ADG5413F、ADG5412BF和ADG5413BF。 这种创新型开关技术可在通道发生故障时进行识别,从而无需额外的硬件和软件故障检测方案,提高了系统正常运行时间。 这些新款开关还在小型封装中实现了稳定性和精度性能的最佳结合,使其适用于精密仪器仪表、过程控制和航空电子信号链。 这些开关提供最高至± 55 V的过压保护,并具有5.5 kV HBM ESD,保护
[网络通信]
ADI推出<font color='red'>故障</font>检测和保护、低/超平电阻开关系列产品
一种高速帧同步和相位模糊估计的方法及其FPGA实现
0 引 言   数字通信中的消息数字流总是用若干码元组成一个“字”,又用若干“字”组成一“句”。因此,在接收这些数字流时,同样也必须知道这些“字”、“句”的起止时刻,在接收端产生与“字”、“句”起止时刻相一致的定时脉冲序列,统称为群同步或帧同步。帧同步的检出一般可用相关检测技术完成。以往数据通信中的速率不是很高,相关检测的问题容易解决,但数字通信的日益高速率化的趋势,对实时状态下的相关检测提出了新的难度挑战。实际上,很多高速数传系统比如中继卫星通信系统,要求用户星和地面站下行链路间的传输数据率越来越高,达到了数百兆甚至上千兆的水平。在这样的高速环境下对数据进行实时的处理,就更加困难。   PSK调制在通信领域得到了广泛的应
[嵌入式]
一种高速帧同步和相位模糊估计的方法及其<font color='red'>FPGA</font>实现
测试和仿真技术在摩托车噪声控制中的应用
1 前言 机动车噪声是城市噪声公害的重要来源,也是环保工作的主要控制对象之一。为了减少机动车噪声污染,各发达国都制定了严格的法规对包括摩托车在内的车辆噪声加以限制。虽然我国目前对机动车噪声的控制力度尚未达到欧美、日本的水平,但从长远来看,政府不断强化对机动车环保性的要求并最终与发达国家接轨是一个必然趋势。随着新的摩托车噪声限制法规-GB4569-2000 的正式实施,外资摩托车企业的技术优势将更加明显,而部分国内企业将由于主导车型的噪声水平不能达标而陷入非常尴尬的处境。有资料表明,截至2005 年初国内在产车型约有一半不能达到GB4560-2000 的要求,其中125 排量以上骑式车情况最为严重,这无疑将造成国内摩托车行业生产、研
[测试测量]
联华电子的低功耗工艺协助Actel IGLOO在竞争中脱颖而出
全新5 μW 的FPGA产品发挥联华电子嵌入式 Flash与低功耗工艺的优势 有助于降低功耗 Actel 公司与联华电子公司 (UMC) 宣布双方结成伙伴关系,合作进行 Actel IGLOO TM 产品系列的生产,而 IGLOO 是业界最低功耗的 FPGA 产品。联华电子领先的 0.13 微米低功耗和 e-Flash 工艺与 Actel 的 IGLOO 功率模式选项和 Flash*Freeze TM 技术相结合,将使功耗得以降低至 5 μ W ,创下了业界的崭新标准。 Actel 创办人兼技术与营运高级副总裁 Esmat Hamdy 博士表示:“我们在 8 月份推出了创新的 IGLOO 器件, 其静态功
[焦点新闻]
浅析DSP与FPGA两大市场的发展和关系
  随着模拟IC市场中众多垂直细分行业的飞速发展,传统DSP器件遭遇了各种替代性信号处理平台的竞争,FPGA即为典型代表。凭借高密度、低功耗和低成本的优势,FPGA不仅在通信、消费类、嵌入式等广泛领域中行使DSP的职能,并且已经快速渗透到诸多新兴应用领域之中。   尽管FPGA在某些应用领域中可以取代DSP,但是FPGA并不会彻底颠覆现有格局。来自全球领先的高性能信号处理解决方案供应商ADI公司DSP亚洲业务区域经理陆磊先生表示,未来FPGA与DSP更多是协同处理关系,由于双方的可编程,重用性和算法升级都有共通性,因此,使用DSP或FPGA都能实现更低功耗和更高性能。   ADI公司DSP亚洲业务区域经理陆磊先生认为,DSP与FP
[嵌入式]
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved