EP2C5T144+ESP-32(5)Wifi+SPIでLチカ
前回で作業手順の2番目が終わり、今回は作業手順の3番目、FPGAとの接続です。
- Windows PC上でFPGAを操作するためのバイト列を作ってWifiで送信
- ESP-WROOM-32で受信したバイト列をSPIでFPGAに送信
- FPGAで受信したバイト列をデコードしてボード上のLEDを点滅
Windows PC →(Wifi)→ ESP-WROOM-32 →(SPI)→ EP2C5T144の内、最後のFPGAの部分を実装します。
Qsysの画面です。Nios II/eの代わりにSPI Slave to Avalon Master Bridgeを追加しています。ほかにはLEDを接続するためにPIOを追加しています。動作確認用のWindowsアプリからPIOに接続されたLEDを点滅します。
HDLの記述はシンプルです。FPGAのピンとQsysの出力したモジュールを接続しているだけです。
module ledtest ( RST_N, CLK, SPI_NSS, SPI_SCLK, SPI_MISO, SPI_MOSI, LED2, LED4, LED5 ); input CLK, RST_N; input SPI_NSS, SPI_SCLK, SPI_MOSI; output SPI_MISO; output LED2, LED4, LED5; wire [2:0] leds_sig; spi_master u0 ( .clk_clk (CLK), .reset_reset_n (RST_N), .spi_slave_to_avalon_mm_master_bridge_0_export_0_mosi_to_the_spislave_inst_for_spichain (SPI_MOSI), .spi_slave_to_avalon_mm_master_bridge_0_export_0_nss_to_the_spislave_inst_for_spichain (SPI_NSS), .spi_slave_to_avalon_mm_master_bridge_0_export_0_miso_to_and_from_the_spislave_inst_for_spichain (SPI_MISO), .spi_slave_to_avalon_mm_master_bridge_0_export_0_sclk_to_the_spislave_inst_for_spichain (SPI_SCLK), .pio_0_external_connection_export (leds_sig) ); assign LED2 = ! leds_sig[0]; assign LED4 = ! leds_sig[1]; assign LED5 = ! leds_sig[2]; endmodule
ピン配置です。
LEDはアドレス0x00000000のPIOに接続したので、動作確認用のWindowsアプリからアドレス0x00000000にデータ0x05を書き込みます。8ビット、16ビット、32ビットの書き込みに対してそれぞれレスポンスが返っています。FPGAからのレスポンスもコマンドからバイト列に変換したときとは逆に変換して表示しています。
FPGAにプログラムを書き込んでACアダプターだけ接続した状態で動作しています。EP2C5T144ボード右上の3つのLEDが「5」の状態に点灯しています。
あと読み出しコマンド、連続アドレスの読み書きコマンドの対応が残っていますが、ひとまず作業終了とします。