SSブログ

続・PSoC 3 で RS フリップフロップを作ろう [PSoC]このエントリーを含むはてなブックマーク#

RS フリップフロップ

コメント欄で質問をもらいましたので、今回は、その解答編です。

質問: Verilog 記述に assign を使ったらどうなりますか。

前回の記事では、ゲートレベルは回路図で、 RTL レベルは Verilog で記述しました。 Verilog にも、ゲートレベルで記述する機能はあります。 この時に使用される構文が、 assign を使う continuous assignment と呼ばれる代入文です。 この代入文は、 wire に対して値を割り当てますので、事実上組み合わせ論理として合成されることになります。 具体的には、以下のような記述になります。

//`#start header` -- edit after this line, do not edit this line
// ========================================
//
// Copyright noritan.org, 2012
// All Rights Reserved
// UNPUBLISHED, LICENSED SOFTWARE.
//
// CONFIDENTIAL AND PROPRIETARY INFORMATION
// WHICH IS THE PROPERTY OF NORITAN.ORG.
//
// ========================================
`include "cypress.v"
//`#end` -- edit above this line, do not edit this line
module RSFF (
	q,
	qb,
	rb,
	sb
);

//`#start body` -- edit after this line, do not edit this line

    output  q;
    output  qb;
    input   rb;
    input   sb;
    
    assign  qb = ~(q  & rb);
    assign  q  = ~(qb & sb);

//`#end` -- edit above this line, do not edit this line
endmodule
//`#start footer` -- edit after this line, do not edit this line
//`#end` -- edit above this line, do not edit this line
WS000258.png

この記述を使って論理合成を行うとこのような構成の Look Up Table (LUT) が生成されました。 これは、前回、ゲートを使って回路図を書いた場合と同じ結果です。 論理合成では、回路図でも、 Verilog でも、内部で論理式を生成して、その論理式と等価な回路を合成していきます。 そのため、論理的に等価な内容であれば、回路図でも Verilog 記述でも同じ結果が得られます。

前回と今回の記事に作成したアーカイブは、このリンクにあります。

関連文献


nice!(0)  コメント(0)  トラックバック(0)  このエントリーを含むはてなブックマーク#

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0

トラックバックの受付は締め切りました

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。