続・PSoC 3 で RS フリップフロップを作ろう [PSoC]
コメント欄で質問をもらいましたので、今回は、その解答編です。
質問: 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
この記述を使って論理合成を行うとこのような構成の Look Up Table (LUT) が生成されました。 これは、前回、ゲートを使って回路図を書いた場合と同じ結果です。 論理合成では、回路図でも、 Verilog でも、内部で論理式を生成して、その論理式と等価な回路を合成していきます。 そのため、論理的に等価な内容であれば、回路図でも Verilog 記述でも同じ結果が得られます。
前回と今回の記事に作成したアーカイブは、このリンクにあります。
関連文献
トランジスタ技術増刊 シリーズ最強!PSoC (ピーソック) 3ボード+デバッグボード 2012年 05月号 [雑誌]
- 作者:
- 出版社/メーカー: CQ出版
- 発売日: 2012/04/19
- メディア: 雑誌
コメント 0