首页 | 供应信息 | 采购信息 | PDF资料 | 技术资料 | 行业资讯 | 产品展示 | 人才市场 进入会员区
   技术文章分类:单片机/DSP 嵌入式系统 测试仪表 电源技术 接口电路 存储器 传感与控制 通信网络 无线通信 模拟技术 显示与光电 EDA/PLD 汽车电子 消费电子 电子综合
   电子综合工具:PDF资料大全 电子缩略语 IC型号替换 IC厂家 电子电路图 技术参数 设计应用 解决方案
技术资料 行业资讯 PDF资料 IC价格 IC替换 缩略语 IC供应 IC采购
  您所在的位置: IC37首页 > 技术资料 > EDA/PLD > 应用TEXTl0和MATLAB进行复杂数字系统仿真
应用TEXTl0和MATLAB进行复杂数字系统仿真
类别:EDA/PLD  
 
        

    

    

    作者:国防科技大学ATR重点实验室 张望,常青,喻小虎

    

    摘要:在基于FPGA的复杂数字系统的仿真测试中,设计者常常面临各种挑战。以数字图像处理系统的仿真为例。如果采用完备性仿真测试方法,那么测试矢量的数量将是非常巨大的;如果采用常规方法.不仅效率不高.而且可能无法达到仿真测试的目的。针对这个难题,提出一种进行仿真测试的新方法.该方法应用TEXTIO和MATLAB来辅助仿真测试过程,使问题得到较好的解决。以电视图像实时多目标捕获单元的仿真测试为例。全面、细致地讨论这种新方法。

    

    关 键 词:TEXTIO;MATLAB;TestBench;仿真;测试激励中图分类号:TN707 文献标识码:A 文章编号:。1006—6977(2006)01—0004—04

    

    1 引言

    

    在对复杂数字系统进行仿真测试时,设计者常常面对测试向量数量庞大而难以实现的问题。以数字图像处理系统的仿真测试为例,如果采用完备性测试方法.那么所需测试向量的数量将非常巨大,甚至无法实现:而采用测试向量波形图或者用HDL语言描述等常用方法.不仅仿真测试工作的效率低下,而且工作量巨大。在数字图像处理系统中,一帧320x240的数字图像所产生的测试向量数量达到320x240x2=153 600个。无论采用完备性测试方法还是向量波形图或者.HDL语言描述的方法,由于测试向量的数量极其巨大,采用这些方法都难以进行仿真测试。

    

    针对这个难题,笔者提出一种进行仿真测试的新方法.该方法应用TEXTI0和:MATLAB来辅助仿真测试过程.使测试向量数量巨大、难以处理的难题得到很好的解决。以电视视频系统中实时多目标捕获单元的仿真测试为例.对这种新方法进行全面的讨论。

    

    2 基于TEXTIO的VlII)L仿真

    

    2.1 TEXTIO的功能

    

    TEXXTl0是VHDL标准库STD中的程序包(Package),它提供了VHDL与磁盘文件直接访问的桥梁。TEXTIO定义了3种类型:LINE类型、TEXT类型及SIDE类型。TEXTI0在程序包中定义了一些访问文件的过程(Procedure)。

    

    TEXTIO提供的基本过程有:

    

    (1)procedure READLNE(文件变量,行变量),用于从指定文件读取一行数据到行变量中;

    (2)procedure WRITELNE(文件变量,行变量),用于向指定文件写入行变量所包含的数据;

    (3)procedure READ(行变量,数据类型),用于从行变量中读取相应数据类型的数据.根据参数的数据类型及参数个数的不同.有多种重载方式,TEX-TIO提供了bit、bit、bit_vector、BOOLEAN、character、in-teger、real、string、time数据类型的重载;

    (4)mcedure WRITE(行变量,数据变量,写入方式,位宽),该过程将数据写入行变量。其中,写入方式表示写在行变量的左边还是右边,其值只能为left或right,位宽表示写入数据时占的位宽。例如write(Oufljne,OutData,left,2/表示将变量OutData写入LINE 变量OutLine的左边,占2个字节。

    

    2.2 仿真测试方案

    

    使用TEXTO和MNTLAB辅助TestBench进行复杂数字系统仿真的方案框图如图1所示。

    

    

    

    2.3 仿真测试步骤

    

    2.3.1 使用MATLAB生成测试激励文件

    

    MATLAB是矩阵实验室(Matrix Laboratory)的缩写,是1984年MathWorks公司推出的软件。经过20多年的发展,MATLAB已成为通用科技计算、图视交互系统和程序语言,广泛应用于研究和解决各种具体工程问题。

    

    在复杂数字系统仿真中,用户可以利用MAT-LAB的强大处理功能生成测试激励文件。测试激励文件的数据格式由设计者自行定义。测试激励文件应包含输入信号的测试激励数据.也可以包含输出信号的期望输出数据.这些内容常常以.ASCII码表示。

    

    2.3.2 编写TestBench

    

    TestBench是测试平台程序。TEXTI0的使用是通过TestBench来进行的,TestBench利用TEXTIO读取测试激励文件或写入仿真结果输出。进行复杂数字系统仿真时,用户根据测试的目的和要求设计TestBench。

    

    2.3.3 在Modelsim中进行仿真

    

    Modelsim是Model Technology(Mentor Graphics的子公司)的HDL(Hardware Description Language)仿真软件。可以实现VHDL、Verilog及VHDL一Ver-ilog混合设计的仿真。Modelsim为’TestBench提供一种良好的HDL仿真环境。

    

    2.3.4 结果分析

    

    仿真结束后,仿真结果是否符合要求,用户可以通过二种方法来判断。一种是应用软件自动判断。即通过TestBench或其他软件(如MATLAB)对仿真输出结果和期望输出结果进行对比,从而得到分析结果:另外一种是人工判断.即设计者自行对仿真输出结果和期望输出结果进行对比,从而得到分析结果。

    

    3 仿真测试实例

    

    3.1 电视图像实时目标捕获单元功能

    

    电视图像实时目标捕获单元(以下简称待测单元)具有对电视图像中的目标图像进行实时捕获的功能。本例将用TEXllO和MATLAB辅助Test-Bench对待测单元进行仿真测试。

    

    3.2 需要产生的测试信号及波形

    

    待测单元输入信号的时序如图2所示。其中,clk、vsy、hsy和ccd分别代表像素时钟、数字化后的场同步、行同步和二值图像信号。

    

    

    用户设计的测试激励信号即测试激励文件中输入信号的激励数据,应符合图2所示时序的要求。

    

    3.3 测试信号的产生

    

    在MATLAB的开发环境中.通过编程可以生成测试激励文件。

    

    以下是生成测试激励程序的核心代码:

    image=imread(‘pic.bmp’);%读取图像文件

    [YN,XN]=size(image); %得到图像大小

    FZ=20; %晶体振荡器频率(MHz)

    %定义常数 %对应于图2所示的时序

    POSTIME=52.2; %行正程时间(μ8)

    NEGTIME=11.8; %行逆程时间(μs)

    HORTIME=64;%行正逆程总时间

    VSYTIME=1615; %场信号时间(μB)

    PPDOT=POSTIME*FZ/XN; %行正程时间*晶体振

    荡器频率,图像X方向分辨率

    ……

    

    fid=fopen(‘TestVectors.inp’,‘W’) ;%指定测试激励文件的文件名称

    for j=1:1:YN;

    yy_j;xx=0;

    for i=l:1:HORTIME*FZ;

    %产生行同步激励

    if(i<(HFNTIME+HDLTIME)*FZ)(i>(HFNTIME+HDLTIME+HSYTIME)*FZ)

    hsy=l;

    else

    hsy=0;

    end;

    %产生像素时钟激励

    if clk==1

    clk=0;

    else

    clk=l;

    end;

    %产生CCD激励

    if i>NEGTIME*FZ

    xx=round((i-NEGTIME*FZ)/PPDOT+0.45):

    ccd=round(image(yy,xx));

    else

    ccd=0;

    end;

    %将激励写入测试激励文件

    fprintf md.‘%d%d%d%d%d%d、Il’,clk,ccd,hsy,vsy);

    end;

    end;

    产生的测试激励文件名称为TestVectors.inp,激励内容以ASCII码表示,信号之间用空格隔开,且一行代表一次激励。下面是测试激励文件中的一段内容,激励包含clk,ccd,hsy,vsy 4个信号:

    0 0 1 1—clk=0 eed=0 hsy=l vsy=l

    1 0 1 1—clk=l ccd=0 hsy=l vsy=1

    …

    

    0 0 0 1——clk=O ccd=0 hsy=0 vsy=1

    …

    

    进行仿真时。TestBeneh应用TEXTIO通过逐行读取测试激励文件得到待测单元输入信号的激励。

    

    3.4 编写TestBench

    

    TestBench调用TEXTIO读取测试激励文件得到激励,然后将这些激励分别驱动到待测单元的输入端口。同时,TestBench读取待测单元的输出结果,调用TEXTIO将仿真输出结果写入文件名称为Re-sult.out的仿真结果输出文件。

    

    以下是TestBeneh的核心代码:

    testprocess:process

    file vector_file:text open read_mode is“TestVectors.

    inp”:一指定测试激励文件

    file output_file:text open write_mode is“Reset.out”:

    一指定仿真结果输出文件

    variable invecs,outvecs:line;

    variable good:boolean;

    variable eh:eharacter;

    ……

    

    while not endfile(veetor_file)loop

    readline(veetor_file.invecs);一读出测试激励文件一行内容.得到激励

    read(invees,vclk,good); 一一读取一个值给信号vclk

    read(invees,ch); 一一读取空格

    ……

    

    read(invees,wBy,good); 一读取一个值给信号vvsy

    read(invecs,ch); 一读取空格

    ……

    

    clk<=vclk;一驱动待测单元的输入信号clk

    ccd<=vced;一驱动待测单元的输入信号ccd

    hsy<=vhsy;一驱动待测单元的输入信号hsy

    vsy<=wsy;一驱动待测单元的输入信号vsy

    ……

    

    caseiis

    when 0=>out_string:=“frame_Yup0:”:一将目标0左上角Y坐标写入仿真结果

    when 1=>out_string=“frame_Ydn0:”:一将目标0右下角Y坐标写入仿真结果

    when 14=>out_strlng:=“frame_Xli3:”:一将目标3左上角X坐标写入仿真结果

    when 15=>out_string:=“frame_Xrt3:”:一将目标3右下角X坐标写入仿真结果

    when other8=>null;

    end case;

    write(outvees,string’(out_string));

    ……

    

    3.5 Modelsim中显示的测试波形及测试结果

    

    在Modelsim提供的HDL仿真环境中,运行TestBeneh进行仿真测试,得到测试向量波形(如图3所示)、仿真波形(如图4所示)和仿真输出结果文件ResuIt.out。对仿真输出结果进行分析表明,仿真输出的目标位置与输入电视图像中的目标位置完全一致。

    

    

    

    

    本例的结果分析是通过人工对比进行的。还可以将仿真预期输出结果保存在测试激励文件或其他文件中.TestBench调用TEXTIO读取仿真预期输出结果.并和仿真实际输出结果进行对比,然后自动判断结果是否正确。在某些场合下,例如对VHDL编写的处理器进行仿真调试时,用户可以将包括指令类型、源地址、目标地址在内的指令保存成文本文件。TestBench调用TEXTIO读取这些指令。同时.TestBeneh调用TEXTIO将结果及中间变量保存成文本文件,以便设计者事后分析和查找问题的原因。

    

    4 结束语

    

    TEXTIO程序包使VHDL的仿真功能得到拓展。MATLAB是研究和解决工程问题的有力工具。在基于FPGA的复杂数字系统的仿真测试中,灵活应用TEXTIO和MATLAB等工具包能很好地解决仿真测试中面临的测试向量庞大和难以处理的问题。

    

    

 
