[英]VHDL buffer variable vs out variable
我在VHDL程序中工作,我需要使用ALTERA DE2-115進行RAM 256。 輸出將顯示在七段顯示中。 問題是:我有一個dataout
輸出變量。 然后該變量具有以下temp_ram
數組的值:
dataout <= temp_ram(conv_integer(dir));
然后我想將數據輸出的值dataout
七段
dataout(7 downto 4)
dataout(3 downto 0)
這顯示以下錯誤:
Error (10309): VHDL Interface Declaration error in RAM.vhd(45): interface object "dataout" of mode out cannot be read. Change object mode to buffer.
當我改為緩沖區並且運行完美時,但我無法理解發生了什么
您正在使用Synopsys軟件包中的conv_integer
。 請僅使用官方IEEE軟件包。
dataout
是一個信號,而不是變量,因為您使用信號賦值語句 。 而且,信號是模式out
的端口。 (端口也是信號)。
除靜態類型外,VHDL還檢查端口信號的方向。 您的信號處於模式out
因此無法讀取。
Als是一個解決方案,您可以:
buffer
,所有綜合工具均不支持 out
端口。 Quartus支持一些VHDL-2008功能。
對於跨平台兼容性和代碼可重用性,我建議使用中間信號 (dataout_int可以被其他語句使用):
dataout_int <= temp_ram(conv_integer(dir));
並將輸出分配給此中間信號:
dataout <= dataout_int;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.