数学建模社区-数学中国

标题: matlab [打印本页]

作者: YShangJ    时间: 2012-2-8 20:07
标题: matlab
1 引言! C3 Y% X7 O2 L! d& z" D: C% k4 o, l

- E- t8 s9 r0 c    + Q; T0 e7 i* ]  q) m
7 \2 E/ J2 u0 d# b4 Y. D+ e1 j% V
    在对复杂数字系统进行仿真测试时,设计者常常面对测试向量数量庞大而难以实现的问题。以数字图像处理系统的仿真测试为例,如果采用完备性测试方法.那么所需测试向量的数量将非常巨大,甚至无法实现:而采用测试向量波形图或者用HDL语言描述等常用方法.不仅仿真测试工作的效率低下,而且工作量巨大。在数字图像处理系统中,一帧320x240的数字图像所产生的测试向量数量达到320x240x2=153 600个。无论采用完备性测试方法还是向量波形图或者.HDL语言描述的方法,由于测试向量的数量极其巨大,采用这些方法都难以进行仿真测试。) c3 E+ d, i; A- l9 V4 w5 K1 g7 }  ~, c

& O6 t  H+ @3 ^% P3 T9 |1 h+ e   
- i, n* X+ e/ g: v' ?$ @
; K9 O& M4 ^7 G$ U. V0 v    针对这个难题,笔者提出一种进行仿真测试的新方法.该方法应用TEXTI0和:MATLAB来辅助仿真测试过程.使测试向量数量巨大、难以处理的难题得到很好的解决。以电视视频系统中实时多目标捕获单元的仿真测试为例.对这种新方法进行全面的讨论。
, x' I. W7 F/ C5 @1 X( I& T( u2 O5 a5 q: u# A
   
7 T/ o/ u( }& W; S6 L8 H1 N3 Q5 X2 L  Z! B5 p1 b
    2 基于TEXTIO的VlII)L仿真
9 y, D$ T  b$ m2 [: ]0 g( z! |& k! I9 w6 o
    + [" x* p( J3 e4 ~* M! j

) n5 o. X$ I9 w    2.1 TEXTIO的功能
1 a( d4 U! M. q3 Z) m6 k! t: R, \
( _2 t9 T; J" }   
7 T, J4 q0 I; y+ b; j) l% g
2 m- T% i' q* R" Z' K# u, V  M    TEXXTl0是VHDL标准库STD中的程序包(Package),它提供了VHDL与磁盘文件直接访问的桥梁。TEXTIO定义了3种类型:LINE类型、TEXT类型及SIDE类型。TEXTI0在程序包中定义了一些访问文件的过程(Procedure)。
8 |+ C0 K. l6 t1 M4 }& S
8 ]4 n4 C* f! g% L( o    8 Y0 O9 C7 L: }8 @: b0 \. i, N" s

/ }$ \; e0 }& `  ?$ a    TEXTIO提供的基本过程有:( d- N  |" `: v$ r) h8 t# W; j

; J+ p5 d; ]# ^+ k% |9 b    " E& L5 T& F$ N4 E

