FPGA活用回路&サンプル記述集(1) ―― アナログ信号入出力回路
tag: 半導体 電子回路 ディジタル・デザイン
技術解説 2009年2月23日
事例2.D-Aコンバータを利用してアナログ波形を生成する回路
外部回路- 回路図:図2-1
- 主要部品:D-Aコンバータ
- Verilog HDL記述:リスト2-1,リスト2-2,リスト2-3
- 外部入力:dsw[3:0],ck,res
- 外部出力:we,q[15:0]
- 内部入力:図2-1
- 内部出力:図2-1
- パラメータ:なし
- Quartus II Web Edition 6.1,Cyclone
● D-Aコンバータを制御する回路
図2-1にFPGAによるD-Aコンバータの制御回路を示します.米国Texas Instruments社の「TLV5619」は,12ビットのパラレル・インターフェースを持つD-Aコンバータです.このD-Aコンバータは電源電圧2.5V~5.5Vで動作するため,FPGAのI/Oが3.3Vの場合,直接制御可能です.
図2-1 D-Aコンバータを制御するための回路
FPGAに接続したロータリ・スイッチは,出力するアナログ波形の周波数を切り替えるためのものです.VREFINには3Vを入力し,D-Aコンバータの出力範囲を0~3Vとしています.
このD-Aコンバータはディジタル・パラレル・インターフェースを持ちます.動作タイミングを図2-2に示します.CSが"L"期間中のWE-の立ち上がりエッジでD[11:0]のディジタル・データを内部へ取り込みます.そのデータを次のLDACの"L"期間でOUTのアナログ・データに反映します.今回の回路では制御を簡易にするためCS,LDACは"L"で固定とし,WE?のエッジだけでデータの更新を制御しています.
図2-2 パラレル・インターフェースの制御タイミング
CSが"L"期間中,-WEの立ち上がりでデータを取り込む.LDACの"L"で出力に反映させる.
● 波形を生成するためのデータを作る
波形データは16ビット×2048のメモリ・データとして,FPGA内のメモリに格納したものを読み出しています.データの設定は固定とし,論理合成時にファイルから読み込む形をとっています.
今回作成したsin波生成のためのROMデータのサンプルを表2-1に示します.値はsin波の1/2周期を2048等分する形(±1の範囲)で求めた値を,D-Aコンバータの設定範囲の0~65535に拡張しています.
0 : 32767 |
1 : 32868 |
2 : 32968 |
~ |
1023:65534 |
1024:65535 |
1025:65534 |
~ |
2046 : 32966 |
2047 : 32866 |
2048 : 32767 |
表2-1 ROMに内蔵するデータ
再生時は2048のデータを2回繰り返し(前半2048はそのまま,後半2048はデータを反転する),4096回のデータ設定で1周期として再生しています.
tag: FPGA