BeMicro Max10+ESP-32(1)Wifi+SPI経由でLチカ
EP2C5T144に続いて、BeMicro Max10ボードもQsysにNios II/eを追加する代わりに Windows PC →(Wifi)→ ESP-WROOM-32 →(SPI)→ BeMicro Max10のようにFPGAの外部からSPI経由で内部のペリフェラルI/Oを操作します。
動作確認用のWindowsアプリとESP-WROOM-32側のArduinoスケッチはEP2C5T144のときと同じです。FPGAのプログラムだけ移植します。
Qsysの画面はEP2C5T144のときとPIOのビット数以外同じです。Nios II/eの代わりにSPI Slave to Avalon Master Bridgeを追加しています。ほかにはLEDを接続するためにPIOを追加しています。動作確認用のWindowsアプリからPIOに接続されたLEDを点滅します。
HDLの記述もLEDの数が増えたので少し変わります。内容はFPGAのピンとQsysの出力したモジュールを接続しているだけです。
module ledtest ( RST_N, CLK, LED1, LED2, LED3, LED4, LED5, LED6, LED7, LED8, SCLK, CS_N, MOSI, MISO ); input CLK, RST_N; output LED1, LED2, LED3, LED4, LED5, LED6, LED7, LED8; input SCLK, CS_N, MOSI; output MISO; wire [7:0] leds_sig; unsaved u0 ( .clk_clk (CLK), // clk.clk .pio_for_led_export (leds_sig), // pio_for_led.export .reset_reset_n (RST_N), // reset.reset_n .spi_bridge_mosi_to_the_spislave_inst_for_spichain (MOSI), // spi_bridge.mosi_to_the_spislave_inst_for_spichain .spi_bridge_nss_to_the_spislave_inst_for_spichain (CS_N), // .nss_to_the_spislave_inst_for_spichain .spi_bridge_miso_to_and_from_the_spislave_inst_for_spichain (MISO), // .miso_to_and_from_the_spislave_inst_for_spichain .spi_bridge_sclk_to_the_spislave_inst_for_spichain (SCLK) // .sclk_to_the_spislave_inst_for_spichain ); assign LED1 = ! leds_sig[0]; assign LED2 = ! leds_sig[1]; assign LED3 = ! leds_sig[2]; assign LED4 = ! leds_sig[3]; assign LED5 = ! leds_sig[4]; assign LED6 = ! leds_sig[5]; assign LED7 = ! leds_sig[6]; assign LED8 = ! leds_sig[7]; endmodule
ピン配置です。
LEDはアドレス0x00000000のPIOに接続したので、動作確認用のWindowsアプリからアドレス0x00000000にデータ0x55を書き込みます。結果はこのページ最初の画像をご覧ください。
(追記2017/9/21:Google Playに「FPGA SPI Bridge Console for Avalon Bus」を公開しました)