日本ロジック設計    - VHDL ロジック記述サンプル -

TOPページ 


DDS 正弦波生成ロジックサンプル


  AI学習禁止
  無断転載禁止
  免責事項: 当サイトの情報を元に取った行動の結果について、一切の責任を負いません
  No unauthorized reproduction or AI training allowed.
  Unauthorized reproduction prohibited.
  Disclaimer: We are not responsible for any actions taken based on the information on this site.
  (C) 2025 JAPAN LOGIC DESIGN 日本ロジック設計



  DDSを用いた正弦波生成ロジックサンプルを紹介する。
  DDSの詳細については、アナログ・デバイセズ「アプリケーション・エンジニアに尋ねる―33 ダイレクト・デジタル・シンセシスのすべて」
   https://www.analog.com/jp/resources/analog-dialogue/articles/all-about-direct-digital-synthesis.html
   等を参照のこと。

   概要を説明すると、
   1. 正弦波の波形データは、あらかじめメモリに用意しておく。
    正弦波データを直接生成するロジックが組み込まれているわけではない。別途表計算ソフトなどで波形データを作成する必要がある。
    波形データを変更すれば、様々な波形を生成できる。
   2. メモリアドレスに +1 を加え、順にデータを読み出せば、正弦波の波形データが取り出せることになる。
    しかし、+1 だけでは発生する周波数が固定になってしまうため、 加算回路を設け +10、+100等も指定可能にすることで、
    周波数を可変にする。
[picture:pic_dds_generator_001]
  1. 主な仕様
    ・周波数(位相加算値)設定: 20 bit
    ・正弦波データテーブル構成: データ 8bit、アドレス 8bit
    ・波形出力: 8 bit
    ※本ロジックは 8bit の波形データを出力するところまで。
     DA変換については別ページ 「 9. シグマ方式DACロジックサンプル」 を参照。

  2. 使い方
    ・入力に周波数(位相加算値)を設定すれば、正弦波のデータ(8 bit)が出力される。

  3. 設計のポイント
    ・メモリのデフォルト値として、正弦波の波形データを入れておく。
     波形データの計算には、表計算ソフトを使用した。
     ※参考 dds_generator_sine_wave_table.zip
    ・メモリアドレスを加算回路で増加させながら読みだしていけば、正弦波波形が得られる

  4. テストベンチについて
   周波数(位相加算値)を変えることで、発生する周波数が変わることを確認する。
   期待値チェックは行っていない。
   シミュレーション時に信号の表示を「アナログ」にすることで、正弦波の波形表示ができる。
   ただし、VIVADOシミュレータではアナログ波形にノイズが乗る。原因は不明。
   デジタルデータに異常はなく、アナログ波形を拡大すればノイズは減るため、VIVADOのグラフィック表示上の問題と推測される。

   ・MODELSIMシミュレーション
[picture:pic_dds_generator_002]

   ・VIVADO シミュレーション アナログ波形にノイズがのる
[picture:pic_dds_generator_003]

   ・表示を拡大すればほぼ消える
[picture:pic_dds_generator_004]

  5. サンプルファイル
   プロジェクトファイル一式
    ・MODELSIM用プロジェクトファイル:japanlogicdesign_dds_generater_modelsim.zip
    ・VIVADO用プロジェクトファイル:japanlogicdesign_dds_generater_vivado.zip
    ※注意:VIVADO プロジェクトファイルは参考にとどめ、新規に作成しなおすことを推奨する
          MODELSIM プロジェクトは相対パスではないため、ソースファイルの再登録が必要な場合あり

 中国プロテクト:天安門事件、法輪功、チベット