4 T" @9 B- h1 ]; V) ]& f    (1)procedure READLNE(文件变量,行变量),用于从指定文件读取一行数据到行变量中;
7 W4 x( U# Q% l* R/ k8 T4 y" s; p. u$ X
    (2)procedure WRITELNE(文件变量,行变量),用于向指定文件写入行变量所包含的数据;5 c2 @9 T/ C" Q# R) K, p9 d
: I# P+ p; B) E' @; D8 l. _
    (3)procedure READ(行变量,数据类型),用于从行变量中读取相应数据类型的数据.根据参数的数据类型及参数个数的不同.有多种重载方式,TEX-TIO提供了bit、bit、bit_vector、BOOLEAN、character、in-teger、real、string、time数据类型的重载;
2 \# ^3 u8 U9 n" ^
7 @8 v% c0 D8 N; L0 D, E    (4)mcedure WRITE(行变量,数据变量,写入方式,位宽),该过程将数据写入行变量。其中,写入方式表示写在行变量的左边还是右边,其值只能为left或right,位宽表示写入数据时占的位宽。例如write(Oufljne,OutData,left,2/表示将变量OutData写入LINE 变量OutLine的左边,占2个字节。
8 o) {' o1 \6 t9 Q( L( q# y" t% R7 K# f! t- T
   
% _* E& Q: D# t; E: _  B0 t. N: C! t' ?) x; ?) u1 z& D6 G
    2.2 仿真测试方案
/ q& ~2 t5 f; b) s; N. G
4 R% r3 x  X8 H$ P   
' F% A! O% M! c5 X. X3 H/ Z" l- U! W( t* Y' G  Z  r7 D9 J
    使用TEXTO和MNTLAB辅助TestBench进行复杂数字系统仿真的方案框图如图1所示。
' e7 D- V, \" `1 I& v0 ]2 z5 P" ]
+ \: T; `! u! S7 q* i/ s' Q7 s9 X   
( X0 S- V( g  V$ W/ o7 v  l9 e4 w4 I9 j+ V( a- J& F
   
7 B% H4 }4 J" R5 u0 @' w
/ }1 [- Y6 I) t1 O   
7 V* Z  p! x7 r* v) \5 i$ ~) q# i+ [6 e: V# s' J& E% y
    2.3 仿真测试步骤+ b+ w" C& ?( B9 I# L1 E2 d1 @1 t
( C; F) f; p9 \) x4 F' C
   
. x9 H% G1 g2 j- S  C# F" S6 c' u) k
    2.3.1 使用MATLAB生成测试激励文件+ Z& S1 w8 I: S5 L% p0 @9 D

. s# F% ^- e( L% \! f) N    7 i7 _. M4 O- ]- i4 X

" H% P, F& g" a  r. z4 g7 K    MATLAB是矩阵实验室(Matrix Laboratory)的缩写,是1984年MathWorks公司推出的软件。经过20多年的发展,MATLAB已成为通用科技计算、图视交互系统和程序语言,广泛应用于研究和解决各种具体工程问题。
, p+ i% f+ F( R3 p' p0 r
  t; P. n, g, }" C   
8 b, R  D" m$ u/ |* g) c) r- Y
* @' l9 o9 m6 Y8 M+ R9 L; ?    在复杂数字系统仿真中,用户可以利用MAT-LAB的强大处理功能生成测试激励文件。测试激励文件的数据格式由设计者自行定义。测试激励文件应包含输入信号的测试激励数据.也可以包含输出信号的期望输出数据.这些内容常常以.ASCII码表示。* L* Q' B; q! j- ?
& ~9 b2 F# R( P4 \! ?3 F
    8 T/ |; E5 i1 G: R; a. `
: L) x+ n9 K: P# j+ {
    2.3.2 编写TestBench- G: \: ?6 K& q) W' i0 @! F* ^9 G7 |, r

* U9 q' e) r/ E! K) {    8 ^# C- s/ u( I2 N) Y
/ W& [0 ^0 ]. e6 ]/ E
    TestBench是测试平台程序。TEXTI0的使用是通过TestBench来进行的,TestBench利用TEXTIO读取测试激励文件或写入仿真结果输出。进行复杂数字系统仿真时,用户根据测试的目的和要求设计TestBench。! ~; [: B+ s7 S  Q7 J

8 z' g& r2 g  ^2 ^4 O8 G; f    ( `5 o* k  E8 L4 _3 {4 u
5 m& I' b; E6 j3 S* [7 f
    2.3.3 在Modelsim中进行仿真
# {: K! c  [+ S, k5 L/ V! r/ K% Q  W% q, K' h' M( O
    , \/ N9 _5 ?# x; F

6 w9 v  a: E* @  D4 g2 ]9 t$ K    Modelsim是Model Technology(Mentor Graphics的子公司)的HDL(Hardware Description Language)仿真软件。可以实现VHDL、Verilog及VHDL一Ver-ilog混合设计的仿真。Modelsim为’TestBench提供一种良好的HDL仿真环境。
0 z" i& t& L. [4 m5 ^; H
! g; w/ ?3 @0 @+ M    0 c0 a( P1 Q% H  Z$ d" J

5 Y* c7 S9 v& B! m. r  x2 a    2.3.4 结果分析! ^. `: F0 E+ f- P+ Y/ n
  z: {0 W3 c! S5 N6 G  L
   
' E' @) u! U0 s: Q0 s  r4 Q
- X# `9 l1 F4 J8 b    仿真结束后,仿真结果是否符合要求,用户可以通过二种方法来判断。一种是应用软件自动判断。即通过TestBench或其他软件(如MATLAB)对仿真输出结果和期望输出结果进行对比,从而得到分析结果:另外一种是人工判断.即设计者自行对仿真输出结果和期望输出结果进行对比,从而得到分析结果。5 Z, H) Y& R1 x4 t4 n

