首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >VHDL -如何优雅地初始化一个std_logic_vector数组?

VHDL -如何优雅地初始化一个std_logic_vector数组?
EN

Stack Overflow用户
提问于 2016-05-28 13:25:57
回答 2查看 11.4K关注 0票数 4

我正在尝试与一个经典的HD44780液晶显示器接口。我已经实现了本地ram,我将希望显示在显示器上的数据写入其中。

我给公羊下了这样的定义:

代码语言:javascript
复制
type ram_type is array (0 to (16*2)-1) of std_logic_vector(7 downto 0);
signal lcd_mem : ram_type;

我尝试过以这种方式初始化这个ram:

代码语言:javascript
复制
lcd_mem(0 to 6) <= x"45_72_72_6F_72_73_3A";
...

但我在合成上有个错误:

错误(10515):VHDL类型错配错误在display_ber.vhd(74):ram_type类型不匹配字符串文字

是否有一种方法可以以类似的方式自夸地初始化ram块?

也许我应该用字符串类型代替?

EN

回答 2

Stack Overflow用户

发布于 2016-05-28 15:47:31

是的有。注意,ram_type的定义是一个std_logic_vector数组。x"45_72_72_6F_72_73_3A"是一个十六进制字符串。这些不是相同的类型,因此您的错误。

所以,你必须把这个值放入一个向量数组中。例如:

代码语言:javascript
复制
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");
票数 4
EN

Stack Overflow用户

发布于 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;

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37499567

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档