論理回路設計 -...

124
論理回路設計 - 実習:VHDLによるデジタル回路設計 東京理科大学 基礎工学部電子応用工学科 (非常勤講師) 藤岡 督也 2019年度前期 集中講義】 1 講座の目的 実習を通して、専門分野の問題発見・解決の能力を修得する - LSI設計の基礎知識を得る - 言語:VHDLによる設計手法を実習する - EDAツールの操作を経験する - FPGAを搭載した評価ボードで動作を確認する

Upload: others

Post on 12-Mar-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 論理回路設計 - 東京理科大学jte401/files/2019_presentation.pdf・Verilog-2005の拡張版で、機能的に上位互換となっている - Verilog AMS (Analog & Mixed Signal)

論理回路設計

- 実習:VHDLによるデジタル回路設計 –

東京理科大学 基礎工学部電子応用工学科 (非常勤講師) 藤岡 督也

【2019年度前期 集中講義】

1

講座の目的

実習を通して、専門分野の問題発見・解決の能力を修得する

- LSI設計の基礎知識を得る

- 言語:VHDLによる設計手法を実習する

- EDAツールの操作を経験する

- FPGAを搭載した評価ボードで動作を確認する

Page 2: 論理回路設計 - 東京理科大学jte401/files/2019_presentation.pdf・Verilog-2005の拡張版で、機能的に上位互換となっている - Verilog AMS (Analog & Mixed Signal)

トップダウン設計と抽象度

開発仕様

システムレベル記述

RTL記述

トランジスタ記述

レイアウト

機能 設計制約(コスト、性能)

ゲートレベル記述

アーキテクチャ、アルゴリズム選択、 HW/SW分割の調整

記述量小 抽象的

クロック毎のデータパスと 制御回路の設計

論理ゲート、レジスタ回路

2

具体的 記述量大

トランジスタ回路

フロアプラン、配置配線 テクノロジーに 依存する部分

HDLで記述 できる範囲

Page 3: 論理回路設計 - 東京理科大学jte401/files/2019_presentation.pdf・Verilog-2005の拡張版で、機能的に上位互換となっている - Verilog AMS (Analog & Mixed Signal)

トップダウン設計フローとEDAツール 開発仕様

システムレベル記述/シミュレーション

HDL記述&シミュレーション

テスト設計

自動配置配線&タイミング検証

ダウンロード(デバイスへの書き込み) 半導体メーカーで製造

C/C++シミュレータ、高位合成ツール

論理合成&シミュレーション

HDL/論理シミュレータ

論理合成ツール

論理シミュレータ、テスト設計ツール

P&Rツール、タイミング検証ツール

Cell Based IC、Gate Array etc. FPGA、PLD etc. 3

Page 4: 論理回路設計 - 東京理科大学jte401/files/2019_presentation.pdf・Verilog-2005の拡張版で、機能的に上位互換となっている - Verilog AMS (Analog & Mixed Signal)

[論理合成] HDL記述された論理機能を ゲート回路に変換すること (入力) 論理式、真理値表、 条件分岐、繰り返し構造 などの記述 (出力) ネットリスト

4

論理合成とトップダウン設計

テストパタン RTL回路のHDL記述

RTLシミュレーション

論理合成

論理回路/ネットリスト

論理シミュレーション

実装設計/ レイアウト、タイミング検証

FPGA用構成ファイル チップ製造

コンパイル

機能・論理検証/修正サイクル

論理変換 テクノロジマッピング 論理最適化

RTL (Register Transfer Level) とは? ・ レジスタ間の転送関係を 表現したレベル ・ 機能を、代入、if、case等で 表現したもの ・ クロックを意識した記述

ゲートレベル とは? ・ ゲート回路やFF等の接続関係 を表現したもの ( → 素子と等電位点の列挙 ) ・ ネットリストとも言う

Page 5: 論理回路設計 - 東京理科大学jte401/files/2019_presentation.pdf・Verilog-2005の拡張版で、機能的に上位互換となっている - Verilog AMS (Analog & Mixed Signal)

5

RTL記述と論理ゲートレベル記述

reg reg reg

CLK

○ RTL記述

ハードウェア内部の構造を 明確に定義し、クロック動作に 基づいたレジスタ間の機能を 記述する。

○ 論理ゲートレベル記述

RTL記述の論理構造を保持 して、論理ゲートを接続した ネットリストとして記述する。 基本的に、特定のターゲット・ テクノロジーを用いるので、 テクノロジに依存する。

論理合成

Page 6: 論理回路設計 - 東京理科大学jte401/files/2019_presentation.pdf・Verilog-2005の拡張版で、機能的に上位互換となっている - Verilog AMS (Analog & Mixed Signal)

集中講義の日程

1日目 2日目 3日目 4日目

6月15日(土) 2~5時限

6月22日(土) 2~5時限

6月29日(土) 2~5時限

7月06日(土) 2~4時限

【課題1】 加算器 (半/全加算器)

- Quartus Prime Liteの 操作と作業手順の習得

・ VHDLによる設計 ・ 端子割り当て ・ 実機での動作確認

【課題1】 加算器 (全/4ビット加算器)

- ModelSimの操作と 作業手順の習得

・シミュレーションによる 設計の機能確認 ・テストベンチの作成 &実行方法 ・実機での動作確認

【課題2】 自分の名前の 表示させよう 【課題3】 ストップウォッチ

- Sim → 実機動作による 設計の実践&動作確認 - 実務設計フローを繰り返し 言語設計を理解

(実習で使用する環境)

[EDAツール] Quartus Prime Lite (Altera社)、 ModelSim (Mentor社: VHDLシミュレータ) [ボード] DE0-CV (Terasic Technologies社) : (FPGA) Cyclone Ⅴ(Altera社) 搭載

6

Page 7: 論理回路設計 - 東京理科大学jte401/files/2019_presentation.pdf・Verilog-2005の拡張版で、機能的に上位互換となっている - Verilog AMS (Analog & Mixed Signal)

7

実習の内容

各課題を設計して、シミュレーションで機能確認後、 実機を使って動作を確認する。

1.課題を理解し、設計仕様にまとめる → 入力、出力、機能 (、性能)を決める → モジュール分割する → 検証内容(シミュレーション内容等)を決める

2.シミュレーションで機能確認を行う → VHDLシミュレータ: ModelSimを使う → 波形入力 or テストベンチを使って実行する

3.評価ボード:DE0-CVを使って、実機確認を行う → Quartus Prime Liteで実行モジュールを作成する → シミュレーション回路と実機評価回路は、異なる場合がある

Page 8: 論理回路設計 - 東京理科大学jte401/files/2019_presentation.pdf・Verilog-2005の拡張版で、機能的に上位互換となっている - Verilog AMS (Analog & Mixed Signal)

実習の設計フロー

デザインエントリ

ダウンロード

実機評価

コンパイル

端子割り当て

コンパイル FPGAの接続データ (実行モジュール)を作成する

実行モジュールをPCから FPGAに書き込む

- ModelSim

- Quartus Prime Lite

- DE0-CV

8

デザインエントリ

コンパイル

シミュレーション

FPGA上で動作確認をする

仕様に基づき、 回路を設計する

回路の動作を確認する

記述をチェックして、論理合成する

Page 9: 論理回路設計 - 東京理科大学jte401/files/2019_presentation.pdf・Verilog-2005の拡張版で、機能的に上位互換となっている - Verilog AMS (Analog & Mixed Signal)

評価ボード:DE0-CVの外観

9

7seg LED

スライド・スイッチ ボタン・スイッチ

FPGA (Altera社製)

電源スイッチ

USB端子

Page 10: 論理回路設計 - 東京理科大学jte401/files/2019_presentation.pdf・Verilog-2005の拡張版で、機能的に上位互換となっている - Verilog AMS (Analog & Mixed Signal)

10

評価ボード:DE0-CVのデバイス構成

Page 11: 論理回路設計 - 東京理科大学jte401/files/2019_presentation.pdf・Verilog-2005の拡張版で、機能的に上位互換となっている - Verilog AMS (Analog & Mixed Signal)

11

1.搭載FPGA: (Family) Cyclone Ⅴ (name) 5CEBA4F23C7 [Package] FBGA (Fine pitch Ball Grid Array)

[Pin count] 484 [speed grade] 7 - Quartus Prime Lite(Altera社)で実行モジュールを作成する

2.入力機能 1) ボタンスイッチ: 4個 (KEY0~3) ・a接点スイッチ [← b接点スイッチとの違いを理解]

2) スライドスイッチ:10個 (SW0~SW9) ・上方にスライド(logic”1”)、下方にスライド(logic”0”)

3.出力機能 - 7-Segment Display (7seg LED): 6個 (HEX0~5) ・アノードコモン型 [← カソードコモン型との違いを理解]

4.実行モジュールのダウンロード - USBケーブルを接続して、 Quartus Prime Liteから実行する

評価ボード:DE0-CVの概要 [詳細は、授業HP上のマニュアル(英文)参照]

Page 12: 論理回路設計 - 東京理科大学jte401/files/2019_presentation.pdf・Verilog-2005の拡張版で、機能的に上位互換となっている - Verilog AMS (Analog & Mixed Signal)

12

DE0のボタンスイッチの動作

a接点: スイッチを押すと接点が繋がり電流が流れる b接点: スイッチを押すと接点が離れて電流が止まる

a接点スイッチ

push push

通常の入力信号: BS

反転入力信号: not BS

(PIN 番号)

Page 13: 論理回路設計 - 東京理科大学jte401/files/2019_presentation.pdf・Verilog-2005の拡張版で、機能的に上位互換となっている - Verilog AMS (Analog & Mixed Signal)

13

DE0-CVのスライドスイッチの動作

(PIN 番号)

(SW 番号)

上方にスライド

下方にスライド 通常の入力信号: SS

反転入力信号: not SS

下方にスライド

ALTERA

Cyclone V (5CEBA4F23C7)

Page 14: 論理回路設計 - 東京理科大学jte401/files/2019_presentation.pdf・Verilog-2005の拡張版で、機能的に上位互換となっている - Verilog AMS (Analog & Mixed Signal)

14

DE0-CVの7-Segment Display (7segLED)

HEX0

(PIN番号)

- アノードコモン型 -

7seg LEDの動作タイプ

[参考]

U21

V21

W22

W21

Y22

Y21

AA22

(ピン名)

ALTERA

0 1 2 3 4 5 6

common

アノードコモン

0 1 2 3 4 5 6

common

カソードコモン

[参考]

Page 15: 論理回路設計 - 東京理科大学jte401/files/2019_presentation.pdf・Verilog-2005の拡張版で、機能的に上位互換となっている - Verilog AMS (Analog & Mixed Signal)

端子割り当て(ピンアサイン)

FPGAチップ

- FPGAチップはパッケージングされている ⇒ PADはPINに接続されている - パッケージはボード上に実装されている ⇒ ボード上部品と接続されている

(PAD=)PINから先の接続は変更できない

FPGAパッケージ

FPGA搭載ボード

- 入力信号は、決まったPINから入力する - 出力信号は、決まったPINへ出力する

設計回路

15

FPGA

端子

割り当て

Page 16: 論理回路設計 - 東京理科大学jte401/files/2019_presentation.pdf・Verilog-2005の拡張版で、機能的に上位互換となっている - Verilog AMS (Analog & Mixed Signal)

端子名 入出力 ピン名 備考

CLK Input PIN_M9 システムクロック

A-in Input PIN_V13 ボタンスイッチ:SW1

B-in Input PIN_T13 ボタンスイッチ:SW2

C-in Input PIN_U13 ボタンスイッチ:SW0

HEX0[6] Output PIN_AA22 HEX0_6

HEX0[5] Output PIN_Y21 HEX0_5

HEX0[4] Output PIN_Y22 HEX0_4

HEX0[3] Output PIN_W21 HEX0_3

HEX0[2] Output PIN_W22 HEX0_2

HEX0[1] Output PIN_V21 HEX0_1

HEX0[0] Output PIN_U21 HEX0_0

HEX1[6] Output PIN_U22 HEX1_6

HEX1[5] Output PIN_AA17 HEX1_5

HEX1[4] Output PIN_AB18 HEX1_4

16

端子(ピン)割り当て表

○ 全加算器の例 [テキスト:表5-2/表5-3 端子割り当て表(66頁)参照]

Page 17: 論理回路設計 - 東京理科大学jte401/files/2019_presentation.pdf・Verilog-2005の拡張版で、機能的に上位互換となっている - Verilog AMS (Analog & Mixed Signal)

17

VHDLの概要

Page 18: 論理回路設計 - 東京理科大学jte401/files/2019_presentation.pdf・Verilog-2005の拡張版で、機能的に上位互換となっている - Verilog AMS (Analog & Mixed Signal)

ハードウェア記述言語: HDL

- ハードウェアの動作仕様を記述するための言語で、電子回路の 経時的動作と空間的構造を表現し、構文(syntax)や意味(semantics)は、 ハードウェアの基本的属性である時間や並行性を記述。

- 処理を検証するテストベンチ記述ができ、シミュレーションが可能。

- 論理合成が可能。

- Verilog HDL と VHDL が、主要な言語 (IEEEで標準化を推進)

18

- 設計の互換性

- 様々な設計手法およびテクノロジのサポート

- テクノロジおよびプロセスからの独立性

- 広範囲な記述能力

- 大規模な設計と設計の再利用

HDLによるシステム開発のメリット

Page 19: 論理回路設計 - 東京理科大学jte401/files/2019_presentation.pdf・Verilog-2005の拡張版で、機能的に上位互換となっている - Verilog AMS (Analog & Mixed Signal)

VHDLの歴史