* f" l2 t" `# [) c    $ @& W. |1 M- J4 z$ M0 \) w, B
: ]$ t* c4 N& t! e
    3 仿真测试实例; V# V1 @" g6 V$ Y
* w6 }+ ?# Q4 ]/ p3 G, g. J- d
    ) l- |1 z# d* b: ~3 @$ C! m, \) u

3 h$ |" @/ D) h  Z6 x( @    3.1 电视图像实时目标捕获单元功能
/ z' ?* ?) F# g. Q
5 B  Z4 j  K0 c6 U    # l" L7 \( T5 \5 G( B# r0 y

# K, j; @, z" j# E$ }1 G6 y0 y    电视图像实时目标捕获单元(以下简称待测单元)具有对电视图像中的目标图像进行实时捕获的功能。本例将用TEXllO和MATLAB辅助Test-Bench对待测单元进行仿真测试。
: ?0 K* S' S# Z8 ?& I6 b- M! n( e' }+ F, q& q$ C
   
$ ^  J& Z/ d8 Z0 p
: c) z9 H) X$ g8 t! b1 ^    3.2 需要产生的测试信号及波形
4 w9 i- @+ @. c  m( N4 x* y0 Z# w) u# q
   
  y' h! V  |1 c9 i, d6 d' X
2 X6 r' @( M9 V+ D1 z    待测单元输入信号的时序如图2所示。其中,clk、vsy、hsy和ccd分别代表像素时钟、数字化后的场同步、行同步和二值图像信号。
" ~, a# J. _: i6 s
& ]/ y- o6 y7 A7 j  U( Q    1 i5 Q* _3 a" O# Z

2 L9 o; u" X5 a    ( c. |/ o4 R# D
+ `# e6 M6 o& N8 ~
    用户设计的测试激励信号即测试激励文件中输入信号的激励数据,应符合图2所示时序的要求。
" j* D) i1 _1 F6 e4 t& V/ q
" `3 O, P3 ~8 N+ Y* J# w1 l   
7 w5 d( }4 O7 [- `  t
( p  N# Z+ S* ^; W0 O4 p    3.3 测试信号的产生
# t+ B1 P7 G( V! A$ {* s  R0 G4 P
   
) E5 q. r3 h: V" i; A8 {1 V" G  e/ O* m7 p
    在MATLAB的开发环境中.通过编程可以生成测试激励文件。
: W4 _. Y1 S  s9 [" N3 @7 c! I( ]) e0 B, y4 Y, |
    6 [7 x/ B5 Y( w/ t
7 r9 T! {! ]' h/ V" U7 c2 t9 C( M
    以下是生成测试激励程序的核心代码:
$ \0 q3 K( V$ t3 O$ F7 |/ C- y
/ T" d- H! ~* J* U    image=imread(‘pic.bmp’);%读取图像文件4 J6 e3 ~' o  l2 o8 j
7 s1 I8 a* i  N; W% S
    [YN,XN]=size(image); %得到图像大小
0 @7 W& e7 u2 l6 W' X; Y3 i9 B- F* u7 J3 _2 Z
    FZ=20; %晶体振荡器频率(MHz)% g6 b! V  \$ S, q* R

/ {- o$ n9 g. M# H% H7 O8 D    %定义常数 %对应于图2所示的时序8 d2 X% v0 d5 H3 d, r# H1 C- p/ k* e

3 Q3 I4 S* `9 H" A3 r$ ?    POSTIME=52.2; %行正程时间(μ8)
' i: M0 ]) O, c7 X8 d% E
; z  E# y0 Z. z6 Z: z    NEGTIME=11.8; %行逆程时间(μs)
- b1 v& T+ ^, f$ C4 f7 Q- h: B- ^: I, y. Z* g" o! p
    HORTIME=64;%行正逆程总时间5 ]* u3 c8 ~% X0 L
; \9 J+ H; c0 j! R+ U
    VSYTIME=1615; %场信号时间(μB)
