Новый ответ:
В соответствии с таблицей данных, предоставленной в комментариях http://www.xilinx.com/support/documentation/boards_and_kits/ug334.pdf
Стоит отметить, что в большинстве ваших комментариев утверждается, что время интерфейса больше, чем время настройки.Это назад.Для настройки требуется больше времени, чем для разговора с ЖК-дисплеем.
Чтобы сделать это проще для меня, я собираюсь сделать вызов псевдо-функции, называемый импульсным LCD_E, который вы можете каждый раз заменять в своей голове.
Definition of pulse LCD_E
wait a minimum of 40 ns (2 clock cycles at 50 MHz)
set LCD_E high
wait a minimum of 230 ns (12 clock cycles at 50 MHz)
set LCD_E low
wait a minium 10 ns before changes (.5 clock cycle)
Временная диаграмма для стандартной команды записи просит вас
set LCD_RS, LCD_DB(7:4), LCD_RW
pulse LCD_E
reset LCD_RS, LCD_DB(7:4), LCD_RW for lower nibble
wait 1 us
pulse LCD_E
wait a minium of 40 us before repeating
Инициализация ОЧЕНЬ похожа, хотя у вас есть начальное время ожидания и вы пишете только 4-битные команды с более длительным ожиданиеммежду ними.
Сделайте это для инициализации
wait at least 15 ms (750,000 clock cycles at 50 MHz)
set LCD_DB<7:4> = 0x3
pulse LCD_E
wait 4.1 ms or longer, which is 205,000 clock cycles at 50 MHz.
set LCD_DB<7:4> = 0x3,
pulse LCD_E
wait 100 μs or longer, which is 5,000 clock cycles at 50 MHz.
set LCD_DB<7:4> = 0x3
pulse LCD_E
wait 40 μs or longer, which is 2,000 clock cycles at 50 MHz.
set LCD_DB<7:4> = 0x2
pulse LCD_E
wait 40 μs or longer, which is 2,000 clock cycles at 50 MH
Initialization complete
Если вам по какой-то причине требуется сократить время записи, вы можете установить следующий ввод данных во время более длительного ожидания и удалить начальное ожидание.в импульсе LCD_E
В защиту моего старого ответа.Из таблицы данных ~~
After power-on, the display must be initialized to establish the required communication
protocol. The initialization sequence is simple and ideally suited to the highly-efficient
eight-bit PicoBlaze embedded controller. After initialization, the PicoBlaze controller is
available for more complex control or computation beyond simply driving the display.
Старый ответ:
Если это происходит на ПЛИС и у вас есть другие временные ограничения (например, время ожидания), вы можете рассмотреть возможность использования этого
http://en.wikipedia.org/wiki/PicoBlaze
Это реализация VHDL 8-битного микроконтроллера, очень полезная для настройки, записи и чтения информации с ЖК-дисплея.Чипсет очень прост и его легко подобрать.Кроме того, вы можете кодировать свои собственные периферийные устройства:)
Это бесплатное программное обеспечение, и я думаю, что вы можете скачать все это здесь.Он поставляется с собственной IDE и отладчиком.
http://www.picoblaze.info/tools.html
Если это просто для небольшого проекта, вы можете просто сделать все кодирование самостоятельно для задержек.Но если это происходит в более крупном проекте, это довольно полезно и его стоит изучить.Я думаю, что он работает на тактовой частоте 50 МГц, поэтому вам, возможно, потребуется немного управлять цифровыми часами, если вы используете более быстрые часы.