MAXUPLD入門 その4 DDS & D/A(Pulse Density
Modulation)
D/A(using Pulse
Density Modulation)変換後に、Low Pass Filterを通して確認しました、できた!
100KHz出力
10KHz出力:高調波があるが、ノイズフロアは80dBC以上(一次LPFはfc=140KHz位なので、LPF無しと同じ)
後ほど、sin波のromデータの上下限値を90%に抑えると、更にきれいになりました。
f=9,999.98Hz(無調整)。
カウンターのクロックはGPSに同期させたクロック
carry_out が PDMによるD/A出力
( simulated using VeritakWin CQ )
ModelSim-Alteraでも、確認しました。
1.DDSも、やってみましょう 上図は、DDSの出力 data を、PulseDensityModulationにより、D/A変換したものです、 多分......確信は、ない。 後は、Low Pass Filterを通す実験だけなんですが、まだ、できてませんねん。 <- できました! 2.sin波データを格納する場所は? 実は、simulationの段階ですが、romに採っています。 実験的に、10bitのデータを、10bitのアドレスで格納していますから、 データだけでも、 10bit x 1024 =10240bit もの、bitを格納している事になります、ほんまかいな! 717LEで、格納できています。 こんなん、webでも、書籍でも、何処にも記述されていません! romに格納できれば、DDSの出力周波数も、グンと、上げる事ができるのでは..... で、 Quartusの RTLviewerで、見てみると 正しく、compileされていますね。 まだ、simulationの段階ですが、私は、「できる」と、信じています。 私は、全くのド素人ですから、書籍の通りに従って、素直に、自分のアイデアを、試しているだけなのです。 奇を衒うつもりは、全くありませんが、「何で、こうなるの!」 |
3.DDSの構成は default
romdat=9'h100; input [3:0] inc; //increment always @(posedge clk) begin input [8:0] VDA
; always @(posedge clk) begin myDDS1
myDDS1(clock,data,increment);
initial begin initial begin #4000 |
次回は、DDSを考えている時、疑問に思った事を、書いてみたいと、思います。 全然、間違ってるかも..... (^_^;; H.21.2.13 |