& s& i9 ]! K8 G' a
( D; M; F  y' p" _    PPDOT=POSTIME*FZ/XN; %行正程时间*晶体振
  b" V) S0 I' i6 M1 T7 y6 c& \
4 y9 H6 \5 G5 w7 e    荡器频率,图像X方向分辨率
. a2 H5 A. a* L7 P+ m1 ^$ ^3 e" [8 @
    ……. V1 `) Y/ C4 s3 p8 @4 u
1 M8 c& I% F: q) W" g
    . w7 O" |( K/ X
9 V: ^0 N9 I- e4 b
    fid=fopen(‘TestVectors.inp’,‘W’) ;%指定测试激励文件的文件名称
0 U. F$ T  r" D# Q- _5 Y6 d& V4 ?; `+ C; R# t- k' S
    for j=1:1:YN;
& G$ h6 E, X& U, n" ~
+ Z0 [# d& w# j# ?0 L    yy_j;xx=0;
: \7 `) I6 o1 r! V' V  V( e
$ u4 V: f4 L0 T" J- G' l3 F% y+ P5 N    for i=l:1:HORTIME*FZ;% Z( i, t( b: G" j
& Y: K. ^  C- k$ @7 @& t4 F
    %产生行同步激励
. ^5 L& I4 j+ }8 @2 W' w3 n  ?) t7 @# q+ ?' U
    if(i<(HFNTIME+HDLTIME)*FZ)(i>(HFNTIME+HDLTIME+HSYTIME)*FZ)' i$ O' L& u7 n0 `  O% C: e# e
- J1 l' L' z4 m
    hsy=l;/ f5 A. c; i; V

3 r9 Z7 q3 M: u$ ]    else: q: k) X1 E  i' n  L

, T! [% |: v5 g' C% D0 y/ g9 U: P    hsy=0;
- o1 o. \! g/ Q/ C+ Z& b) a# n3 X8 R
    end;  z( F4 x1 d! }3 z% K

$ i' O) e0 `. i0 r$ G    %产生像素时钟激励+ P/ D& m# ^) r: X' j- {$ N; z
/ l/ `9 `) D- m$ D1 e
    if clk==1
9 m- d4 i0 [3 R) n. {2 j2 k. ^
, M9 p4 H/ W* B8 M) }- z" A    clk=0;$ a+ ?+ b5 B5 T- l  X
" D. e5 q  B4 a& J% c1 a, s* P
    else
, @8 V# n2 [! \0 A
) u2 [- T6 ^, s- N3 E    clk=l;  h. J# I7 J! p* b  O! J

5 L. K; M3 }! ~# H2 I4 @$ d    end;
" A& M& T2 I1 f% b+ C* g$ Q0 @" g, n- G; a* Q  h
    %产生CCD激励
# a$ e1 Y7 U; o' @2 Y6 R
' c2 {# X: ?2 B    if i>NEGTIME*FZ
7 _! ]# ^5 r2 p: V* p; O
$ P9 a& K# c% }) y. d* f2 W    xx=round((i-NEGTIME*FZ)/PPDOT+0.45):
5 O* i( t+ q, c7 `/ b/ q8 H) x4 H# {/ e
    ccd=round(image(yy,xx));- ~& b3 }" w* _6 @- r8 }7 h+ X
3 a% I; {0 z+ v0 I5 L
    else. _2 k7 z4 K2 m  o( G8 F
. f6 b5 P' C8 w% L0 l
    ccd=0;) M/ r" n+ O, j  B4 \2 I+ ^
3 \. h5 ]; X; o- J
    end;
6 t! |" Z, B7 t& W* x: ?5 J9 @2 F+ i; M, S
    %将激励写入测试激励文件5 H. A$ n0 O; g

  B, I( \/ L9 a5 h3 W    fprintf md.‘%d%d%d%d%d%d、Il’,clk,ccd,hsy,vsy);! c# v0 c( C0 Z; |% K

: i: q7 t9 B1 X% J5 T9 h    end;
) a8 p+ K- K9 s+ k% n9 R$ L& a" g3 i, K+ \
    end;2 a0 G( j- d. B5 Z& Z7 z
4 y% d7 B0 C  W1 F2 E0 ~
    产生的测试激励文件名称为TestVectors.inp,激励内容以ASCII码表示,信号之间用空格隔开,且一行代表一次激励。下面是测试激励文件中的一段内容,激励包含clk,ccd,hsy,vsy 4个信号:
3 A4 D1 E* S7 Y5 M* T% o4 _4 U$ ?
    0 0 1 1—clk=0 eed=0 hsy=l vsy=l
1 f4 B) R7 x5 f/ t$ ~/ `! g% v& ^) S
    1 0 1 1—clk=l ccd=0 hsy=l vsy=1
