Verilogで実装されたRadix-2 64点FFTアクセラレータ
概要
このリポジトリは、Verilogで記述された64点(パラメータで変更可能)Radix-2 Decimation-in-Time(DIT)FFTアクセラレータのハードウェア実装です。単一クロックサイクルで動作するバタフライ演算ユニット、複素数乗算器、インプレース計算を実現するデュアルポートSRAM、そして演算の流れを管理する階層化された状態機械(コントロールユニット)が含まれます。FPGAなどの組込みハードウェア上で高速に周波数領域変換を行う用途を想定した設計になっています。
リポジトリの統計情報
- スター数: 2
- フォーク数: 0
- ウォッチャー数: 2
- コミット数: 3
- ファイル数: 12
- メインの言語: Verilog
主な特徴
- 64点(パラメータで変更可能)Radix-2 DIT FFTのハードウェア実装
- シングルサイクルバタフライユニットと複素乗算モジュールによる高速演算
- デュアルポートSRAMを用いたインプレース(同一メモリ上)更新
- 階層化された状態機械によるステージ制御とアドレス生成
技術的なポイント
この実装は古典的なRadix-2 DITアルゴリズムをハードウェア向けに最適化した構成が特徴です。Radix-2 DITでは入力配列を段ごとに半分サイズのバタフライ演算で結合していくため、全体で log2(N) ステージ(64点なら6ステージ)を順次処理します。本リポジトリの設計は「インプレース」での演算を前提としており、デュアルポートSRAMを用いることで同一メモリから二つのデータを同時に読み出し、演算後に同じアドレスへ書き戻すことができます。これにより外部メモリへの大容量バッファを減らし、FPGAリソースの節約とデータ移動の低減を図っています。
バタフライ演算は complex_add/sub と複素乗算を組み合わせた単位で、single-cycle butterflyとして設計されている点が重要です。single-cycle化はクロック当たりのスループットを高めますが、乗算器や加算器のコンビネーションがタイミングや面積に与える影響を設計上考慮する必要があります。complex_mult.v は実数・虚数成分の乗算と加減算を扱い、ツイードル係数(複素指数乗)との乗算を担います。ツイードル係数の格納方法はリポジトリ内の設計によりますが、ROMや計算による生成、あるいは外部入力からの注入などで実装可能です。
制御面では control_unit.v による階層化された状態機械が、ステージ番号の進行、バタフライ単位の反復、SRAMのアドレス生成、ツイードル係数の選択、入出力ハンドシェイクを管理します。これにより同じハードウェアブロックで複数ステージを順次実行でき、リソースの効率的な使い回しが可能です。設計はパラメータ化されているため、FFT長やデータ幅などを変更して別用途に適用しやすい拡張性を持ちます。
用途としては、FPGA上でのリアルタイム信号処理(無線通信、スペクトル解析、ソフトウェア無線の前処理など)に適しています。改善点としては、パイプライン化による周波数向上、ブロック浮動小数点やスケーリング制御の追加、ツイードルROM最適化や複数並列バタフライによるさらなるスループット向上などが考えられます。
プロジェクトの構成
主要なファイルとディレクトリ:
- README.md: file
- butterfly_add.v: file
- complex_mult.v: file
- control_unit.v: file
- dual_port_sram.v: file
…他 7 ファイル
まとめ
コンパクトにまとめられたVerilogベースの64点Radix-2 FFTアクセラレータで、FPGA実装の出発点として有用です。
リポジトリ情報:
- 名前: verilog_fft_accelerator
- 説明: 説明なし
- スター数: 2
- 言語: Verilog
- URL: https://github.com/moogchi/verilog_fft_accelerator
- オーナー: moogchi
- アバター: https://avatars.githubusercontent.com/u/110416991?v=4
READMEの抜粋:
Radix-2 FFT Accelerator - Verilog Implementation
Hardware implementation of a 64-point radix-2 decimation-in-time (DIT) Fast Fourier Transform accelerator in Verilog HDL.
📋 Overview
This Verilog implementation features:
- 64-point FFT computation (configurable via parameters)
- Radix-2 Decimation-in-Time (DIT) algorithm
- Single-cycle butterfly unit for complex arithmetic
- Dual-port SRAM for in-place computation
- Hierarchical state machine control unit
- Complete …