将始终更改的整数变量转换为字符串(在VGA监视器上显示)的正确方法是什么?我有一系列if语句来处理填充(所以结果字符串总是一定的长度,但是一改变:
resulting_string <= integer'image(87465);
为:
resulting_string <= integer'image(some_int_var);
我得到“表达式不是常数”错误。将一个始终在变化的整数变量(可能是整数限制内的任何int)转换为字符串的正确方法是什么?
编辑:不重复其他问题
答案 0 :(得分:0)
'image (..)
不适用于信号。
我认为您仍然缺少主要问题:显示器无法显示字符串或字符!
你需要实施 1.图形缓冲区, 2.一个输出VGA数据的缓冲读取器。
然后你需要实现一个操纵器
字形存储在ROM中,并由每个数字的BCD值选择。
将整数转换为&#39;字符串&#39;不需要ASCII字符串,因为结果是BCD代码(不是ASCII)。因此,您还需要实现(未)签名到BCD转换器。
答案 1 :(得分:0)
我从各个方向走了进去,终于发现我必须制作一个巨大的盒子才能让它发挥作用。现在我终于可以显示真正有助于调试的快速变化的变量。不幸的是,解决方案必须如此迟钝..
(我已经有一个用于显示结果字符串发送到的文本的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;