问题描述
我正在尝试连接经典的HD44780 LCD.我已经实现了本地ram,可以将要显示在显示器上的数据写入其中.
I'm trying to interface to a classic HD44780 LCD.I have implemented local ram to which I write the data I wish to show up on the display.
我以这种方式定义了ram:
I have defined the ram in this way:
type ram_type is array (0 to (16*2)-1) of std_logic_vector(7 downto 0);
signal lcd_mem : ram_type;
我尝试过以这种方式初始化ram:
I've tried initializing the ram in this way:
lcd_mem(0 to 6) <= x"45_72_72_6F_72_73_3A";
...
但是我收到综合错误:
有没有办法以类似的方式优雅地初始化ram块?
Is there a way to ellegantly initialize the ram block in a similar way ?
也许我应该改用字符串类型?
Perhaps I should use a string type instead ?
推荐答案
是的.请注意,您对ram_type
的定义是std_logic_vector
的数组.并且x"45_72_72_6F_72_73_3A"
是十六进制字符串文字.这些不是同一类型,因此是您的错误.
Yes there is. Note that your definition of ram_type
is an array of std_logic_vector
. And x"45_72_72_6F_72_73_3A"
is a hex string literal. These are not the same type, hence your error.
因此,您必须将值放入向量数组中.如:
So, you have to put the value into an array of vectors. Such as:
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");
这篇关于VHDL-如何优雅地初始化std_logic_vector数组?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!