新しい答え:
コメント
http://www.xilinx.com/support/documentation/boards_and_kits/ug334.pdfで提供されるデータシートに従う
あなたのコメントのほとんどは、インターフェイスのタイミングがセットアップのタイミングよりも長いと主張していることに注意してください。これがバックワーズです。LCDと話すよりもセットアップに時間がかかります。
これを簡単にするために、毎回頭の中で置き換えることができる pulse 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.
古い答え:
これが FPGA で行われており、他のタイミング制約 (待機時間など) がある場合は、これを使用することを検討してください。
http://en.wikipedia.org/wiki/PicoBlaze
これは 8 ビット マイクロ コントローラの VHDL 実装であり、LCD からの情報の設定、書き込み、および読み取りに非常に役立ちます。チップセットは非常にシンプルで、簡単に手に入れることができます。さらに、独自の周辺機器をコーディングできます:)
無料のソフトウェアで、ここからすべてダウンロードできると思います。独自の IDE とデバッガーが付属しています。
http://www.picoblaze.info/tools.html
小さなプロジェクトだけの場合は、遅延のためにすべてのコーディングを自分で行いたいと思うかもしれません。しかし、より大きなプロジェクトに参加する場合、これは非常に便利であり、学ぶ価値があります。最大 50 MHz のクロックで動作すると思うので、より高速なクロックを使用している場合は、デジタル クロック管理を行う必要があるかもしれません。