Я нашел этот код, который управляет ЖК-дисплей с FPGA, но он не может видеть, чтобы понять некоторые из кода, в частности, эта частьУправление ЖК в VHDL на спартанский 6
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;
Я понимаю, что был создан массив для хранения значений символов, отображаемых на дисплее. но я не понимаю эту строку.
signal lcd_cmd_ptr : integer range 0 to LCD_CMDS'HIGH + 1 := 0;
Может кто-нибудь помочь мне понять, Что сделано здесь
Да, есть: 'JB (4) <= LCD_CMDS (lcd_cmd_ptr) (9); \t \t JB (5) <= LCD_CMDS (lcd_cmd_ptr) (8); \t \t JA <= LCD_CMDS (lcd_cmd_ptr) (7 downto 0); ' как эта работа тогда JA получила значение бит 9, также означает, что «LCD_CMDS« высокий »означает, что немного запутано на этом – user1175889
Так lcd_cmd_ptr действует как среднее, чтобы пройти через строку массивов, точно так же, как, например, int i, for (i = 0, i <10, i ++) '' i 'будет использоваться для прохождения цикла "for"? – user1175889
Я не уверен, что JA и JB используются для чего-то с ЖК-дисплеем. Tick High (высокий) является атрибутом VHDL. Вот список всех атрибутов VHDL: http://www.csee.umbc.edu/portal/help/VHDL/attribute.html. Он используется для получения максимального значения и вставляет его в код. Да к вашему второму вопросу, это точно так же, как цикл for в C. – Russell