BeMicro Max10+ESP-32(3)NCOにR-2R DACを繋ぐ


前回に続いてBeMicro Max10をCPU無しで使います。NCOの出力にDACを繋いでオシロで波形を確認します。

小さなブレッドボードにR-2Rラダー型DACを組み込んで追加しました。ブレッドボードを固定している治具は3Dプリンター製です。電子工作に3Dプリンターは大活躍です。

QsysのNCOの設定を変更しました。

ピン配置にJ3コネクタのうち12本を追加します。

HDLの記述にもJ3コネクタのうち12本を追加します。

module ledtest (
	RST_N,
	CLK,
	LED1, LED2, LED3, LED4, LED5, LED6, LED7, LED8,
	DAC1, DAC2, DAC3, DAC4, DAC5, DAC6, DAC7, DAC8, DAC9, DAC10, DAC11, DAC12,
	SCLK, CS_N, MOSI, MISO
);
input CLK, RST_N;
output LED1, LED2, LED3, LED4, LED5, LED6, LED7, LED8;
output DAC1, DAC2, DAC3, DAC4, DAC5, DAC6, DAC7, DAC8, DAC9, DAC10, DAC11, DAC12;
input SCLK, CS_N, MOSI;
output MISO;
wire [15:0] nco_out;
wire [15:0] dac_in;
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                                          (nco_out),                                          // nco_ii_0_out.data
        .nco_ii_0_out_valid                                         ()                                          //             .valid
    );

assign dac_in = (nco_out[15] == 0) ? nco_out + 16'h8000 : nco_out - 16'h8000;
	 
assign LED1 = ! dac_in[15];
assign LED2 = ! dac_in[14];
assign LED3 = ! dac_in[13];
assign LED4 = ! dac_in[12];
assign LED5 = ! dac_in[11];
assign LED6 = ! dac_in[10];
assign LED7 = ! dac_in[9];
assign LED8 = ! dac_in[8];

assign DAC1 =  dac_in[15];
assign DAC2 =  dac_in[14];
assign DAC3 =  dac_in[13];
assign DAC4 =  dac_in[12];
assign DAC5 =  dac_in[11];
assign DAC6 =  dac_in[10];
assign DAC7 =  dac_in[9];
assign DAC8 =  dac_in[8];
assign DAC9 =  dac_in[7];
assign DAC10 =  dac_in[6];
assign DAC11 =  dac_in[5];
assign DAC12 =  dac_in[4];

endmodule

NCOの周波数設定用入力はアドレス0x00000000のPIOに接続しています。QsysのNCO編集画面から1MHzを出力するにはNCOの周波数設定用入力に335544を入力すればいいので、動作確認用のWindowsアプリからアドレス0x00000000にデータ335544を書き込みます。

同様に336を書き込むと1kHzが出力されます。

次へ