4エレでサイドトーン

sidetone5

4エレメントのD/A変換器で、サイドトーンを作りました。黄色のトレースはキー出力で、短点を1個送出しているところです。正弦波の位相がキー出力と揃っていることに注意して下さい。

4-bit

I wrote a short C program to obtain a sine table.

正弦波テーブルを作るために、短いCプログラムを書きました。

int main(){
	int n=64;
	char buf[16], buf2[16];
	for(int i=0;i<n;i++) {
		int ival = (sin((double)i/(double)n*360.0/360.0*2.0*3.14159265)+1.0)/2.0*15.0+0.5;
		itoa(i,buf,2,6);
		itoa(ival,buf2,2,4);
		printf("6'b%6s: begin WAVE <= 4'b%4s; end // %2d: %2d \n", buf, buf2, i, ival);
	}
	return 0;
}

出力行はこのような感じで、verilogソースファイルに取り込むことができます。

6'b000000: begin WAVE <= 4'b1000; end //  0:  8 
6'b000001: begin WAVE <= 4'b1000; end //  1:  8 
6'b000010: begin WAVE <= 4'b1001; end //  2:  9 
6'b000011: begin WAVE <= 4'b1010; end //  3: 10
//
6'b111111: begin WAVE <= 4'b0111; end // 63:  7 

区間[0度, 360度]は64個に分割されて、4ビット変換器の出力レベルが全て用いられるようになっています。

sidetone3

サイドトーンをアナログキャプチャして、FFTで分析しました。

sidetone4