FPGA で PSK31 (DE0 Nano 編 送信 その3) [Digital Mode]
どうも拾ってきた NCO の Verilog ソースにバグがある様で、ちゃんと設定した周波数のパルスが出ません。
そこで、自分で簡単な NCO を作ってみました。
NCO の原理は位相アキュムレータです。
ノートに書いたメモを載せておきます。
① が基本原理です。
② はレジスタを Modulo n のカウンターに変更し、周波数設定の自由度を改善しています。
で、これを元に Verilog ソースを書いてシミュレーションしてみました。
Modulo n は 9、ステップは 2 です。 つまり、レジスタは 9 パルスで一周し、その間に 2 パルスが発生します。
シミュレーション結果はこちらです。
ちゃんと 9 パルスで 2 パルス出ています。
これをもうちょっと条件を変えて動作確認して見る予定です。
そこで、自分で簡単な NCO を作ってみました。
NCO の原理は位相アキュムレータです。
ノートに書いたメモを載せておきます。
① が基本原理です。
② はレジスタを Modulo n のカウンターに変更し、周波数設定の自由度を改善しています。
で、これを元に Verilog ソースを書いてシミュレーションしてみました。
Modulo n は 9、ステップは 2 です。 つまり、レジスタは 9 パルスで一周し、その間に 2 パルスが発生します。
シミュレーション結果はこちらです。
ちゃんと 9 パルスで 2 パルス出ています。
これをもうちょっと条件を変えて動作確認して見る予定です。
今晩は、Verilog使いこなされてますね。 うらやましいです。
by ja1nuh (2014-03-07 22:52)
いえいえ、
うちの若い衆に比べたら使いこなすと言えるまでにはまだまだ修行が必要です。
FPGA への合成では、いまだタイミング制約とかが書けません。
Verilog は TTL でロジック回路を作っていた経験があれば、C を書くよりは取っつきやすい気がします。
by ktm (2014-03-08 13:13)