5 ?% ^ C7 w$ V6 M1 A" x6 i$ ` ; q, }* A# ~& C' K9 f8 q# ` g6 q$ t* D% O" F7 J( I
TEXXTl0是VHDL标准库STD中的程序包(Package),它提供了VHDL与磁盘文件直接访问的桥梁。TEXTIO定义了3种类型:LINE类型、TEXT类型及SIDE类型。TEXTI0在程序包中定义了一些访问文件的过程(Procedure)。 / T- F' g2 s8 w / Y# d V6 X2 z6 q0 d5 _ - k% x- M7 ^8 K) }7 {2 V
/ E* j- N& k" [, ]* q. G- e/ U9 @8 S TEXTIO提供的基本过程有:( z' f& S w6 Z' X$ f
9 Z7 \4 ^# u# p$ X# ~4 B1 K
3 y* g5 V+ M9 Y$ e7 x9 q& v4 A+ }; i. R
(1)procedure READLNE(文件变量,行变量),用于从指定文件读取一行数据到行变量中;3 [' S" q5 ~; E L. F
3 U( A6 d5 }4 ?7 x& y' z (2)procedure WRITELNE(文件变量,行变量),用于向指定文件写入行变量所包含的数据;& g7 A/ ^+ j. z$ B" S a
0 P! Q% }2 ^5 C8 [4 m6 X
(3)procedure READ(行变量,数据类型),用于从行变量中读取相应数据类型的数据.根据参数的数据类型及参数个数的不同.有多种重载方式,TEX-TIO提供了bit、bit、bit_vector、BOOLEAN、character、in-teger、real、string、time数据类型的重载; 5 B8 S, O r0 }' \( P* w9 g0 P : q7 W; g" a% E v/ Y7 H (4)mcedure WRITE(行变量,数据变量,写入方式,位宽),该过程将数据写入行变量。其中,写入方式表示写在行变量的左边还是右边,其值只能为left或right,位宽表示写入数据时占的位宽。例如write(Oufljne,OutData,left,2/表示将变量OutData写入LINE 变量OutLine的左边,占2个字节。 " E5 U+ A9 U; f& @- V. k8 F 6 I( ?: P. w' S0 k. c$ J9 x: G 4 @. `1 @* ]2 l/ A `
3 { L Z5 R/ m' E* ~9 E 2.2 仿真测试方案 / x. v! m: Y( v: N, m b( z- l2 p) ?- Q7 C/ Y
9 \4 W( T1 J6 T9 v) u) } 1 Z* L( y' ~* R2 \6 `8 u 使用TEXTO和MNTLAB辅助TestBench进行复杂数字系统仿真的方案框图如图1所示。 7 Y4 N$ J. t D 4 T5 J+ c& F% O 8 M8 d/ a$ S: l- m7 T6 }2 l' p) ], [1 C$ h* Y0 n6 D+ B
% k% K8 t! h9 P2 Y7 A
/ k' K9 h" z+ Q4 Q8 P1 t$ p/ I: e
( |: ^8 U7 m- d. X 7 W6 G* F/ K& B+ i3 h 2.3 仿真测试步骤5 M( o5 A$ j4 l
% B8 ~4 y& B* I$ Z/ i1 ] ^
8 L9 P( n* B/ b5 p
8 O7 T' v+ E( X, m
2.3.1 使用MATLAB生成测试激励文件3 ?& v" a ?' `: |7 T& y3 g; c
3 s! H+ M, m0 ?+ l
% T8 u. ]+ l& i5 C+ E% b" L, A: c9 t
MATLAB是矩阵实验室(Matrix Laboratory)的缩写,是1984年MathWorks公司推出的软件。经过20多年的发展,MATLAB已成为通用科技计算、图视交互系统和程序语言,广泛应用于研究和解决各种具体工程问题。5 V# D& s5 B3 a
# t/ ^: a: V2 o5 x. w( S1 T
5 j) l! S/ @/ ~6 g2 x! l( U& v8 n4 X; O. W F
在复杂数字系统仿真中,用户可以利用MAT-LAB的强大处理功能生成测试激励文件。测试激励文件的数据格式由设计者自行定义。测试激励文件应包含输入信号的测试激励数据.也可以包含输出信号的期望输出数据.这些内容常常以.ASCII码表示。# T6 G) M# u8 @' I
6 o; t3 \9 R0 F' `! H( c : K. B- c H+ K( a) p" x# P. J: ~; y! u
2.3.2 编写TestBench h! Z1 C' O3 H) T( F9 [# z/ J3 H9 y4 `& a5 X
5 g. s0 m( q/ h: N+ X1 @: N
+ d+ K1 |0 L4 j% m: a* b$ E TestBench是测试平台程序。TEXTI0的使用是通过TestBench来进行的,TestBench利用TEXTIO读取测试激励文件或写入仿真结果输出。进行复杂数字系统仿真时,用户根据测试的目的和要求设计TestBench。 . y0 ]* [& n. Z" j8 D/ H * l- t7 O2 K5 ]: l: m" S " M2 ^3 @$ x' ^; m) j8 D6 W ) ?( B; J& R/ L' I# ^ 2.3.3 在Modelsim中进行仿真 7 a9 s/ a' B% m3 U8 d* v1 B O! {. N/ f' e
/ i- S6 E2 j3 ~' x0 v5 _) N & Y3 Z G, X9 N8 Z3 c6 a( g8 | Modelsim是Model Technology(Mentor Graphics的子公司)的HDL(Hardware Description Language)仿真软件。可以实现VHDL、Verilog及VHDL一Ver-ilog混合设计的仿真。Modelsim为’TestBench提供一种良好的HDL仿真环境。3 h- e/ ?7 X3 a
* m( t- W' X; u) i& _
+ T: {; Y# J3 T" ?+ O
' A2 }+ a* i; u# {
2.3.4 结果分析 2 e, O0 W4 j( D# s ) N' \1 e, e! r5 A/ }; q6 P* O y' Y. M4 V- H6 |% E( m # D' b7 M$ v$ s' g& ]. a) {& s' I 仿真结束后,仿真结果是否符合要求,用户可以通过二种方法来判断。一种是应用软件自动判断。即通过TestBench或其他软件(如MATLAB)对仿真输出结果和期望输出结果进行对比,从而得到分析结果:另外一种是人工判断.即设计者自行对仿真输出结果和期望输出结果进行对比,从而得到分析结果。 8 G4 Q+ I& n2 a, H$ n6 Q 9 \# f7 Q: X7 @' D, S+ F3 t- t% a" V 8 W- O0 f0 [+ F* i* \0 i1 o# o, U* n: |3 n6 i( f$ W
3 仿真测试实例 5 u; [& z/ |' p 0 A! d8 @8 M5 }8 `% x & j0 X$ V+ _( s' g; z, `5 Z