- p/ u$ @: @( m; r, n6 Q2 C
( B& Y/ f4 f+ x' J8 j    …, h6 d! Z7 B- O  |1 j5 B* q; H

/ b: D8 h; }7 ~8 m   
$ C+ c9 n, e& N; R/ ]! u
$ ^) H7 K1 C- L( I; e1 |    0 0 0 1——clk=O ccd=0 hsy=0 vsy=1
2 G* R$ ^! h4 j2 L% V& u1 r  z! G$ W1 U, A
    …
6 B. z6 g6 u/ S; ?  o) f
- `. K/ r, e% _; i    ; k% o, ~; q) V2 R# G

/ ]9 R( Q# _; V' }+ u5 o6 O$ Z2 F! [    进行仿真时。TestBeneh应用TEXTIO通过逐行读取测试激励文件得到待测单元输入信号的激励。7 G" y4 _' d6 i4 x3 D/ Q* h5 L

1 ]2 Q5 Q/ ^7 A. `8 h   
7 T( D  K! |$ |  b
5 ~3 \2 x- U3 K$ r! S4 x2 p    3.4 编写TestBench
- U' }6 g1 H' r7 O; H9 J4 X% X0 F3 e
   
( ?6 C" x( T$ u' |7 o
" Q4 W; I! l/ }' L* r! R* N! V    TestBench调用TEXTIO读取测试激励文件得到激励,然后将这些激励分别驱动到待测单元的输入端口。同时,TestBench读取待测单元的输出结果,调用TEXTIO将仿真输出结果写入文件名称为Re-sult.out的仿真结果输出文件。' V. a( k. F* f1 r6 p9 Y, Z" Q

. v; Q/ \5 {3 t2 u# Q1 r9 s    * S5 N% {, W4 j0 {; I
& q( }, x7 B  R- B
    以下是TestBeneh的核心代码:& \. A+ u7 v/ D8 ?! t% q

5 h. B: G' x$ p, _$ q: A$ C9 b    testprocess:process/ K' m+ @. T2 L! s* Y8 V. f5 U

( s$ |3 S/ h& ]) i    file vector_file:text open read_mode is“TestVectors.
, `$ L/ Q3 k2 f# _& D
9 Q3 Y6 i1 o$ J: ^, K0 j$ i% g    inp”:一指定测试激励文件
( b! W2 ]3 c3 L* l  r$ R. v7 V
" S- a- p: o! z$ Y5 Y    file output_file:text open write_mode is“Reset.out”:
) O6 u( q7 O' Z# q9 u
$ m" e5 t+ H) ?8 e/ r' H    一指定仿真结果输出文件
5 q! t5 w$ H- x- E3 l" S* G" |3 \+ l6 ]) T) M6 q- D
    variable invecs,outvecs:line;" o# t( l3 q5 {( ]  y
; y4 u2 Z% D4 Q& n. S% e
    variable good:boolean;
- v1 R" \% w) c5 j) V
0 f2 H  e+ B, x; d$ W    variable eh:eharacter;# }) [; n( q: \

, J: ?) g3 P6 W: \. ^    ……
  `; p" L: _* W. u' u! S. L! ]! x2 U
2 O0 |9 o% b- v) x9 G$ m    . m; X- g" `0 f

; J" k2 C# F* K& _    while not endfile(veetor_file)loop" Q4 |: r9 y1 \2 P
6 d" B8 ^7 m- I0 L0 A
    readline(veetor_file.invecs);一读出测试激励文件一行内容.得到激励
! t1 p0 G0 v. M: M6 @7 B1 m1 w& W/ ]4 [8 p1 k1 G8 d! T; _
    read(invees,vclk,good); 一一读取一个值给信号vclk: S' ~( |- D5 Q( u

' k8 `# a8 E& Z1 R/ R    read(invees,ch); 一一读取空格& Z0 K- ~' w4 j) ]

