ガードインターバル付加回路

ガードインターバルの付加回路をVHDLで作っているのですがこれが意外と大変です。

PC上でやれば単にメモリのコピーですんでしまいますが、

カウンタを動作させて、デュアルポートRAMの書き込みレイテンシを考慮しつつ、書き込みアドレスをかえ、途中で止めて、規定数送信が終了するであろう数クロック前にRAMからデータを読み出しつつ、かつFFTからの出力が途中で止まった場合、連続で来る場合、一旦休みがある場合、などに対応させていったら、ステートが3*3*2ぐらいになり、クロック調整のオンパレードです。

初めて、プログラムをやらせるのに、VHDLがいいとか言っている人を時々見かけますが、
普通のプログラムに比べ、ハードに近いのでクロックの概念がはいります。
関数などはつかえません。フラグをつかえます。

そりゃ、2〜3日、メモリの操作の仕方とか、レジスタ操作とか、半加算器・全加算器とか動作させてみるのはいいでしょう。
ポインタ参照なんて、メモリのADDRESSをセットして数クロック後にDATAを持ってきて、それを格納して、更にADDRESSに持ってきて、それをDATA線から出すと。

何でそんなめんどくさいことを、今更させる必要があるのか。

そのようなめんどくさいことをしないために、CPU アセンブラ 言語 オブジェクト指向と、次々生まれていきましたが。

ローレベルなハードから順々に上の階層を追っていくのもいいですが。

その逆で、Javaなどからどのようにコードが落ちていて、アセンブラレベルになり、その次のハードレベルはどうなるのかを考えていった方がいいと思います。

そういうことを考えられない人が、増えていったので、もっさりと動く某社の携帯がうまれていったんだろうなー(笑)

世の中の本は、たいていアセンブル止まりなので、
昭和40〜50年代の、ミニコン・電卓の本を図書館で借りてきて勉強するのが一番だと思います。

一番なのかな?