VHDL:在VHDL记录结构中包含文件类型?

VHDL:在VHDL记录结构中包含文件类型?,vhdl,Vhdl,在VHDL中,是否可以将textio包中的“文件”类型作为记录结构的元素包括在内?我希望有一个名为init()的函数来打开一个文件,将处理程序保存到记录结构中的文件,然后有另一个名为next()的函数,该函数将从记录中的文件描述符读取一条记录,并在每次调用next()时将数据从文件加载到记录结构中 例如: library ieee; use ieee.std_logic_1164.all; use std.textio.all; entity testbench is end entity;

在VHDL中,是否可以将textio包中的“文件”类型作为记录结构的元素包括在内?我希望有一个名为init()的函数来打开一个文件,将处理程序保存到记录结构中的文件,然后有另一个名为next()的函数,该函数将从记录中的文件描述符读取一条记录,并在每次调用next()时将数据从文件加载到记录结构中

例如:

library ieee;
use ieee.std_logic_1164.all;
use std.textio.all;

entity testbench is
end entity;


architecture sim of sim_apb is

    type rec_t is record
        file  F    :text;     --Produces a syntax error
                              --  composite type not allowed
        state      :natural; 
    end record;

    signal rec: rec_t 
begin

end architecture;

当我试图删除代码中的文件时,出现以下错误:

错误:[VRFC 10-602]复合类型中不允许使用文件类型的元素

所以我认为不能在记录中使用文件类型


我不太了解您的需要,但您可以尝试使用记录中允许的字符串。

这行不通。他需要访问文件描述符,因为它可以跟踪文件状态、文件是否打开或关闭以及读取过程的进展。我可以通过将文件作为局部变量保存到进程中,然后将文件描述符作为只读变量传递到每个过程来解决此问题。。。奇怪的是这项工作。。。我传入文件描述符,然后在过程内部读取文件。。。工作正常,但我必须剪切并粘贴init()过程作为主进程的if-else分支,因为无法将文件描述符从过程返回到调用进程。IEEE Std 1076-2008 5.3复合类型,5.3.1“复合类型用于定义值的集合。这包括两个值数组。。。和值记录(潜在异构类型的值集合)。“,…如果复合类型包含文件类型或受保护类型的元素,则是错误的。”您可能应该使用受保护类型而不是记录。这是一个问题。文件可以传递到过程中。句柄将被更新,以便下次在其他地方使用文件描述符。