MAXUPLD入門 その5 DDS実験結果 2.verilogHDLでのプログラムは default
romdat=16'h7FFF; input [15:0] VDA
; always @(posedge clk)
begin
1次LowPassFilter(fc=140KHz)通過後なので、振幅が減少している。
周波数は、クロックが50MHzぴったりと計算して、0.7Hzの誤差。
カウンタは、GPSで同期させた信号源を、元クロックとしている。
1.MAXUマイクロキットでDDS
外付けは、1次ローパスフィルタ(fc=140KHz)のみです。
MAXUPLDによる構成は、以下のようにしました。
実験結果を列挙します。
100KHz 出力
後ほどsin波のromデータ上下限値を90%に抑えると、更に綺麗になりました。
200KHz 出力
以下、振幅が小さくなっていくのは、1次ローパスフィルタ(fc=140KHz)の為です。
この、1.6MHZを拡大してみます。
次に
この辺りになると、さすがに、駄目ですね。
下がって、10KHz 出力
後ほど、sin波のromデータの上下限を90%に抑えると、更にきれいになりました。
こうして、見てみますと、
10KHz出力でも、100KHz出力でも、高調波のレベルは、大差ありません。
この理由が解らなくて、頭いたいですわ、涙 (-_-)
でも、第2高調波が、-50dBCと言う事は
-40dBで、1/100、更に 6dBの-46dBで 1/200 だから、そこそこ、いいのかも.....贅沢は敵?
そして、ノイズレベルは、いずれも、-80dBC以下で、素晴らしいです。
パルス密度変調(
Pulse Density Modulation
)って、素晴らしいですね。
1bitDACって、この事を言うんですね、知らなかった.....PWMより、よさげ。
しかし、この高調波、なんとか取れないでしょうかね....と、未練たっぷり。
ΔΣ変調の事、ここで調べさせていただいています、御礼。
16bitのデータが 1024個のromでも、LEは、半分の消費のみ
周波数分解能は
トップモジュールは
//address 32bit, data 16bit。 KEYを押す度に、100KHz up。
clock=50MHz
module myDDS4(clock,KEY,carry_out);
input clock;
input KEY;
reg
[31:0] inc;
wire [9:0] addr; //10bit rom
address
reg [31:0]
add2; //32bit
wire [15:0] data; //16bit
data
output carry_out;
assign
addr =add2[31:22];
mSinRom
mSinRom1(addr,data);
acum PDM(data,clock,carry_out);
always
@(posedge clock) begin
add2 <= add2 +
inc;
end
always @(negedge KEY)
begin
//inc <= inc +32'h0083126F;//100KHz :
inc <= inc
+32'h000D1B72; //10KHz=32'h000D1B72
end
initial
begin
//inc <=32'h0083126F;//100KHz
inc
<=32'h000D1B72;//10KHz
end
endmodule
以下、
module
mSinRom(adr,dat);
input [9:0] adr; //10bit
address
output [15:0] dat; //16bit data
reg
[15:0] romdat;
assign dat=romdat;
always
@(adr)
begin
case(adr)
10'h000:romdat=16'h7FFF;
10'h001:romdat=16'h80C8;
10'h002:romdat=16'h8191;
10'h003:romdat=16'h825A;
......
10'h3FD:romdat=16'h7DA3;
10'h3FE:romdat=16'h7E6C;
10'h3FF:romdat=16'h7F35;
endcase
end
endmodule
module
acum(VDA,clk,cy_out);
input clk;
output
cy_out;
reg [15:0]
R;
reg
cy_out;
initial
begin
R <=0;
end
{ cy_out, R } <= VDA
+R;
end
endmodule
こんなに素早く DDSができるとは、知りませんでした。
時代錯誤の回路図によるCPLD設計の上田様に、御礼。
H.21.2.18