2006年09月02日

Verilog-HDLの文法前編

さて、前回の謎を解くべく、こちらであげた参考書を元に、体系だった基礎勉強の開始です。


■なぜ、HDLを使うのか?
C言語とアセンブラ言語の関係と同じで、ハードウェア依存性をなくすためです。

■何を、設計・記述するのか?
回路図を設計し、記述するための言語となります。
この場合の回路図というのは、「AND回路」「OR回路」「NAND回路」「NOR回路」を組み合わせた理論回路を指します。

■文法
●構造
・moduleによる構造が基本単位となります。

module モジュール名(ポート・リスト);
ポート宣言
ネット宣言
レジスタ宣言
パラメータ宣言

回路記述
endmodule

という、構造となります。


●変数
・ポート宣言

input led;

という、入出力ポートの指定となります。
input [7:0] led;

とすると、ビット幅(配列?)指定になります。

・ネット宣言

wire led;

という、配線の指定となります。ポート宣言した場合は、省略できるようです。
こちらもビット幅指定可能です。

・レジスタ宣言

reg ff1;

という、ラッチやフリップフロップの指定となります。基本的には、ネット宣言の値を保持できる番というもののようです。
こちらもビット幅指定可能です。

・パラメータ宣言

parameter STEP=1000;

という、定数宣言の指定となります。


●値の表現
・論理値

0・・・0

1・・・1

x・・・不定値

z・・・ハイ・インピーダンス

という、値が存在します。
また、
supplay

strong

pull

large

weak

medium

small

highz

という、信号強度の指定ができるそうですが、シミュレーション時にしか使用されないようです。省略時には、「strong」になります。

・定数表現

b,B・・・2進数

o,O・・・8進数

d,D・・・10進数

x,X・・・16進数

これは、そのままの意味です。

●演算子
・基本的な演算子

算術演算

ビット演算

論理演算

等号演算

関係演算

シフト演算

は、優先順位も含めて、ほぼC言語と同じです。

・真偽値

真・・・1(1'b1)

偽・・・0(1'b0)

です。

・連接演算子

{led1, led2}

という、記述をする「{}」を使用する演算子です。
led1,led2が、8ビットであったとすると、これは16ビットということになります。

・リダクション演算

&

~&

|

~|

^

~^

意味は、ビット演算子と同じですが、ビットすべてに作用させることができます。
reg [7:0] cnt;

に、この演算子を適用すると、cnt[0]〜cnt[7]まで、すべてが演算されます。

・例外的なもの
インクリメント、デクリメントはありません。

a=b=c=1

というような記述はできません。

trackbacks

【仕事に多少関連する話】論理回路その3 from ひらりんげんぞう日記

木曜連載、今週は論理回路その3ということで、「OR回路」を紹介。 AND回路は「論理和回路」ともいい、複数の入力と1つの入力が存在する回路の1つ。少...

Creative Commons License
This weblog is licensed under a Creative Commons License.