首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在spartan 6上用VHDL控制LCD

在spartan 6上用VHDL控制LCD
EN

Stack Overflow用户
提问于 2013-10-24 19:09:18
回答 2查看 1.2K关注 0票数 0

我找到了这个控制FPGA液晶显示的代码,但是它看不懂其中的一些代码,特别是这一部分。

代码语言:javascript
运行
复制
    type LCD_CMDS_T is array(integer range <>) of std_logic_vector(9 downto 0);
    constant LCD_CMDS : LCD_CMDS_T := ( 0 => "00"&X"3C",            --Function Set
                        1 => "00"&X"0C",                --Display ON, Cursor OFF, Blink OFF
                        2 => "00"&X"01",                --Clear Display
                        3 => "00"&X"02",            --return home

                        4 => "10"&X"48",            --H 
                        5 => "10"&X"65",            --e
                        6 => "10"&X"6C",            --l
                        7 => "10"&X"6C",            --l
                        8 => "10"&X"6F",            --o
                        9 => "10"&X"20",            --blank
                        10 => "10"&X"46",           --F
                        11 => "10"&X"72",           --r
                        12 => "10"&X"6F",           --o
                        13 => "10"&X"6D",           --m

                        14 => "10"&X"20",           --blank

                        15 => "10"&X"44",           --D
                        16 => "10"&X"69",           --i
                        17 => "10"&X"67",           --g
                        18 => "10"&X"69",           --i
                        19 => "10"&X"6C",           --l
                        20 => "10"&X"65",           --e
                        21 => "10"&X"6E",           --n
                        22 => "10"&X"74",           --t
                        23 => "00"&X"18");          --Shift left


signal lcd_cmd_ptr : integer range 0 to LCD_CMDS'HIGH + 1 := 0;

据我所知,已经制作了一个数组来保存要显示在显示器上的字符值。但我不明白这句话。

代码语言:javascript
运行
复制
signal lcd_cmd_ptr : integer range 0 to LCD_CMDS'HIGH + 1 := 0;

有人能帮我理解一下这里做了什么吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-10-24 19:43:59

正在创建此信号以对所创建的字符串进行索引。常量LCD_CMDS是一个需要索引的数组。信号lcd_cmd_ptr正在对该常量进行索引以驱动显示。在这种情况下,它是一个从0到23的整数。

我敢打赌在某个地方有这样一条线: LCD_CMDS(lcd_cmd_ptr)

票数 2
EN

Stack Overflow用户

发布于 2013-10-25 08:46:01

代码语言:javascript
运行
复制
signal lcd_cmd_ptr : integer range 0 to LCD_CMDS'HIGH + 1 := 0;

这段代码定义了一个信号,其范围从0到‘无论LCD_CMDS数组中的最高索引是+ 1’。

VHDL中的“滴答”属性对于编写通用代码非常有用。为了完全泛化,上面的线应该是:

代码语言:javascript
运行
复制
signal lcd_cmd_ptr : integer range LCD_CMDS'low  to LCD_CMDS'HIGH + 1;

然后,如果有人删除了数组中条目0的条目,那么信号的范围就会更有限。注意,在原始情况下显式初始化为'0‘,在最一般情况下显式初始化为’LCD_CMDS'LOW‘是不必要的。VHDL规范保证整数总是被初始化到允许的最小值。

如果上面的信号只需要上升到数组中的最高值,您可以编写得更简洁一些:

代码语言:javascript
运行
复制
signal lcd_cmd_ptr : integer range LCD_CMDS'range;

同样,不需要显式初始化。

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

https://stackoverflow.com/questions/19574520

复制
相关文章

相似问题

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