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

发布者:电竞狂人最新更新时间:2010-11-14 来源: 深圳中兴通讯股份有限公司关键字:FPGA  EDA仿真 手机看文章 扫描二维码
随时随地手机看文章

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

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

  问题的提出

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

  这样就会出现三个问题:

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

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

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

  举例说明:

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

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

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

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

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

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

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

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

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

  仿真解决故障的方法

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

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

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

  图2 SignalTap抓信号界面

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

  图3 SignalTap II List File界面

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

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

  图4 “另存为”选项界面

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

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

  ②利用.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对应位作为输入接入即可。[page]

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

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

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

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

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

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

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

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

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

  总结

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

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

上一篇:基于FPGA的UART控制器的多模块设计与实现
下一篇:基于SOPC技术的软件无线电系统研究

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

基于FPGA的LCoS驱动和图像处理系统设计
基于空间光 调制器 的计算全息三维显示技术, 目前常采用透射式 LCD 和反射式LCo S 作为空间 光调制器 , 以改变光经过空间光 调制器 ( SLM) 后的空间相位和振幅分布, 达到对光信息的调制。传统的基于透射式LCD 空间光调制器的计算全息三维显示系统, 其成像光路复杂, 而且必须依赖计算机进行数据发生、采集以及处理, 这就限制了系统应用的灵活性, 不便于推广。   相较于透射式LCD, LCo S 具有光利用率高、体积小、开口率高、器件尺寸小等特点, 可以很容易地实现高 分辨率 和微显示投影。采用彩色LCoS 屏显示基于RGB 的彩色图像, 经过光学成像系统投影到接收屏上,实现计算全息图像的三维显示。   基于FP
[嵌入式]
基于<font color='red'>FPGA</font>的LCoS驱动和图像处理系统设计
FPGA上对OC8051IP核的修改与测试
引 言 20世纪80年代初,Intel公司推出了MCS-51单片机,随后Intel以专利转让的形式把8051内核发布给许多半导体厂家,从而出现了许多与MCS-51系统兼容的产品。这些产品与MCS-51的系统结构相同,采用CMOS工艺,因而常用80C51系列来指代所有具有8051指令系统的单片机。在80C51系列中,OC8051以架构清晰、取指带宽大、时钟效率高等诸多优点受到业内人士的青睐。本文在分析OpenCores网站提供的一款OC8051IP核的基础上,给出了一种仿真调试方案;利用该方案指出了其中若干逻辑错误并对其进行修改,最终完成了修改后IP核的FPGA下载测试。 1 OC8051结构分析 OpenCores网站提供的OC8
[单片机]
在<font color='red'>FPGA</font>上对OC8051IP核的修改与测试
ARM和CPLD以及FPGA的技术特点和区别
在嵌入式开发领域,arm是一款非常受欢迎的微处理器,其市场覆盖率极高,DSP和FPGA则是作为嵌入式开发的协处理器,协助微处理器更好的实现产品功能。那三者的技术特点以及区别是什么呢?下文就此问题略做了总结。 arm(AdvancedRISCMachines)是微处理器行业的一家知名企业,设计了大量高性能、廉价、耗能低的RISC处理器、相关技术及软件。 ARM架构是面向低预算市场设计的第一款RISC微处理器,基本是32位单片机的行业标准,它提供一系列内核、体系扩展、微处理器和系统芯片方案,四个功能模块可供生产厂商根据不同用户的要求来配置生产。由于所有产品均采用一个通用的软件体系,所以相同的软件可在所有产品中运行。目前arm在
[单片机]
ARM和CPLD以及<font color='red'>FPGA</font>的技术特点和区别
赛灵思Kintex-7 FPGA DDR3接口性能演示
本演示展现了 Kintex-7 FPGA 连接 DDR3 存储器的接口功能。从演示中可以看出将高性能1600 Mbps DDR3 设计移植到硬件平台上是多么简单。有关示例目前已经发布。这些功能使用户能够快速启动 FPGA 设计中的 DDR3 部分,以加快整体产品上市进程。这里给出的参考设计是标准的 IP 核,可通过存储器接口生成器 (MIG) IP 核免费提供。该参考设计已导入 Kintex-7 KC705 平台。本演示还采用了 ChipScope™ 分析器软件来展示接口和 DDR3 控制器的功能。该软件可以测试并验证 DDR3 接口以 1600 Mbps 的速度在Kintex-7 FPGA 开发套件 KC705 板上的 FPGA
[嵌入式]
一种基于ARM+FPGA的高精度数据采集系统设计
1、引言 随着图像处理、工业控制、无线通信等领域的飞速发展,对数据采集系统的速度、精度等性能要求也越来越高。这些要求都对数据采集系统的设计和实现提出了新的挑战。目前数据采集系统的设计方案通常分为以下几类: 1)以微处理器单一控制芯片和A/D转换器形式为主,该设计方案简单,在对性能要求不高的应用场合为了降低成本甚至可以采用集成A/D转换器的微处理器。 2)采用通用计算机配置数据采集卡的方式,通常需要开发计算机端应用程序,可以完成复杂的计算,但不同的采集卡相应的驱动程序不同,如果需求改变需要更换采集卡时,相应的应用程序也需要重新开发。因此,该设计方案通用性差,实时性不高。 3)以ARM和FPGA或DSP和FPGA组合方式作为采集系统的
[单片机]
一种基于ARM+<font color='red'>FPGA</font>的高精度数据采集系统设计
基于FPGA的面阵CCD驱动电路的设计
   0 引言   CCD(Charge Coupled Devices)电荷耦合器件是20世纪70年代初发展起来的新型半导体集成光电器件。近30年来,CCD器件及其应用技术的研究取得飞速进展,特别是在图像传感和非接触测量领域的发展尤为迅速,它具有噪声低、光谱响应宽、精度和灵敏度高、可靠性好等优点。CCD成像系统主要由光学系统、驱动电路、信号处理电路和图像处理电路组成。   本文主要介绍CCD传感器驱动电路的设计,包括驱动时序产生电路、电源变换电路和驱动器电路。其中,驱动时序产生电路向CCD传感器提供正常工作所需要的各种时序脉冲;电源变换电路向CCD提供正常工作时所需的各种直流偏置电压;驱动器电路用来提高驱动时序的驱动能力。
