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」を公開しました)