加藤/春のプロジェクト/第1回
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[加藤/春のプロジェクト]]
*第1回 全加算器をHDLで設計してみよう[#a1cc4545]
***1.全加算器の入出力の確認 [#kfd61a68]
-真理値表
| ''入力'' | ''出力'' |
|a|b|cin|s|cout|
|0|0|CENTER:0|0|CENTER:0|
|0|0|CENTER:1|1|CENTER:0|
|0|1|CENTER:0|1|CENTER:0|
|0|1|CENTER:1|0|CENTER:1|
|1|0|CENTER:0|1|CENTER:0|
|1|0|CENTER:1|0|CENTER:1|
|1|1|CENTER:0|0|CENTER:1|
|1|1|CENTER:1|1|CENTER:1|
-論理式
--cout = (a*b)+(b*cin)+(cin*a)
--s = xor(a,b,cin)
***2. Verilog-HDLを使ってモジュールを記述 [#y1400407]
-モジュールとは?
--入力ポートと出力ポートを持つひとまとまりの回路で構成されるもの
-文法
--モジュール宣言
---C言語の関数のようなもの
---モジュール名はファイル名と同じ
始:module モジュール名(ポート・リスト);
終:endmodule
--ポート宣言
---入力または出力のためのポートであることの宣言
---モジュール外部と値のやりとりを行うための出入り口のようなもの
input 入力ポート名;
output 出力ポート名;
--ネット宣言
---モジュール内部のネット(信号線)であることの宣言
wire ネット名;
--assign文
---''右辺''の評価値が、''左辺のネット''に断続的に書き込まれ続ける
---''右辺の式''が変わると、直ちに''左辺のネット''に新しい値が書き込まれる
-演算子
|記号|説明|
|CENTER:`|NOT|
|CENTER:&|AND|
|CENTER:||OR|
|CENTER:^|XOR|
|CENTER:`^|XNOR|
***3. テストベンチの作成 [#xb47edf8]
-テストベンチとは?
--入力信号について時系列順に記述したもの
--シミュレーションをするときに必要
-記述方法は?
--テストベンチもモジュールとして作成
--確認したいモジュールをインスタンス宣言する
--initial文の中で、入力信号を定義していく
--出力方法を定義する
---monitor(信号が変わったら出力)
---display(その時間の値を出力)
---dumpfile(波形を出力)
--ファイル名は、''モジュール名_tb.v''
***4. シミュレーションをして動作確認 [#a42b7a5b]
-やり方
+ncverilog +ncaccess+rwc テストベンチのファイル名
+simvision &
+simvisionでncverilogで出力されたダンプファイル(モジュール名_tb_wf.vcd)を開く
#br
-----------------
-今回の課題でVerilogの書き方が少しだがわかってきた。
終了行:
[[加藤/春のプロジェクト]]
*第1回 全加算器をHDLで設計してみよう[#a1cc4545]
***1.全加算器の入出力の確認 [#kfd61a68]
-真理値表
| ''入力'' | ''出力'' |
|a|b|cin|s|cout|
|0|0|CENTER:0|0|CENTER:0|
|0|0|CENTER:1|1|CENTER:0|
|0|1|CENTER:0|1|CENTER:0|
|0|1|CENTER:1|0|CENTER:1|
|1|0|CENTER:0|1|CENTER:0|
|1|0|CENTER:1|0|CENTER:1|
|1|1|CENTER:0|0|CENTER:1|
|1|1|CENTER:1|1|CENTER:1|
-論理式
--cout = (a*b)+(b*cin)+(cin*a)
--s = xor(a,b,cin)
***2. Verilog-HDLを使ってモジュールを記述 [#y1400407]
-モジュールとは?
--入力ポートと出力ポートを持つひとまとまりの回路で構成されるもの
-文法
--モジュール宣言
---C言語の関数のようなもの
---モジュール名はファイル名と同じ
始:module モジュール名(ポート・リスト);
終:endmodule
--ポート宣言
---入力または出力のためのポートであることの宣言
---モジュール外部と値のやりとりを行うための出入り口のようなもの
input 入力ポート名;
output 出力ポート名;
--ネット宣言
---モジュール内部のネット(信号線)であることの宣言
wire ネット名;
--assign文
---''右辺''の評価値が、''左辺のネット''に断続的に書き込まれ続ける
---''右辺の式''が変わると、直ちに''左辺のネット''に新しい値が書き込まれる
-演算子
|記号|説明|
|CENTER:`|NOT|
|CENTER:&|AND|
|CENTER:||OR|
|CENTER:^|XOR|
|CENTER:`^|XNOR|
***3. テストベンチの作成 [#xb47edf8]
-テストベンチとは?
--入力信号について時系列順に記述したもの
--シミュレーションをするときに必要
-記述方法は?
--テストベンチもモジュールとして作成
--確認したいモジュールをインスタンス宣言する
--initial文の中で、入力信号を定義していく
--出力方法を定義する
---monitor(信号が変わったら出力)
---display(その時間の値を出力)
---dumpfile(波形を出力)
--ファイル名は、''モジュール名_tb.v''
***4. シミュレーションをして動作確認 [#a42b7a5b]
-やり方
+ncverilog +ncaccess+rwc テストベンチのファイル名
+simvision &
+simvisionでncverilogで出力されたダンプファイル(モジュール名_tb_wf.vcd)を開く
#br
-----------------
-今回の課題でVerilogの書き方が少しだがわかってきた。
ページ名: