中国·芯片交易在线
首页 | 供应信息 | 求购信息 | 库存查询 | 新闻中心 | 展会资讯 | IC厂商 | 技术资料 | 自由区域
   新闻首页 |  行业动态 | 新品发布 | 政策法规 | 科技成果 | 模拟技术 | 嵌入系统 | 传感控制 | 存储设计  
当前位置:IC72首页>> IC新闻中心>> 模拟技术 >>电子行业新闻正文

应用TEXTl0和MATLAB进行复杂数字系统仿真

时间:2006/9/11 12:17:00  作者:  来源:ic72  浏览人数:2047
 
 

      摘要:在基于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所示。

ic72新闻中心

      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分别代表像素时钟、数字化后的场同步、行同步和二值图像信号。 
     

ic72新闻中心

       用户设计的测试激励信号即测试激励文件中输入信号的激励数据,应符合图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等工具包能很好地解决仿真测试中面临的测试向量庞大和难以处理的问题

 
【相关文章】
·基于DDS技术的声纳信号模拟器
·一种在U—BooT中嵌入千兆网络功能的方法
·高速USB数据采集系统的设计
·基于超声波检测的倒车雷达设计
·D类音频功率放大器的评估及应用
·锁相环CD4046应用
·如何选择正确的芯片验证方法
·PB50型高压功率升压放大器及其应用
·基于AD6620的正交解调器设计
·多DSP系统实现雷达极化信号两对IQ的采集和处理
·应用TEXTl0和MATLAB进行复杂数字系统仿真
·多时钟域下同步器的设计与分析
·音频精确延时系统及其实现
 
 
IC新闻搜索
 
热点新闻
基于红外超声光电编码器的室内移动小车定位系
基于闪烁存储器的TMS320VC5409DSP并行引导装载方法
非移动市场需求飙升,ARM预计2010年出货量超50亿片
一种快速响应的电容式湿度传感器感湿薄膜设计
利用特殊应用模拟开关改进便携式设计
无线传感器网络跨层通信协议的设计
基于ARM9内核Processor对外部NAND FLASH的控制实现
基于GSM技术的汽车防盗系统的设计
热电阻在烟叶初烤炕房温度控制中的应用
高速数据转换系统对时钟和数据传输的性能要求
友情连接
 关于我们  IC论坛  意见反馈  设置首页  广告服务  用户帮助  联系我们
copyright:(1998-2005) IC72 中国·芯片交易在线
(北京)联系电话:(010)82614113、82614123 传真:(010)82614123 客户服务:service@IC72.com 库存上载:IC72@IC72.com
在线MSN咨询:ic72sale8@hotmail.com 通信地址:北京市西城区西直门内大街2号大厦15层 邮政编码:100013
(深圳)联系方式: 在线MSN咨询:ic72sale6@hotmail.com 在线QQ咨询:191232636 通信地址:深圳市福田区振华路
注 册 号: 1101081318959(1-1)

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9