在编写testbench时,我们会用到一些VHDL语言,这些语言是我们不常用的,甚至以前没有见过的,但是在testbench中他们却是被经常用到,而且对我们的仿真编写非常有用。今天我们就来简单讲一下常用的几个VHDL句法。
一、文件I/O
上节讲了,在testbench常将数据写入文件,或者从文件读入数据等,这都需要用到VHDL语言中与文件打交道的语言,即是常说的file I/O. 这里强调两点:文件I/O语言是不能被综合的,文件I/O与FPGA的I/Opin是两回事。
根据存在文件中数据的不同,文件有多种类型,存入的数据可以是integer ,string,std_logic_vector 等等,但是定义时有区别,后面会说到。
对文件的操作有,定义文件,打开文件,从文件中读取数据,写入数据到文件等。
一、定义文件。
文件有两个大的类型,integer:文件中的数据是以二进制存取的,不能被人识别,只有integer型的数据能够存入这类文件。string:文件是以可以读取的ASCII码,可以被人识别,integer ,bit_vector(x downto x),string(x downto 1),std_logic_vector(x downto 0) ,bit等都可以被存入此类文件。
定义语法 file filein:text; type integerfile is file of integer file filein:integerfile;
二、打开文件。
86版的VHDL在定义文件时即将文件隐式的打开了,这里我们讲93版的文件打开语句。
在上一步定义了文件句柄后就可以在程序中打开指定文件,同时指定打开模式。
file_open(fstatus,file file_handle:file_type, filename:string,openmode)
fstatus指示当前文件状态,但是在使用前首先得定义一名variable fstatus:FILE_OPEN_STATUS;,一般有OPEN_OK,STATUS_ERROR,NAME_ERROR,MODE_ERROR四种状态。
file_handle即是上一步定义的文件类型的句柄filein.
filename是以双隐号括起的文件名,如"datain.txt";
openmode是指打开该文件的模式,文件打开有read_mode,write_mode,append_mode三种。 |