/ C$ d+ f% o3 p1 N( b    ……
6 O& E! |0 D8 |2 h1 B- v
. L  y+ N1 Z* {    1 `4 {$ ~" `* q# v: N
, t0 H+ B- r& G3 z$ W
    read(invees,wBy,good); 一读取一个值给信号vvsy/ ^, O$ `8 q( z. A( o% d1 d2 g) ]

  q7 Z, ?$ B& F    read(invecs,ch); 一读取空格$ Z: a- R5 V1 M2 ~

8 H$ ^0 L/ D  }4 r7 G6 u4 W    ……1 _' v: M8 u) i) c8 S! M- K

" y  f" c# b- w9 U$ M    & |9 f0 J0 e% R4 g

3 C# h9 L& R' K# `    clk<=vclk;一驱动待测单元的输入信号clk
; O. m' O$ C  b/ N% x6 E2 H0 U* y& t8 y+ R
    ccd<=vced;一驱动待测单元的输入信号ccd
7 `  s* c8 V2 w& V% z% ?5 J  e( I) k- k7 b
    hsy<=vhsy;一驱动待测单元的输入信号hsy% o3 K1 `& T, C: X

& q( R" y# Z! z+ k    vsy<=wsy;一驱动待测单元的输入信号vsy% F2 U" g, ~# F5 E, b* ]9 V9 f
% F5 w% B- t. B: O
    ……
4 @; z  _; [( B" J" `# D" G- J  p* m: L2 q) J9 a/ @
   
( M, Z! k( Z/ _. w0 ^% c, }1 p) w1 P  a8 a
    caseiis. w5 D% K' }/ X& Y

  ]+ y' v0 a7 [' a7 ]    when 0=>out_string:=“frame_Yup0:”:一将目标0左上角Y坐标写入仿真结果
* ?4 W% J5 P$ z3 z  z3 a- K4 u5 ?. v* B% Y. k; q2 g
    when 1=>out_string=“frame_Ydn0:”:一将目标0右下角Y坐标写入仿真结果3 ~1 Q6 M' ]1 {8 \: b, |8 V, n) t

7 z$ V) h. {/ u# ^1 @- \    when 14=>out_strlng:=“frame_Xli3:”:一将目标3左上角X坐标写入仿真结果
& U! N4 x! f9 ~4 u6 S5 b/ g( t0 _  s
    when 15=>out_string:=“frame_Xrt3:”:一将目标3右下角X坐标写入仿真结果4 V( E4 _2 w! y5 @& _

3 S+ j/ ^; k9 b4 h( G1 R    when other8=>null;
$ t' k) p, \+ Z; N# s! C8 `
; u. o3 V& G8 Z2 I& P    end case;  M% {6 b' T8 p4 F/ B$ X$ @7 a
! N- E% M4 o+ z5 ?1 L8 e' S; r
    write(outvees,string’(out_string));, f. p* Z9 i0 h0 a2 E* h

# L1 c5 {8 G: O2 c7 V# T    ……
) N; B. [7 J# @- z8 }& U
2 e% Y8 ?% ~7 C4 [   
: |5 C6 b6 q: C7 q
2 q# C9 v% G( N# n: o7 O& m    3.5 Modelsim中显示的测试波形及测试结果# }5 W' I8 q! ~+ ^9 k0 q% i

0 b" h+ H& r5 @3 a    : Z$ q! U: _% Z  L7 Q6 X1 r
0 ~) e4 G. p6 {7 K
    在Modelsim提供的HDL仿真环境中,运行TestBeneh进行仿真测试,得到测试向量波形(如图3所示)、仿真波形(如图4所示)和仿真输出结果文件ResuIt.out。对仿真输出结果进行分析表明,仿真输出的目标位置与输入电视图像中的目标位置完全一致。
# |( V0 G* f; ^; p* P2 h: F( w& T4 k
    : ~! k1 S- v! f

( s- `& K6 k; x    ' a5 W# z! U: j. G! B
  y& D, _. V3 t( L6 `. X6 J
    ! L+ y: f0 ?5 }2 J4 `

0 g" b7 I1 P2 `7 C3 ?    6 m& s, e3 Y( Q' v0 j9 D
+ Z8 l5 _: ?) X: y7 v
    本例的结果分析是通过人工对比进行的。还可以将仿真预期输出结果保存在测试激励文件或其他文件中.TestBench调用TEXTIO读取仿真预期输出结果.并和仿真实际输出结果进行对比,然后自动判断结果是否正确。在某些场合下,例如对VHDL编写的处理器进行仿真调试时,用户可以将包括指令类型、源地址、目标地址在内的指令保存成文本文件。TestBench调用TEXTIO读取这些指令。同时.TestBeneh调用TEXTIO将结果及中间变量保存成文本文件,以便设计者事后分析和查找问题的原因。
/ ~/ V# M7 v$ E+ Z: \4 ?, i4 A% _* k: V. l
   
/ w6 N5 p% s; N




欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) Powered by Discuz! X2.5