BeMicro Max10+ESP-32(2)QsysでNCO


前回に続いてBeMicro Max10をCPU無しで使います。

BeMicro Max10をサポートしているQuartus Prime software Lite editionにはDSP用のIPが含まれています。開発環境に繋いだ状態でのみ動作する評価版ですが、ただいま勉強中なので問題ありません。

今回はNCOを使ってみます。NCOの出力周波数をWindows PCのアプリから設定します。

Windows PC →(Wifi)→ ESP-WROOM-32 →(SPI)→ BeMicro Max10

LチカのQsys画面にNCOを追加します。PIOのビット数はNCOの周波数設定用に32ビットに増やします。

HDLの記述にもNCO関連の接続を追加します。

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 [17:0] leds_sig;
wire [31:0] nco_in;

    unsaved u0 (
        .clk_clk                                                    (CLK),                                                    //          clk.clk
        .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
        .pio_nco_export                                             (nco_in),                                             //      pio_nco.export
        .nco_ii_0_in_valid                                          (1'b1),                                          //  nco_ii_0_in.valid
        .nco_ii_0_in_data                                           (nco_in),                                           //             .data
        .nco_ii_0_out_data                                          (leds_sig),                                          // nco_ii_0_out.data
        .nco_ii_0_out_valid                                         ()                                          //             .valid
    );

assign LED1 = ! leds_sig[10];
assign LED2 = ! leds_sig[11];
assign LED3 = ! leds_sig[12];
assign LED4 = ! leds_sig[13];
assign LED5 = ! leds_sig[14];
assign LED6 = ! leds_sig[15];
assign LED7 = ! leds_sig[16];
assign LED8 = ! leds_sig[17];

endmodule

ピン配置は変わりません。sofファイルをFPGAに書き込むと次のようなダイアログが表示され、閉じるとNCOの動作が停止します。評価用なので仕方ありません。

NCOの周波数設定用入力はアドレス0x00000000のPIOに接続しました。動作確認用のWindowsアプリからアドレス0x00000000にデータ0xaという小さな値を書いているので目に見えるゆっくりした速度でLEDが変化します。値を大きくすると変化が速くなります。

(追記2017/9/21:Google Playに「FPGA SPI Bridge Console for Avalon Bus」を公開しました)

動画はこちら。BeMicro Max10+ESP-WROOM-32+NCO

次へ