論理回路設計の基礎と演習 -...
TRANSCRIPT
1
論理回路設計の基礎と演習
(PowerMedusa MU200-EC6Sを使った教材)
2
1. ディジタル回路設計を始める前に
3
1.1 ディジタルとは
ひとことで言うなら・・・
アナログ ー連続的な動き 再現が難しい
ディジタルー断続的な動き 再現しやすい
例.)アナログ ー坂道
ディジタルー階段
最初に居た位置に正確に
戻るには階段のほうが
再現しやすい!
4
1.2 ディジタルにするメリット
再現性が高い
ノイズに強い
5
1.3 ディジタル回路を実現するには
ディジタル回路、したがってコンピュータも、ディジタルデータを処理します。しかし電子回路は、電圧で動作しており、電圧そのものはアナログです。
そのアナログ電圧に、一定の基準電圧 ( スレッショホールド電圧 )を設けて、その基準電圧よりも電圧が高いか低いかで、2 進数の0か 1 かを判定するようにしたものが、ディジタル回路 です。
6
1.4 2進数,8進数,10進数,16進数
b(バイナリ)2進数
h(ヘキサ)16進数
d(デシマル)10進数
O(オクト)8進数
単位コンピュータが2 進数を
使用しているのは、ハード ウェア、すなわち電子回路 が簡単になり、安くできる
からです。
データ伝送も、ハードウェ ア上は、2 進数をベースに しています。
7
1.4 2進数,8進数,10進数,16進数
77011176601106550101544010043300113220010211000110000000
16進8進2進10進
F17111115E16111014D15110113C14110012B13101111A121010109111001981010008
16進8進2進10進
2進数・8進数・10進数・16進数 対応表
8
2. 論理回路の基礎
9
2.1 AND,OR,NOT
組み合わせ回路
・同じ入力に対しては必ず同じ出力が
出る回路
・基本的に時間の概念がない
・基本論理素子(AND,OR,NOT)で構成さ
れる
10
2.1 AND,OR,NOT
AND (かつ)
論理式:C=A&B
両方条件が整った時に成立C=0A=0,B=1C=0A=0,B=0
C=0A=1,B=0C=1A=1,B=1結果条件
論理記号
C A
B
11
2.1 AND,OR,NOT
OR (または)
論理式:C=A|B
どちらかの条件が整った時に成立 C=1A=0,B=1
C=0A=0,B=0
C=1A=1,B=0C=1A=1,B=1結果条件
BC
A
論理記号
12
2.1 AND,OR,NOT
NOT (でない)
論理式:C=^A
結果を反転させる C=1A=0C=0A=1結果条件
C A
論理記号
13
2.1 AND,OR,NOT論理記号一覧表
*:記号の○印は負論理(Lアクティブ)を 示す。
記号
NOT
= A XA XA XL HH L
真理値表
A B XL L LL H LH L LH H H
A B XL L HL H HH L HH H L
A
BX =
A
BX
A
BX =
A
BX
verilog-HDL
X = ̃ A
X = A & BAND
NAND X = ̃ (A & B)
A
BX =
A
BX
A
BX =
A
BX
A B XL L LL H HH L HH H H
A B XL L HL H LH L LH H L
記号 真理値表 verilog-HDL
X = A ¦ B
X = ̃ (A ¦ B)
OR
NOR
X = ̃ (̃ A ¦ ̃ B)
X = ̃ A ¦ ̃ B
X = ̃ (̃ A &̃ B)
X = ̃ A &̃ B
14
2.2 組み合わせ回路
A
B0
1
2
3
A B 0 1 2 3
L L H L L L
L H L H L L
H L L L H L
H H L L L H
組み合わせ回路の例(デコーダ回路)
15
2.2 組み合わせ回路
論理遅延
・入力が変化してから出力に変化するまで の遅れの時間があること
・論理ゲートを信号が通るのにかかる時間
のこと
16
練習①
<問題>
次のような条件の回路図/真理値表を作成してみよう
・SW1が‘1’の時→ LED1 点灯・LED2 消灯
・SW1が‘0’の時→ LED1 消灯・LED2 点灯
(LEDは‘1’の時 点灯、 ‘0’の時 消灯とする)
17
練習①
解答例
SW1 LED1
LED2
SW1 LED1 LED2
1 1 0
100
18
練習②
<問題>
次のような条件の回路図/真理値表を作成してみよう
・SW1が ‘1’の時でAが‘1’の時→LED1が点灯
・SW1が ‘0’の時でBが‘1’の時→LED2が点灯
(LEDは‘1’の時 点灯、 ‘0’の時 消灯とする)
19
練習②解答例
SW1LED1
LED2
A
B
SW1 A B LED1
0
LED2
1111
1
1
1
0
0
0
0
1
0
0
1
1
0
0
0
1
0
1
0
1
0
1
0
0
0
0
0
0
0
0
0
1
0
1
0
20
練習③
<問題>
次のような条件の回路図/真理値表を作成してみよう
・SW1が‘1’の時、Aの状態によりLED1を点灯/消灯を行う
・SW1が‘0’の時、Bの状態によりLED1を点灯/消灯を行う
21
練習③ヒント 真理値表
SW1 A B LED1
1111
1
1
1
0
0
0
0
1
0
0
1
1
0
0
0
1
0
1
0
1
0
1
0
0
1
0
1
0
22
練習③解答例
SW1
LED1
A
B
SW1 A B LED1
1111
1
1
1
0
0
0
0
1
0
0
1
1
0
0
0
1
0
1
0
1
0
1
0
0
1
0
1
0
23
2.3 順序回路
・回路内に記憶素子を含んでいて、クロックと呼ばれる基準信号と入力によって出力がきまる回路
・クロックという時間の概念存在する
・基本論理素子と記憶素子で構成されている
・順序回路の例としては、フリップフロップやカウンタ
などがある
24
クロック
・ディジタル回路において順序回路を動作させるための基準信号のことであり、一定の周期でH=>L=>H・・・・を繰り返す信号
クロック信号
周期:T[sec]
周波数:f [Hz] = 1/T
H
L
H
L L L
H H
25
フリップフロップ(FLIP FLOP)
・フリップフロップとは、シーソーの働きの意味。
・回路の働きが文字通りシーソーの働きに似
ている。
26
入力
クロック
リセット
出力D
CLK
RESET
Q CLK
D
Q
入力(D)の変化がクロック(CLK)の立ち上がり、又は立下りにより出力(Q)に伝わる
通常、リセット(RESET)はクロック(CLK)とは非同期
リセット(RESET)は“L”時リセット
フリップフロップ(FLIP FLOP)
27
カウンタの例(2ビットカウンタ)
カウンタではクロックの数を数える回路を構成することができる
CLK
Q1
Q0
RESET
0 1 2 3 0 1RESET
D Q
Q
RESET
D Q
Q
RESET
CLK
Q0
Q1
CLK
CLK
28
3.1デジタルが使われている機器
29
3.1.1デジタル時計の構成を考えよう
発 振 器1kHZ
1000回カウ ン ト
60回カウ ン ト
60回カ ウ ン ト
1秒に な る
1分に な る
1時 間に な る
表 示 表 示 表 示
▲発振器は、電圧を与えるとクロックを発生させる
▲発振周波数(発生させるクロックの周波数)が1kHZとした場合
・・・1秒間に1000クロックが繰り返される
30
3.1.2デジタル時計にどのような回路が必要か
①秒、分、時間のカウンタ回路が必要
・秒のための1000回カウント
・分のための60回カウント
・時間のための60回カウント
31
3.1.2デジタル時計にどのような回路が必要か
②液晶やLEDなどに表示するためのデコーダ回路が必要
(例)7SEG LEDに表示する場合(点灯=1、消灯=0)
a
b
c
h
g
d
f
e
2を表示
0を表示
01011011
00111111
hgfedcba
a
b
c
h
g
d
f
e
32
3.1.2デジタル時計にどのような回路が必要か②液晶やLEDなどに表示するためのデコーダ回路が必要
(例)7SEG LEDに表示する場合(点灯=1、消灯=0)
a
b
c
h
g
d
f
e
a
b
c
h
g
d
f
e
a
b
c
h
g
d
f
e
a
b
c
h
g
d
f
e
a
b
c
h
g
d
f
e
a
b
c
h
g
d
f
e
a
b
c
h
g
d
f
e
a
b
c
h
g
d
f
e
a
b
c
h
g
d
f
e
a
b
c
h
g
d
f
e
33
3.2論理回路の基礎復習
34
4.設計フロー
35
4.1 どのような設計手法があるか
Verilogとは
▶ シミュレーション用の言語として生まれる
▶ その後、論理合成にも使えるようになる
▶ 1995年に IEEE標準となる
▶ 現在、多くの CADツールがサポートしている
▶ C言語に似た平易で表現力の高い記述言語
36
よく使う順序処理分
4.1 どのような回路設計があるか
・if文・case文
・for文・while文
・repeat文・wait文・disable文
・force文/release文
37
HDL設計のメリット/デメリット
▶メリット 設計の効率化 ・半導体ベンダにとらわれない
(ベンダ・フリー)設計が可能 ・論理合成による設計期間短縮 ・設計資産の活用 検証精度の向上 ・設計の途中で検証できる ・入力の印加、出力の観測・比較が容易 ・システム・レベルの検証が行える (シミュレーション・モデル)
4.1.1 回路図設計
38
HDL設計のメリット/デメリット
▶デメリット
・現状の論理合成は単相同期回路向き
・ツール類が高価
・ASICでは論理合成できない回路もある
4.1.1 回路図設計
39
4.1.2 HDL設計(VHDL、Verilog)Verilog-HDL:Cadence社の論理シミュレータ用言
語から派生
VHDL:回路仕様を書くことを目的に、標準化
Verilog-HDL: -抽象度が低い -回路的 -電気系向き
VHDL: -抽象度が高い -プログラム的 -情報系向き
40
4.2 設計手順回路要求仕様
外部設計
詳細設計
・Verilog-HDL/VHDL・グラフィカルエントリー(VisualElite)・回路図入力 等
機能検証
論理合成
配置配線
HDL設計(デザインエントリー)
・ModelSim・NC-Verilog 等
・DesignCompiler・Synplify 等
・QuartusII・ISE Foundation 等
実機検証
外部仕様書
内部仕様書
ソースファイル(*.v、*.vhd)
テストベンチ(*.v、*.vhd)
ネットリスト(*.edif、*.v、*.vhd)
コンフィギュレーションファイル(*sof、*.pof)
41
4.3 Verilog記述の規則▶ 拡張子は「*****.v」とする
▶ 全角文字は使えない
▶ 大文字と小文字を識別する
▶ 識別子の名付け規則
① 英数字とアンダースコア(_)とドル記号($)が使用可能
② 文字列の先頭には英字とアンダースコア(_)のみ使用可能
③ 予約語を識別子として使用することはできない
④ 長さは1024文字以内(後段ツールの制約も考慮しなくてはならない)
▶ コメント記述
1行コメント :「//」から文末までをコメントとみなす
複数行コメント:複数にまたがるコメントは「/*」と「 */」で囲む
42
module module_name(port_list)
endmodule
Verilogのモジュール基本構造▼モジュール宣言
Verilogでは各宣言及び回路記述をキーワー
ドmodule ~ endmoduleで囲まれたモジュール内
に定義する
▼ポート宣言
ポート宣言に入力(input)、出力(outoput)、入出力
(inout)のいずれかのモードを指定する
同時に信号がベクタの場合は[msb:lsb]のようにベ
クタ幅も宣言する
▼データタイプ宣言
モジュール内部で用いる信号を
ネット宣言(ネット型)、レジスタ宣言(レジスタ型)
で定義し同時に信号がベクタの場合は[msb:lsb]のようにベクタ幅も宣言する
▼回路記述
順序回路と組み合せ回路に分けて記述する
ポート宣言
データタイプ宣言(ネット/レジスタ宣言など)
回路記述assign文(組合せ回路の記述)always文(順序回路の記述)下位モジュール呼び出し など
4.3 Verilog記述の規則
43
5.1 Verilogによる記述moduleの構成要素
module module_name ( port_name1,port_name2, … );
<ポート宣言> <レジスタ型宣言> <ネット宣言> <パラメータ宣言> <イベント宣言> <プリミティブ・ゲート宣言> <下位モジュール呼び出し> <always文> <initial文> <function定義> <task定義> <継続的代入> endmodule
44
5.1.1 Verilogによる回路記述⇔回路図回路記述の4スタイル
論理合成を前提とした場合、Verilogによる回路記述の
スタイルは、次の4種類がある
組み合せ回路をalwaysで記述することも可能だが、制約がある
・ 出力をreg宣言する
・ always文の@以降(イベント式)にすべての入力を記述する
・ always文の中に動作(出力に対する代入文)を記述する
また、論理合成時に不必要なラッチを生成することがあったり、可読性が悪くなる。
▶ assignによる組み合せ回路▶ functionによる組み合せ回路▶ alwaysによる順序回路▶下位モジュールの呼び出し
45
5.1.1.1 AND、OR
AND//ANDmodule test(a,b,c);input a,b;output c;
assign c = a & b;
endmodule
OR//ORmodule test(a,b,c);input a,b;output c;
assign c = a | b;
endmodule
a
bc a
b c
46
5.1.1.2 組合せ回路
//Test回路
module test(A,B,C,D,E,F);input A,B;output C,D,E,F;
assign C = ~A & ~B;assign D = ~A & B;assign E = A & ~B;assign F = A & B;
endmodule
A B C D E FL L H L L LL H L H L LH L L L H LH H L L L H
《組合せ回路》・・・入力の変化が、すぐに出力に伝搬する回路値を保持しない
A
BC
D
E
F
47
5.1.1.3 順序回路
(例)4ビット・バイナリ・カウンタ
〈バイナリ・カウンタの仕様〉
入力:クロックCLK、リセットRESET、
出力:Q(4ビット)動作:クロックCLKの立ち上がりでカウントアップ
リセットRESETが1なら、クロックCLKとは無関係
に(非同期に)出力Qが0となる
QCLK RESET
《順序回路》・・・フリップフロップやラッチなどの記憶素子を含んだ回路 値を保持する
4
48
5.1.1.3 カウンタ//加算演算子による4ビット・カウンタmodule counter(CLK,RESET,Q);input CLK,RESET;output [3:0] Q;reg [3:0] Q;
always @ (posedge CLK or posedge RESET) beginif (RESET==1’b1)
Q <= 4’h0;else
Q <= Q + 4’h1;end
endmodule
Posedgeは立ち上がり
(positive edge)の意味で
CLKの立ち上がりまたは
RESETの立ち上がりで、常
にbegin以降が実行される
QCLK
RESET
4
49
5.2 ツール(QuartusⅡ)の使い方
1.QuartusⅡの起動.ppt ファイル参照
50
5.3 Verilogによるテストベンチ記述//*************************************// CLK TestBench// File Name = tb_clk.v// Date 2006/02/16//*************************************`timescale 1 ps / 1 ps
module tb_clk;
parameter dly = 3;
reg RESET;reg CLK10M;reg SW1;
wire [7:0] LED_H;//--------------------------------------------------------// TEST PAT START//--------------------------------------------------------
initial beginCLK10M= 1'b0;forever begin
#1CLK10M= ~CLK10M;#1;
endend
//------------------------------------------------------------// TASK//------------------------------------------------------------
initial beginRESET= 1'b0;SW1= 1'b0;repeat (8) @(posedge CLK10M);#(dly) RESET= 1'b1;repeat (3) @(posedge CLK10M);#(dly) SW1= 1'b1;repeat (10000) @(posedge CLK10M);
end
clk1a clk1a (.SW1(SW1),.RESET(RESET),.CLK(CLK10M),.LED_H(LED_H));
endmodule
51
5.3.1 記述方法
Modelsim記述方法
(modelsim記述方法.docファイル参照)
52
5.3.2 Modelsimの使い方
Modelsim SE 5.7gの使い方
(ModelSim.docファイル参照)
53
< ビット幅>’ <基数 > <数値 >数値表現
6.1 Verilog回路設計復習
基数に応じた定数の値を示すb,B:2進数 o,O:8進数d,D:10進数 h,H:16進数
10進数で表す
54
演算子
6.1 Verilog回路設計復習
条件演算
連接演算
?:
{ }
その他
左シフト
右シフト
<<
>>
シフト演算
関係演算リダクション演算
符号演算ビット演算
論理否定
論理AND
論理OR
!
&&
||
加算、プラス符号
減算、マイナス符号
乗算
除算
剰余
+
-
*
/
%
論理演算算術演算
小
小または等しい
大
大または等しい
等しい
等しくない
等しい(X,Zも比較)
等しくない(X、Zも比較)
AND
NAND
OR
NOR
EX-OR
EX-NOR
NOT
AND
OR
EX-OR
EX-NOR
<
<=
>
>=
&~
&
|~
|
^~
^
==
!=
===
!==
~
&
|
^~
^
演算子優先順位
! & ̃& ¦ ̃¦ ^ ̃^ + -* / %+ -
<< >>< <= > >=
== != === !==& ^ ̃^
¦&&¦¦?:
高
低
最上位の優先順にある演算子は、すべて単項演算子(各項の頭につける演算子)である
55
6.2MU200-EC6Sを使用した 課題演習1
56
練習④
〈問題〉
SW1が‘0’の時、LEDA0が点灯する
・ 7SEG LEDに表示する場合
(点灯=1、消灯=0)
57
練習④
解答例
//LEDmodule LED(SW1,LEDA0);input SW1;output LEDA0;
assign LEDA0=~SW1;
endmodule 01
10
LED_A0SW1
SW1 LEDA0
58
練習⑤
<問題>
次のような条件の回路図を作成してみよう
・SW1が‘1’の時→ LED1 点灯・LED2 消灯
・SW1が‘0’の時→ LED1 消灯・LED2 点灯
(LEDは‘1’の時 点灯、 ‘0’の時 消灯とする)
59
練習⑤
解答例
SW1 LED1
LED2
60
練習⑤
設計した回路をQuartusⅡでコンパイル、シミュレーション、MU200-EC6Sで実機確認を行おう。
実機動作では、
SW1はSW_A0LED1はLED0、LED2はLED7に割り当てることとする。(ピンアサインはMU200-EC6Sピンアサイン表1.1.xls参照すること。)
練習⑤ 操作手順例QuartusⅡで回路設計参照
61
練習⑤
MU200-EC6Sで実機確認を行おう。 (注意:MU200-EC6Sのテンキーは負論理(押された時が‘0’、押されていない時‘1’))
SW_A0
LED0
(SW_A0押下時消灯)
LED7
(SW_A0押下時点灯)
62
練習⑥
〈問題〉
7SEGLEDに学籍番号を点灯しよう!
・SW1が‘0’の時、学籍番号が点灯する ようにVerilog HDLで設計しよう。
63
練習⑥ヒント
学籍番号「00000000」の場合
7SEGLEDは下図のように表示
a
b
c
h
g
d
f
e
a
b
c
h
g
d
f
e
a
b
c
h
g
d
f
e
a
b
c
h
g
d
f
e
a
b
c
h
g
d
f
e
a
b
c
h
g
d
f
e
a
b
c
h
g
d
f
e
a
b
c
h
g
d
f
e
LED_A LED_B LED_C LED_D LED_E LED_F LED_G LED_H
解答例(gakuseki.vファイル参照)
SW1はSW_A0 (2番ピン) に割り当てることとする。
64
//7SEGLEDmodule gakuseki(SW1,LED_A,LED_B,LED_C,LED_D,LED_E,LED_F,LED_G,LED_H);input SW1;output [7:0] LED_A,LED_B,LED_C,LED_D,LED_E,LED_F,LED_G,LED_H;reg [7:0] LED_A,LED_B,LED_C,LED_D,LED_E,LED_F,LED_G,LED_H;always@(SW1)case(SW1)1'b0:beginLED_A<=8'hFC;LED_B<=8'hFC;LED_C<=8'hFC;LED_D<=8'hFC;LED_E<=8'hFC;LED_F<=8'hFC;LED_G<=8'hFC;LED_H<=8'hFC;
enddefault:beginLED_A<=8'h00;LED_B<=8'h00;LED_C<=8'h00;LED_D<=8'h00;LED_E<=8'h00;LED_F<=8'h00;LED_G<=8'h00;LED_H<=8'h00;
endendcaseendmodule
モジュール宣言
レジスタ宣言
SW1を押す
LED_A~Hまで学籍番号「0」を表示
それ以外
LED_A~Hまで何も表示しない
65
練習⑥
設計したVerilog HDLソースをQuartusⅡでコンパイル、シミュレーション、MU200-EC6Sで実機確認を行おう。
66
《File》→《New…》を選択します。
NEWはDeviseDesignFilesタブでVerilog HDL Fileを選択してOK
ファイルの新規作成
67
回路作成
68
ファイルの保存
以降は練習⑤ 操作手順例QuartusⅡで回路設計 P9~を参照
69
7. MU200-EC6Sを使用した 課題演習 2
70
7.1 練習⑦
〈問題〉
・下記フリップフロップをVerilog HDLで記述し、QuartusⅡでコンパイル、シミュレーション、実機確認を行おう。
D
CLK
RESET
Qa bclk
rst
71
実機動作では、
aはSW_A0 (2番ピン) 、bはLED0(47番ピン)、
clkはOSC(28番ピン)、rstはRESET(240番ピン)
に割り当てることとする。(ピンアサインはMU200-EC6Sピンアサイン表1.1.xls参照すること。)
練習⑦ Verilog HDL解答例
コンパイル、シミュレーションは、
練習⑤ 操作手順例QuartusⅡで回路設計参照
を参照して行うこと。
72
練習⑦MU200-EC6Sで実機確認を行おう。
(注意:MU200-EC6Sのテンキーは負論理(押された時が‘0’、押されていない時‘1’))
SW_A0
LED0
CK_DIV設定をFとする
(CLK_SW押下毎に1クロック発生する) CLK_SW
・SW_A0を開放状態で CLK_SWを1回押すとLED点灯
・SW_A0を押下状態で
CLK_SWを1回押すとLED消灯
することを確認する。
73
7.2 練習⑧
〈問題〉
・スイッチを押して10秒後に学籍番号
を点灯しよう! 尚、入力されるクロックは10MHzとする。
(MU200-EC SW27 CK_DIVは「2」とする。)
74
練習⑧
SW1
RESET
CLK
LED_ALED_BLED_CLED_DLED_ELED_FLED_GLED_H
start
CLK
RESET
SW1
data X X X10 2 3 4 5 6 7X X X X XX 8 9
・・・・・・・・・・・・・
・・・・・・・・・・・・・
・・・・・・・・・・・・・
・・・・・・・・・・・・・
・・・・・・・・・・・・・
X X
10秒
start・・・SW1を押した時だけdataを動かす信号
data・・・10秒数えるための信号
解答例(count解答例.docファイル参照)
75
7.2 練習⑨〈問題〉
下記回路を設計、コンパイルして実機確認を行おう。
①RESETを押す
②7SEGLEDのHに「0」を点灯
③SW1を押す
④7SEGLEDのHの表示が1秒毎に 0→1→2・・・8→9→0と繰り返す
尚、入力されるクロックは10MHzとする。
(MU200-EC SW27 CK_DIVは「2」とする。)
76
練習⑨解答例(clk-kaitourei.docファイル参照)
SW1
RESET
CLK
sec_clkSW1
RESETCLK
sec_cont
RESET
CLK
LED_H
1秒を数えるsec_clk信号
を作るためのカウンタ回路
sec_clk信号を数えるsec_cont信号を作るためのカウンタ回路
sec_cont信号をLED_Hに表示するためのデコーダ回路
CLK
RESET
SW1
sec_clk
sec_cont
LED_H
10 2X 8 9
・・・・・・・・・・・・・
・・・・・・・・・・・・・
・・・・・・・・・・・・・
・・・・・・・・・・・・・
X
1秒 1秒 1秒 1秒 1秒
X X X ・・・・・・・・・・・・・X X X 0
・・・・・・・・・・・・・X X X X X XFC 60 DA FE E6 FC
77
8. MU200-EC6Sを使用した 課題演習 3
78
8.1 シフト回路を設計してみよう
79
8.1.1 シフト回路仕様説明
CLK発振部 RST回路部
MU200-EC6S
7SEG
A B C D E F G H
数字表示
FPGA
LED
PSW
10MHZ
〈1〉機能概要
①RESETを押す
②7SEGLEDのHに「0」を表示する
③SW1を押す
④7SEGLEDの表示を
1秒毎に変える
(8.1.2図1参照) SW1
80
8.1.1 シフト回路仕様説明〈2〉トップモジュールブロック図
mask_g
mask_f
mask_e
mask_d
mask_c
mask_b
mask_a
dec
SW1
RESET
CLK
sec_clk
RESET
CLKsec_clk sec_count
LED_H
LED_G
LED_F
LED_E
LED_D
LED_C
LED_B
LED_A
st_h
mask
RESET
CLK
4 sec_count
FPGA
8
8
8
8
8
8
8
8
81
8.1.1 シフト回路仕様説明〈3〉仕様
sec_countを表示するためのものdec
表示が出るまでマスク信号発生回路mask
sec_clkを数えるための回路sec_count
1秒数えるためのカウンタsec_clk
概略仕様ブロック名
82
8.1.2 Verilogによる設計〈問題〉
①RESETを押す
②7SEGLEDのHに「0」
を表示する
③SW1を押す
④7SEGLEDの表示を1秒毎に変える
(図1参照)
0
HGFEDCBA
101秒(1秒後)
2101秒(2秒後)
32101秒(3秒後)
432101秒(4秒後)
5432101秒(5秒後)
65432101秒(6秒後)
765432101秒(7秒後)
876543211秒(8秒後)
987654321秒(9秒後)
098765431秒(10秒後)
図1
83
8.1.2 Verilogによる設計解答例(clkseg解答例.docファイル参照)
XX X X X XX X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
CLK
RESET
SW1
count(sec_clk内の
カウンタ値)
sec_clk
sec_count X X X XX 0 1 2 3
ヒント1.sec_clkの入力と出力信号
84
8.1.2 Verilogによる設計
X X X X X X X X X X X X X X X X X X0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7sec_count
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~RESET
CLK
st_h
sec_clk
ヒント3.maskの入力と出力の信号
st_hは(図1の7秒後の参照)7SEGLEDが全て表示されるまでをマスクする信号
maskは1秒ずつずれて数字を表示するための信号
mask_g
mask_f
mask_e
mask_d
mask_c
mask_b
mask_a
1秒後
2秒後
3秒後
4秒後
5秒後
6秒後
7秒後
X X X X X X X X X X X X X X X X X X0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7sec_count
ヒント2.sec_countの入力と出力の信号
85
8.1.2 Verilogによる設計
ヒント4.7SEGLEDの入力と出力の信号
X X X X X X X X X X X X X X XFC 60 DA F2 66 B6 3E E4 FE E6 FC 60 DA F2 66X 00X 00X 00
X X X X X X X X X X X X X XFC 60 DA F2 66 B6 3E E4 FE E6 FC 60 DA F2X 00X 00X 00X 00
X X X X X X X X X X X XFC 60 DA F2 66 B6 3E E4 FE E6 FC 60X 00X 00X 00X 00X 00X 00
LED_E
LED_D
LED_B
X X X X X X X X X X X X X X X X X XFC 60 DA F2 66 B6 3E E4 FE E6 FC 60 DA F2 66 B6 3E E4LED_H
X X X X X X X X X X X X X X X XFC 60 DA F2 66 B6 3E E4 FE E6 FC 60 DA F2 66 B6X 00X 00LED_F
X X X X X X X X X X X X X X X X XFC 60 DA F2 66 B6 3E E4 FE E6 FC 60 DA F2 66 B6 3EX 00LED_G
X X X X X X X X X X X X XFC 60 DA F2 66 B6 3E E4 FE E6 FC 60 DAX 00X 00X 00X 00X 00LED_C
X X X X X X X X X X XFC 60 DA F2 66 B6 3E E4 FE E6 FCX 00X 00X 00X 00X 00X 00X 00LED_A
mask信号を7SEGLEDに表示(「00」は表示無し)
sec_clk
86
8.1.3 実機確認
87
9.MU200-EC6Sを使用した 自由課題
88
参考 MU200-ECマニュアル添付
CLK24、BEEP回路