VHDL integer'image(some_int)导致“表达式不是常量”错误
问题描述:
将始终变化的整数变量转换为字符串(要在VGA监视器上显示)的正确方法是什么?我有一系列的如果需要填充的护理陈述(这样生成的字符串总是有一定的长度,但只要我改变:VHDL integer'image(some_int)导致“表达式不是常量”错误
resulting_string <= integer'image(87465);
到:
resulting_string <= integer'image(some_int_var);
我得到一个“表达是不是一个常量”错误什么是一个不断变化整数变量(即可能是整数范围内的任何INT)转换为一个字符串的正确方法
编辑:?不复制其他问题
答
我从四面八方走过去,终于发现我必须做一个巨大的箱子才能使它工作。现在,我可以最终显示快速变化的变量,这对调试非常有帮助。这是不幸的是,解决方案必须如此迟钝,但..
(我已经有用于显示文本结果字符串被发送到ROM)。
function int_to_str(int : integer) return string is
variable a : natural := 0;
variable r : string(1 to 11);
begin
a := abs (int);
case a is
when 0 => r := "0 ";
when 1 => r := "1 ";
when 2 => r := "2 ";
when 3 => r := "3 ";
.
.
.
when 1000 => r := "1000 ";
when others => r := "???????????";
end case;
if (int < 0) then
r := '-' & r(1 to 10);
end if;
return r;
end int_to_str;
答
'image (..)
不适用于信号。
我认为你仍然缺少主要问题:监视器无法显示字符串或字符!
您需要实现 1.图形缓冲区, 2.输出VGA数据的缓冲读取器。
然后,你需要实现一个机械臂
- 绘制形状
- 清屏
- 移动领域和
- 图片复制到缓冲区。
字形存储在一个ROM中,并通过每个数字的BCD值进行选择。
将整数转换为“字符串”不需要ASCII字符串,因为结果是BCD码(不是ASCII码)。所以你也需要实现一个(未)签名到BCD转换器。
的可能的复制[整数转字符串出错在合成(宽度不匹配)](http://*.com/questions/20667051/integer-to-string-goes-wrong-in-synthesis-width-mismatch) – mfro
不,他有一个宽度不匹配问题,其中我已经解决了。我的问题更加先进,更难以解决。 – John
请发布'results_string'的声明。 –