組み込み機器・ハードウェアの設計開発から装置製作まで社内一貫対応!

組み込み機器・ハードウェア設計製作.com
組み込み機器・ハードウェア設計製作.com

produced by株式会社アイディアイ

設計のポイント

定数のビット幅明示

設計内容分類FPGA設計開発
解決できる課題定数のビット幅明示

実現したい仕様・課題

Verilog記述において、定数を 0・8・16 のように10進数だけで記述すると、合成ツールやシミュレータは暗黙的に32bitの符号付き整数として扱います。これが意図したビット幅や符号と異なると、ビット拡張・切り捨て・符号拡張による予期しない演算結果や比較ミスを生み、しかもバス幅の異なる信号間では誤りに気付きにくいという問題があります。設計意図を正確に回路へ反映し、ツールに依存しない移植性の高いコードを書きたいというのが課題です。

設計のポイント

定数は <ビット幅>'<基数><値> の形式で、ビット幅と基数を必ず明示します。たとえば 8’d0・8’hFF・4’b1010 のように記述することで、合成・シミュレーションのいずれでも定数の幅と符号が一意に定まり、ツール依存の暗黙変換を排除できます。ビット幅を省略した場合、定数は既定で32bitとして評価されるため、狭いバスへ代入する際の切り捨て、加算時の桁あふれ、符号付き/符号なしが混在した比較での想定外の結果につながりやすくなります。特に、連接({})やビット演算、条件比較を行う箇所では、左辺と右辺のビット幅を揃えておくことが重要です。リセット値・マスク値・レジスタ初期値なども幅付きで記述しておくと、設計者の意図がコード上で自明になり、レビュー時の確認が容易になります。さらに、定数値を直接埋め込まずparameterやlocalparamで定義し、そこにビット幅を持たせれば、再利用性と保守性を両立できます。

【コード例】
reg [7:0] cnt;
cnt <= 8’d0; // ○ ビット幅を明示
// cnt <= 0; // △ 32bitと解釈され、暗黙の切り捨てが起こりうる
wire [15:0] mask = 16’h00FF;

定数のビット幅明示 | 組み込み機器・ハードウェア設計製作.com

補足情報

当事例のような、FPGA設計に関するポイントをまとめた冊子の無料DLが可能です。
是非以下よりご確認ください。

FPGA設計のポイント

>>ダウンロードはこちら!

設計のポイント 一覧

FPGA設計のポイント

お問い合わせ

組み込み機器・ハードウェア 設計製作.comを運営する株式会社アイディアイは、組み込み機器・ハードウェアの設計開発代行サービスを提供しています。
試験装置や制御機器、組み込みボードなど、設計・開発委託先をお探しの皆様、お気軽に当社に御相談ください。

技術資料のダウンロードはこちらから 技術資料ダウンロ―ド メールフォームでのお問い合わせはこちらから ご相談お問合せ