我正在尝试连接到经典的 HD44780 LCD。
我已经实现了本地 ram,我将希望显示在显示器上的数据写入其中。
我以这种方式定义了 ram:
type ram_type is array (0 to (16*2)-1) of std_logic_vector(7 downto 0);
signal lcd_mem : ram_type;
我试过以这种方式初始化 ram:
lcd_mem(0 to 6) <= x"45_72_72_6F_72_73_3A";
...
但是我收到一个关于合成的错误:
Error (10515): VHDL type mismatch error at display_ber.vhd(74): ram_type type does not match string literal
有没有办法以类似的方式优雅地初始化 ram 块?
也许我应该改用字符串类型?
最佳答案
就在这里。请注意,您对 ram_type
的定义是 std_logic_vector
的数组.和 x"45_72_72_6F_72_73_3A"
是一个十六进制字符串文字。这些不是同一类型,因此您的错误。
因此,您必须将该值放入一个向量数组中。如:
lcd_mem(0 to 6) <= (0 => x"45", 1 => x"72", 2 => x"72", 3 => x"6F", 4 => x"72", 5 => x"73", 6 => x"3A");
关于memory - VHDL - 如何优雅地初始化 std_logic_vector 数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37499567/