PATTERN%定义两 个输入信号%
%DATAINX和DATAINY%
0>00
220>10
320>11%绝对时间描述%
570>01%大于号前为绝对时间值%
720>11%大于号后为两个输入值%
;
INPUTSCLEAR;
PATTERN
0>1%产生宽度100ns的清零信号%
100>0%100ns后CLEAR信号保持高电平%
在这个例子中,定义了一个周期为200ns的时钟信号、一个100ns以前起作用的清零信号(高电平有效)以及两个输入信号DATAINX、 DATAINY。在实际使用时,我们可以用同样的方法方便地产生时钟、复位等常用信号。而对于复杂的输入信号,可以先用 MATLAB 来产生,然后以相对时间的方式写入向量文件。
在产生复杂输入信号之前,必须注意以下几点:
第一,MATLAB产生的是浮点或整数信号,而数字模块的输入为N位二进制数,这之间有一个进制转换的问题。因此,我们先要根据要采用的A/D位数对原始信号进行量化。
第二,在MAX+PLUSII的 仿真 器中,数据可以采用2/8/10/16进制显示格式,但其十进制显示用的是无符号数的方式,在表示那些补码形式的2/8/16进制数时会发生错误,因此必须把输入信号转换为2/16进制数。
第三,进制转换程序必须自己编制。因为MATLAB是用字符串来表示2/8/16进制数的,虽然有一些进制变换的函数(如HEX2DEC、DEC2HEX等),但尚不能满足需要,必须在此基础上自己编制新的函数。
1.3仿真输出文件
向量文件产生后,就可以进行仿真了,仿真结果转换成Table文件输出。Table文件示例如下。
INPUTSclkresetdin;
OUTPUTSy
UNITns%定义时间单位%
RADIXHEX;%定义显示进制%
PATIERN
%r%
%e
%csd%
%lei%
%ktny%
0.0>X00000=0000
40.0>X10000=0000
50.0>010000=0000
……
1475.0>110000=0000
1500.0>XXXXXX=XXXX
Table文件的构成与向量文件大致相同。它的开始部分是注释(同样是以%…%标注的文字),接着是对输入/输出信号、时间单位、显示采用进制的定义,第三部分就是对输入/输出信号在仿真后的列表。其中,“>”号以前的是时间值,“=”号后面则是我们关心的仿真输出结果了。根据Table文件的这些特点,我们可以编制MATLAB函数将关心的东西(如时间值、某输出结果)提取出来形成数据序列,以便后续处理。在这里要注意一个问题,就是Table文件中会对每一个信号的变化时刻都进行记录,我们用图2的一个简单的D触发器的部分仿真时序来作说明,图中示出了D触发器的输入信号D、时钟,以及其输出信号Q,在这一段仿真中,Table文件会记录从T1~T9的9个信号变化的时刻,这使得输出信号的每一个值被记录了多次。如果我们对此不加甄别就照单全收的话,就会对此后的分析工作带来麻烦。因此,对于同步数字系统,我们只应提取那些我们关心的时钟上沿/下沿时刻的输出值。