VHDL缓冲区变量与输出变量
我在一个VHDL程序中工作,我需要使用ALTERA DE2-115做一个RAM 256。输出将以七段式显示。 问题是:我有一个VHDL缓冲区变量与输出变量,vhdl,fpga,intel-fpga,Vhdl,Fpga,Intel Fpga,我在一个VHDL程序中工作,我需要使用ALTERA DE2-115做一个RAM 256。输出将以七段式显示。 问题是:我有一个dataout输出变量。然后该变量具有以下temp\u ram数组值: dataout <= temp_ram(conv_integer(dir)); 这显示了以下错误: Error (10309): VHDL Interface Declaration error in RAM.vhd(45): interface object "dataout" of mod
dataout
输出变量。然后该变量具有以下temp\u ram
数组值:
dataout <= temp_ram(conv_integer(dir));
这显示了以下错误:
Error (10309): VHDL Interface Declaration error in RAM.vhd(45): interface object "dataout" of mode out cannot be read. Change object mode to buffer.
当我更改为buffer并运行此程序时,我无法理解会发生什么您正在使用Synopsys软件包中的
conv_integer
。请仅使用IEEE官方软件包
dataout
是一个信号,而不是一个变量,因为您使用的是信号赋值语句。此外,该信号是模式out
的端口。(端口也是信号)
除了静态类型之外,VHDL还检查端口中信号的方向。您的信号处于模式out
,因此无法读取
如果是解决方案,您可以:
- 使用中间信号
- 使用模式
,并非所有合成工具都同样支持该模式buffer
- 使用VHDL-2008,它允许读取模式
的端口out
Quartus支持一些VHDL-2008功能。为了跨平台兼容性和代码重用性,我建议使用中间信号(dataout\u int可由其他语句使用):
dataout\u int-2002之前与实际端口关联的模式端口buffer
formal只能与模式端口buffer
关联。当modebuffer
连接的输出在设计层次结构中向上遍历多个接口时,这可能会引发VHDL工具的修订级别问题。请参阅。请参阅
Error (10309): VHDL Interface Declaration error in RAM.vhd(45): interface object "dataout" of mode out cannot be read. Change object mode to buffer.
dataout_int <= temp_ram(conv_integer(dir));
dataout <= dataout_int;