. ^6 [8 N. z& W/ G* _# @) a3 }' r
在对复杂数字系统进行仿真测试时,设计者常常面对测试向量数量庞大而难以实现的问题。以数字图像处理系统的仿真测试为例,如果采用完备性测试方法.那么所需测试向量的数量将非常巨大,甚至无法实现:而采用测试向量波形图或者用HDL语言描述等常用方法.不仅仿真测试工作的效率低下,而且工作量巨大。在数字图像处理系统中,一帧320x240的数字图像所产生的测试向量数量达到320x240x2=153 600个。无论采用完备性测试方法还是向量波形图或者.HDL语言描述的方法,由于测试向量的数量极其巨大,采用这些方法都难以进行仿真测试。 5 ?/ _7 _8 t9 D% x/ z, K# a& V, e5 _' W" ~2 {, h ]' F
1 H8 L. T* W. K' Y, _0 x& i! i" b2 }' a8 V$ [1 v3 n& i( O& {4 n; W
针对这个难题,笔者提出一种进行仿真测试的新方法.该方法应用TEXTI0和:MATLAB来辅助仿真测试过程.使测试向量数量巨大、难以处理的难题得到很好的解决。以电视视频系统中实时多目标捕获单元的仿真测试为例.对这种新方法进行全面的讨论。 2 P3 k c. F* @6 u. P+ o' }; m/ l p# E- P% ] H7 z. [5 x
, x% F# Z0 B5 f+ A7 R
# k6 M6 E2 K# A. v U3 Z4 ?
2 基于TEXTIO的VlII)L仿真( c/ M& V4 s7 _# h4 ? p: K
$ t# x0 w m3 H: s0 \( Z& }, N+ a 8 s4 e. L& B! T+ |- G - M: {9 A# H* k' p m 2.1 TEXTIO的功能9 [, i& x3 u) K0 I# ~" E
2 V, N' r! }: ?% T5 S |- }7 E4 Z$ W; s% ? ) t) K9 \" `1 q- ^4 T' w+ U TEXXTl0是VHDL标准库STD中的程序包(Package),它提供了VHDL与磁盘文件直接访问的桥梁。TEXTIO定义了3种类型:LINE类型、TEXT类型及SIDE类型。TEXTI0在程序包中定义了一些访问文件的过程(Procedure)。 R9 l. K1 L) j! M; s2 Y8 V
9 j- a2 h' t9 ?, d5 Z1 s- [
) j0 u3 H: d/ k2 p
7 D3 c9 \. O5 R
TEXTIO提供的基本过程有: / Q, d, h& y2 L" ]5 ]8 s" M$ ^( M' C: w) w4 Q( x
( w- J3 h: U3 P( g$ G6 r# L8 b& }4 P
# u% I8 x8 j9 m( L
(1)procedure READLNE(文件变量,行变量),用于从指定文件读取一行数据到行变量中; 5 H/ k- u/ E* s- ?, j8 q% D3 U. Q1 d. t
(2)procedure WRITELNE(文件变量,行变量),用于向指定文件写入行变量所包含的数据;& b2 `: P- X: [$ {( H9 d
% ]1 ~/ h0 A# d0 {$ S I
(3)procedure READ(行变量,数据类型),用于从行变量中读取相应数据类型的数据.根据参数的数据类型及参数个数的不同.有多种重载方式,TEX-TIO提供了bit、bit、bit_vector、BOOLEAN、character、in-teger、real、string、time数据类型的重载; 9 V( I1 t% l! k( o4 Y $ W, x$ e' {8 N (4)mcedure WRITE(行变量,数据变量,写入方式,位宽),该过程将数据写入行变量。其中,写入方式表示写在行变量的左边还是右边,其值只能为left或right,位宽表示写入数据时占的位宽。例如write(Oufljne,OutData,left,2/表示将变量OutData写入LINE 变量OutLine的左边,占2个字节。 $ ~# \( ^/ ]5 y6 W! r1 t1 j ! L5 ]) ?1 i6 M6 } * n5 r* i) D8 ~' y
' b8 [) A5 ~0 l; J3 O
2.2 仿真测试方案! v( I! \& b$ v, {/ E3 [5 K0 r
m; \; E, K, H0 ]5 G* }
' ]+ h7 f9 b" ]
4 e% g* |) F) z; G* K) D6 P) b$ X
使用TEXTO和MNTLAB辅助TestBench进行复杂数字系统仿真的方案框图如图1所示。 ! |- T( _/ ? s2 p; x( l) u5 W3 r+ N0 i3 ~; E5 O7 g! d/ {6 o8 T
; q/ L0 ^- k V; i6 ?! U
$ o/ |/ i8 h( j6 T U b9 Z- S' ]1 V$ {' x$ ], N * _0 e5 N& Q, d) e 1 i( @3 C7 n" W% R* n) r
: K& Z; u+ M, [; g6 v% l" ]( v
2.3 仿真测试步骤0 z0 W& y! w, j- @: Z) G
* V9 [, n2 c+ A% t% V ' @# ], I1 X7 i) B$ ?
- N# l9 b$ F+ c; N S4 t3 u8 @( P2 S
2.3.1 使用MATLAB生成测试激励文件 & P" g5 ~' n' A" j+ M8 O: \ ' Z; w, A' q) e Y" g, z ' S/ h9 L# R* ]# M: k2 T, Z4 \* ?8 \3 `5 }7 Y) D) [
MATLAB是矩阵实验室(Matrix Laboratory)的缩写,是1984年MathWorks公司推出的软件。经过20多年的发展,MATLAB已成为通用科技计算、图视交互系统和程序语言,广泛应用于研究和解决各种具体工程问题。7 }0 W x- l3 e9 o
7 d9 J, I1 |' V
2 t, [; H# Q" u+ z
0 T. m, G7 b# m, L1 C
在复杂数字系统仿真中,用户可以利用MAT-LAB的强大处理功能生成测试激励文件。测试激励文件的数据格式由设计者自行定义。测试激励文件应包含输入信号的测试激励数据.也可以包含输出信号的期望输出数据.这些内容常常以.ASCII码表示。+ D3 C3 E$ b3 V& b3 b& l' ~' c e
( t. |- S! y# l; u. b9 ~* s% r' R8 n: G 1 N7 O6 B y1 Q0 u" Q5 Z/ k' x! B" m4 L* z, `
2.3.2 编写TestBench 1 h( a- R8 u! d# i f8 W0 d) b3 b7 m4 c6 m* {, j# S' R" Y f& X
9 w1 A! C; W- n7 g9 v. Z) m# c2 Z5 u, r9 J1 e0 `
TestBench是测试平台程序。TEXTI0的使用是通过TestBench来进行的,TestBench利用TEXTIO读取测试激励文件或写入仿真结果输出。进行复杂数字系统仿真时,用户根据测试的目的和要求设计TestBench。, G9 V G% z }" N& K: Z
+ }) Y. h0 |) V8 ]- Y) g) s3 W