簡単な数値制御発信器を実装して、600Hzの正弦波を生成しています。赤色のトレースは、D/A変換器へのMSBです。
//--------- 16-bit phase accumulator --------------------- reg [15:0] phase_acc; reg [15:0] phase_delta; always @ (posedge clk_myown or negedge res_n) begin if ( res_n == 1'b0 ) begin phase_acc <= 16'h0000; phase_delta <= 16'h0040; end else if (daword_up == 1'b1) begin // 48kHz phase_delta <= (1'b0)? {5'b0_0000, rx_data, 3'b000} : 16'b0000_0011_0011_0011; phase_acc <= phase_acc + phase_delta; sound_index <= phase_acc[15:7]; end end
第12行に示されているように、周波数制御ワード(FCW), phase_delta,を、シリアルインターフェースを介して与えることもできます。