将文件从VHDL进程打开到实例化两次的实体时出现问题:名称冲突
我有一个VHDL实体,其结构如下:将文件从VHDL进程打开到实例化两次的实体时出现问题:名称冲突,vhdl,hdl,Vhdl,Hdl,我有一个VHDL实体,其结构如下: -- Imports... entity myentity is port (..specifying in and out signals..); end myentity; architecture beh_myentity of myentity is begin process(..sensitivity list..) -- Some variables file myfile : text open wri
-- Imports...
entity myentity is
port (..specifying in and out signals..);
end myentity;
architecture beh_myentity of myentity is
begin
process(..sensitivity list..)
-- Some variables
file myfile : text open write_mode
is "myentlog.txt"; -- <== My problem is here!!!
begin
-- ..The process body..
end process;
end beh_myentity;
--导入。。。
实体myentity是
端口(指定输入和输出信号);
终末肌体;
myentity的架构是
开始
过程(…敏感度列表…)
--一些变量
文件myfile:文本打开写入模式
是“myentlog.txt”;—— 尝试将文件名作为泛型而不是端口传递
尝试将文件名作为通用名而不是端口传递
包含文件名的字符串类型的信号;或泛型(同样是字符串类型)
该信号允许您在测试台的不同时间为同一实体分配不同的文件名-使用VHDL-1993或更高版本,体系结构可以使用新文件名调用file\u open()
泛型为每个不同的实体提供一个固定的文件名
使用最简单的应用程序
你的具体问题:
1) 是的,如果信号是字符串,则可以将整个文件名作为字符串传递,也可以传递后缀。因为要在运行时生成字符串,所以需要VHDL-93(或更高版本)语法
2) 最好的方法是在testbench中生成文件名并传入。但是,实体的输出端口可以工作!当然你不能合成这个实体
3) 当然
entity myentity is
generic ( base_name : string := "testfile");
port (suffix : in string);
end myentity;
将传入(2)中所需的字符串
如果必须使用VHDL-87语法,如示例中所示,请将全名作为泛型传入:
file myfile : text open write_mode is base_name;
字符串类型的信号,包含文件名;或泛型(同样是字符串类型)
该信号允许您在测试台的不同时间为同一实体分配不同的文件名-使用VHDL-1993或更高版本,体系结构可以使用新文件名调用file\u open()
泛型为每个不同的实体提供一个固定的文件名
使用最简单的应用程序
你的具体问题:
1) 是的,如果信号是字符串,则可以将整个文件名作为字符串传递,也可以传递后缀。因为要在运行时生成字符串,所以需要VHDL-93(或更高版本)语法
2) 最好的方法是在testbench中生成文件名并传入。但是,实体的输出端口可以工作!当然你不能合成这个实体
3) 当然
entity myentity is
generic ( base_name : string := "testfile");
port (suffix : in string);
end myentity;
将传入(2)中所需的字符串
如果必须使用VHDL-87语法,如示例中所示,请将全名作为泛型传入:
file myfile : text open write_mode is base_name;