toms.log
2019/09/08
VHDL/Verilog-HDL差分
VHDLとVerilog-HDLの記述方法についてメモ.
VHDLとVerilog-HDLではほとんど記号的な記述方法に差があるのみで, ほとんどが機械的に可換である. 以下では機械的には置き換えられない記述方法についてメモしておく. ほとんどは書き方の問題で実装時に有利・不利があるかは考えていない. また筆者がVHDLをメインに使っているためVHDLの特殊な記法に言及しているようなものだ. ## コンポーネント宣言 悪名高いVHDLのコンポーネント宣言. ライブラリ宣言の問題でしかない. ## カウンタ Verilogではビット幅を指定せずに整数を宣言すると32ビットとして解釈される. 安全のために信号の幅はきちんと揃えておくべき. これがカウンタだといちいちビット幅を考える必要があるので面倒. **Verilog**
VHDLでは算術演算子がオーバーロードファンクションとして定義されているため, `std_logic_vector`だろうが`integer`だろうが関係なく扱える. **VHDL**
## 集合体(Aggregate) VHDLはベクタに集合体を代入することができる. `a <= (others => '0')`も集合体の代入. これを使えばエンコーダがすっきりする.
## 列挙型(Enumeration) VHDLでtype宣言と呼ばれるやつ. Verilogでは列挙型をサポートしない. ステートマシンの宣言が異なる. **VHDL**
**Verilog**
System Verilogで列挙型がサポートされた. **System Verilog**
## アトリビュート VHDLではアトリビュートによってビット数を意識せずにビット位置の指定ができる. #### ex. シフトレジスタ シフトレジスタではビット幅を全く意識せずに記述することができる.
#### ex. 乗算器 算術演算では頻繁にビット幅が変わるが, いちいち計算しなくてもよい.
## リダクション演算子 Verilogではリダクション演算子をサポートする. **Verilog**
VHDLではstd_logic_1164でサポートしないが, std_logic_miscで使うことができる. **VHDL**
またVHDL-2008でVerilogのようなリダクション演算子がサポートされたようだ. なおQuartusはLite, Standard editionではVHDL-2008未対応. ## 多次元配列 Verilogでは行列のような3次元以上の多次元配列を扱えない. VHDLでは2次元配列と同様に扱える. 簡単な$2 \times 2$行列くらいなら2次元化しても問題ないが, テンソルを扱ったりする場合は有用(テンソル使うか?).
0 件のコメント:
コメントを投稿
次の投稿
前の投稿
ホーム
登録:
コメントの投稿 (Atom)
0 件のコメント:
コメントを投稿