一种基于SoPC的FPGA在线测试方法

2011-04-01 14:44:55来源: 现代电子技术
   

摘要:针对Altera公司现有FPGA在线测试方法无法适应大批量测试/激励数据自动传输的情况,论文提出了一种基于SoPC的FPGA在线测试方法,该方法采用Nios II控制数据传输过程、DMA协助数据传输、FIFO作为数据暂存,采用自定义外设完成了DMA模块与FIFO的接口设计,从而DMA可以直接操作FIFO,测试结果表明该方法是一种可行且高效的FPGA在线测试方法。创新性在于充分利用JTAG接口完成FPGA的在线测试,同时测试数据能够写入PC中的文件/激励数据从文件读出。
关键词:在线测试:SoPC;DMA;Host-Base File System

    可编程逻辑器件供应商Altera公司针对FPGA的开发推出了6种系统在线测试方法:SignalTapⅡ、SignalProbe、Logic Analyzer Inter-face、In-System Sources and Probes、In-System Memory Content Editor以及Virtual JTAG。上述各种在线测试方法中,只有最后两种方法允许PC和FPGA进行基于文件的数据交互。而In-System Memory Content Editor只允许用户手动更新FPGA片上RAM的内容,不利于测试数据的大规模自动采集和传输。Virtual JTAG虽然可以实现测试数据采集和传输的自动控制,但是需要利用TCL接口函数编写代码,而且要求用户对JTAG有深入的了解,增大了开发难度。本文提出了一种基于SoPC的FPGA在线测试方法,是对现有FPGA在线测试方法的一种有效的补充。

1 在线测试数据操作流程
    基于SoPC的FPGA在线测试方法的数据操作流程如图1所示。如果用户需要采集FPGA的测试数据并且上传至PC机,则用户首先要将被测试数据写入DMA读从外设,然后系统自动启动DMA控制器,将数据送入Nios II的数据存储器。再由JTAG UART控制器经JTAG接口上传至Nios II IDE(NiosⅡ href="http://www.chinaaet.com/search/?q=NiosⅡ">NiosⅡIntegrated Development Environment,Nios II开发环境),Nios II IDE将接收到的数据写入测量数据存储文件,从而完成了FPGA测试数据的上传。如果用户需要将PC机中的激励数据文件下载至FPGA,则系统首先在Nios II IDE中通过Host-Based File System读出激励文件数据,然后由JTAG接口经JTAG UART控制器下载至Nios II处理器的数据存储器,Nios II发起DMA写传输把数据从数据存储器搬运至DMA写从外设并写入FPGA片上FIFO,从而完成了激励数据的下载。

1.JPG



2 SoPC平台架构
    SoPC系统部件组成见图2,系统包括Nios II处理器、On-Chip RAM、JTAG UART、EPCS控制器,SYSID、定时器、DMA读控制器dma_0、DMA写控制器dam_1,以及自定义DMA读从外设fifo_control与自定义DMA写从外设ext_rdfifo_controller。NiosⅡ的复位地址为EPCS控制器,异常地址为On_ChipRAM。DMA读控制器的读主端口连接至自定义DMA读从外设,写主端口连接至On-Chip RAM,DMA写控制器的读主端口连接至On-Chip RAM,写主端口连接至自定义DMA写从外设。系统的JTAG UART主要实现JTAG接口的控制,使FPGA能够通过JTAG接口与PC机进行通信。

3 DMA读、写从外设的设计
    测试数据在DMA控制器读数据之前是存储在片上FIFO的,而激励数据是通过DMA控制器写入片上FIFO的。然而DMA控制器数据读、写主端口采用的是Avalon存储器映射接口(Avalon Memory Mapped Interface,Avalon-MM接口),不能直接对FIFO进行操作,Altera公司也没有提供相应的控制器核,需要用户自己开发DMA读从外设用于控制FIFO把测试数据传送给DMA控制器,以及DMA写从外设用于控制FIFO接收DMA控制器的激励数据。本文开发的DMA读从外设模块结构框图如图3所示。

2.JPG


    DMA读从外设包括了3个端口,即控制从端口、DMA从端口以及FIFO写端口。DMA读从外设的控制从端口包括3个寄存器,分别是状态寄存器status、控制寄存器control、FIFO已使用字数寄存器usedw。NiosⅡ通过读/写这些寄存器获取此外设的状态以及实现对此外设的控制。另外,控制端口还包含了中断接口用于此外设向NiosⅡ发起中断请求。DMA读从外设产生中断请求有2种情况:一是内部FIFO写满;二是收到外部测试数据的包结束信号。此时,即使FIFO未写满,DMA读从外设也会发起中断请求,从而实现采集的测试数据的立即传输。DMA从端口采用带流控制信号的AvalonMM总线,用于实现DMA控制器的测试数据读操作;管道接口是测试数据写入此外设的FIFO接口,包括数据总线、写有效信号和一些状态信号(如FIFO写满信号等)。DMA写从外设的结构与DMA读从外设类似,只是没有中断请求信号,这里不再详述。

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所示,其中数字后面的小黑块代表换行符,从结果看,此方法实现了测试数据的正确上传(注:由于测试数据太长,文中只给出数据的首部和尾部的截图)。

3.JPG

4.JPG


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

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

关键字:SoPC  FPGA  在线测试  NiosⅡ  altera

编辑:北极风 引用地址:http://www.eeworld.com.cn/FPGA/2011/0401/article_2001.html
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。
论坛活动 E手掌握
微信扫一扫加关注
论坛活动 E手掌握
芯片资讯 锐利解读
微信扫一扫加关注
芯片资讯 锐利解读
推荐阅读
全部
SoPC
FPGA
在线测试
NiosⅡ
altera

小广播

独家专题更多

TTI携TE传感器样片与你相见,一起传感未来
TTI携TE传感器样片与你相见,一起传感未来
TTI携TE传感器样片与你相见,一起传感未来
富士通铁电随机存储器FRAM主题展馆
富士通铁电随机存储器FRAM主题展馆
馆内包含了 纵览FRAM、独立FRAM存储器专区、FRAM内置LSI专区三大部分内容。 
走,跟Molex一起去看《中国电子消费品趋势》!
走,跟Molex一起去看《中国电子消费品趋势》!
 

夏宇闻老师专栏

你问我答FPGA设计

北京航空航天大学教授,国内最早从事复杂数字逻辑和嵌入式系统设计的专家。

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