木目沢/春プロ/第1回
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[木目沢/春のプロジェクト]]
*第1回 全加算器をHDLで設計してみよう [#gfc614fe]
#contents
**全加算器の入出力の確認 [#i37f2538]
***全加算器とは[#ybef6b5c]
二つの値(a,b)を加算し、桁上がり入力(Cin)を含めて演算する。~
結果として出力値(s)と桁上がり出力(cout)を出力する。~
3ビットの入力a,b,cinのうち、奇数個が'1'である場合に、出力sは'1'~
coutが'1'となるのは、これらの3ビットのうち2ビット以上が'1'の場合
***入力 [#d58d6ab5]
a,b,cin
***出力 [#qac2098c]
s,cout
***動作 [#zcaf2ca4]
入力3ビットの和は、2ビットの2進数で表すことができ(00,01,10,11の4通り)、~
全加算器はその上位ビットをcoutに、下位ビットをsに出力する。~
3ビットの入力a,b,cinのうち、奇数個が1である場合に出力sは1となる。~
また、coutが1となるのは、これらの3ビットのうち、2ビット以上が1の場合。
-論理式
--cout = (a*b)+(b*cin)+(cin*a)
--s = a ^ b ^ c
**Verilog-HDLを使ってモジュールを記述 [#oe3f9f8c]
***モジュールとは [#ub915bf7]
入力ポートと出力ポートを持つひとまとまりの回路。~
機能単位、交換可能な構成部分という意味の英単語。~
システムへの接合部(インターフェース)が規格化・標準化されていて、~
容易に追加や削除ができ、ひとまとまりの機能を持った部品のこと。
***文法 [#ze84a523]
-モジュール宣言
module モジュール名(入出力ポート名);
・・・
・・・
回路の記述
・・・
・・・
endmodule
--モジュール名には適当な名前(識別子)を付けることができる。入出力ポート名には,入力信号と出力信号の両方を記述。
-ポート宣言
input 入力信号名;
output 出力信号名;
--モジュール宣言の入出力ポート名で記述したものを,入力と出力に分けて宣言。またバスの宣言も可能。
-ネット宣言
wire 信号名;
wire [MSB:LSB] バス名;
MSB:上位ビット
LSB:下位ビット
--wire 宣言ではモジュール内で使用する信号線,配線を定義。組合せ回路で用いる信号線などは wire 宣言を行いる。ポート宣言と同様にバス記述も可能。wire 宣言を行った変数をネット型変数と呼ぶ。なお,ポート宣言を行ったものは自動的に wire 宣言される。
reg 信号名;
reg [MSB:LSB] バス名;
--reg 宣言では,値を保持する信号線を定義。順序回路で用いるフリップ・フロップ(FF)やラッチなどは reg 宣言する必要がある。ただし,reg 宣言すれば必ず論理合成の時に FF などが生成されるというわけではない。
-回路記述(assign文)
assign ネット型変数 = 論理式など;
--簡単な組合せ回路を記述するときには assign 文を用いる。 assgin 文の左辺は,ネット型変数(ポート宣言,あるいは wire 宣言された変数)でなければならない。
-演算子
|算術演算子|
|+|加算|
|-|減算|
|*|乗算|
|/|除算|
|%|剰余算|
|-|2の補数(符合反転)|
------
#comment
終了行:
[[木目沢/春のプロジェクト]]
*第1回 全加算器をHDLで設計してみよう [#gfc614fe]
#contents
**全加算器の入出力の確認 [#i37f2538]
***全加算器とは[#ybef6b5c]
二つの値(a,b)を加算し、桁上がり入力(Cin)を含めて演算する。~
結果として出力値(s)と桁上がり出力(cout)を出力する。~
3ビットの入力a,b,cinのうち、奇数個が'1'である場合に、出力sは'1'~
coutが'1'となるのは、これらの3ビットのうち2ビット以上が'1'の場合
***入力 [#d58d6ab5]
a,b,cin
***出力 [#qac2098c]
s,cout
***動作 [#zcaf2ca4]
入力3ビットの和は、2ビットの2進数で表すことができ(00,01,10,11の4通り)、~
全加算器はその上位ビットをcoutに、下位ビットをsに出力する。~
3ビットの入力a,b,cinのうち、奇数個が1である場合に出力sは1となる。~
また、coutが1となるのは、これらの3ビットのうち、2ビット以上が1の場合。
-論理式
--cout = (a*b)+(b*cin)+(cin*a)
--s = a ^ b ^ c
**Verilog-HDLを使ってモジュールを記述 [#oe3f9f8c]
***モジュールとは [#ub915bf7]
入力ポートと出力ポートを持つひとまとまりの回路。~
機能単位、交換可能な構成部分という意味の英単語。~
システムへの接合部(インターフェース)が規格化・標準化されていて、~
容易に追加や削除ができ、ひとまとまりの機能を持った部品のこと。
***文法 [#ze84a523]
-モジュール宣言
module モジュール名(入出力ポート名);
・・・
・・・
回路の記述
・・・
・・・
endmodule
--モジュール名には適当な名前(識別子)を付けることができる。入出力ポート名には,入力信号と出力信号の両方を記述。
-ポート宣言
input 入力信号名;
output 出力信号名;
--モジュール宣言の入出力ポート名で記述したものを,入力と出力に分けて宣言。またバスの宣言も可能。
-ネット宣言
wire 信号名;
wire [MSB:LSB] バス名;
MSB:上位ビット
LSB:下位ビット
--wire 宣言ではモジュール内で使用する信号線,配線を定義。組合せ回路で用いる信号線などは wire 宣言を行いる。ポート宣言と同様にバス記述も可能。wire 宣言を行った変数をネット型変数と呼ぶ。なお,ポート宣言を行ったものは自動的に wire 宣言される。
reg 信号名;
reg [MSB:LSB] バス名;
--reg 宣言では,値を保持する信号線を定義。順序回路で用いるフリップ・フロップ(FF)やラッチなどは reg 宣言する必要がある。ただし,reg 宣言すれば必ず論理合成の時に FF などが生成されるというわけではない。
-回路記述(assign文)
assign ネット型変数 = 論理式など;
--簡単な組合せ回路を記述するときには assign 文を用いる。 assgin 文の左辺は,ネット型変数(ポート宣言,あるいは wire 宣言された変数)でなければならない。
-演算子
|算術演算子|
|+|加算|
|-|減算|
|*|乗算|
|/|除算|
|%|剰余算|
|-|2の補数(符合反転)|
------
#comment
ページ名: