VHDLを使って気になっていたことがあるのでちょっと実験してみました。
気になっていた事というのは、「コンポーネントとして設計した部品のデータ幅を使用時に変えることが出来るか」という点です。たとえば、DDSをコンポーネントとしたときに、利用する度に12bit, 16bitのようにかえられるでしょうか。
丸め機能付の算術右シフト関数をVHDLで書きました。 丸めは演算の精度に大きく影響することはよく知られていますし、実験結果もそのとおりになります。たとえば、32bit NCOの精度評価でも丸めの有無で結果が変っています。 … 続きを読む
VHDLでCORDICを書いていますが、下位のエンティティのテスト・ベクターを作るC++プログラムがようやく軌道に乗りました。 テスト・ベクターを安定して記述できるようになり、diffの結果としてテストを見ることが出来る … 続きを読む
昨日のエントリにChuckさんからコメントを頂きました。 ↑クロックでデータの入力、(組み合わせ回路)演算開始、次の↑クロックで演算結果確定 これは「次の↑クロックでは前の演算結果が確定していて、それがそのまま出力してい … 続きを読む
VHDLで回路を記述していますが、クロックスキューが心配です。 全部の回路をクロックの立ち上がりエッジで動作させると、FPGA内部のクロックスキューによっては異常動作することがあり得ると思うのですが、どうでしょうか。 よ … 続きを読む
そろそろど素人による「プログラマから見たVHDLの難所」みたいもの書いてもいいかな、と考えています。 何かを書き記すにはレベルが低すぎるのですが、今感じていることはやがて消えていきますので。
VHDLを使って気になっていたことがあるのでちょっと実験してみました。
気になっていた事というのは、「コンポーネントとして設計した部品のデータ幅を使用時に変えることが出来るか」という点です。たとえば、DDSをコンポーネントとしたときに、利用する度に12bit, 16bitのようにかえられるでしょうか。
VHDLのstd_logic_vector型と整数型の間の変換について調べました。調べ終わったあとは何もかもすっきりして澄み切った視界を手に入れたような気分です。
結論から言えば、VHDL言語はstd_logic_vector型と整数型の間の自動変換をしません。
VHDLの学習環境がととなったので、再び少しずつ前に進めることにしました。 とりあえずDDSを作りたいのですが、そうなると三角関数の実装が必要です。CORDICなり、DSPでよく使った三角関数の公式とテーブル・ルックアッ … 続きを読む