0123456789_I_AM_TOKUYA_FUJIOKA.
③ moji_deco_top.vhd トップ回路をVHDLで設計する
④
テストベンチでシミュレーションを実行し、機能確認する[QuartusⅡ]
(テキスト: 131 ~ 137頁)⑤
新規プロジェクト(moji_deco_DE0)を作成する⑥
実機用回路に修正し(図4-24)、コンパイルする⇒
修正後のデータをエラーフリーにする⑦
端子割り当て後、コンパイルして実行モジュールを作成する⑧
実機で動作を確認するconversion_ascii
『名前表示』のSim用モジュール構成
-
図4-5 実習課題概要 -deco0 0 1 2 3 4 5 6 7 8 9 ・・・ 30 31 deco1 31 0 1 2 3 4 5 6 7 8 ・・・ 29 30
deco2 30 31 0 1 2 3 4 5 6 7 ・・・ 28 29 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 0 1 2 3 4 5 6 7 8 9 _ I _ a m _ (ascii)
CNV0 DEC0
CLK
STOP
RESET
conversion_ascii decoder_7seg
CNV1 DEC1
CNV2 DEC2
CNV3 DEC3
S0(5) A0(7)
S1(5) A1(7)
S2(5) A2(7)
S3(5) A3(7)
LED0
LED1
LED2
LED3
HEX0
HEX1
HEX2
HEX3 PERI
deco0
deco1
deco2
deco3
moji_deco_top
peripheral_moji(配付モジュール)
今回設計する部分
CLK
STOP
RESET
LED0
LED1
LED2
LED3
HEX0
HEX1
HEX2
HEX3
moji_deco_DE0
clk LED0(7..0) I3: moji_deco_top
stop reset
LED1(7..0) LED2(7..0) LED3(7..0) clk
I1: chattering SW_in SW_out
clk
I2: chattering SW_in SW_out
chat_STP
chat_RST
『名前表示』の実機用モジュール構成
-
図4-24 実機評価用最上位回路: moji_deco_DE0 --
入力信号の雑音を削除 ⇒ チャタリング防止回路の挿入-
表示周期を1秒(=1Hz)に変更⇒ moji_deco_top内のperipheral_mojiの一部を変更
『名前表示』のシミュレーション
1.シミュレーション用回路の設計
1)図4-5に従って、
conversion_ascii, decoder_7seg, moji_deco_top を設計する
2)peripheral_mojiは、シミュレーション用にカスタマイズする(されている)
・シミュレーションでは、雑音等は削除してよい ・シミュレーションの効率化を図る
⇒
出力:deco0/1/2/3を1MHz(=1us)周期に設定3)テストベンチを記述して、シミュレーションを実行する
2.シミュレーション後の確認内容
1)decoのカウント数に従って、所望の文字列が発生されているか?
2)カウント数が、asciiコードに正しく変換されているか?
3)7segLEDの信号が正しく生成されているか?
4)resetが正しく動作しているか?
5)stop信号が正しく動作しているか?
--Testbench for module: moji_deco_top library IEEE;
use IEEE.std_logic_1164.all;
use IEEE.std_logic_unsigned.all;
entity moji_deco_top_tb is end moji_deco_top_tb;
architecture SIM of moji_deco_top_tb is component moji_deco_top
port( CLK, STOP, RESET: in std_logic;
LED0 : out std_logic_vector (7 downto 0);
LED1 : out std_logic_vector (7 downto 0);
LED2 : out std_logic_vector (7 downto 0);
LED3 : out std_logic_vector (7 downto 0));
end component;
signal CLK: std_logic := '0' ;
signal STOP, RESET: std_logic := '1' ;
signal LED0, LED1: std_logic_vector (7 downto 0);
signal LED2, LED3: std_logic_vector (7 downto 0);
constant STEP: time := 20 ns ;
begin
U0: moji_deco_top port map
(clk, reset, stop, LED0, LED1, LED2, LED3 );
process begin
clk <= '0'; wait for STEP/2;
clk <= '1'; wait for STEP/2;
end process;
process begin
wait for 10.3 us ; RESET <= '0';
wait for 4.5 us ; RESET <= '1';
wait for 30.7 us ; STOP <= '0';
wait for 2.0 us ; STOP <= '1';
wait for 8.2 us ; STOP <= '0';
wait for 3.8 us ; STOP <= '1';
wait for 20.5 us ;
assert false severity failure;
end process;
end SIM;
configuration cfg_moji_deco_top_tb of
moji_deco_top_tb is for SIM
end for;
end cfg_moji_deco_top_tb;
『名前表示』のテストベンチ記述例
clk生成
RESET/
STOP生成
U0: moji_deco_top
-
シミュレーション用回路『名前表示』のシミュレーション結果(1)
- 全体表示 -
『名前表示』のシミュレーション結果(2)
- リセット付近 - (asciiコードは、表4-2参照)
『名前表示』のシミュレーション結果(3)
- ストップ付近 -
4.課題3: 『1分時計』
- 第3/4日目 -
[実現機能] 1/100秒まで表示する1分時計を作る。60秒でトグルする。
(表示例)
12.34[秒桁に、ドットを表示する]
[ボタン仕様]
Button0(reset):
初期状態に戻る(00.00秒表示に戻る)[LED表示]
HEX0
: 1/100秒HEX1
: 1/10秒HEX2
: 1秒 ← “ドット”を表示させるHEX3
: 10秒[モジュール構成]
- one_min_clock_top: 1分時計の最上位回路
- Div_10ms: 50MHz(20ns)→100Hz(10ms)への分周回路。
- chattering:
チャタリング防止回路(既設計。手法1、2どちらでも可)- CNT10:
カウントアップ機能付き10進カウンタ- CNT06: 6進カウンタ
(カウントアップ機能は無し)- BCD_7segLED: BCDコードを7segLED信号にデコード
『1分時計』の開発仕様
実習の進め方
【第3/4日目】 シミュレーションは、サブ回路で実行する。
実機用回路を設計して、動作を確認する。
[ Modelsim ]
(テキスト: 142 ~ 146頁)①
新規プロジェクト(one_min_clock)を作成する② Div_10ms: Sim用に、分周は、10usで設計する
CNT10 :
カウントアップ機能付き10進カウンター を設計する③ Parts :
サブ回路のトップモジュールを設計する④
テストベンチでシミュレーションを実行し、機能確認する[QuartusⅡ]
(テキスト: 146 ~ 1148頁)⑤
新規プロジェクト( one_min_clock )を作成する⑥
実機用回路(図5-8)を設計する ⇐ 分周は、10msにする⇒
コンパイルで設計データをエラーフリーにする⑦
端子割り当て後、コンパイルして実行モジュールを作成する⑧
実機で動作を確認する『1分時計』のトップ回路図
[入力]
- CLK: 50Mhz(20ns)
- 非同期reset
[出力]
1 2. 3 4
1/100単位 ドットを付ける
60秒で繰り返す
ドット表示