VHDLの書き方
for generateで生成した分散RAMの初期化方法
XSTでのVHDLインプリメントの注意点
(math_realライブラリを使って、log2(値)を使って、ビット幅を算出しようとし
たら丸めのために失敗した)
私流のVHDLの書き方1
(constant文で値を意味のある文字列で置き換える方法やfunctionの使い方の
例)
私流のVHDLの書き方2
(package文とpackage body文の書き方の例)
VHDLにおけるifdefの代わり
(Verilogのifdefの代わりにVHDLではif generate文を使う)
PCI-Xバスへの出力信号のHDL記述
(PCI-Xの出力信号のVHDLでの記述方法の一例、人間の見易さを第一に考えている)
FFをIOBに入れるためのVHDLの書き方
(Synplify Pro編)
(PCI-Xバスへの出力信号のHDL記述よりも確実な書き方)
あらかじめ定義された属性(Predefined
Attributes)
多次元配列
(多元配列の書き方)
ブロック文(
VHDLのブロック文と使い方)
ありがとう、30万アクセスとVHDLの共有変数
(たーぼ のハードウェア設計記録さんのVHDL TIPS 「shared
variableの使用法」の紹介)
PS/2キーボードインターフェース用テストベンチ
(procedure使用)
(procedure
文を利用して、”日曜デジタル”の”PS/2に挑戦”のPS/2キーボード・インターフェースのテストベンチを書いてみた。procedure文はサブプ
ログラムを書くときに使われる。wait文も書くことができるので、テストベンチでプロセッサのバスプロトコルやシリアルインターフェースの通信手順を書
くのも使用することができる。)
LOG2の値の求め方
VHDL
で32ビット以上のカウンタの生成
(巷でVHDLで32ビット以上のカウンタの動作がどうなるか?と話題になっている。私もライ
ブラリを読んでみたところどうなるのか非常に興味があったので、ISE9.2.03i と ModelSim SE 6.1eでやってみた。)
VHDL
でのブロックRAMや分散RAMの初期化(外部データファイル)
(外部データファイルのデータでのブロックRAMや分散RAMの初期化方法)
VHDL
でのpackageの使用方法
(私のVHDLのpackageの使用方法)
VHDL
の慣性遅延と伝搬遅延
(VHDLの慣性遅延と伝搬遅延の書き方について)
VHDL
でのブロックRAMや分散RAMの初期化(16進数で書かれた外部データファイル)
(”
VHDLでのブロックRAMや分散RAMの初期化(外部データファイル)”では、外部データファイルを16進で書くことができなかったが、どうも2進数で
書くとわかりづらいので16進数で書く方法を模索することにした。やってみたら書くことができたので、ブログに書いておくことにする)
procedure
を使うときの注意点
procedureを使うときに、'eventを使える信号(clk)は、signal宣言を
する必要がある。
VHDL
による乗算について(ISE12.3のXSTを使用)
VHDL
で乗算記号*を使ったときに、どのようになるのかが、よくわからなかったので試してみた。その覚書です。特にunsigned
とsignedを掛けたときにどうなるのか?std_logic_vector同士をそのまま掛けたらsignedとして扱ってくれるのか?よくわからな
かった。
Type
Qualification とType Conversion
VHDLのType Qualification とType
Conversionについての覚書。STATE1'(idle)、STATE2'(idle) 、signed(temp1),
unsigned(temp2)
VHDL
による乗算記述方法によるインプリメントの差異(Ver.12.3のXST)
ISE12.3のXSTを使って、VHDLによる乗算記述方法によるインプリメントの差異につ
いて調べてみた。DSP48にアサインされる時も、LUTにアサインされる時もあった。XSTの-use_dsp48オプションによって変化する。
VHDL
のgenericの値を下位モジュールのVerilogのparameterとして渡す
VHDLのgeneric文で書いた値を、Verilogで書かれた下位モジュールのパラメー
タとして渡す方法。
LOG2の値の
求め方2
LOG2の求め方。こういうやり方もあるのね?
VHDLのとっ
ても有用なExamples
VHDLのとっても有用な Examples があったのでリンクを張って置く。
ポートを配列で
宣言して下位階層に配線を接続する
VHDLでポートを配列で宣言して下位階層に配線を接続する方法を備忘録として書いておく。こ
の場合は、packege を宣言してパッケージに配列の宣言を書いておく。なお、使用ツールはISE13.4だ。
std_logic_arith
から numeric_std へ(VHDL)
std_logic_arithパッケージを使用していたが、numeric_stdパッケー
ジを使ってVHDLを書くことにした。
std_logic_arith
から numeric_std へ2(実践編)
numeric_stdパッケージで宣言した時のVHDL記述の仕方。
VHDLの
math_realパッケージを使用した sin() と cos() の計算
sin() と cos() の演算を VHDL の math_real
パッケージを使用してやってみたので、忘れないようにブログに書いておく。
ある constant の値で、他の constant の値を切り替える1(VHDL編)
Verilog
HDLは、前回やり方が分かったが、VHDLのやり方が分からなかった。ツィッターでつぶやいたら、VHDLの達人の hiyuh
さんが教えてくれた。いつもありがとうございます~。その内のエレガント方のやり方から紹介させて頂こうと思います。
ある constant
の値で、他の constant の値を切り替える2(VHDL編)
引き続き、VHDLの達人 hiyuh さんに教えていただいた ある
constant値で、他の constant
の値を切り替えるの第2段。こちらのほうがエレガントではないそうだ。私もそう思うが、ある理由でこっちを使いたいと思っている。ある constant値が
string の場合だ。
ある constant
の値で、他の constant の値を切り替える3(VHDL編2、XPSプロジェクト)
VHDLの達人 hiyuh
さんのVHDLコードのおかげで、"SVGA"と入力したら、800x600 に設定することができた。今度は、XPSプロジェクトに置いてAdd
IPのダイアログの中で、VGA, SVGAなどの解像度を設定したら、640x480, 800x600 に設定することを目指す。
ある constant
の値で、他の constant の値を切り替える4(VHDL編3)
前回のやり方で、XPSプロジェクトにカスタムIPを入れるときのAdd
IPのダイアログで、解像度を選ぶことが出来るのだが、pure function
をビデオのパラメータ分、書くのが面倒で、長い。本文より長くなってしまうこともあるかもしれないので、package にすることを考えた。
ある constant
の値で、他の constant の値を切り替える5(VHDL編4、XPSプロジェクト、完成)
今回は、前回の結果を使って、XPSプロジェクトのAdd
IPダイアログで解像度を選択して、その解像度のビデオのパラメータをconstant値に設定することを目指す。pure function
でそれを行ったのが、”ある constant の値で、他の constant
の値を切り替える3(VHDL編2、XPSプロジェクト)”である。今回は、package を使った前回のVHDLコードを使用する。
他のカテゴリでのVHDLの記事
VHDLの共有変数を使用したシミュレーション
(VHDLの共有変数を使ってテストベンチで下の階層の信号を見る)
PCIバスなどのシミュレーション(VHDL)
(PCIバスのサスティンド・トライステート信号をシミュレーションする際の問題点と一解決方
法)
DDR
SDRAMコントローラをVHDLからVerilog2001へ書き換える2
(VHDLでLUTを使用したDual Port
RAMのRAM16X1Dプリミティブをアドレス幅だけインスタンス)
DDR
SDRAMコントローラをVHDLからVerilog2001へ書き換える1
(VHDLでのPackageの書き方の一例)
PS/2キーボードインター
フェース用テストベンチ(procedure使用)のアサーションのようなもの
キャラクタ・ディスプレイ・コントローラのシミュレーション
(VHDL)
(キャラクタ・ディスプレイ・コントローラの表示文字をシミュレーションによって確認する方
法、VHDL版。こちらはPS/2キーボード・インターフェース回路とつながっている)
その他、いろいろなところに散らばっているのであきらめました。