- VHDL: VHSIC Hardware Description Language の略称 - 1981年 米国国防総省(国防高等研究計画局:DARPA(Defense

Advanced Research Projects Agency)のVHSIC委員会が提唱 ・VHSIC: Very High Speed Integrated circuit ・ICの大規模/高機能化に伴った、明確に仕様を記述する 仕様記述言語

- 1986年 Version 7.2 リリース IEEEの標準化作業スタート ・VASG (VHDL Analysis & Standardization Group) 委員会

- 1987年 LRM(言語仕様書; Language Reference Manual ) 作成 IEEE Std 1076-1987として承認 - 1993年 IEEE 1164を採用: 9値のstd_logic

- その後 IEEE 1076-1993、 IEEE 1076-2000、 IEEE 1076-2002、 IEEE 1076-2008 (最新版)

19

Page 20: 論理回路設計 - 東京理科大学jte401/files/2019_presentation.pdf・Verilog-2005の拡張版で、機能的に上位互換となっている - Verilog AMS (Analog & Mixed Signal)

20

Verilog HDLの歴史

- ゲートウェイ・デザイン・オートメーション社が、1984年頃、 ハードウェア・モデリング言語とそのためのシミュレータとして開発

- 1990年、ケイデンス・デザイン・システムズが買収。版権所有。

- OVI( Open Verilog International → (現在) Accellera ) で 標準化を推進 ⇒ IEEE 1364-1995 or Verilog-1995 - IEEE 1364-2001 or Verilog-2001 ← 1995の拡張版(大規模対応等)

- IEEE 1364-2005 or Verilog-2005 ← 2001のマイナー修正版

- System Verilog ( IEEE 1800-2005 → IEEE 1800-2009) ・Verilogを拡張し、ハードウェアの記述言語と検証言語を統合したもの ・2002年、AccelleraにSuperlog言語が寄付されて生まれたもの [ Superlog: ハードウエア-ソフトウエア協調設計に向けて,ハードウエア記述言語Verilog-HDLと ソフトウエアのプログラミング言語「C言語」のそれぞれの特徴を生かして,新規開発されたもの]

・Verilog-2005の拡張版で、機能的に上位互換となっている

- Verilog AMS (Analog & Mixed Signal) ・アナログ設計言語Verilog-Aと、アナログ回路とディジタル回路の容易な 接続と混在を可能とするミックスドシグナルのための構文を追加した言語

Page 21: 論理回路設計 - 東京理科大学jte401/files/2019_presentation.pdf・Verilog-2005の拡張版で、機能的に上位互換となっている - Verilog AMS (Analog & Mixed Signal)

VHDLの基本構造①

回路記述: ・論理合成に適した記述をする ・回路の種類ごとに適した記述スタイルがある

テストベンチ: ・文法を満たしていれば、どんな記述でもよい ・記述のテクニックを駆使できる

VHDLの文法

回路記述 テストベンチ

ライブラリ記述

論理合成可能

論理合成不可 シミュレーション可能

21

Page 22: 論理回路設計 - 東京理科大学jte401/files/2019_presentation.pdf・Verilog-2005の拡張版で、機能的に上位互換となっている - Verilog AMS (Analog & Mixed Signal)

VHDLの基本構造②

22

VHDLモデル定義

エンティティ文

アーキテクチャ文

[VHDL記述の3つの構造] (VHDL記述は、図1-6(b)参照)

Library IEEE; use IEEE.std_logic_1164.all;

half_adder

A

B

CO

S

エンティティ

入力端子 (ポート)

出力端子 (ポート)

sig1

sig2

A

B

CO

S

entity half_adder is port( A, B : in std_logic; S, CO : out std_logic ); end half_adder;

architecture RTL of half_adder is signal sig1, sig2: std_logic; begin sig1 <= A nand B; sig2 <= A or B; CO <= not sig1; S <= sig1 and sig2; end RTL;

Page 23: 論理回路設計 - 東京理科大学jte401/files/2019_presentation.pdf・Verilog-2005の拡張版で、機能的に上位互換となっている - Verilog AMS (Analog & Mixed Signal)

library IEEE; use IEEE.std_logic_1164.all;

entity full_adder is port(A,B,CIN : in std_logic; S,CO: out std_logic); end full_adder;

architecture RTL of full_adder is component half_adder port(A,B : in std_logic; S,CO: out std_logic); end component; signal sig1, sig2, sig3 : std_logic; begin H1: half_adder port map (A,B,sig2,sig1); H2: half_adder port map (sig2, CIN, S, sig3); CO <= sig1 or sig3; end RTL;

23

VHDLモデル 定義

VHDLの基本構造③ - 階層化記述例 -

sig1

sig2 A

B

A

B

CO

S half_adder

CIN

sig3

CO

S

A

B

CO

S half_adder

H1

H2

エンティティ 文

アーキテクチャ 文

コンポーネント 宣言(定義)

コンポーネント インスタンス

Page 24: 論理回路設計 - 東京理科大学jte401/files/2019_presentation.pdf・Verilog-2005の拡張版で、機能的に上位互換となっている - Verilog AMS (Analog & Mixed Signal)

◇ テストベンチ テスト対象モジュール(DUT; Device Under Test)を シミュレーションするためのトップモジュール。 論理合成しないので、分かりやすく効率良く記述することを優先。 回路設計では使用しない(できない)記述方法を使用する事が可能。

[シミュレーション] 設計した回路が正しく動作するかを検証するために、実装前に、 コンピュータ上でシミュレータを実行すること。

- 論理シミュレーション: (遅延を無限小として)論理動作のみ検証

- 遅延シミュレーション: 回路の遅延情報を考慮して動作を検証

クロック、リセット等の生成

入力パタンの生成

設計した回路 (DUT)

[論理合成可能]

結果表示等

テストベンチ

24

VHDLの基本構造④ - テストベンチ -

Page 25: 論理回路設計 - 東京理科大学jte401/files/2019_presentation.pdf・Verilog-2005の拡張版で、機能的に上位互換となっている - Verilog AMS (Analog & Mixed Signal)

25

VHDLの仕様(1) 1.VHDLモデル定義(パッケージ宣言)

使用するライブラリの宣言とパッケージの呼び出しを行う。

Library IEEE; use IEEE.std_logic_1164.all; use IEEE.std_logic_unsigned.all; use IEEE.std_logic_arith.all; - Library文: ライブラリ宣言 - use文: パッケージ呼び出し ・データタイプ、各種の演算子や標準関数などを定義したもの。 ・IEEEの標準ライブラリパッケージは必須で、必ず記述が必要です。

[IEEEの標準ライブラリパッケージ] (1) std_logic_1164 std_logicの基本関数の呼び出しに使用する。 通常、std_logic、std_logic_vectorを 使って設計するので、このパッケージ呼び出しは必須です。

(2) std_logic_unsigned std_logic、std_logic_vectorを使った符号無し演算関数を呼び出しに使用する。

(3) std_logic_arith std_logic、std_logic_vectorを使った算術演算関数を呼び出しに使用する。

Page 26: 論理回路設計 - 東京理科大学jte401/files/2019_presentation.pdf・Verilog-2005の拡張版で、機能的に上位互換となっている - Verilog AMS (Analog & Mixed Signal)

26

VHDLの仕様(2)

2.データタイプ(型) (1) std_logic: 論理値は、9値 ‘0’、‘1’、‘X’: 強ストレングスの論理値0、論理値1、不定値 ‘L’、‘H’、‘W’: 弱ストレングスの論理値0、論理値1、不定値 → 強/弱ストレングスが同一信号上で競合した場合は、強ストレングスの値が有効 ‘Z’ : 信号がドライブされていないハイインピーダンス状態 ‘U’ : 初期化されていない(Uninitialize)論理値 ‘-’ : ドントケア(don’t care)

(2)std_logic_vector : std_logicデータタイプの多ビット信号 (記述例) A: in std_logic_vector ( 0 to 3 ); 4ビットバス信号で、A(0), A(1), A(2), A(3)と昇順 A: out std_logic_vector ( 3 downto 0 ) 4ビットバス信号で、A(3), A(2), A(1), A(0)と降順

(3)その他: 回路記述で使う主なデータタイプ - bit: 論理値を‘0’または‘1’の2値 - bit_vector: bitデータタイプの多ビット信号 B: in bit_vector ( 0 to 3 ); 昇順の4ビットバス信号で、各状態値は0/1 B: out bit_vector ( 3 downto 0 ) 降順の4ビットバス信号で、各状態値は0/1

- integer: 32ビットまでの正/負の整数(-2147483647~2147483647) - boolian: 真(True)と偽(False)の2値を持つ列挙タイプ

Page 27: 論理回路設計 - 東京理科大学jte401/files/2019_presentation.pdf・Verilog-2005の拡張版で、機能的に上位互換となっている - Verilog AMS (Analog & Mixed Signal)

27

VHDLの仕様(3)

3.オブジェクト・クラス - 定数(constant)、信号(signal)、変数(variable) (定数宣言構文) constant 定数名[、定数名・・・]: データタイプ [:= 値]; (宣言場所) architecture, process文の宣言部 (使用例) constant WIDTH: integer := 8; [整数型定数WIDTHの値を8にする] If ( I >= WIDTH ) then … [WIDTH(=8)以上のとき、then以下を実行]

(信号宣言構文) signal 信号名[、信号名・・・]: データタイプ [:= 値]; (宣言場所) architectureの宣言部 (使用例) signal A,B,C: std_logic :=’0’; [信号A,B,Cはstd_logicで、初期値は’0’] signal counter : integer range 0 to 31 :=1; [counterはintegerで、range 0 to 31⇒5ビット(省略時は、32ビット)。初期値は1]

(変数宣言構文) variable 変数名[、変数名・・・]: データタイプ [:= 値]; (宣言場所) process文の宣言部 (使用例) variable V1, V2: std_logic; [変数V1,V2はstd_logicの内部変数]

Page 28: 論理回路設計 - 東京理科大学jte401/files/2019_presentation.pdf・Verilog-2005の拡張版で、機能的に上位互換となっている - Verilog AMS (Analog & Mixed Signal)

28

VHDLの仕様(4) 4.定義済み演算子

[論理演算子] std_logic、bit、booleanに使用可能 not (論理否定)、 and (論理積)、 or (論理和)、 nand (NAND)、

nor (NOR)、 xor (EX-OR)、 xnor (EX-NOR; VHDL93)

[関係演算子] 全データタイプに使用可能。 幅違いは下位が有効 = (等しい)、 /= (等しくない)、 < (小さい)、 <= (小さいまたは等しい)、 > (大きい)、 >= (大きいまたは等しい)

[算術演算子] + (加算、プラス符号)、 - (減算、マイナス符号)、 * (乗算)、 / (除算)、

** (べき乗)、 abs (絶対値)、 mod (モジューロ)、 rem (剰余)

[連接演算子] & : (使用例) ADD(4 downto 0) <= CO & ADD(3 downto 0);

〇演算子の優先順序: 各演算子の優先順位は、以下の通り定義されている(高い順) (高い) 特殊: not、 **、 abs 乗除演算子: *、 /、 mod、 rem 正負の符号演算子: +、 - 加減演算子と連接: +、 -、 & 関係演算子: =、 /=、 <、 >、 <=、 >= (低い) 論理演算子: and、 or、 nand、 nor、 xor、 xnor

Page 29: 論理回路設計 - 東京理科大学jte401/files/2019_presentation.pdf・Verilog-2005の拡張版で、機能的に上位互換となっている - Verilog AMS (Analog & Mixed Signal)

29

VHDLの仕様(5) 5.属性(アトリビュート)

属性(アトリビュート) 対象 意味 値

遅延属性 S’event

信号 変化があったか否か 真(true)か

偽(false) S’stable 安定していたか否か

配列属性

A’left

配列型(複数ビット) の信号、変数、定数

最左ビットの位置 整数

A’right 最右ビットの位置 整数

A’range ビット幅の範囲 レンジ

A’length ビット幅 整数

(event文) if (CLK’event and CLK =‘1’) then …..

- 信号:CLKに変化があり、その信号状態がCLK=’1’であれば、then以下を実行するので、 信号:CLKの立上りエッジを検出します。

clk

din

dout

If ( clk’event and clk =’1’ ) then dout <= din; end if;

clkの立上がりエッジ時をセンスして dinの値をdoutに出力するので、 doutの値はclkに同期して、保持(ラッチ)される。

Page 30: 論理回路設計 - 東京理科大学jte401/files/2019_presentation.pdf・Verilog-2005の拡張版で、機能的に上位互換となっている - Verilog AMS (Analog & Mixed Signal)

30

VHDLの仕様(6) 6.順次処理文

(1) process文 - ハードウェア動作を表現する1つの実行単位でアーキテクチャ部に記述される - それぞれのprocess文は、並行的に実行される - センシティビティ・リストまたはwait文のどちらかによって実行が制御されるが、 同時に両方を記述することはできない。 - process文は繰り返し実行される - センシティビティ・リストが指定されている場合、最後の処理文実行後、 リスト内のいずれかの信号が変化するまで、実行処理が停止される。

process (センシティビティ・リスト) [プロセス宣言部: 変数宣言、定数宣言、タイプ宣言、サブプログラム宣言]

begin <順次処理文: 信号代入文、変数代入文、if文、case文、loop文、wait文、exit文等>

end process; 《センシティビティ・リスト》 信号名をカンマで区切って並べたリスト。 リスト内の信号が変化するたびにbeginとendで囲まれた 順次処理文を最初から順番に実行。 《順次処理文》 実体を記述する式。 基本的に記述された順番に実行。 この記述の中で条件分岐をさせるために、if文とcase文が使える。

Page 31: 論理回路設計 - 東京理科大学jte401/files/2019_presentation.pdf・Verilog-2005の拡張版で、機能的に上位互換となっている - Verilog AMS (Analog & Mixed Signal)

31

VHDLの仕様(7) 6.順次処理文(続き)

(2) if文: process文中に記述 - 条件式に基づいて、処理文の実行の可否が選択される。 - 条件式が“真”であれば、thenに続く順次処理文が実行され、 “偽”であれば、elsifもしくはelseに続く順次処理文が実行される。 [(注意) elsif の綴りに注意]

- 条件式は、boolean型 - 条件式は上から順番に判断されるため、順次処理文に優先順位が付く。 if 条件式 then <順次処理文> {[ elsif 条件式 then <順次処理文> ]} [ else <順次処理文> ] end if;

(記述例) process(SELS,A,B,C,D) begin if (SELS = "00") then M <= A; elsif (SELS = "01") then M <= B; elsif (SELS = "10") then M <= C; else M <= D; end if; end process;

M

SELS

A

B

C

D

Page 32: 論理回路設計 - 東京理科大学jte401/files/2019_presentation.pdf・Verilog-2005の拡張版で、機能的に上位互換となっている - Verilog AMS (Analog & Mixed Signal)

32

VHDLの仕様(8) 6.順次処理文(続き)

(3) case文: process文中に記述 - 式の値と一致した分岐に指定した順次処理文を実行する。 - 分岐には、“|”による複数値の指定、“to“による範囲の指定ができる。 - 式や分岐値には、整数型、列挙型、配列型の式を指定することができる。 - 式と分岐値のタイプは一致する必要がある。 - 同じ値は許されず、すべての取りうる値を記述する必要がある。 - when othres が用意されている。

case 式 is when 値 => <順次処理文>; when 値|値|値 => <順次処理文>; when 値 to 値 => <順次処理文>; ∙ ∙ ∙ when others => <順次処理>; end case ;

(記述例) process(SELS,A,B,C,D) begin case SELS is when “00” => M <= A; when “01” => M <= B; when “10” => M <= C; when others => M <= D; end case; end process;

M

SELS

A

B

C

D

Page 33: 論理回路設計 - 東京理科大学jte401/files/2019_presentation.pdf・Verilog-2005の拡張版で、機能的に上位互換となっている - Verilog AMS (Analog & Mixed Signal)

33

VHDLの仕様(9) 6.順次処理文(続き)

(4) loop文: process文中に記述 - 繰り返し記述を簡略化するために用いる。 ・ for文(for-loop文): 指定した整数の範囲だけをループを実行 ・while文(while-loop文): 条件がtrueの間ループを実行 - ループ回数を示す識別子は、ループ文にローカルな変数として宣言され、 外部(loop文外)に同一の名称をもつ信号や変数があっても区別される。 - loop文内の処理をスキップ/抜け出すために、next文とexit文が使用できる。

[for(for-loop)文] for 変数名 in 整数範囲 loop <順次処理文>; end loop;

[while(while-loop)文] while 条件(式) loop <順次処理文>; end loop;

[next文] next when 条件(式) <順次処理文>;

[exit文] exit when 条件(式);

Page 34: 論理回路設計 - 東京理科大学jte401/files/2019_presentation.pdf・Verilog-2005の拡張版で、機能的に上位互換となっている - Verilog AMS (Analog & Mixed Signal)

34

VHDLの仕様(10) 6.順次処理文(続き)

(5) wait文: process文中に記述 - プロセス文の起動制御を行う。 - wait文とセンシティビティ・リストを同時に使用することはできない。 wait [ on 信号名 {,信号名…}] [ until 条件 ] [ for 時間 ] - on: 指定した信号のいずれか一つが変化するまで - until: 指定した条件が成り立つまで - for: 指定した時間が経過するまで、 処理を一時停止する。 指定条件のいずれか一つが成立すると、そのwait文の次の文から処理を再開する。 なお、何の指定もないwait文を用いると、wait文を処理した段階で、そのwait文のある process文は永久に停止する。

(使用例) process begin wait on SIG_A, SIG_B; wait for 20ns; wait until A>5; wait until clock’event and clock=’1’; wait on A, B until C > D for 10ns ; ・信号A、Bの少なくともいずれか一方の値が変化するか、 あるいは、 ・信号C、Dの間に“C > D”なる関係が成立するか、 あるいは、 ・10[ns]の時間が経過するまで、 処理を一時停止する。

Page 35: 論理回路設計 - 東京理科大学jte401/files/2019_presentation.pdf・Verilog-2005の拡張版で、機能的に上位互換となっている - Verilog AMS (Analog & Mixed Signal)

① コンポーネントの宣言; 半加算器:half_adderの例

component half_adder port ( A, B : in std_logic; S, CO : out std_logic);

end component;

35

VHDLの仕様(11) 7.構造化記述

② コンポーネントをインスタンスし、信号を接続

インスタンス名: コンポーネント名 port map ( 入出力ポートと内部ネットの接続を記述する ) ;

[名前による関連付け]

port map ( 端子名 => 信号名,端子名 => 信号名,・・・);

(記述例) H1: harf_adder port map ( A => A, B => B, S => sig2, CO => sig1 );

[位置による関連付け]

port map ( A、B、S、COにつなげる信号名,);

(記述例) H1: harf_adder port map ( A , B, sig2, sig1 );

Page 36: 論理回路設計 - 東京理科大学jte401/files/2019_presentation.pdf・Verilog-2005の拡張版で、機能的に上位互換となっている - Verilog AMS (Analog & Mixed Signal)

36

8.テストベンチの構造

VHDLモデル定義文

entity エンティティ名 is end エンティティ名;

architecture アーキテクチャ名 is

begin

end アーキテクチャ名;

- DUTの宣言 - 入出力の宣言

- DUTの呼び出し - 波形記述

configuration コンフィグレーション名 is for アーキテクチャ名 end for; end コンフィグレーション名;

ポートリストの無いエンティティ文

アーキテクチャ名 of エンティティ名

テストモジュール(DUT)のコンポーネント宣言 DUTの入出力信号宣言

DUTの呼び出し宣言(インスタンス) 入力信号の入力波形記述

コンフィグレーション名を定義 → コンフィグレーション名 of エンティティ名

⇓ このコンフィグレーション名でシミュレーターの

実行モジュールが作られる

VHDLの仕様(12)

Page 37: 論理回路設計 - 東京理科大学jte401/files/2019_presentation.pdf・Verilog-2005の拡張版で、機能的に上位互換となっている - Verilog AMS (Analog & Mixed Signal)

37

1日目の実習内容

- テキスト:1~69頁

[実習の目的]

- VHDL仕様の概要を理解 - 設計から実機評価までの設計フロー全体を把握 - Quartus Prime Liteの操作方法を習得 ・特に、ピンアサイン、実行モジュールの作成&ダウンロード

Page 38: 論理回路設計 - 東京理科大学jte401/files/2019_presentation.pdf・Verilog-2005の拡張版で、機能的に上位互換となっている - Verilog AMS (Analog & Mixed Signal)

38

1日目の実習内容と進め方

課題1: 『半/全加算器』を“VHDL”で設計して、 実機(DE0-CV)で動作させる (テキスト: 6 ~ 69頁)

- VHDL仕様の基礎(テキスト:6 ~ 24頁)を理解する - Quartus Prime Liteの操作と基本的な設計フローを理解する 【半加算器の設計】 - Quartus Prime Lite上でVHDL入力し、コンパイルを実行する half_adder、 half_adder_top (peripherai_half) (テキスト: 38 ~ 48頁) - 端子割り当て後、実行モジュール(*.sof)を作成し、 実機にダウンロードして、動作を確認する (テキスト: 48 ~ 58頁)

【全加算器の設計】 - 階層化設計の方法、実機用回路の注意点(周辺回路の設計)を通して 実機用回路の考え方と実機動作の設計フローを再確認する full_adder2、 Bit_7segLED、top_full_adder、 (chattering) (テキスト: 59 ~ 69頁)

Page 39: 論理回路設計 - 東京理科大学jte401/files/2019_presentation.pdf・Verilog-2005の拡張版で、機能的に上位互換となっている - Verilog AMS (Analog & Mixed Signal)

デザインエントリ

ダウンロード

実機評価

コンパイル

端子割り当て

コンパイル

設計データの端子と FPGAのPIN番号を 接続する

実行モジュールを FPGAに書き込む

- DE0-CV

39

実機動作確認をする

VHDL記述をチェック して、論理合成する

Quartus Prime Lite上での設計フロー

VHDL記述で設計する

入出力仕様に合った 実行モジュールを 作成する

Page 40: 論理回路設計 - 東京理科大学jte401/files/2019_presentation.pdf・Verilog-2005の拡張版で、機能的に上位互換となっている - Verilog AMS (Analog & Mixed Signal)

40

(課題1) 『半加算器』の開発仕様

SW1

SW0

入力信号:B

入力信号:A

入力信号:B

入力信号:A

出力信号:CO

出力信号:S

B

CO

S

A 半加算器

周辺回路

入力信号処理部 出力信号処理部

全体回路 システムクロック:50MHz

図4-2

library IEEE; use IEEE.std_logic_1164.all; entity half_adder is port( A, B : in std_logic; S, CO : out std_logic ); end half_adder; architecture RTL of half_adder is signal sig1, sig2: std_logic; begin sig1 <= A nand B; sig2 <= A or B; CO <= not sig1; S <= sig1 and sig2; end RTL;

図4-1

Page 41: 論理回路設計 - 東京理科大学jte401/files/2019_presentation.pdf・Verilog-2005の拡張版で、機能的に上位互換となっている - Verilog AMS (Analog & Mixed Signal)

41

『半加算器』の全体回路

周辺回路: peripheral_half

全体回路: half_adder_top

A_in

B

CO

S

A 半加算器

B_in

CLK CLK

A

B

LED3

LED2

LED1

LED0

HEX3

HEX2

HEX1

HEX0

7

CO_in

S_in

A_out

B_out

7

7

7

a-sig

b-sig

S-sig CO-sig

図4-4

library IEEE; use IEEE.std_logic_1164.all; entity half_adder_top is port(CLK, A_in, B_in : in std_logic; HEX0,HEX1,HEX2,HEX3 : out std_logic_vector(6 downto 0)); end half_adder_top; architecture RTL of half_adder_top is component peripheral_half port(CLK, A, B: in std_logic; S_in, CO_in: in std_logic; A_out,B_out: out std_logic; LED0,LED1,LED2,LED3: out std_logic_vector(6 downto 0)); end component;

component half_adder port(A, B : in std_logic; S, CO: out std_logic); end component; signal a_sig, b_sig, S_sig, CO_sig: std_logic; begin INST1: peripheral_half port map(CLK => CLK, A => A_in, B => B_in, A_out => a_sig, B_out => b_sig, S_in => S_sig, CO_in => CO_sig, LED0 => HEX0, LED1 => HEX1, LED2 => HEX2, LED3 => HEX3); INST2: half_adder port map(A => a_sig, B => b_sig, S => S_sig, CO => CO_sig); end RTL;

図4-5

提供モジュールを利用

Page 42: 論理回路設計 - 東京理科大学jte401/files/2019_presentation.pdf・Verilog-2005の拡張版で、機能的に上位互換となっている - Verilog AMS (Analog & Mixed Signal)

42

全体回路の信号名 属性 FPGAのPIN番号 備 考

CLK 入 力

PIN_M9 システムクロック

A-in PIN_U13 ボタンスイッチ:SW0

B-in PIN_V13 ボタンスイッチ:SW1

HEX0[0]

PIN_U21

7segLED:

HEX0

HEX0[1] PIN_V21

HEX0[2] PIN_W22

HEX0[3] PIN_W21

HEX0[4] PIN_Y22

HEX0[5] PIN_Y21

HEX0[6] PIN_AA22

HEX1[0]

PIN_AA20

7segLED:

HEX1

HEX1[1] PIN_AB20

HEX1[2] PIN_AA19

HEX1[3] PIN_AA18

HEX1[4] PIN_AB18

HEX1[5] PIN_AA17

HEX1[6] PIN_U22

HEX2[0]

PIN_Y19

7segLED:

HEX2

HEX2[1] PIN_AB17

HEX2[2] PIN_AA10

HEX2[3] PIN_Y14

HEX2[4] PIN_V14

HEX2[5] PIN_AB22

HEX2[6] PIN_AB21

HEX3[0]

PIN_Y16

7segLED:

HEX3

HEX3[1] PIN_W16

HEX3[2] PIN_Y17

HEX3[3] PIN_V16

HEX3[4] PIN_U17

HEX3[5] PIN_V18

HEX3[6] PIN_V19

『半加算器』の端子接続情報 表4-1

Page 43: 論理回路設計 - 東京理科大学jte401/files/2019_presentation.pdf・Verilog-2005の拡張版で、機能的に上位互換となっている - Verilog AMS (Analog & Mixed Signal)

43

「Pin Planner」の起動画面 - (プルダウンメニュー)「Assignment」 → 「Pin Planner」 を選択 - (メニューバー) (Pin Planner – Ctrl+Shift+N) を選択

FPGAのPIN番号を設定

Page 44: 論理回路設計 - 東京理科大学jte401/files/2019_presentation.pdf・Verilog-2005の拡張版で、機能的に上位互換となっている - Verilog AMS (Analog & Mixed Signal)

44

『半加算器』の実機動作確認

スライドスイッチ 入力信号 出力信号 表示デバイス

SW1 SW0 B_in A_in CO S (HEX) 5 4 3 2 1 0

0 0 0 0

0 1 0 1

1 0 0 1

1 1 1 0

表4-3 スライドスイッチの操作と表示内容

Page 45: 論理回路設計 - 東京理科大学jte401/files/2019_presentation.pdf・Verilog-2005の拡張版で、機能的に上位互換となっている - Verilog AMS (Analog & Mixed Signal)

45

(課題1) 『全加算器』の開発仕様

SW1

SW0

入力: A

入力: B

入力: A

キャリー:C

出力:CO

出力:S

全体回路:top_full_adder

A CO

S

B

全加算器

CIN

FPGA キャリー:C

SW2

システムクロック (50MHz)

入力: B

CLK

B_in

A_in

C_in

HEX5

HEX4

HEX3

HEX0

HEX1

全体回路:top_full_adder

A

CO

S

B 全加算器

CIN

CLK

B_in

A_in

C_in

HEX5

HEX4

HEX3

HEX0

HEX1

表示信号変換回路

CLK SW-out

SW-in

CLK SW-out

SW-in

SW-out SW-in CLK

sin seg

sin seg

sin seg

sin seg

sin seg

b-chat

a-chat

c-chat

co-sig

s-sig

チャタリング 制御回路

図5-2

図5-3

周辺回路も設計する

Page 46: 論理回路設計 - 東京理科大学jte401/files/2019_presentation.pdf・Verilog-2005の拡張版で、機能的に上位互換となっている - Verilog AMS (Analog & Mixed Signal)

library IEEE; use IEEE.std_logic_1164.all; entity full_adder2 is port(A,B,CIN: in std_logic; S,CO: out std_logic); end full_adder2; architecture RTL of full_adder2 is signal INPUT: std_logic_vector(2 downto 0); begin INPUT <= CIN & B & A; process (INPUT) begin case INPUT is when "000" => S <= '0'; CO <= '0'; when "001" => S <= '1'; CO <= '0'; when "010" => S <= '1'; CO <= '0'; when "011" => S <= '0'; CO <= '1'; when "100" => S <= '1'; CO <= '0'; when "110" => S <= '0'; CO <= '1'; when "101" => S <= '0'; CO <= '1'; when "111" => S <= '1'; CO <= '1'; when others=> S <= 'X'; CO <= 'X'; end case; end process; end RTL;

CO A

B S

☆ 全加算器の真理値表

CIN

CIN B A CO S

0 0 0 0 0

0 0 1 0 1

0 1 0 0 1

0 1 1 1 0

1 0 0 0 1

1 0 1 1 0

1 1 0 1 0

1 1 1 1 1

『全加算器:full_adder2』のVHDL記述 - 動作記述版 -

46

図5-1

Page 47: 論理回路設計 - 東京理科大学jte401/files/2019_presentation.pdf・Verilog-2005の拡張版で、機能的に上位互換となっている - Verilog AMS (Analog & Mixed Signal)

47

チャタリング制御回路:chattering.vhd

《チャタリング現象: 図5-5》

clk

chattering

SW_in SW_out

50Mhz(システムクロック)

チャタリング発生信号 チャタリング除去信号

- スライドスイッチやボタンスイッチのような入力デバイスから信号を取り込む場合、 “チャタリング現象”(図5-5)が発生するので、制御する必要があります(図5-4)。 この“チャタリング制御回路: chattering”は、 “http://www.ed.tus.ac.jp/~jte401/” からダウンロードして下さい。

図5-4

Page 48: 論理回路設計 - 東京理科大学jte401/files/2019_presentation.pdf・Verilog-2005の拡張版で、機能的に上位互換となっている - Verilog AMS (Analog & Mixed Signal)

48

表示信号変換回路:Bit_7segLED.vhd

seg(6..0) sin

Bit_7segLED

入力 信号

7segLEDのセグメント番号 (アノードコモン型)

6 5 4 3 2 1 0

0 1 0 0 0 0 0 0

1 1 1 1 1 0 0 1

他 1 1 1 1 1 1 1

1ビットのstd_logic信号:

0/1/others

0

1

2

5

6

3

4

表5-1

図5-6

library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity Bit_7segLED is port( sin: in std_logic; seg: out std_logic_vector(6 downto 0)); end Bit_7segLED; architecture RTL of Bit_7segLED is begin process(sin) begin case sin is when '0' => seg <="1000000"; -- 0 when '1' => seg <="1111001"; -- 1 when others => seg <="1111111"; end case; end process; end RTL;

図5-7

Page 49: 論理回路設計 - 東京理科大学jte401/files/2019_presentation.pdf・Verilog-2005の拡張版で、機能的に上位互換となっている - Verilog AMS (Analog & Mixed Signal)

49

『全加算器』の端子接続情報

信号名 FPGAのPIN番号 備 考

CLK PIN_M9 システムクロック

A-in PIN_V13 ボタンスイッチ:SW1

B-in PIN_T13 ボタンスイッチ:SW2

C-in PIN_U13 ボタンスイッチ:SW0

信号名 PIN番号 備 考

HEX3[0] PIN_Y16

7segLED: HEX3

HEX3[1] PIN_W16

HEX3[2] PIN_Y17

HEX3[3] PIN_V16

HEX3[4] PIN_U17

HEX3[5] PIN_V18

HEX3[6] PIN_V19

HEX4[0] PIN_U20

7segLED: HEX4

HEX4[1] PIN_Y20

HEX4[2] PIN_V20

HEX4[3] PIN_U16

HEX4[4] PIN_U15

HEX4[5] PIN_Y15

HEX4[6] PIN_P9

HEX5[0] PIN_N9

7segLED: HEX5

HEX5[1] PIN_M8

HEX5[2] PIN_T14

HEX5[3] PIN_P14

HEX5[4] PIN_C1

HEX5[5] PIN_C2

HEX5[6] PIN_W19

信号名 PIN番号 備 考 HEX0[0] PIN_U21

7segLED: HEX0

HEX0[1] PIN_V21 HEX0[2] PIN_W22 HEX0[3] PIN_W21 HEX0[4] PIN_Y22 HEX0[5] PIN_Y21 HEX0[6] PIN_AA22 HEX1[0] PIN_AA20

7segLED: HEX1

HEX1[1] PIN_AB20 HEX1[2] PIN_AA19 HEX1[3] PIN_AA18 HEX1[4] PIN_AB18 HEX1[5] PIN_AA17 HEX1[6] PIN_U22

表5-2 入力端子の端子割り当て表

表5-3 出力端子の端子割り当て表

表5-3 出力端子の端子割り当て表 (続き)

Page 50: 論理回路設計 - 東京理科大学jte401/files/2019_presentation.pdf・Verilog-2005の拡張版で、機能的に上位互換となっている - Verilog AMS (Analog & Mixed Signal)

50

スライドスイッチ 入力信号 出力信号 表示デバイス:HEX

SW2 SW1 SW0 B_in A_in C_in CO S 5(B) 4(A) 3(C) 1(CO) 0(S)

0 0 0 0 0

0 1 0 0 1

1 0 0 0 1

1 1 0 1 0

0 0 1 0 1

0 1 1 1 0

1 0 1 1 0

1 1 1 1 1

『全加算器』の実機動作確認 表5-4 スライドスイッチの状態と表示デバイスの表示内容

Page 51: 論理回路設計 - 東京理科大学jte401/files/2019_presentation.pdf・Verilog-2005の拡張版で、機能的に上位互換となっている - Verilog AMS (Analog & Mixed Signal)

51

Quartus Prime Liteの概要

Page 52: 論理回路設計 - 東京理科大学jte401/files/2019_presentation.pdf・Verilog-2005の拡張版で、機能的に上位互換となっている - Verilog AMS (Analog & Mixed Signal)

起動画面(1)

52

【Quartus Prime Lite】

- VHDL入力、コンパイル、論理合成(Cyclone用) - 実行モジュールの作成 → 評価ボード(DE0-CV)へダウンロード

図3-1

Page 53: 論理回路設計 - 東京理科大学jte401/files/2019_presentation.pdf・Verilog-2005の拡張版で、機能的に上位互換となっている - Verilog AMS (Analog & Mixed Signal)

53

起動画面(2) 図3-2

“プロジェクト・ナビゲータ”画面

“ステータス”画面

プロジェクト名 プロジェクト名

プロジェクトの作業用ディレクトリ名

【Quartus Prime Lite】

Page 54: 論理回路設計 - 東京理科大学jte401/files/2019_presentation.pdf・Verilog-2005の拡張版で、機能的に上位互換となっている - Verilog AMS (Analog & Mixed Signal)

プロジェクトをオープンした状態で “File → New” を選択すると”New“画面がポップアップされるので、 “VHDL File”を選択する

“VHDL File”選択後、編集画面が表示される

54

エディタ画面

VHDL編集画面 図4-6/7

【Quartus Prime Lite】

Page 55: 論理回路設計 - 東京理科大学jte401/files/2019_presentation.pdf・Verilog-2005の拡張版で、機能的に上位互換となっている - Verilog AMS (Analog & Mixed Signal)

現在登録されているプロジェクトメンバー ・リストされているモジュールを管理する ⇑ 追加/削除でコントロールする(次頁)

55

プロジェクト・メンバー 図4-10

“Files”を選択

【Quartus Prime Lite】

Page 56: 論理回路設計 - 東京理科大学jte401/files/2019_presentation.pdf・Verilog-2005の拡張版で、機能的に上位互換となっている - Verilog AMS (Analog & Mixed Signal)

プロジェクト・メンバーの変更方法

56

【Quartus Prime Lite】

[オープンしているファイルを追加する場合] - メンバーに追加したいモジュールを

エディタでオープンして表示する (編集できる状態にする)

- 「Add current file to Project」を選択する - 編集中のモジュールがプロジェクトメンバー に追加される。

[プロジェクトの作業ディレクトリ下の モジュールをメンバーに追加する場合] - 「Add/Remove files to Project」を選択する - “Setting”画面(図4-13)がポップアップする - 手順に従って操作すると、所望のモジュール がプロジェクトメンバーに追加される。 なお、上記の「Add/Remove files to Project」は、 図4-12のように、「Project Navigator」画面で 「Files」を表示した状態で、”Files”を右クリック しても、選択することができる。

図4-11

Page 57: 論理回路設計 - 東京理科大学jte401/files/2019_presentation.pdf・Verilog-2005の拡張版で、機能的に上位互換となっている - Verilog AMS (Analog & Mixed Signal)

57

2日目の実習内容

- テキスト:71~122(/129)頁

[実習の目的]

- 論理シミュレータ:ModelSimの操作方法の習得 ・テストベンチによるシミュレーションの実行方法

- 論理シミュレーションによる機能確認の方法 - 「全加算器」の論理シミュレーションの実行 - 「4ビット加算器」の設計 ・論理シミュレーションで機能確認後、実機動作確認

Page 58: 論理回路設計 - 東京理科大学jte401/files/2019_presentation.pdf・Verilog-2005の拡張版で、機能的に上位互換となっている - Verilog AMS (Analog & Mixed Signal)

58

2日目の実習内容と進め方

「全加算器」の論理シミュレーションの実行と 「4ビット加算器」を設計後、実機で動作確認する。 余裕があれば、追加課題を実習する。 (テキスト: 71 ~129頁)

- シミュレータは、ModelSimを用いる。 - Quartus Prime Lite上で設計、実機確認した『全加算器』のVHDL記述を用いる ⇒ Quartus Prime LiteのVHDL記述(テキスト)をModelSim環境に移す。

【全加算器】 - 全加算器: full_adder2のシミュレーションの実行 (テキスト: 77 ~ 88頁) - 全体回路: top_full_adderのシミュレーションの実行 (テキスト: 89 ~ 96頁) - テストベンチによるシミュレーションの実行 (テキスト: 97 ~103頁)

【4ビット加算器】 - VHDLで設計し、シミュレーションで機能を確認 (テキスト:104 ~117頁) ・個々のモジュールの機能確認後、全体回路の機能確認

- 実機用回路に修正後、実機動作の確認 (テキスト:118 ~122頁) - (余裕がある場合) 追加課題:表示の10進数化 (テキスト:123 ~129頁) - (さらに) “追加仕様2:加算器の7ビット化”を実習する

Page 59: 論理回路設計 - 東京理科大学jte401/files/2019_presentation.pdf・Verilog-2005の拡張版で、機能的に上位互換となっている - Verilog AMS (Analog & Mixed Signal)

59

実務の設計フロー 要求仕様 所望回路の仕様を決定

- 設計回路と評価ボードの整合 ⇒ 端子割り当て(ピンアサイン) - 実行モジュール([拡張子] *.sof )の作成

実機 [ 評価ボード: DE0-CV ]で設計した回路の機能確認

Quartus Prime Lite環境から 評価ボードへ実行モジュールをダウンロード

-設計結果は、実機で機能確認する (実習では、評価ボード: DE0-CVを使用)

(設計言語) VHDLで設計

設計回路の機能検証 -論理シミュレーションで機能検証 -テストベンチでの実行

ModelSim

Quartus Prime Lite

Page 60: 論理回路設計 - 東京理科大学jte401/files/2019_presentation.pdf・Verilog-2005の拡張版で、機能的に上位互換となっている - Verilog AMS (Analog & Mixed Signal)

ModelSimの設計フロー

60

デザインエントリ:

VHDLで設計

コンパイル

シミュレーション - テストベンチで実行

開発仕様に基づき、 回路を設計する

Sim結果を解析して 実現機能を確認する

① VHDLで実現する仕様を記述する ② コンパイルして、記述内容を確認する ③ 「Apply wave」で入力パタンを指定して、Simを実行する or 「テストベンチ」を記述して、Simを実行する ④ Sim結果を解析し修正することを繰り返し、設計を完成させる

手順

繰り返し

Page 61: 論理回路設計 - 東京理科大学jte401/files/2019_presentation.pdf・Verilog-2005の拡張版で、機能的に上位互換となっている - Verilog AMS (Analog & Mixed Signal)

library IEEE; use IEEE.std_logic_1164.all; entity full_adder2 is port(A,B,CIN: in std_logic; S,CO: out std_logic); end full_adder2; architecture RTL of full_adder2 is signal INPUT: std_logic_vector(2 downto 0); begin INPUT <= CIN & B & A; process (INPUT) begin case INPUT is when "000" => S <= '0'; CO <= '0'; when "001" => S <= '1'; CO <= '0'; when "010" => S <= '1'; CO <= '0'; when "011" => S <= '0'; CO <= '1'; when "100" => S <= '1'; CO <= '0'; when "110" => S <= '0'; CO <= '1'; when "101" => S <= '0'; CO <= '1'; when "111" => S <= '1'; CO <= '1'; when others=> S <= 'X'; CO <= 'X'; end case; end process; end RTL;

『全加算器:full_adder2』の機能検証 - 動作記述版 -

61

図6-1

入力端子&信号 10進 表示

出力端子&信号

CIN B A CO S

0 0 0 0 0 0

0 0 1 1 0 1

0 1 0 2 0 1

0 1 1 3 1 0

1 0 0 4 0 1

1 0 1 5 1 0

1 1 0 6 1 0

1 1 1 7 1 1

表6-1

CIN: 0 0

B: 0 1 0 1

A: 0 1 0 1 0 1 0 1

図6-21

(10進数) 0 1 2 3 4 5 6 7

Page 62: 論理回路設計 - 東京理科大学jte401/files/2019_presentation.pdf・Verilog-2005の拡張版で、機能的に上位互換となっている - Verilog AMS (Analog & Mixed Signal)

62

入力波形の設定方法 - Apply Wave –

① “Objects”画面で入力信号(この図では信号:A)を選択 ② 右クリックでメニューをポップアップして、

“Modify” → “Apply Wave” を選択

図6-23

図6-24

Page 63: 論理回路設計 - 東京理科大学jte401/files/2019_presentation.pdf・Verilog-2005の拡張版で、機能的に上位互換となっている - Verilog AMS (Analog & Mixed Signal)

63

入力波形とSim結果

図6-31

図6-29

入力信号と入力波形

Sim結果を表示したい出力信号

Page 64: 論理回路設計 - 東京理科大学jte401/files/2019_presentation.pdf・Verilog-2005の拡張版で、機能的に上位互換となっている - Verilog AMS (Analog & Mixed Signal)

64

『全加算器の全体回路』のSim用回路

全体回路:top_full_adder

A

CO

S

B 全加算器

CIN

CLK

B_in

A_in

C_in

HEX5

HEX4

HEX3

HEX0

HEX1

表示信号変換回路

CLK SW-out

SW-in

CLK SW-out

SW-in

SW-out SW-in CLK

sin seg

sin seg

sin seg

sin seg

sin seg

b-chat

a-chat

c-chat

co-sig

s-sig

チャタリング 制御回路

全体回路:top_full_adder

A

CO

S

B 全加算器

CIN

INPUT(2..0) HEX5(6..0)

HEX4(6..0)

HEX3(6..0)

HEX0(6..0)

HEX1(6..0)

表示信号変換回路

sin seg(6..0)

co-sig

s-sig

sin seg(6..0)

sin seg(6..0)

sin seg(6..0)

sin seg(6..0)

INPUT(1)

INPUT(0)

INPUT(2)

INPUT(1)

INPUT(0)

INPUT(2)

シミュレーションでは 雑音を考慮しない ⇓ チャタリング制御回路不要

図6-37

図5-3

入力信号を変更

Page 65: 論理回路設計 - 東京理科大学jte401/files/2019_presentation.pdf・Verilog-2005の拡張版で、機能的に上位互換となっている - Verilog AMS (Analog & Mixed Signal)

65

『全体回路』のSim結果

Sim結果: 図6-45

INPUT(2..0) 000 001 010 011 100 101 110 111 [入力信号]

- Apply Waveで、counter 選択 - 0~800ns、 000 → 111(+1 count up) で設定

1パターン(=100ns) 8パターン(=800ns)

Page 66: 論理回路設計 - 東京理科大学jte401/files/2019_presentation.pdf・Verilog-2005の拡張版で、機能的に上位互換となっている - Verilog AMS (Analog & Mixed Signal)

begin DUT: top_full_adder port map (INPUT,HEX0,HEX1,HEX3,HEX4,HEX5);

process begin INPUT <= INPUT + '1'; wait for STEP; end process; process begin wait for STEP*8; assert false severity failure; end process;

end SIM;

configuration cfg_tb_top_full of tb_top_full is for SIM end for; end cfg_tb_top_full;

HEX5

INPUT

[DUT] top_full_adder

HEX4

HEX3

HEX1

HEX0

INPUT

HEX5 HEX4

HEX3

HEX1

HEX0

テストベンチ: tb_top_full

全体回路

『全体回路』のテストベンチ:tb_top_full.vhd

library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity tb_top_full is end tb_top_full; architecture SIM of tb_top_full is component top_full_adder port(INPUT : in std_logic_vector(2 downto 0); HEX0,HEX1,HEX3,HEX4,HEX5: out std_logic_vector(6 downto 0)); end component; signal INPUT: std_logic_vector(2 downto 0):="111"; signal HEX0,HEX1,HEX3,HEX4,HEX5: std_logic_vector(6 downto 0); constant STEP: time := 100 ns;

図6-50

図6-51

(続き)

定型の書き方(4行) ・cfg_(テストベンチ名)

強制終了させる

入力信号の設定

66

Page 67: 論理回路設計 - 東京理科大学jte401/files/2019_presentation.pdf・Verilog-2005の拡張版で、機能的に上位互換となっている - Verilog AMS (Analog & Mixed Signal)

67

テストベンチによるSim実行と結果

- cfg_tb_top_full を選択して、Simを実行する ・コンフィグレーションファイルが見つからない場合は、 再コンパイルする

Sim結果: 図6-60

・図6-45と一致

図6-55

Page 68: 論理回路設計 - 東京理科大学jte401/files/2019_presentation.pdf・Verilog-2005の拡張版で、機能的に上位互換となっている - Verilog AMS (Analog & Mixed Signal)

HEX0 HEX5

ADD(4)

4bit加算演算部 A_sig(3..0)

B_sig(3..0)

HEX1 HEX3

‘0’

A

B

CIN

CO

S

A

B

CIN

CO

S

A

B

CIN

CO

S

A

B

CIN

CO

S

ADD(4..0)

ADD(3) ADD(2) ADD(1) ADD(0)

A_sig(3) A_sig(2) A_sig(1) A_sig(0)

B_sig(3) B_sig(2) B_sig(1)

B_sig(0)

CO_0 CO_1 CO_2

入力:A

入力:B 出力: ADD(4)

出力: ADD(3..0)

4bit加算器: adder_4bit

A_reset

B_reset

A_sig(3..0)

B_sig(3..0)

HEX0

HEX1 HEX3

HEX5

4bit カウンタ

4bit カウンタ

4bit 演算

表示信号 変換

HEX1

HEX0(3..0)

HEX5(3..0)

HEX3(3..0)

『4ビット加算器』のSim用回路

68

図7-1

図7-11

1.4bitカウンタ 加数、被加数を 入力する

2.表示信号変換 4bitのBinary信号を 7segLED信号に 変換する

3.4ビット加算器 全加算器で 4bit加算器を 構成する

Page 69: 論理回路設計 - 東京理科大学jte401/files/2019_presentation.pdf・Verilog-2005の拡張版で、機能的に上位互換となっている - Verilog AMS (Analog & Mixed Signal)

69

『4ビット加算器』のテストベンチ 1.4ビットカウンタ: Bit4_counter、表示信号変換回路2: Bit4_to_7segLEDを テストベンチでSimを実行し、機能を確認する 2.4ビット加算器: adder_4bitは、以下の内容でテストベンチを作成し、実行する

process begin A <= '1'; wait for STEP/2; A <= '0'; wait for STEP/2; end process; process begin B <= '1'; wait for 1540 ns; B <= '0'; wait for 50 ns; B <= '1'; wait for 10 ns; end process; process begin A_reset <= '1'; B_reset <= '1'; wait for 370 ns; A_reset <= '0'; wait for 30 ns; A_reset <= '1'; wait for 3600 ns; B_reset <= '0'; wait for 100 ns; B_reset <= '1'; wait for 21500 ns; assert false severity failure; end process;

- A: 初期値‘1’、50ns後に’0’、50ns後に’1’に戻す [←50ns毎に’1’と’0’をトグルする] - B: 初期値’1’、1540ns後に’0’、50ns後に’1’に戻し、10ns保持する [←1600ns周期で変化する] - A_reset、B_reset: 共に初期値‘1’、370ns後にA_reseを’0’して、30ns後に’1’に戻す。 さらに、3600ns後にB_resetを’0’して、100ns後に’1’に戻す。 さらに、21500nsns後に強制終了する。 結果として、25600ns Simを実行する。

A_reset、B_resetの入力波形を記述

50ns周期で”1/0“をトグル

状態値を `1`:1540ns、`0`:50ns、`1`:10ns と変化させる。1600周期。

図7-13

Page 70: 論理回路設計 - 東京理科大学jte401/files/2019_presentation.pdf・Verilog-2005の拡張版で、機能的に上位互換となっている - Verilog AMS (Analog & Mixed Signal)

70

『4ビット加算器』のSim結果

図7-17

- 25600nsのSimが実行されている。 - 各信号が動作している - 所望通りの機能で動作しているかを確認する

Page 71: 論理回路設計 - 東京理科大学jte401/files/2019_presentation.pdf・Verilog-2005の拡張版で、機能的に上位互換となっている - Verilog AMS (Analog & Mixed Signal)

71

『4ビット加算器』の実機用回路

- 実機操作では、チャタリング現象を考慮する必要がある → チャタリング制御回路を挿入 [http://www.ed.tus.ac.jp/~jte401/ からダウンロードする]

HEX0

入力:A

入力:B

実機用回路: top_adder_4bit

A_reset

B_reset

b_rst_chat

LED3(6..0)

HEX0

HEX1 HEX3

HEX5

チャタリング 制御回路

システムクロック:CLK

4ビット加算器:adder_4bit

LED5(6..0)

LED0(6..0

LED1(6..0)

b_chat

a_rst_chat

a_chat

A

B

B_reset

A_reset HEX1

HEX0

HEX3

HEX5

図7-20

Page 72: 論理回路設計 - 東京理科大学jte401/files/2019_presentation.pdf・Verilog-2005の拡張版で、機能的に上位互換となっている - Verilog AMS (Analog & Mixed Signal)

72

`0’&A_sig(3..0)

`0’&B_sig(3..0)

表示信号変換回路2: Bit4_to_7segLED

ADD(4..0)

BCD化回路: Binary_to_BCD HEX5(6..0) B_10(3..0)

HEX4(6..0) B_01(3..0)

HEX3(6..0) B_10(3..0)

HEX2(6..0) B_01(3..0)

HEX1(6..0) ADD_10(3..0)

HEX0(6..0)

ADD_01(3..0)

HEX5

HEX4

HEX3

HEX2

HEX1

HEX0

実機動作と表示の10進数化 図7-26 実機動作の表示例

図7-35 10進数化後の実機動作の表示例

【追加仕様】

表示の10進数化

【追加仕様】 BCD化回路の挿入

Page 73: 論理回路設計 - 東京理科大学jte401/files/2019_presentation.pdf・Verilog-2005の拡張版で、機能的に上位互換となっている - Verilog AMS (Analog & Mixed Signal)

73

EDAツールの操作

Page 74: 論理回路設計 - 東京理科大学jte401/files/2019_presentation.pdf・Verilog-2005の拡張版で、機能的に上位互換となっている - Verilog AMS (Analog & Mixed Signal)

ショートカットの作成

74

[Quartus Prime Lite]

〇 デスクトップの「マイコンピューター」から「ボリューム(C:)」 -「intelFPGA_lite 」-「18.0」 -「quartus」-「bin64」-「quartus.exe」 を右クリックして、ポップアップメニューから 「ショートカット作成」を選択

[ModelSim]

〇 デスクトップの「マイコンピューター」から「ボリューム(C:)」 -「Application」-「modelsim」 -「win64」-「modelsim.exe」 を右クリックして、ポップアップメニューから 「ショートカット作成」を選択

Page 75: 論理回路設計 - 東京理科大学jte401/files/2019_presentation.pdf・Verilog-2005の拡張版で、機能的に上位互換となっている - Verilog AMS (Analog & Mixed Signal)

プロジェクトの作業用ディレクトリ

75

[Quartus Prime Lite] [ModelSim]

作業用ディレクトリ: Z:/Q_PrimeLite/adder

プロジェクト名 : half_adder

TOP階層名 : half_adder

full_adder と入力

z:/modelsim/full_adder と入力

work と自動的に設定される

{プロジェクトの作業用ディレクトリ]

“Z:/Q_PrimeLite/adder/ ” となる - Z:/Q_PrimeLite/adder/half_adder.qpf [*.qpf:Quartus Project File] がプロジェクト全体を管理

- Z:/Q_PrimeLite/adder/half_adder.vhd Z:/Q_PrimeLite/adder/half_adder_top.vhd Z:/Q_PrimeLite/adder/peripheral_half.vhd

図6-7 図3-5

{プロジェクトの作業用ディレクトリ]

“Z:/modelsim/full_adder/ ” となる - Z:/modelsim/full_adder/full_adder.mpf [*.mpf:Moelsim Project File] がプロジェクト全体を管理

- Z:/modelsim/full_adder/full_adder2.vhd Z:/modelsim/full_adder/top_full_adder.vhd Z:/modelsim/full_adder/Bit_7segLED.vhd

Page 76: 論理回路設計 - 東京理科大学jte401/files/2019_presentation.pdf・Verilog-2005の拡張版で、機能的に上位互換となっている - Verilog AMS (Analog & Mixed Signal)

現在登録されているプロジェクトメンバー ・リストされているモジュールを管理する ⇑ 追加/削除でコントロールする(次頁)

76

プロジェクト・メンバーの管理 図4-10

“Files”を選択

【Quartus Prime Lite】

図4-11

Page 77: 論理回路設計 - 東京理科大学jte401/files/2019_presentation.pdf・Verilog-2005の拡張版で、機能的に上位互換となっている - Verilog AMS (Analog & Mixed Signal)

77

起動画面 【ModelSim】

Jumpstart もしくは Close を選択

Page 78: 論理回路設計 - 東京理科大学jte401/files/2019_presentation.pdf・Verilog-2005の拡張版で、機能的に上位互換となっている - Verilog AMS (Analog & Mixed Signal)

既存プロジェクト起動後の画面

78

【ModelSim】

“Project”シートになる

登録されているプロジェクトメンバーがリストされる ⇐ このメンバーリストの管理が重要

Page 79: 論理回路設計 - 東京理科大学jte401/files/2019_presentation.pdf・Verilog-2005の拡張版で、機能的に上位互換となっている - Verilog AMS (Analog & Mixed Signal)

プロジェクト・メンバーの一覧 - トップモジュール以下の 全モジュールが表示される

79

プロジェクトメンバーの管理

Project画面内で右クリック - “Add to Project” を使って、 プロジェクト・メンバーを管理する

【ModelSim】

Page 80: 論理回路設計 - 東京理科大学jte401/files/2019_presentation.pdf・Verilog-2005の拡張版で、機能的に上位互換となっている - Verilog AMS (Analog & Mixed Signal)

VHDL編集画面

“File → Source → VHDL”の操作で 編集画面がオープンするので、 - VHDLを直接記述したり、 paste等で他から持ち込む - 既存ファイルを編集する -“Save/Save As”で保存する 等の操作を行う。

80

【ModelSim】

エディタ(編集)画面

Page 81: 論理回路設計 - 東京理科大学jte401/files/2019_presentation.pdf・Verilog-2005の拡張版で、機能的に上位互換となっている - Verilog AMS (Analog & Mixed Signal)

コンパイル手順

81

【ModelSim】

〇 保存直後

〇 コンパイル正常終了

〇 コンパイルエラー

Page 82: 論理回路設計 - 東京理科大学jte401/files/2019_presentation.pdf・Verilog-2005の拡張版で、機能的に上位互換となっている - Verilog AMS (Analog & Mixed Signal)

シミュレーション起動後の画面

82

【ModelSim】

“sim”シートになる

Sim実行するモジュール名が表示される

選択されているモジュール内の 信号名等が表示される

“wave”画面

表示されない場合は、 (プルダウンメニュー)「View」で“Wave” を選択して、表示させる

Page 83: 論理回路設計 - 東京理科大学jte401/files/2019_presentation.pdf・Verilog-2005の拡張版で、機能的に上位互換となっている - Verilog AMS (Analog & Mixed Signal)

83

表示画面の制御 -必要な画面が表示されない場合は、“View”コマンドで制御する

【ModelSim】 【Quartus Prime Lite】

表示した画面を選択する

“Wave”画面を表示したい場合は、「View」下の「Wave」を選択する。 “✔”が表示されているものが 現在表示されている画面

Page 84: 論理回路設計 - 東京理科大学jte401/files/2019_presentation.pdf・Verilog-2005の拡張版で、機能的に上位互換となっている - Verilog AMS (Analog & Mixed Signal)

84

コンパイルの相違

最上位モジュールを指定して ⇐ Set as Top-Level Entity (Ctrl+Shift+J )

最上位モジュール以下の階層全体を 対象にして整合性を確認する

プロジェクトに登録されている 個々のモジュールだけを対象にして モジュール内の整合性を確認する

Quartus Prime Lite ModelSim:

top_full_adder

Bit_7segLED full_adder2 chattering

top_full_adder

chattering

full_adder2

Bit_7segLED

Page 85: 論理回路設計 - 東京理科大学jte401/files/2019_presentation.pdf・Verilog-2005の拡張版で、機能的に上位互換となっている - Verilog AMS (Analog & Mixed Signal)

論理回路設計 - 3日目 -

- 実習:VHDLによるデジタル回路設計 –

【2019年度前期 集中講義】

85

[実習の内容]

- 課題2/3をVHDLで設計し、実機動作させる - Sim用回路と実機用回路の違いを理解する - 設計手順を繰り返し、実務フローを理解し習得する ・設計したモジュール(VHDL)のテストベンチを記述して、 ModelSimを実行して、機能確認する ・検証したVHDLをQuartus Prime Liteに移し、実機用回路に

修正して、実行モジュールを作成し、実機で動作確認する

Page 86: 論理回路設計 - 東京理科大学jte401/files/2019_presentation.pdf・Verilog-2005の拡張版で、機能的に上位互換となっている - Verilog AMS (Analog & Mixed Signal)

集中講義の日程

1日目 2日目 3日目 4日目

6月15日(土) 2~5時限

6月22日(土) 2~5時限

6月29日(土) 2~5時限

7月06日(土) 2~4時限

【課題1】 加算器 (半/全加算器)

- Quartus Prime Liteの 操作と作業手順の習得

・ VHDLによる設計 ・ 端子割り当て ・ 実機での動作確認

【課題1】 加算器 (全/4ビット加算器)

- ModelSimの操作と 作業手順の習得

・シミュレーションによる 設計の機能確認 ・テストベンチの作成 &実行方法 ・実機での動作確認

【課題2】 自分の名前の 表示させよう 【課題3】 ストップウォッチ

- Sim → 実機動作による 設計の実践&動作確認 - 実務設計フローを繰り返し 言語設計を理解

(実習で使用する環境)

[EDAツール] Quartus Prime Lite (Altera社)、 ModelSim (Mentor社: VHDLシミュレータ) [ボード] DE0-CV (Terasic Technologies社) : (FPGA) Cyclone Ⅴ(Altera社) 搭載

86

Page 87: 論理回路設計 - 東京理科大学jte401/files/2019_presentation.pdf・Verilog-2005の拡張版で、機能的に上位互換となっている - Verilog AMS (Analog & Mixed Signal)

87

実務の設計フロー 要求仕様 所望回路の仕様を決定

- 設計回路と評価ボードの整合 ⇒ 端子割り当て(ピンアサイン) - 実行モジュール([拡張子] *.sof )の作成

実機 [ 評価ボード: DE0-CV ]で設計した回路の機能確認

Quartus Prime Lite環境から 評価ボードへ実行モジュールをダウンロード

-設計結果は、実機で機能確認する (実習では、評価ボード: DE0-CVを使用)

(設計言語) VHDLで設計

設計回路の機能検証 -論理シミュレーションで機能検証 -テストベンチで実行

ModelSim

Quartus Prime Lite

Page 88: 論理回路設計 - 東京理科大学jte401/files/2019_presentation.pdf・Verilog-2005の拡張版で、機能的に上位互換となっている - Verilog AMS (Analog & Mixed Signal)

VHDLの入力ミス – コンパイルエラー -

88

(1) 規約どおりに記述する

- 構文規則を覚えて、正確に記述する ・キーワード、パラメータ数、綴りを間違えない ・“)”や”;”の数を間違えない ・ ()は必ず対になっている ・ ”;”は、必要な場所と必要ない場所を正確に把握する

・std_logicの論理値は、9値である

- 未定義の変数は使えない(必ず事前定義)

(2) コンパル時のエラーは、しっかり読む

- 的確な記述間違いをメッセージしてくれる訳ではない (ex.) 文末のコロン(;)を忘れると構文が成立しない

- 代入文の右辺と左辺でデータタイプは同じでなければならない signal s1: std_logic_vector(2 downto 0); signal n1: integer range 0 to 255; × s1 <= 0、 × n1 <= s1 《 Error (10517): VHDL type mismatch error at xxxxx.vhd(??): 》 《 std_logic type does not match integer literal 》

Page 89: 論理回路設計 - 東京理科大学jte401/files/2019_presentation.pdf・Verilog-2005の拡張版で、機能的に上位互換となっている - Verilog AMS (Analog & Mixed Signal)

設計モジュールの移動とプロジェクト管理 - 4ビット加算器 -

89

{プロジェクトの作業用ディレクトリ]

Z:/Q_PrimeLite/adder_4bit/

- full_adder2.vhd - Bit4_to_7segLED.vhd - Bit4_counter.vhd - adder_4bit.vhd - chattering.vhd - top_adder_4bit.vhd

{プロジェクトの作業用ディレクトリ]

Z:/modelsim/full_adder/

- full_adder2.vhd - Bit4_to_7segLED.vhd - Bit4_counter.vhd - adder_4bit.vhd

ModelSim Quartus Prime Lite

X (参照)

・ファイルを直接移動 ・エディタヲ利用

ソースを移動

Page 90: 論理回路設計 - 東京理科大学jte401/files/2019_presentation.pdf・Verilog-2005の拡張版で、機能的に上位互換となっている - Verilog AMS (Analog & Mixed Signal)

90

プロジェクト&ファイルの確認方法 - プロジェクトへ登録するモジュールソース(*.vhdファイルは、 必ずプロジェクトディレクトリの下に保存する - (プルダウンメニュー)「File」 → 「Open」 で確認する

Z:/modelsim/full_adder/

Z:/Q_PrimeLite/adder_4bit/

Page 91: 論理回路設計 - 東京理科大学jte401/files/2019_presentation.pdf・Verilog-2005の拡張版で、機能的に上位互換となっている - Verilog AMS (Analog & Mixed Signal)

process begin A <= '1'; wait for STEP/2; A <= '0'; wait for STEP/2; end process; process begin B <= '1'; wait for 1540 ns; B <= '0'; wait for 50 ns; B <= '1'; wait for 10 ns; end process; process begin A_reset <= '1'; B_reset<='1'; wait for 370 ns; A_reset<='0'; wait for 30 ns; A_reset<='1'; wait for 3600 ns; B_reset<='0'; wait for 100 ns; B_reset<='1'; wait for 21500 ns; assert false severity failure; end process;

50 50

A

100 ns

91

テストベンチでの入力波形の記述方法

1540 50 10 B

1600 ns

370 30 A_reset

3600 100 21500 B_reset

25600 ns [16x100 x16]

無限ループ 無限ループ

25600ns Sim後、強制終了

= 100 ns

Page 92: 論理回路設計 - 東京理科大学jte401/files/2019_presentation.pdf・Verilog-2005の拡張版で、機能的に上位互換となっている - Verilog AMS (Analog & Mixed Signal)

92

ModelSimでの階層構造の確認

ModelSimのコンパイルは、プロジェクトに登録されている個々の モジュールを対象にしてモジュール内だけで整合性を確認する

Bit4_Counter full_adder2 Bit4_to_7segLED

adder_4bit

テストベンチでDUT(インスタンス名)が インスタンスされている

階層展開

DUT内でインスタンスされている インスタンス名が表示される

Page 93: 論理回路設計 - 東京理科大学jte401/files/2019_presentation.pdf・Verilog-2005の拡張版で、機能的に上位互換となっている - Verilog AMS (Analog & Mixed Signal)

93

課題2:

『自分の名前を表示させよう』

- 3日目 -

I_AM_ICHIRO_SUZUKI_19731022

自分の名前&生年月日

[注意] - 32文字(5ビット)以内に収まるように調整する - 各文字と各セグメントの表示は、表8-2を参照]

_ S Z

←・・ ←・・

U U K

Page 94: 論理回路設計 - 東京理科大学jte401/files/2019_presentation.pdf・Verilog-2005の拡張版で、機能的に上位互換となっている - Verilog AMS (Analog & Mixed Signal)

94

課題2の実習内容と進め方

ModelSim環境下でVHDLを使って設計する。 テストベンチでSimを実行して機能確認後、 実機(回路変更が必要)で動作確認する。

[ Modelsim ] (テキスト: 130 ~ 144頁)

① 新規プロジェクト: My_Name を作成する ② 分周回路:divide_clock、基準信号生成回路:base_signal 表示信号変換回路:BS_to_7segLED (各自異なる) を設計する。 ③ 各モジュールをテストベンチで機能確認する ④ トップ回路:My_Nameを設計し、テストベンチで機能確認する

[Quartus Prime Lite] (テキスト: 145 ~ 149頁)

⑤ 新規プロジェクト(my_name)を作成する ⑥ 実機用回路に修正し(図8-17)、コンパイルする ⇒ 修正後のデータをエラーフリーにする ⑦ 端子割り当て後、コンパイルして実行モジュールを作成する ⑧ 実機で動作を確認する

Page 95: 論理回路設計 - 東京理科大学jte401/files/2019_presentation.pdf・Verilog-2005の拡張版で、機能的に上位互換となっている - Verilog AMS (Analog & Mixed Signal)

95

[実現機能] 6個の7segLEDに、1秒毎に左に流れるように、 I_AM_(自分の名前&生年月日)を表示する。

[入力仕様] クロック信号: システムクロック:50MHz STOP信号: KEY0を使用。 動作の停止/再開を制御する 停止: 押下時点での表示をそのまま継続する 再開: 表示状態から次の表示を再開する

リセット信号: KEY3を使用: 初期状態に戻す(I_AM_Iから表示する)

[出力仕様] HEX0 : I_AM_(自分の名前&生年月日)を表示 HEX1/2/3/4/5 : -1/-2/-3/-4/-5秒遅れて、HEX0と同じ内容を表示

[モジュール構成] - 分周回路:divide_clock - 基準信号生成回路:base_signal - 表示信号変換回路:BS_to_7segLED (各自で異なる) - トップ回路:My_Name

『名前表示』の開発仕様

Page 96: 論理回路設計 - 東京理科大学jte401/files/2019_presentation.pdf・Verilog-2005の拡張版で、機能的に上位互換となっている - Verilog AMS (Analog & Mixed Signal)

96

『名前表示』のSim用モジュール構成 図8-2

RESET

全体回路:My_Name

システムクロック:

CLK(50MHz)

KEY3 STOP

分周 回路

HEX4

HEX0

HEX5

HEX2

HEX1

HEX3

BS0

BS1

BS2

BS3

BS4

BS5

div_clk

基準信号 生成回路

表示信号 変換回路3

5 /

/

/

/

/

/

/

/

/

/

/

/

5

5

5

5

5

7

7

7

7

7

7

KEY0

基準信号 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 ↓

文字列 I _ A M _ I C H I R O _ S U Z U K I _ ↓

7segLED 4F 77 08 2A 77 4F 46 09 4F 2F 23 77 12 41 36 41 0A 4F 77 (16進数表記)

19 20 21 22 23 24 25 26 27 28 29 30 31

1 9 7 3 1 0 2 2 (空白)

79 10 58 30 79 40 24 24 FF FF FF FF FF

表8-1: 基準信号への表示する文字列の割り当て

Sim時は、1us/周期

Page 97: 論理回路設計 - 東京理科大学jte401/files/2019_presentation.pdf・Verilog-2005の拡張版で、機能的に上位互換となっている - Verilog AMS (Analog & Mixed Signal)

97

『表示信号変換回路3』の機能

BS_to_7segLED

BS_in(4..0) seg(6..0) “00000”~”11111”の 基準信号の繰り返し

基準信号に割り当てた 表示する文字列に対応した 7segLEDの表示信号

文字 7segLEDのセグメント番号 16進数

表記 6 5 4 3 2 1 0

0 1 0 0 0 0 0 0 4_0

1 1 1 1 1 0 0 1 7_9

2 0 1 0 0 1 0 0 2_4

3 0 1 1 0 0 0 0 3_0

表8-2(1)[一部}

- 上記表に従って、表8-2(2)を完成させる [← アノードコモン型に注意] - 基準信号に表示する文字列(各自異なる)の表示信号を割り当てる [← 16進数表記を利用すると少しラク]

[← Bit4_to_7segLED(図7-7)を修正]

Page 98: 論理回路設計 - 東京理科大学jte401/files/2019_presentation.pdf・Verilog-2005の拡張版で、機能的に上位互換となっている - Verilog AMS (Analog & Mixed Signal)

98

『名前表示』のシミュレーション結果 - 全体表示 -

図8-16(1)

- テスチベンチ:cfg_tb_my_nameを実行 ← 分周周期は、1usで実行 - 信号名は、図8-13参照 - 各信号が正常に動作していることを確認 RESET

全体回路:My_Name

KEY3 STOP

分周 回路

HEX4

HEX0

HEX5

HEX2

HEX1

HEX3

bs0

bs1

bs2

bs3

bs4

bs5

div_clk

基準信号生成回路 表示信号変換回路3

5 /

/

/

/

/

/

5

5

5

5

5

/

/

/

/

/

/

7

7

7

7

7

7

KEY0

CLK sig0

sig1

sig2

sig3

sig4

sig5

図8-13

Page 99: 論理回路設計 - 東京理科大学jte401/files/2019_presentation.pdf・Verilog-2005の拡張版で、機能的に上位互換となっている - Verilog AMS (Analog & Mixed Signal)

99

『名前表示』の実機用モジュール構成

図8-17

- 入力信号の雑音を削除 ⇒ チャタリング制御回路を挿入 - 表示(分周)周期を1s(=1Hz)に変更 (Sim時は、1usで実行)

RESET

システムクロック: CLK(50MHz)

KEY3

STOP

HEX4(6..0)

HEX0(6..0)

HEX5(6..0)

HEX2(6..0)

HEX1(6..0)

HEX3(6..0)

KEY0

分周 回路

チャタリング 制御回路

実機用回路:top_my_name

stop_chat

reset_chat

トップ回路:My_Name

分周クロックを1Hz(=1s/周期)に変更する

Page 100: 論理回路設計 - 東京理科大学jte401/files/2019_presentation.pdf・Verilog-2005の拡張版で、機能的に上位互換となっている - Verilog AMS (Analog & Mixed Signal)

100

プロジェクトメンバーと出力表示例

〇 Quartus Prime Lite上のプロジェクトメンバー: 6モジュール

実機用の最上位回路。 “Set as Top-Level Entity” で設定して、コンパイルする。

Sim用の最上位回路。 そのまま利用する。

表示(分周)周期: 1s(=1Hz)に変更

入力信号の雑音を消去。 既存のモジュールを利用。

〇 表示例

- 初期状態(リセット直後)

I_AM_ICHIRO_SUZUKI_19731022

- 初期状態から12秒経過後

Page 101: 論理回路設計 - 東京理科大学jte401/files/2019_presentation.pdf・Verilog-2005の拡張版で、機能的に上位互換となっている - Verilog AMS (Analog & Mixed Signal)

論理回路設計 - 4日目 -

- 実習:VHDLによるデジタル回路設計 –

【2019年度前期 集中講義】

101 /16

[実習の内容]

- 課題2を終わっていない人は、完了させる - 課題3をVHDLで設計し、実機動作させる ・ModelSimは、評価用回路を実行し、基本機能を確認する ・Quartus Prime Liteで実機用回路を完成させる

・設計手順を繰り返し、実務フローを理解し習得する

Page 102: 論理回路設計 - 東京理科大学jte401/files/2019_presentation.pdf・Verilog-2005の拡張版で、機能的に上位互換となっている - Verilog AMS (Analog & Mixed Signal)

集中講義の日程

1日目 2日目 3日目 4日目

6月15日(土) 2~5時限

6月22日(土) 2~5時限

6月29日(土) 2~5時限

7月06日(土) 2~4時限

【課題1】 加算器 (半/全加算器)

- Quartus Prime Liteの 操作と作業手順の習得

・ VHDLによる設計 ・ 端子割り当て ・ 実機での動作確認

【課題1】 加算器 (全/4ビット加算器)

- ModelSimの操作と 作業手順の習得

・シミュレーションによる 設計の機能確認 ・テストベンチの作成 &実行方法 ・実機での動作確認

【課題2】 自分の名前の 表示させよう 【課題3】 ストップウォッチ

- Sim → 実機動作による 設計の実践&動作確認 - 実務設計フローを繰り返し 言語設計を理解

(実習で使用する環境)

[EDAツール] Quartus Prime Lite (Altera社)、 ModelSim (Mentor社: VHDLシミュレータ) [ボード] DE0-CV (Terasic Technologies社) : (FPGA) Cyclone Ⅴ(Altera社) 搭載

102

Page 103: 論理回路設計 - 東京理科大学jte401/files/2019_presentation.pdf・Verilog-2005の拡張版で、機能的に上位互換となっている - Verilog AMS (Analog & Mixed Signal)

103

実務の設計フロー 要求仕様 所望回路の仕様を決定

- 設計回路と評価ボードの整合 ⇒ 端子割り当て(ピンアサイン) - 実行モジュール([拡張子] *.sof )の作成

実機 [ 評価ボード: DE0-CV ]で設計した回路の機能確認

Quartus Prime Lite環境から 評価ボードへ実行モジュールをダウンロード

-設計結果は、実機で機能確認する (実習では、評価ボード: DE0-CVを使用)

(設計言語) VHDLで設計

設計回路の機能検証 -論理シミュレーションで機能検証 -テストベンチで実行

ModelSim

Quartus Prime Lite

Page 104: 論理回路設計 - 東京理科大学jte401/files/2019_presentation.pdf・Verilog-2005の拡張版で、機能的に上位互換となっている - Verilog AMS (Analog & Mixed Signal)

104

『名前表示』の実機用モジュール構成

図8-17

- 入力信号の雑音を削除 ⇒ チャタリング制御回路を挿入 - 表示(分周)周期を1s(=1Hz)に変更 (Sim時は、1usで実行)

RESET

システムクロック: CLK(50MHz)

KEY3

STOP

HEX4(6..0)

HEX0(6..0)

HEX5(6..0)

HEX2(6..0)

HEX1(6..0)

HEX3(6..0)

KEY0

分周 回路

チャタリング 制御回路

stop_chat

reset_chat

トップ回路:My_Name

実機用回路:top_my_name

分周クロックを1Hz(=1s/周期)に変更 Sim時は、1us/周期

Page 105: 論理回路設計 - 東京理科大学jte401/files/2019_presentation.pdf・Verilog-2005の拡張版で、機能的に上位互換となっている - Verilog AMS (Analog & Mixed Signal)

process begin A <= '1'; wait for STEP/2; A <= '0'; wait for STEP/2; end process; process begin B <= '1'; wait for 1540 ns; B <= '0'; wait for 50 ns; B <= '1'; wait for 10 ns; end process; process begin A_reset <= '1'; B_reset<='1'; wait for 370 ns; A_reset<='0'; wait for 30 ns; A_reset<='1'; wait for 3600 ns; B_reset<='0'; wait for 100 ns; B_reset<='1'; wait for 21500 ns; assert false severity failure; end process;

50 50

A

100 ns

105

テストベンチでの入力波形の記述方法(1)

1540 50 10 B

1600 ns

370 30 A_reset

3600 100 21500 B_reset

25600 ns [16x100 x16]

無限ループ 無限ループ

25600ns Sim後、強制終了

= 100 ns

図7-13

Page 106: 論理回路設計 - 東京理科大学jte401/files/2019_presentation.pdf・Verilog-2005の拡張版で、機能的に上位互換となっている - Verilog AMS (Analog & Mixed Signal)

process begin wait for 5.3 us; RESET <= '0'; wait for 2.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 67.5 us; assert false severity failure; end process;

106

テストベンチでの入力波形の記述方法(2)

120 us

5.3 us 2.5 us

120 us

38.5 us 2.0 us

67.5 us 3.8 us

8.2 us

process begin wait for 5.3 us; RESET <= '0'; wait for 2.5 us; RESET <= '1'; wait for 112.2 us; end process; process begin wait for 38.5 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 67.5 us ; assert false severity failure; end process;

[reset信号] [stop信号]

(同一process文で記述した場合) 図8-14

(異なるprocess文で記述した場合)

120 ns

Page 107: 論理回路設計 - 東京理科大学jte401/files/2019_presentation.pdf・Verilog-2005の拡張版で、機能的に上位互換となっている - Verilog AMS (Analog & Mixed Signal)

107

課題3:

『ストップウォッチ』

- 3/4日目 -

Page 108: 論理回路設計 - 東京理科大学jte401/files/2019_presentation.pdf・Verilog-2005の拡張版で、機能的に上位互換となっている - Verilog AMS (Analog & Mixed Signal)

108

課題3の実習内容と進め方

ModelSimのシミュレーションは、評価用回路で実行。 Quartus Prime Liteで実機用回路を仕上げ、動作確認。

[ ModelSim ] (テキスト: 150 ~ 162頁)

① 新規プロジェクト: stop_watch を作成する ② 基本モジュールで構成した評価用回路:parts_test を設計し、 テストベンチでシミュレーションを実行して、機能検証する ・分周回路:div_clk - Sim用の分周周期は、10us ・カウントアップ機能付き10進カウンタ: CNT10 ・制御信号発生回路: signal_gen

[Quartus Prime Lite] (テキスト: 163 ~ 168頁)

⑤ 新規プロジェクト: stop_watch を作成する ⑥ 実機用全体回路(図9-1)を設計する ⇐ 分周は、10msにする ⇒ コンパイルで設計データをエラーフリーにする ⑦ 端子割り当て後、コンパイルして実行モジュールを作成する ⑧ 実機で動作を確認する

Page 109: 論理回路設計 - 東京理科大学jte401/files/2019_presentation.pdf・Verilog-2005の拡張版で、機能的に上位互換となっている - Verilog AMS (Analog & Mixed Signal)

109

[基本機能]

- システムクロック(50MHz)→ 100Hzの基準周波数信号を分周後、 この周波数をカウントして、時間を計測する。 - 1/100秒桁、1/10秒桁、1秒桁、10秒桁、1分桁を7segLEDに表示する。 - スタートとリセット機能: ・リセット: 全てクリアし、カウントも停止する。 システム初期状態。 ・スタート: リセット状態から、カウントを開始する。 - 時計機能: スタートからリセットまでの時間を継続的に計測する。 - ストップ・ウォッチ機能: STOP信号により、その時間(STOP時間)を保持する。 次のSTOP信号で、STOP時間を時計時間に戻し、計測を再開する。 以後、これを繰り返す(STOP時間はスタートからの経過時間)。 - 表示切替機能: 時計時間とSTOP時間の切り替えを行う。

『ストップウォッチ』の開発仕様(1)

Page 110: 論理回路設計 - 東京理科大学jte401/files/2019_presentation.pdf・Verilog-2005の拡張版で、機能的に上位互換となっている - Verilog AMS (Analog & Mixed Signal)

110

[入力操作] - RESET信号(KEY0): スタートとリセット機能をトグルする。 - STOP信号(KEY1): 押下する毎に、ストップ・ウォッチ機能を実現する。 ・(STOP信号:停止) 押下時点での時計機能の計測時間を保持し、 表示モードが“ストップ・ウォッチ”であれば、その時間を表示する。 ・(次のSTOP信号:再開) STOP時間に時計時間を戻し、計測を再開する。 ・リセットされるまで以上を繰り返す。

- DISP信号(KEY3): 時計時間とSTOP時間の表示をトグルする。

[出力表示](図9-2参照)

- 6個の7segLED(HEX0~HEX5)に以下の内容を表示する ・HEX0: 1/100秒桁の数字 ・HEX1: 1/10秒桁の数字 ・HEX2: 1秒桁の数字 ・HEX3: 10秒桁の数字 ・HEX4: 1分桁の数字 ・HEX5: “クロック”モード; “C”を表示: 「時計時間」を表示する

“ストップ”モード: “S”を表示: 「STOP時間」を表示する。

『ストップウォッチ』の開発仕様(2)

Page 111: 論理回路設計 - 東京理科大学jte401/files/2019_presentation.pdf・Verilog-2005の拡張版で、機能的に上位互換となっている - Verilog AMS (Analog & Mixed Signal)

実機は、10ms/周期

チャタリング 制御回路

システムクロック:CLK

RESET

HEX0

HEX1

HEX2

HEX3

ストップウォッチの実機用全体回路: stop_watch

chat_rst

clk_10ms

clk_100ms

表示信号変換回路

分周回路

clk_01s

clk_10s

led1_sig

led2sig

led3_sig

clk_60s led4_sig

HEX1

HEX2

HEX3

HEX4

HEX5

HEX0

10進 カウンタ

10進 カウンタ

6進 カウンタ

10進 カウンタ

10進 カウンタ

STOP

DISP HEX4

HEX5

制御 信号 発生 回路

led0_sig

clk_100

dsp_sig

stp_sig

rst_sig

chat_stp

chat_dsp

ストップウォッチの実機用全体回路

111

図9-1

Sim時は、10us/周期

Page 112: 論理回路設計 - 東京理科大学jte401/files/2019_presentation.pdf・Verilog-2005の拡張版で、機能的に上位互換となっている - Verilog AMS (Analog & Mixed Signal)

112

▼ ▼

▼ 9 9

1 1

図9-1の回路全体をシミュレーションするのは、非効率

⇒ 評価用回路で、基本モジュールの機能を確認

⇒ div_clk、signal_gen、CNNT10で回路を構成

⇒ 図9-3の評価用回路:parts_testでシミュレーション実行 - 分周は、10ms→10us(1/1000)でシミュレーション

図9-3

システムクロック:50MHz

『ストップウォッチ』の評価用回路

評価用回路: parts_test

clk_10ms

[制御信号発生回路] signal_gen

div_clk CLK

clk

reset

stop

disp

reset

stop

disp

CLK

RST

STP

DSP

div_clk

RST

STP

DSP

rst_sig

stp_sig

dsp_sig

count(3..0)

up_sig

count(3..0)

up_sig

[分周回路] div_10ms [10進カウンタ] CNT10

Page 113: 論理回路設計 - 東京理科大学jte401/files/2019_presentation.pdf・Verilog-2005の拡張版で、機能的に上位互換となっている - Verilog AMS (Analog & Mixed Signal)

113

評価用回路のSim結果

図9-13

[Sim結果の確認] - 各入力信号は、指定通りのタイミングで(幅も含めて)、入力されている - 入力信号:reset、stop、dispにより、正しく制御されている - 出力:countには、正しく制御されて、c_counterかs_counterが出力されている - カウントアップ信号:up_sigには、正しい周期で所望の波形が出力されている 等

⇒ 個々のモジュールが正しく動作 ⇒ 実機用回路を設計可能

Page 114: 論理回路設計 - 東京理科大学jte401/files/2019_presentation.pdf・Verilog-2005の拡張版で、機能的に上位互換となっている - Verilog AMS (Analog & Mixed Signal)

114

process begin wait for 8.0 us; reset <= '0'; wait for 2.0 us; reset <= '1'; wait for 18.0 us; reset <= '0'; wait for 1.5 us; reset <= '1'; wait for 5.8 us; assert false severity failure; end process;

図9-5(155頁)の説明:ミスの修正

(入力波形) clk: システムクロック:50MHz = 20ns

reset: 8.0us(幅:2.0us)、20.0us(幅:1.5us)で入力 (押しボタンスイッチを押下) stop: 2.5s(幅:1.0us)、11.0us(幅:1.5us)、17.5us(幅:1.0us)で入力(押しボタンスイッチを押下) disp: 5.0us(幅:1.0us)、21.0us(幅:1.5us)、30.5us(幅:1.0us)で入力(押しボタンスイッチを押下)

2.5 us です

8.0 + 2.0 + 18.0 = 28.0 us

28.0 us です [←押下する時間を示している]

2us 18us

⇒ stop と disp も同様に考えて、(図9-6と一致するために)記述してください

Page 115: 論理回路設計 - 東京理科大学jte401/files/2019_presentation.pdf・Verilog-2005の拡張版で、機能的に上位互換となっている - Verilog AMS (Analog & Mixed Signal)

process (clk, reset) begin if (reset'event and reset='0') then rst_sig <= NOT(rst_sig); end if; end process; process (clk, stop) begin end process;

115

resetと同様の方法でstp_sig (=STP)を発生するが、条件として、 rst_sig=’1’の時は、stp_sig <=’0’; となるように設計する。

図9-4(154頁)の説明

rst_sig=‘1’なので、 stp_sig<=‘0’, dsp_sig<=‘0’

dsp_sig<=‘1’のとき、rst_sig=‘1’と なったので、dsp_sig<=‘0’と変化

図9-6

Page 116: 論理回路設計 - 東京理科大学jte401/files/2019_presentation.pdf・Verilog-2005の拡張版で、機能的に上位互換となっている - Verilog AMS (Analog & Mixed Signal)

116

プロジェクトメンバーと出力表示例 〇 Quartus Prime Lite上のプロジェクトメンバー: 8モジュール

実機用の最上位回路。 “Set as Top-Level Entity” で設定して、コンパイルする。

表示(分周)周期: 10msに設定

入力信号の雑音を消去。 既存のモジュールを利用。

〇 表示例

10進を6進に変更。

既存モジュール(4ビット 加算器で設計)を利用。

既存モジュール:Bit7segLED を修正して利用。

- 初期状態 or リセット操作直後

- “時計時間”モードの表示: 1分39秒48

- “STOP時間”モードの表示: (停止時間)1分42秒67

Page 117: 論理回路設計 - 東京理科大学jte401/files/2019_presentation.pdf・Verilog-2005の拡張版で、機能的に上位互換となっている - Verilog AMS (Analog & Mixed Signal)

論理回路設計 - 実習:VHDLによるデジタル回路設計 –

レポート課題の説明

東京理科大学 基礎工学部電子応用工学科 (非常勤講師) 藤岡 督也

【2019年度前期集中講義】

117

Page 118: 論理回路設計 - 東京理科大学jte401/files/2019_presentation.pdf・Verilog-2005の拡張版で、機能的に上位互換となっている - Verilog AMS (Analog & Mixed Signal)

118

レポート課題

【課題】 ストップ機能、カウントアップ信号付 同期式(立下りエッジ)12進カウンタの設計

- 次ページの仕様に従って、同期式12進カウンターを設計する - 全てVHDLで設計する - テストベンチを作成し、 シミュレーションを実行する

【提出内容】

・ 2019年レポート課題.pdf(サイトよりダウンロード)を印刷し、 必要事項を記入して、表紙として添付 ・ 設計ソースの印刷 (A4、1~2枚) ・ シミュレーション結果の印刷(A4、1枚)

【提出期限】 7月11日(木) 15:00まで 【提出場所】 講義棟レポート回収箱 11番

clk_in

stop

count(3..0)

up_sig CNT12

4 reset

【2019年度前期集中講義】

Page 119: 論理回路設計 - 東京理科大学jte401/files/2019_presentation.pdf・Verilog-2005の拡張版で、機能的に上位互換となっている - Verilog AMS (Analog & Mixed Signal)

119

【レポート課題の設計仕様】

- 入力信号:clk_in [周期:1us、Duty:50%]の立下りエッジをカウントして、 そのカウント数を出力信号:count (3..0)に出力する。 カウント数は、(初期値)1~12をトグルする

⇒ countは、1→12を繰り返す [12進カウンタ] - 周期:12のカウントアップ信号:up_sig を出力する。

⇒ count:1~11のとき、[状態値]’0’、 count:12のとき、[状態値]’1’ - 初期化信号:reset = ‘1’のとき、count(3..0)を”0001”に初期化する。

⇒ 初期化動作は、clk_inの立下りエッジに同期させる。 - 内部の停止信号:stp_sig =‘1’のとき、カウントを停止し、countの値を 保持する。 stp_sigは、入力信号:stopの立下りエッジで ‘0’ と ’1’ を トグルする。 なお、reset=‘1’のときは、リセット信号を優先する。

⇒ ストップ動作は、clk_inの立下りエッジに同期させる。

【2019年度前期集中講義】

Page 120: 論理回路設計 - 東京理科大学jte401/files/2019_presentation.pdf・Verilog-2005の拡張版で、機能的に上位互換となっている - Verilog AMS (Analog & Mixed Signal)

120

【入出力信号の仕様】 1 us

▼ ▼

▼ 11 11

1 1

1 ~ 11 12 1 ~ 11 12 1 ~

(状態値)’1’でリセット

stop

stp_sig

01 02 03 10 11 12 01 02 03

【2019年度前期集中講義】

1.clk_in: in std_logic; - 1us/周期、Duty:50%で、“1/0”をトグルする

2.reset: in std_logic; - 初期値は、’0’ - (状態値=)‘1’のとき、countの値を初期化する - 動作は、clk_inの立下りエッジに同期させる

3.stop: in std_logic; ⇒ stp_sig: stp_logic; - 初期値: stopは’1’、stp_sigは’0’ - 内部信号:stp_sig は、stopの立下りエッジを センスして、立下りエッジの度に、状態値を 反転して(’1’⇔’0’)、生成する - stp_sig =‘1’のとき、countの値を保持する - 動作は、clk_inの立下りエッジに同期させる - リセット動作が優先する

4.count: out std_logic_vector(3 downto 0); - 初期値は、”0001” - clk_inの立下りエッジをカウントする - 値は、1 ~ 12 をトグルする

5.up_sig: out std_logic; - count: 1~11 → 0、 count: 12 → 1 を出力

(注) テキスト135頁を参照 [STPをstp_sigに読み替える]

Page 121: 論理回路設計 - 東京理科大学jte401/files/2019_presentation.pdf・Verilog-2005の拡張版で、機能的に上位互換となっている - Verilog AMS (Analog & Mixed Signal)

121

【テストベンチの記述①】

[テストベンチの入力記述] 1us

▼ ▼

clk_in

stop

count

up_sig CNT12

4 reset

2.8 1 3.9 1.4

5.7 1 4.8 1 12.5

25 us

(入力信号の変化)

・clk_in:[初期値]‘1’、500 nsで”1/0”をトグル ⇒ 周期: 1 us

・reset :[初期値]‘1’、stop:[初期値] ‘0’ ⇐ 相対記述した場合

reset: 2.8 us ( 2.8 us)→‘1’、1.0 us後( 3.8 us)→‘0’、 stop: 1.9 us後( 5.7 us)→‘0’、1.0 us後( 6.7 us)→‘1’、 reset: 1.0 us後( 7.7 us)→‘1’、1.4 us後( 9.1 us)→‘0’、 stop: 2.4 us後(11.5 us)→‘0’、1.0 us後(12.5 us)→‘1’、 → 12.5 us後(25.0 us)→ 強制終了 [ assert false severity failure ]

⇒ シミュレーション時間は、25 us 【2019年度前期集中講義】

Page 122: 論理回路設計 - 東京理科大学jte401/files/2019_presentation.pdf・Verilog-2005の拡張版で、機能的に上位互換となっている - Verilog AMS (Analog & Mixed Signal)

process begin clk_in <= '1'; wait for 500 ns; clk_in <= '0'; wait for 500 ns; end process; process begin wait for 2.8 us; reset <= '1'; wait for 1.0 us; reset <= '0'; wait for 3.9 us; reset <= '1'; wait for 1.4 us; reset <= '0'; wait for 15.9 us; end process; process begin wait for 5.7 us; stop <= '0'; wait for 1.0 us; stop <= '1'; wait for 4.8 us; stop <= '0'; wait for 1.0 us; stop <= '1'; wait for 12.5 us; assert false severity failure; end process;

122

【テストベンチの記述②】

process begin clk_in <= '1'; wait for 500 ns; clk_in <= '0'; wait for 500 ns; end process; process begin wait for 2.8 us; reset <= '1'; wait for 1.0 us; reset <= '0'; wait for 1.9 us; stop <= '0'; wait for 1.0 us; stop <= '1'; wait for 1.0 us; reset <= '1'; wait for 1.4 us; reset <= '0'; wait for 2.4 us; stop <= '0'; wait for 1.0 us; stop <= '1'; wait for 12.5 us; assert false severity failure; end process;

[resetとstopを同時に記述] [resetとstopを分けて記述]

25usに合わせる

resetとstopで process文を分ける

【2019年度前期集中講義】

Page 123: 論理回路設計 - 東京理科大学jte401/files/2019_presentation.pdf・Verilog-2005の拡張版で、機能的に上位互換となっている - Verilog AMS (Analog & Mixed Signal)

123

【シミュレーション結果】 (立下り:全体)

(立下り:拡大)

【2019年度前期集中講義】

clk_inの立下りで 初期化されている

Stp_sig=‘1’で、reset=‘1’となったとき、 clk_inの立下りで初期化されている

Page 124: 論理回路設計 - 東京理科大学jte401/files/2019_presentation.pdf・Verilog-2005の拡張版で、機能的に上位互換となっている - Verilog AMS (Analog & Mixed Signal)

124

【シミュレーション結果】(参考) (立上り:全体)

(立上り:拡大)

【2019年度前期集中講義】