春のプロジェクト2009/DE2
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[春のプロジェクト2009]]
*DE2ボード [#s742e92a]
**入出力 [#d8be7157]
たくさんの入出力が付いていますが、今回は下記のものに限定してやります。
-入力
--50MHzのクロック
--プッシュボタン
--スライドスイッチ
-出力
--LED(赤、緑)
--7セグメントLED
**ファイル [#p51e0634]
-[[大和田さんのページ>大和田/DE2]]にトップモジュールを用意していただいているので、それを使ってみる
-今回はBASICのほう
-中身
--DE2_TOP.qpf
---これはQuartusのプロジェクトファイル
--DE2_TOP.qsf
---ピンアサインファイル
--DE2_TOP.v
---トップモジュール
**使い方(LEDを光らせてみる) [#d43e6a29]
-仕様
--入力
---スライドスイッチ0と1
--出力
---赤LED
--スライドスイッチのどちらかがオンならLED点灯
***モジュールの確認 [#l283c564]
-DE2_TOP.v
module DE2_TOP (
// Outputs
HEX0, HEX1, HEX2, HEX3, HEX4, HEX5, HEX6, HEX7, LEDG, LEDR,
// Inputs
CLOCK_50, KEY, SW
);
// Clock Inpunt
input CLOCK_50; // 50 MHz
// Push Button
input [3:0] KEY; // Button[3:0]
// DPDT Switch
input [17:0] SW; // DPDT Switch[17:0]
// 7-SEG Display
output [6:0] HEX0; // Seven Segment Digital 0
output [6:0] HEX1; // Seven Segment Digital 1
output [6:0] HEX2; // Seven Segment Digital 2
output [6:0] HEX3; // Seven Segment Digital 3
output [6:0] HEX4; // Seven Segment Digital 4
output [6:0] HEX5; // Seven Segment Digital 5
output [6:0] HEX6; // Seven Segment Digital 6
output [6:0] HEX7; // Seven Segment Digital 7
// LED
output [8:0] LEDG; // LED Green[8:0]
output [17:0] LEDR; // LED Red[17:0]
--↑モジュールのアウトプット、インプットの宣言。
--↑ここは変更しない。
// Unused I/O pins
assign HEX0 = 7'h7f;
assign HEX1 = 7'h7f;
assign HEX2 = 7'h7f;
assign HEX3 = 7'h7f;
assign HEX4 = 7'h7f;
assign HEX5 = 7'h7f;
assign HEX6 = 7'h7f;
assign HEX7 = 7'h7f;
assign LEDG = 9'h000;
assign LEDR = 18'h00000; ←ここ
--↑使っていないアウトプット。
--↑今回はLEDRの0個目を使いたいので、ちょっと変更。
assign LEDR[17:1] = 17'h00000; ←こういう風に0個目をフリーにする。
--↓そして、入力、出力を定義
assign LEDR[0] = SW[0] | SW[1]; ←これは追加
--こうすることで、スライドスイッチの1と0のORを取って出力。
--完成。
**論理合成 [#jeb1ebd3]
% quartus72 &
-ツールが起動するので、プロジェクトファイルを開く。
File > Open Project
-開けたらコンパイルする
Processing > Start Compilation
**ダウンロード [#k61de69c]
-コンパイルが完了すると、*.sofファイルができる。
-これをWindowsマシンでDE2ボードにダウンロードすることで実行可能。
*課題 [#reac8aad]
-7セグメントLEDデコーダ
--HEX#というアウトプットに7ビットを接続すると、表示がおかしくなる。
--たとえば
assign HEX0 = 7'b0000001;
--と、入力しても、1という風には表示されない。
--各ビットは下記の各線に一致していて、0のときはその線が点灯、1のときは消灯する
#ref("7-seg.JPG")
--なのでたとえば、1を表示したければ、1ビット目と2ビット目を点灯(つまり0)にする必要がある。
--数字をこの特殊なビット列に変換するようなモジュールを作る。
--入力は4ビットとする。
module seven_dec(din, dout);
input [3:0] din;
output [6:0] dout;
--シミュレーションして動作を確認し、トップモジュールに組み込む。
seven_dec i0(.din(4'b0001), .dout(HEX0));
---こうすると、HEX0に1と表示されることを確認できる。
-7セグにスライドスイッチ4つを4ビットに見立てたものを表示
--7セグデコーダの入力になる信号線を作る
wire [3:0] b2d;
--その信号線にSWの入力をつなげる
assign b2d = {SW[3], SW[2], SW[1], SW[0]};
--インスタンス化した7セグデコーダの入力として入れる。
seven_dec i0(.din(b2d), .dout(HEX0));
-------
質問、意見等あれば書いてください。
#comment
終了行:
[[春のプロジェクト2009]]
*DE2ボード [#s742e92a]
**入出力 [#d8be7157]
たくさんの入出力が付いていますが、今回は下記のものに限定してやります。
-入力
--50MHzのクロック
--プッシュボタン
--スライドスイッチ
-出力
--LED(赤、緑)
--7セグメントLED
**ファイル [#p51e0634]
-[[大和田さんのページ>大和田/DE2]]にトップモジュールを用意していただいているので、それを使ってみる
-今回はBASICのほう
-中身
--DE2_TOP.qpf
---これはQuartusのプロジェクトファイル
--DE2_TOP.qsf
---ピンアサインファイル
--DE2_TOP.v
---トップモジュール
**使い方(LEDを光らせてみる) [#d43e6a29]
-仕様
--入力
---スライドスイッチ0と1
--出力
---赤LED
--スライドスイッチのどちらかがオンならLED点灯
***モジュールの確認 [#l283c564]
-DE2_TOP.v
module DE2_TOP (
// Outputs
HEX0, HEX1, HEX2, HEX3, HEX4, HEX5, HEX6, HEX7, LEDG, LEDR,
// Inputs
CLOCK_50, KEY, SW
);
// Clock Inpunt
input CLOCK_50; // 50 MHz
// Push Button
input [3:0] KEY; // Button[3:0]
// DPDT Switch
input [17:0] SW; // DPDT Switch[17:0]
// 7-SEG Display
output [6:0] HEX0; // Seven Segment Digital 0
output [6:0] HEX1; // Seven Segment Digital 1
output [6:0] HEX2; // Seven Segment Digital 2
output [6:0] HEX3; // Seven Segment Digital 3
output [6:0] HEX4; // Seven Segment Digital 4
output [6:0] HEX5; // Seven Segment Digital 5
output [6:0] HEX6; // Seven Segment Digital 6
output [6:0] HEX7; // Seven Segment Digital 7
// LED
output [8:0] LEDG; // LED Green[8:0]
output [17:0] LEDR; // LED Red[17:0]
--↑モジュールのアウトプット、インプットの宣言。
--↑ここは変更しない。
// Unused I/O pins
assign HEX0 = 7'h7f;
assign HEX1 = 7'h7f;
assign HEX2 = 7'h7f;
assign HEX3 = 7'h7f;
assign HEX4 = 7'h7f;
assign HEX5 = 7'h7f;
assign HEX6 = 7'h7f;
assign HEX7 = 7'h7f;
assign LEDG = 9'h000;
assign LEDR = 18'h00000; ←ここ
--↑使っていないアウトプット。
--↑今回はLEDRの0個目を使いたいので、ちょっと変更。
assign LEDR[17:1] = 17'h00000; ←こういう風に0個目をフリーにする。
--↓そして、入力、出力を定義
assign LEDR[0] = SW[0] | SW[1]; ←これは追加
--こうすることで、スライドスイッチの1と0のORを取って出力。
--完成。
**論理合成 [#jeb1ebd3]
% quartus72 &
-ツールが起動するので、プロジェクトファイルを開く。
File > Open Project
-開けたらコンパイルする
Processing > Start Compilation
**ダウンロード [#k61de69c]
-コンパイルが完了すると、*.sofファイルができる。
-これをWindowsマシンでDE2ボードにダウンロードすることで実行可能。
*課題 [#reac8aad]
-7セグメントLEDデコーダ
--HEX#というアウトプットに7ビットを接続すると、表示がおかしくなる。
--たとえば
assign HEX0 = 7'b0000001;
--と、入力しても、1という風には表示されない。
--各ビットは下記の各線に一致していて、0のときはその線が点灯、1のときは消灯する
#ref("7-seg.JPG")
--なのでたとえば、1を表示したければ、1ビット目と2ビット目を点灯(つまり0)にする必要がある。
--数字をこの特殊なビット列に変換するようなモジュールを作る。
--入力は4ビットとする。
module seven_dec(din, dout);
input [3:0] din;
output [6:0] dout;
--シミュレーションして動作を確認し、トップモジュールに組み込む。
seven_dec i0(.din(4'b0001), .dout(HEX0));
---こうすると、HEX0に1と表示されることを確認できる。
-7セグにスライドスイッチ4つを4ビットに見立てたものを表示
--7セグデコーダの入力になる信号線を作る
wire [3:0] b2d;
--その信号線にSWの入力をつなげる
assign b2d = {SW[3], SW[2], SW[1], SW[0]};
--インスタンス化した7セグデコーダの入力として入れる。
seven_dec i0(.din(b2d), .dout(HEX0));
-------
質問、意見等あれば書いてください。
#comment
ページ名: