ガードインターバル付加回路
ガードインターバルの付加回路をVHDLで作っているのですがこれが意外と大変です。
PC上でやれば単にメモリのコピーですんでしまいますが、
カウンタを動作させて、デュアルポートRAMの書き込みレイテンシを考慮しつつ、書き込みアドレスをかえ、途中で止めて、規定数送信が終了するであろう数クロック前にRAMからデータを読み出しつつ、かつFFTからの出力が途中で止まった場合、連続で来る場合、一旦休みがある場合、などに対応させていったら、ステートが3*3*2ぐらいになり、クロック調整のオンパレードです。
初めて、プログラムをやらせるのに、VHDLがいいとか言っている人を時々見かけますが、
普通のプログラムに比べ、ハードに近いのでクロックの概念がはいります。
関数などはつかえません。フラグをつかえます。
そりゃ、2〜3日、メモリの操作の仕方とか、レジスタ操作とか、半加算器・全加算器とか動作させてみるのはいいでしょう。
ポインタ参照なんて、メモリのADDRESSをセットして数クロック後にDATAを持ってきて、それを格納して、更にADDRESSに持ってきて、それをDATA線から出すと。
何でそんなめんどくさいことを、今更させる必要があるのか。
そのようなめんどくさいことをしないために、CPU アセンブラ 言語 オブジェクト指向と、次々生まれていきましたが。
ローレベルなハードから順々に上の階層を追っていくのもいいですが。
その逆で、Javaなどからどのようにコードが落ちていて、アセンブラレベルになり、その次のハードレベルはどうなるのかを考えていった方がいいと思います。
そういうことを考えられない人が、増えていったので、もっさりと動く某社の携帯がうまれていったんだろうなー(笑)
世の中の本は、たいていアセンブル止まりなので、
昭和40〜50年代の、ミニコン・電卓の本を図書館で借りてきて勉強するのが一番だと思います。
一番なのかな?