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

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

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

設計のポイント

verilog記述のポイント:複雑な組み合わせ回路にfunctionを使用する

設計内容分類verilog記述

実現したい仕様・課題

デコーダや変換テーブル、条件分岐の多い組み合わせ論理を、同じ記述で何度も繰り返して書くと、コードが冗長になり、修正漏れやバグの温床になります。複数箇所で同一ロジックを使い回したい、可読性を保ちながら複雑な組み合わせ回路を記述したい、というのが課題です。

設計のポイント

複雑な組み合わせ回路はfunctionを使い、内部でif文やcase文を用いてロジックをまとめると、記述を部品化して再利用でき、可読性と保守性が向上します。functionは呼び出した箇所に組み合わせ回路として展開されるため、クロックを持たない純粋な組み合わせロジックの記述に適しています。function内では入力をinputで宣言し、戻り値(関数名と同じ名前の内部変数)へcaseやifで値を設定します。同じ変換ロジックを複数の信号に適用したい場合、functionを一度定義しておけばassignやalwaysから繰り返し呼び出せ、ロジック変更時も定義1か所の修正で全箇所に反映できます。case文ではdefaultを、if文ではelseを必ず設けて全条件で戻り値が確定するようにし、未定義状態による予期しないラッチの生成を防ぎます。ステートマシンの次状態デコード、アドレスデコード、ビットパターン変換など、入力に対して一意に出力が決まる回路で特に有効です。

【コード例】
function [7:0] decoder;
input [2:0] in;
input en;
begin
if (en == 1’b1) begin
case (in)
3’b000: decoder = 8’b11111110;
3’b001: decoder = 8’b11111101;
3’b010: decoder = 8’b11111011;
3’b011: decoder = 8’b11110111;
3’b100: decoder = 8’b11101111;
3’b101: decoder = 8’b11011111;
3’b110: decoder = 8’b10111111;
3’b111: decoder = 8’b01111111;
default: decoder = 8’b11111111;
endcase
end else begin
decoder = 8’b11111111;
end
end
endfunction

補足情報

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

FPGA設計のポイント

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

設計のポイント 一覧

FPGA設計のポイント

お問い合わせ

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

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