FPGAで「任意波形発生器」を作っています。現在、FPGAを使用して[verilogを使用して]「sinc」ウェーブの生成に取り組んでいます。
固定周波数の場合、ROMでLUTを使用してsincを作成できますが、ユーザー定義の周波数のsincを作成するオプションを指定する必要があります。
だから、それを作る方法はいいアイデアですか?
どんな助けでも大歓迎です。
可変周波数sin(x)
機能には引き続きLUTを使用できます。
正弦波の単一サイクルの1000程度のLUT(希望する解像度に応じて)エントリを生成するだけです。次に、目的の周波数に基づいて、各クロックサイクルをジャンプするエントリの数を決定します。
たとえば、クロックが1MHzで、必要な出力周波数が1KHzの場合、クロックごとに次のLUTエントリにステップします(1000クロックサイクルで周期を完了します)。必要な出力周波数が10KHzの場合、サイクルごとにLUTの10エントリをジャンプします。(100クロックサイクルで期間を完了します)
ただし、sincを取得するにはsin(x)/x
、除算回路を実装する必要があると思います。これを回避する方法は考えられません。