[嵌入式]
基于<font color='red'>FPGA</font>的面阵CCD驱动电路的设计
莱迪斯推出工业用基于ECP5 FPGA的全新开发板
Kondor AX开发平台采用莱迪思的低功耗、小尺寸ECP5 FPGA,能够实现可编程互连以及计算加速功能 丰富的外部接口以及对于Linux操作系统的支持使得该平台能够帮助实现快速的应用设计,包括小型蜂窝、IP摄像头以及物联网网关 莱迪思半导体公司(NASDAQ: LSCC),客制化智能互连解决方案市场的领先供应商,今日宣布携手Mikroprojekt推出基于ECP5 FPGA的全新开发平台,用于加速通信和工业领域中网络边缘应用的系统设计,包括HetNet小型蜂窝、工业物联网网关以及IP摄像头应用。Mikroprojekt的Kondor AX开发平台采用莱迪思的低功耗、小尺寸ECP5 FPGA,该器件提供灵活
[嵌入式]
FPGA芯片产品销售量大幅增长 安路科技Q1扣非净利润同比增870.90%
4月28日,安路科技发布一季度业绩报告称,今年一季度,公司实现营业收入为2.58亿元,同比增长72.15%,归母净利润为1769.39万元,同比增长206.34%;扣非净利润为1546.13万元,同比增长870.90%。 安路科技称,随着公司芯片产品不断丰富且竞争力持续提升,市场影响力持续增强,一季度营业收入同比保持大幅增长。同时,公司研发费用占收入比持续下降,公司报告期内实现盈利。 资料显示,安路科技是国内较早开始FPGA芯片及专用EDA软件研发、设计和销售的企业。经过十年的自主研发和技术积累,公司形成了完善的技术体系和深厚的技术储备,具备了FPGA产品硬件、软件、测试、应用方面完整的核心技术。 目前,公司的FPGA芯片产品
[手机便携]
<font color='red'>FPGA</font>芯片产品销售量大幅增长 安路科技Q1扣非净利润同比增870.90%
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

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

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