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

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

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

設計のポイント

verilog記述のポイント:クロック分周ではなくクロックイネーブルを使う

設計内容分類FPGA

実現したい仕様・課題

低速で動作させたい回路のために、カウンタ出力やロジックで生成した分周クロックを回路のクロック入力に用いると、クロックが専用配線(クロックツリー)を通らずスキューやグリッチが生じ、タイミング解析も複雑になります。低速動作を安全に実現したいというのが課題です。

設計のポイント

低速動作させたい回路にも元のクロックをそのまま供給し、動作タイミングをクロックイネーブル信号で間引く方式を推奨します。ロジックで生成した分周クロックは、FPGAの専用クロック配線に乗らずスキュー(分配遅延差)が大きくなり、生成過程のグリッチがそのままクロックエッジとして回路に入る危険があります。また、クロックドメインが増えることでドメイン間の受け渡し設計とタイミング制約が複雑化します。クロックイネーブル方式では、カウンタで周期的に1クロック幅のイネーブルパルスを生成し、各レジスタは if (en) のときだけ値を更新します。回路全体が単一クロックドメインに収まるため、タイミング解析が単純になり、合成ツールの最適化も効きやすくなります。FPGAのフリップフロップはクロックイネーブル端子を標準で備えているため、リソース面のペナルティもほとんどありません。どうしても別クロックが必要な場合(外部出力用クロック等)は、ロジック分周ではなくFPGA内蔵のPLL/MMCMで生成し、専用クロック配線に乗せることが原則です。

【コード例】
// 1/10のレートで動作させる例
reg [3:0] div_cnt;
wire en = (div_cnt == 4’d9);
always @(posedge clk) div_cnt <= en ? 4’d0 : div_cnt + 4’d1;

always @(posedge clk)
if (en) slow_reg <= slow_reg + 8’d1; // enのときだけ更新

verilog記述のポイント:クロック分周ではなくクロックイネーブルを使う | 組み込み機器・ハードウェア設計製作.com

補足情報

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

FPGA設計のポイント

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

設計のポイント 一覧

FPGA設計のポイント

お問い合わせ

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

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