我要投稿 注册会员
客服咨询热线:0755-26000950 0755-26007355
 相关技术资料
·移动Agent在DIDS中..  2008-1-21
·分布式运算单元的原理及其实..  2007-8-9
·FPGA作为协处理器在实时..  2007-8-9
·利用MATLAB增强MAX..  2007-8-7
·基于EPLD的PCI总线仲..  2007-8-7
·现代可编程计算机控制器PC..  2007-8-9
·FPGA在多进制正交扩频通..  2007-8-9
·用PLC实现的蜂窝移动通信..  2007-7-29
·基于FPGA的FIR滤波器..  2007-8-9
·伪随机序列及PLD实现在程..  2007-8-7
·视频窗口控制器设计  2007-7-29
·SDRAM接口的VHDL设计  2007-8-9
·用CPLD实现FIR数字滤..  2007-8-9
·容错系统中的自校验技术及实..  2007-7-29
·一种用VHDL设计实现的有..  2007-8-9
·高密度在系统可编程逻辑器件..  2007-8-9
·VHDL设计中电路简化问题..  2007-8-9
·用在系统可编程模拟器件实现..  2007-8-9
·DSP+FPGA实时信号处..  2007-8-9
·基于FPGA技术的新型高速..  2007-7-29
 
 热门IC
BSM30GP60  DM7408N  ML6652CH  2MBI75N-060  6DI120A-060  6DI120C-060  MG100Q2YS1  MG100Q2YS40  X28C64PI-25  IRFS4710  SUD25N15-52  SUB40N06-25L  HUFA76419D3S  BSP254A  BU4522AF  MC10H102PG  MBRD660CTT4G  HGTP20N60B3  APT30D40B  IRF1010ES  NJM2245L  SN74AHCT374N  SN74AHCT16541DGGR  SN74ALS38BD  EGP10B  BDT63C  MGF4951A  LT1083CP-5  UCC3626DW  X9313WSIT1  XC17256EPC20I  XC2S150E-7PQ208C  XC2V500-6FG256C  CD74HC688M  BQ4013YMA-70  CDC391D  LMC6682AIM  EL7556ACM  MC68HC705C8AFN  MC74HC4053FL2  MC74HC14ANG  MC10211FNR2  MB90553APF-G-164-BND  M34282M2-064GP  MB87J1541PFVS-G-BND  CY7C374I-83AC  CY7C4292V-25ASC  MC92501GC  MCR03EZPFX2212  MCR03EZPFX2001