我正在尝试与一个经典的HD44780液晶显示器接口。我已经实现了本地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";
...但我在合成上有个错误:
错误(10515):VHDL类型错配错误在display_ber.vhd(74):ram_type类型不匹配字符串文字
是否有一种方法可以以类似的方式自夸地初始化ram块?
也许我应该用字符串类型代替?
发布于 2016-05-28 15:47:31
是的有。注意,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");发布于 2022-02-15 09:14:16
上面的答案是好的。也可编码如下:
init_type类型是std_logic_vector的数组(0到6) (7降到0);
常数c_lcd_int : init_type:= (45,72,72,6F,72,73,3A);
lcd_mem(0 ~ 6) <= c_lcd_int;
https://stackoverflow.com/questions/37499567
复制相似问题