新闻中心

EEPW首页>测试测量>设计应用> 基于SoPC的FPGA在线测试方法

基于SoPC的FPGA在线测试方法

作者: 时间:2011-11-09 来源:网络 收藏
4 数据传输的NiosⅡ控制

  4.1 DMA控制器的操作

  Altera公司为DMA控制器提供了硬件抽象层(HAL)接口函数,使用这些函数编程需要注意的地方主要有2点:一是要考虑到Cache数据的一致性问题,在调用发送/接收函数之前需要调用相关函数清除数据Cache中的内容;另外一个需要注意的地方是DMA控制器的alt_dma_txchan _send()函数以及alt_dma_rxchan_prepare()函数的第3个参数表示的是请求DMA控制器发送/接收的字节数,而不是字或者双字、四字数。

  4.2 Host-Base File System

  Altera公司提供的Host-Base File System组件可以使正在目标板上执行的程序读/写存储在主机上的文件,文件的数据是NiosⅡIDE通过Altera下载线缆与目标板进行数据交互的。目标板上的程序可以使用ANSIC标准库函数如fopen、fread等函数来进行文件的操作,用户使用Host-Base File System前必须先在NtosII IDE工程中添加这个软件组件,而且只能运行在Debug模式下。另外,对于上传至PC的测试数据,也可以使用设置标准输入/输出信息存放于主机上的某个文件(在NiosⅡIDE/Run/Run…/Common下指定)而绕开Host-BaseFile System,但是对于主机文件数据下载给目标板的情况,对文件的操作必须添加这个组件。

  4.3 测试数据读、写控制

  当需要采集测试数据时,首先在FPGA内部用硬件语言编写模块把测试数据存入DMA读从外设的FIFO,然后DMA读从外设产生中断请求,NiosⅡ接到中断请求后,首先查看中断产生的原因是FIFO写满还是数据包结束。若中断原因是数据包结束,则NiosⅡ读DMA读从外设的usedw寄存器获取FIFO已使用字数,并把这个值作为DMA控制器的传输长度发起DMA传输;若是FIFO写满,则发起固定长度(如FIFO深度)的DMA读传输,DMA传输完毕后用ANSIC标准函数fwrite()把数据写入PC机的数据文件。

  对于存储在PC机上的数据激励文件,NiosⅡIDE首先通过ANSIC标准函数fread()读入NiosⅡ的数据存储器,在查询DMA写从外设中FIFO未满时,把数据写入外部的FIFO,完成数据激励文件的传输。

  5 系统验证

  5.1 系统测试条件

  本次测试中FPGA芯片为Altera公司的CycloneIII EP3C120F484C8,系统时钟为50 MHz,使用的JTAG传输线缆为USB Blaster,NiosⅡ为经济模式,自定义DMA读、写外设内部FIFO均为2 K×16 b,NiosⅡ数据存储器On-Chip RAM大小为60 KB,使用Host-Base File System组件,在NiosⅡ工程属性中选中“Reduced device drivers”,经过NiosⅡIDE编译后代码占用程序存储空间为50 KB。

  5.2 测试数据传输测试

  在FPGlA目标系统测试数据上传至PC的测试中,在FPGA内部用verilog语言编写了一个数据源模块,数据源输出为2~8 000的计数值,数据宽度为16位,在数据8 000输出时,数据包结束信号有效,这样既可以验证FIFO满中断的情况又可以验证数据包结束中断的情况。测试数据源首、尾部的SignalTapⅡ测试波形如图4所示。在NiosⅡIDE,通过把pritnf()函数输出的调试信息自动存放到一个文本文件中,删去首、尾的调试信息即得到有效数据文件。文本文件数据结果如图5所示,其中数字后面的小黑块代表换行符,从结果看,此方法实现了测试数据的正确上传(注:由于测试数据太长,文中只给出数据的首部和尾部的截图)。

  5.3 激励数据传输测试

  在激励数据传输测试时激励数据为存储于PC机上的计数值为1~2048二进制流文件,数据宽度为16位,通过加入Host-Base File System组件调用fopen()与fread()函数完成数据的读出,当查询DMA写从设备未满时发起DMA传输,图6是外部逻辑读DMA写从设备中FIFO的Signal Tap II测试波形图。从图中的结果看,数据读出为1~2 048,实现了激励数据的正确下载。

  6 结语

  本文提出了一种基于方法,这种在线测试方法可以把存储在FPGA片上FIFO的测试数据通过JTAG接口上传至PC机并写入文件,也可以把存储在PC机上的激励文件通过JTAG接口下载到FPGA的片上FIFO。相比Altera已有的在线测试方法,此方法采用DMA操作,具有较高的数据吞吐量;采用NiosⅡ控制测试/激励数据的传输,无需手动操作;采集过程的控制由C语言编写,简单易用;使用PC机上的激励文件或者把测试数据存储为PC机上的文件,可以使用其它分析工具(如Matlab)产生激励文件或者对测试数据文件进行分析;另外,此方法对测试数据的采样深度没有限制。因此,这种在线测试方法具有广泛的应用前景。


上一页 1 2 下一页

关键词:SoPCFPGA在线测试

评论


相关推荐

技术专区

关闭