論理回路設計
|
|
|
- ゆめじ にかどり
- 6 years ago
- Views:
Transcription
1 2016 年度前期集中講義 論理回路設計 - 実習 :VHDL によるデジタル回路設計 - 講座の目的実習を通して 専門分野の問題発見 解決の能力を修得する - LSI 設計の基礎知識を得る - 言語 :VHDLによる設計手法を実習する - EDAツールの操作を経験する - FPGAを搭載した評価ボードで動作を確認する 東京理科大学 基礎工学部電子応用工学科 ( 非常勤講師 ) 藤岡督也 1 /100
2 目次 1. 実習環境の説明 2. 課題 1: 4 ビット加算器 - 参考資料 EDA ツールの付加情報 - VHDL の概要 - テストベンチの記述 3. 課題 2: 自分の名前を表示しよう 4. 課題 3: チャタリング防止回路 5. 課題 4: 1 分時計 参考資料 2
3 集中講義の日程 1 日目 2 日目 3 日目 4 日目 6 月 18 日 ( 土 ) 2~5 時限 6 月 25 日 ( 土 ) 2~5 時限 7 月 02 日 ( 土 ) 2~5 時限 7 月 09 日 ( 土 ) 3~5 時限 課題 1 加算器 - Quartus Ⅱ の操作と設計手順の習得 - 回路図入力 - シミュレーション - ピンアサイン - 実機での動作確認 課題 1 加算器 - VHDL による設計 実機での動作確認 - VHDL 文法の習得 - 回路図設計との比較 - テストベンチ & 追加仕様 課題 2 名前の表示 課題 3 チャタリンク 防止回路 課題 4 1 分時計 - VHDL 文法の習得 - 設計の実践 & 動作確認 - 言語設計の理解 ( 実習で使用する環境 ) [EDA ツール ] Quartus Ⅱ(Altera 社 ) ModelSim (Mentor 社 : VHDL シミュレータ ) [ ボード ] DE0 (Terasic Technologies 社 ) : (FPGA) Cyclone Ⅲ(Altera 社 ) 搭載 3
4 実習の内容 各課題を設計して 実機を使って動作を確認する 1. 課題を理解し 設計仕様にまとめる 入力 出力 機能 性能を決める 設計手法を選択する : 回路図入力 / 言語設計 / 両者の混在等 検証内容 ( シミュレーション内容等 ) を決める 2. 選択した設計手法で 回路設計を行う QuartusⅡ: 回路図入力 /VHDL 設計 / 両者の混在 ModelSim : VHDL 設計 3. シミュレーションで 機能確認を行う VHDL シミュレータ :ModelSim を使う 波形入力 or テストベンチを使って実行する 4. 評価ボード :DE0 を使って 実機確認を行う Quartus Ⅱ で実行モジュールを作成する シミュレーション回路と実機評価回路は 異なる場合がある 4
5 1. 実習環境の説明 5
6 実習の設計フロー 仕様に基づき 回路を設計する デザインエントリ コンパイル 記述をチャックして 論理合成する 端子割り当て コンパイル - QuartusⅡ - QuartusⅡ - ModelSim デザインエントリ コンパイル シミュレーション FPGA の接続データ ( 実行モジュール ) を作成する 仕様に基づき 回路を設計する 回路の動作を確認する ダウンロード 実機評価 - DE0 実行モジュールを PC から FPGA に書き込む FPGA 上で動作確認をする 6
7 EDA ツール 設計エントリー : QuartusⅡ - 回路図入力 VHDL 入力 論理合成 (Cyclone 用 ) - 実行モジュールの作成 評価ボード (DE0) へダウンロード 7
8 EDA ツール VHDL シミュレータ : ModelSim - VHDL 入力 機能 / 論理シミュレーション - 設計確認後 論理合成ツール (Design Compiler 等 ) へ 8
9 USB 端子 評価ボード :DE0 の外観 電源スイッチ FPGA (Altera) 7seg LED スライト スイッチ ホ タン スイッチ 9
10 1. 搭載 FPGA: (Family) Cyclone Ⅲ (name) EP3C16F484C6 [Package] 評価ボード :DE0 の概要 FBGA (Fine pitch Ball Grid Array) [Pin count] 484 [speed grade] 6 2. 入力機能 1) ボタンスイッチ : 3 個 (Button0~2) a 接点スイッチ [ b 接点スイッチとの違い ] 2) スライドスイッチ :10 個 (SW0~SW9) 上方にスライド (logic 1 ) 下方にスライド (logic 0 ) 3. 出力機能 - 7seg LED: 4 個 (HEX0~3) アノードコモン型 [ カソードコモン型との違い ] (- 液晶パネルを搭載することも可能 ) 4. 実行モジュールのダウンロード - USB ケーブルを接続して Quartus Ⅱ から実行する [ 詳細は 授業 HP 上のマニュアル ( 英文 ) 参照 ] 10
11 評価ボード :DE0 のブロック図 USB 端子 スライドスイッチ FPGA 7seg LED ボタンスイッチ 11
12 DE0 のボタンスイッチの動作 a 接点スイッチ A RST B push push 通常の入力信号 : BS 反転入力信号 : not BS a 接点 : スイッチを押すと接点が繋がり電流が流れる b 接点 : スイッチを押すと接点が離れて電流が止まる 12
13 DE0 のスライドスイッチの動作 = (PIN 番号 ) D2 E4 E3 H7 J7 G5 G4 H6 H5 J6 Logic 1 (SW 番号 ) SW9 SW8 SW7 SW6 SW5 SW4 SW3 SW2 SW1 SW0 Logic 0 上方にスライド 下方にスライド 通常の入力信号 : SS 反転入力信号 : not SS 13
14 DE0 の 7seg LED の動作 - アノードコモン型 - 7seg LEDの動作タイプ HEX0 [ 参考 ] LED0[7] LED0[6] LED0[5] LED0[4] LED0[3] LED0[2] LED0[1] LED0[0] E11 F11 H12 H13 G12 F12 F13 D13 a b c d e f g dp e f d g a c b dp ( ピン名 ) (PIN 番号 ) 端子割り当て表 ピンと PAD の整合 14
15 端子割り当て - FPGA チップはパッケージングされている PAD は PIN に接続されている - パッケージはボード上に実装されている ボード上部品と接続されている (PAD=)PIN から先の接続は変更できない - 入力信号は 決まった PIN から入力する - 出力信号は 決まった PIN へ出力する FPGA チップ FPGA パッケージ 設計回路 FPGA FPGA 搭載ボード 15
16 ピン割り当て表 加算器の例 [ テキストの表 1-2 ピン割り当て表 (74 頁 ) 参照 ] 設計端子名 入出力 FPGAピン番号 備考 A Input PIN_H2 BUTTON0 B Input PIN_F1 BUTTON2 clk Input PIN_G21 クロック入力 EQUAL Input PIN_J6 SW0 reset Input PIN_G3 BUTTON1 LED0[7] Output PIN_E11 HEX0_a LED0[6] Output PIN_F11 HEX0_b LED0[5] Output PIN_H12 HEX0_c LED0[4] Output PIN_H13 HEX0_d LED0[3] Output PIN_G12 HEX0_e LED0[2] Output PIN_F12 HEX0_f LED0[1] Output PIN_F13 HEX0_g LED0[0] Output PIN_D13 HEX0_dp LED1[7] Output PIN_A13 HEX1_a LED1[6] Output PIN_B13 HEX2_b 16
17 2. 課題 1: 4 ビット加算器 - 第 1 日目 & 第 2 日目 - 17
18 4 ビット加算器 の設計回路 [ 課題 ] と全体回路 - 全体回路は 設計回路と周辺回路から構成される - 周辺回路は 回路図シンボルと peripheral_de0.vhd で準備されている - 設計回路と周辺回路を使って 全体回路を設計する -= 被加数 加数 キー入力検出回路 キー入力検出回路 キー入力検出回路 キー入力保持回路 キー入力保持回路 キー入力保持回路 加算器 設計回路 信号選択 & LED 表示制御 LED3 LED2 LED1 LED0 - クリア 周辺回路 全体回路 FPGA へダウンロード - クロック クロック分周回路 図 1-56 周辺回路ブロック図 18
19 4 ビット加算器 の開発仕様 評価ボード :DE0 を使って 4 ビット加算器を設計する 1. 入力データ : ホ タンスイッチを使って 押下回数を入力数とする Button0 : 被加数の入力 HEX0 へ hex 表示 0~F をトグルする Button2 : 加数の入力 HEX3 へ hex 表示 0~F をトグルする Button1 : リセッの入力 button0 と button2 を同時にリセットする 2. 出力データ : 加算結果を 7segLED に表示する 加算結果は hex 表とする ( 00~1E; 4 ヒ ット加算 5 ヒ ット ) HEX0 : 加算結果の下位桁を hex 表示する HEX1 : 加算結果の上位桁を hex 表示する HEX2 : = を表示する HEX3 : = を表示する 3. モード切替 : スライト スイッチを使って 入力 / 出力表示を切り替える SW0 : 0( 入力モード ): 被加数と加数を表示する 1( 出力モード ): 加算結果を表示する 19
20 実習の進め方 第 1 日目 課題を回路図で設計して 実機 (DE0) で評価する - QuartusⅡ 上で 課題を回路図で入力して設計する ( テキスト : 5 ~ 42 頁 ) - ModelSim 上で シミュレーションして 設計内容を確認する ( テキスト : 43 ~ 65 頁 ) - Quartus Ⅱ 上で 実機用の回路図に編集して 実行モジュールを作成する ( テキスト : 66 ~ 72 頁 ) - 実行モジュール (*.sof) を DE0 にダウンロードして 動作確認を行う ( テキスト : 73 ~ 76 頁 ) 第 2 日目 課題を VHDL で再設計して 実機 (DE0) で評価する - QuartusⅡ 上で 課題を VHDL で再設計する ( テキスト : 77 ~ 97 頁 ) - ModelSim 上で シミュレーションして 設計内容を確認する ( テキスト : 98 ~ 99 頁 ) - Quartus Ⅱ 上で 実行モシ ュールを作成し 動作確認する ( テキスト : 102~103 頁 ) 可能な限り トップ回路も VHDL で設計する : 記述例は テキスト : 100 ~ 101 頁参照 - 早く終わった学生は 次に進まず 追加仕様に挑戦する ( テキスト : 104 頁 ) ( 追加仕様例 ) 入出力の 16 進表示を 10 進表示に変更する peripheral_de0.vhd を理解し 何処を変更するか? 16 進表示 10 進表示に変更するアルゴリズムは? ビット拡張を行う 加数 / 被加数を (7 ビット ) まで 結果を (8 ビット ) まで 20
21 4 ビット加算器 の設計内容 - 設計で用いる設計記述の組み合わせ - シミュレーションによる検証 実機による検証 コンパイル 実行モジュール ダウンロード 動作確認 QuartusⅡ 波形エディタテストベンチ + [1 日目 ] [2 日目 ] 回路図記述 ( 変換 ) (VHDL 記述 ) or VHDL 記述 VHDL 記述 加算器のトップ回路 4 ビット演算部 回路図記述 ( 変換 ) (VHDL 記述 ) VHDL 記述 ( 周辺回路 ) Peripheral_DE0 シミュレーションパタンの作成 (VHDL 記述 ) (VHDL 記述 ) [ 図 2-33~35] VHDL 記述 (VHDL 記述 ) Conversion_ascii (VHDL 記述 ) (VHDL 記述 ) (VHDL 記述 ) 21
22 4 ビット加算器 の全体回路図 Sim 用 -VHDL 記述は図 2-33~ 図 2-35 DE0 用 - トップの記述は VHDL 記述でも OK 22
23 追加仕様後の開発仕様 Ⅰ. 開発仕様はそのままで 全モジュールを VHDL 記述にする Ⅱ.LED の 16 進表示を 10 進表示に変更する 1. 入力データ : HEX0,1 ( 被加数 ) HEX2,3( 加数 ) 2. 出力データ : HEX0,1( 加算結果 ) HEX2,3( = ) Ⅲ. ビット拡張を行い 2 桁 (0~99) 加算器にする 1. 入力データ : ホ タンスイッチを使って 押下回数を入力数とする Button0 : 被加数の入力 HEX0~1 へ 10 進表示 0~99 をトグルする Button2 : 加数の入力 HEX2~3 へ 10 進表示 0~99 をトグルする Button1 : リセッの入力 button0 と button2 を同時にリセットする 2. 出力データ : 加算結果を 7segLED に 10 進 ( 0~198) 表示する HEX0~2 : 加算結果を10 進表示する HEX3 : = を表示する 3. モード切替 : スライト スイッチを使って 入力 / 出力表示を切り替える SW0 : 0( 入力モード ): 被加数と加数を表示する 1( 出力モード ): 加算結果を表示する 23
24 全体回路のモジュール構成 adder4bit_top: トップモジュール inst: peripheral_de0: 周辺回路のモジュール inst2: adder_4bit: 4bit 加算器 inst: full_adder inst1:full_adder inst2:full_adder inst3:half_adder inst3: conversion_ascii: LED0 を ascii に変換 inst4: conversion_ascii: LED1 を ascii に変換 inst5: conversion_ascii: LED2 を ascii に変換 inst6: conversion_ascii: LED3 を ascii に変換 24
25 peripheral_de0 のモジュール構成 peripheral_de0 : 周辺回路 ( 入出力部分等 ) のモジュール peripheral1: peripheral ; 入力信号周りの処理 peri1: msec ; chattering 信号の生成 (2M 2=4M 周期 = 約 80ms) peri2: chatter ; 入力 reset 信号のチャタリング防止 peri3: chatter ; 入力 A 信号のチャタリング防止 peri4: chatter ; 入力 B 信号のチャタリング防止 peri5: chatter ; 入力 equal 信号のチャタリング防止 count1: count : 入力 A 信号のカウント (4bit:0~F) count2: count : 入力 B 信号のカウント (4bit:0~F) selec1: selec : 表示信号を選択し LED 用信号の生成 decoder0: decoder : HEX0 の入力信号へのデコード decoder1: decoder : HEX1 の入力信号へのデコード decoder2: decoder : HEX2 の入力信号へのデコード decoder3: decoder : HEX3 の入力信号へのデコード 25
26 peripheral_de0 の回路図 - QurartusⅡ の RTL Viewer の Dump shot [ Tools Netlist Viewers RTL viewer ] 26
27 参考資料 EDA ツールの付加情報 27
28 QuartusⅡ のプロジェクト ディレクトリ file open 後のポップアップ画面 プロジェクト [ 4bit_vhdl ] をオープンした時のディレクトリ下のファイル一覧 ファイル名と更新日時が正しいかを常にチェックする ファイル名 ( 拡張子以外の部分 ) は 異なる名前にする 古い版を保存したい場合は *_old1.vhd のようにする 複雑になった場合は 新しいプロジェクトを作って 別に管理する 28
29 QuartusⅡ のプロジェクトメンバー 現在のプロジェクトメンバーの一覧 リストされているファイルを正しく管理する 同名のモジュール名は避ける 変更する場合は 次頁のように行う 29
30 QuartusⅡ のプロジェクトメンバーの変更 1. オープンしているファイルをメンバーに追加する : Project Add current file to Project 2. プロジェクトディレクトリ下のファイルを使って変更する Project Add/Remove files to Project 30
31 QuartusⅡ のプロジェクトへのファイルの持ち込み プロジェクトをオープンした状態で File New を選択すると New 画面がポップアップされるので VHDL File を選択する VHDL File 選択後 編集画面が表示されるので 持ち込みたい VHDL 記述を paste し Save As で保存する 31
32 ModelSim のプロジェクト ディレクトリ プロジェクト ディレクトリ下のファイル一覧 ( プロジェクトメンバーの候補 ) 32
33 ModelSim のプロジェクト メンバー プロジェクト メンバーの一覧 - トップモジュール以下の全モジュール ( セル ) がリストされている 33
34 ModelSim のプロジェクト メンバーの変更 Project 画面内で右クリック - Add to Project を使って 変更する 34
35 ModelSim のプロジェクトへのファイルの持ち込み File Source VHDL の操作で下記の編集ウィンドウが開くので vhdl 記述を paste して 持ち込み Save As で保存する 35
36 ModelSim: 入力信号の波形入力 4bit 加算器の入力波形の概要 ( テキスト pp.58~) CK ( クロックを指定 ) A 0 1 B reset Equal 重要 0 1 変化や reset 信号により シミュレション結果に注意が必要 CLK: 周期 20us (01:duty50%) 10240ms A : 周期 320ms (01:duty50%) 10240ms 16 x 2 回 B : 周期 20ms (01:duty50%) 10240ms 16 x16 x2 回 Resetの指定例 : 0ms:1 1000ms:0 1200ms:1 Equalの指定例 : 0ms:0 5120ms:1 注意 ResetやEqualの入力方法は テキストpp.130を見て下さい 36
37 ModelSim: 入力信号の保存 File Save Format で下記画面をポップアップして プロジェクト ディレクト下のフェイル名 : wave.do に save する ( wave は 任意で OK) 37
38 ModelSim: 保存した入力信号のロード File Load Macro file をクリックすると 右記画面がポップアップするので プロジェクト ディレクト下に Save したフェイル名 (wave.do) を選択して load する 38
39 VHDL の概要 39
40 VHDL の歴史 - VHDL: VHSIC Hardware Description Language の略称 年米国国防総省 ( 国防高等研究計画局 :DARPA(Defense Advanced Research Projects Agency) の VHSIC 委員会が提唱 VHSIC: Very High Speed Integrated circuit IC の大規模 / 高機能化に伴った 明確に仕様を記述する仕様記述言語 年 Version 7.2 リリース IEEE の標準化作業スタート VASG (VHDL Analysis & Standardization Group) 委員会 年 LRM( 言語仕様書 ; Language Reference Manual ) 作成 IEEE Std として承認 年 IEEE 1164 を採用 : 9 値の std_logic - その後 IEEE IEEE IEEE IEEE ( 最新版 ) 40
41 ハードウェア記述言語 : HDL - Hardware Description Language; HDL - デジタル回路 特に集積回路を設計するためのコンピュータ言語 - ハードウェアの動作仕様を記述するための言語で 電子回路の経時的動作と空間的構造を表現し 構文 (syntax) や意味 (semantics) は ハードウェアの基本的属性である時間や並行性を記述 - 処理を検証するテストベンチ記述ができ シミュレーションが可能 - 論理合成が可能 - Verilog HDL と VHDL が 主要な言語 (IEEEで標準化を推進) RTL (Register Transfer Level) とは? レジスタ間の転送関係を表現したレベル 機能を 代入 if case 等で表現したもの クロックを意識した記述 論理合成 ゲートレベルとは? ゲート回路やフリップフロップ等の接続関係を表現したもの ( 素子と等電位点の列挙 ) ネットリストとも言う 41
42 VHDL の基本構造 1 論理合成可能 VHDL の文法 回路記述 テストベンチ シミュレーション可能 ライブラリ記述 論理合成不可 回路記述 : 論理合成に適した記述をする 回路の種類ごとに適した記述スタイルがある テストベンチ : 文法を満たしていれば どんな記述でもよい 記述のテクニックを駆使できる 42
43 VHDL の基本構造 2 library 複数のライブラリ use entity.1つ port architecture architecture process B process A 一つの architectureに複数のprocessを書ける architecture process C 一つの entity に複数の architecture を書ける 一つの entity に複数の architecture を書ける一つの architecture に複数の process を書ける 43
44 VHDL の基本構造 3 Library Entity port Architecture この部分の信号割当ては process 文の外なので SLS もイベントもない コンカレント ( 非同期, 即時代入, 即時信号割り当て ) 実行される - <= 非同期で即時, コンカレント信号代入, - 条件文 when-else, with-select(others 文で全条件記述 ) - 反復文 generate Process () がない場合は,process 文内の処理を永遠に継続 Process ( センシティビティー リスト信号 ;:SLS) - <= SLS のイベントに同期し同時に信号代入 - := SLS のイベントに同期しシーケンシャルに信号代入 (:= の左辺は,variable 文で定義した変数 ) - 条件文 - case 文, if 文, if-then-elsif 文 制御反復文 loop for loop while loop wait for wait on wait until 合成用の記述に使用するもの ( 回路の合成が可能な記述 ) シミュレーション テストベクタ記述に使用するもの ( 合成困難, 不能 ) 44
45 VHDL の基本構造 4 - 階層化記述 - Library Entity Architecture 動作記述構造記述 Library Entity port Architecture 動作記述構造記述 Library Entity port Architecture 動作記述構造記述 Configuration テストベンチ設計回路のトップ階層設計回路の下位階層 45
46 全体構造と記述例 パッケージ の指定 entity エンティティ名 is end エンティティ名 ; architecture アーキテクチャ名 of エンティティ名 bigin 入出力ポート宣言 signal 他の宣言 VHDL 本体 - 動作 機能の記述 is -- 半加算器の記述例 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; [ 図 2-2] 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; end アーキテクチャ名 ; 46
47 VHDL 記述 & コンパイル時の注意点 1. 規約どおりに記述する - 構文規則を覚えて キーワードとパラメータを正確に記述する 代入文の右辺と左辺でデータイプは同じでなければならない signal s1: std_logic_vector(2 downto 0); signal n1: integer range 0 to; s1 <= 0 s1 <= 000 Error (10517): VHDL type mismatch error at half_adder_bh.vhd(23): std_logic type does not match integer literal n1 <= s1 n1 <= CONV_INTEGER(s1); サブプログラムの戻り値も同じデータタイプでなければならない std_logic の論理値は 9 値である 0 1 X L H W Z U(uninitialize) -(don t care) - ) や ; の数を間違えない () は必ず対になっている ; は 必要な場所と必要ない場所を正確に把握する - 未定義の変数は使えない ( 必ず事前定義 ) 2. コンパル時のエラーは しっかり読む - 必ずしも 的確な記述間違いをメッセージしてくれる訳ではない 47
48 型の変換 の関数 関数名 std_logic_1164パッケージ内 To_stdlogicvector(A) To_bitvector(A) To_stdlogic(A) To_bit(A) std_logic_arith パッケージ内 CONV_std_logic_vector(A ビット幅) CONV_INTEGER(A) 機能内容 bit_vector から std_logic_vector への変換 std_logic_vector から bit_vector への変換 bit から std_logic への変換 std_logic から bit への変換 integer unsigned signed から std_logic_vector への変換 unsigned signed から integer への変換 std_logic_unsigned パッケージ内 CONV_INTEGER(A) std_logic_vector から integer への変換 48
49 半加算器の回路図と VHDL 記述 VHDL 記述 ( 図 2-8 参照 ) O 回路図入力 ( 図 2-1 参照 ) コンパイル後 ( 図 2-15 参照 [ 等価 ]) O -- 半加算器の記述例 [ 図 2-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; 機能の動作記述 A B S CO 機能のゲート記述 architecture RTL of half_adder_bh is signal AB : std_logic_vector (1 downto 0); begin AB <= A & B; process(a,b) begin if(ab= 00 ) then S<='0'; CO<='0'; elsif(ab="01") then S<='1'; CO<='0'; elsif(ab="10") then S<='1'; CO<='0'; else S<='1'; CO<='1'; end if; end process; end RTL; 49
50 D-FF の VHDL の記述 -- D-FF1 library ieee; use ieee.std_logic_1164.all; entity D_FF1 is port( R,D,CLK : in std_logic; Q,QB : out std_logic); end D_FF1; ライフ ラリ記述 エンティティ記述 R CLK D Q QB 無し 0 変化無し 変化無し 1 無し 1 変化無し 変化無し architecture RTL of D_FF1 is signal NODE : std_logic; begin Q <= NODE; QB <= not NODE; process(r,clk) begin アーキテクチャ if (R = '0') then NODE <= '0'; elsif (CLK 'event and CLK = '1') then NODE <= D; end if; end process; end RTL; 50
51 階層化記述例 library IEEE; use IEEE.std_logic_1164.all; A B X Y L Z C コンポネントインスタンス entity X is port (A, B : in std_logic; C : out std_logic); end X; architecture RTL of X is component Y port( A : in std_logic; D : out std_logic); end component; component Z port( B, D : in std_logic; コンホ ーネント宣言 ( 定義 ) コンホ ーネント宣言 ( 定義 ) C : out std_logic); end component; signal L : std_logic; begin U0 : Y port map ( A => A, D => L ); U1 : Z port map ( D => L, B => B, C=> C ); end RTL; 51
52 全加算器の回路図と VHDL 記述 [ 図 2-16] [ 図 2-17] 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; ライブラリ記述 エンティティ記述 コンポーネント宣言 アーキテクチャ コンポーネント呼び出し ( コンホ ーネント インスタンス ) 52
53 case 文 library IEEE; use IEEE.std_logic_1164.all; entity M_BEHAVIOR is port (SELS : in bit_vector(0 to 1); A,B,C,D : in bit; M : out bit); end; architecture DSELS of M_BEHAVIOR is begin 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; end DSELS; A B C D SELS M 53
54 if then else/elsif 文 library IEEE; use IEEE.std_logic_1164.all; entity N_BEHAVIOR is port(sels: in bit_vector(0 to 1); A,B,C,D: in bit; M: out bit); end; architecture DSELS of N_BEHAVIOR is begin process(sels,a,b,c,d) begin if (SELS = 00 ) then M <= A; if (SELS = "01") then M <= B; if (SELS = "10") then M <= C; else M <= D; end if; end if; end if; end process; end DSELS; A B C D SELS M library IEEE; use IEEE.std_logic_1164.all; entity S_BEHAVIOR is port(sels: in bit_vector(0 to 1); A,B,C,D: in bit; M: out bit); end; architecture DSELS of S_BEHAVIOR is begin 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; end DSELS; 54
55 when else 文 entity J_BEHAVIOR is port (A,B,SEL : in boolean; M : out boolean); end; architecture DSEL of J_BEHAVIOR is begin M <= A when SEL else B; end DSEL; A B SEL M entity K_BEHAVIOR is port (SELS : in bit_vector(0 to 1); A,B,C,D : in bit; M : out bit); end; architecture DSELS of K_BEHAVIOR is begin M <= A when (SELS="00") else B when (SELS="01") else A B C D M end DSELS; C when (SELS="10") else D ; SELS 55
56 library IEEE; use IEEE.std_logic_1164.all; entity M_BEHAVIOR is port (SELS : in bit_vector(0 to 1); A,B,C,D : in bit; M : out bit); end; with select 文 この宣言のとき SELSは 9x9=81 値となり,, 左の記述ではエラー library IEEE; use IEEE.std_logic_1164.all; entity M_BEHAVIOR is port (SELS : in std_logic_vector(0 to 1); A,B,C,D : in bit; M : out bit); end; architecture DSELS of M_BEHAVIOR begin with SELS select M <= A when 00, end DSELS; B when 01, C when 10, D when 11 ; A B C D SELS architecture DSELS of M_BEHAVIOR begin with SELS select M M <= A when 00, end DSELS; B when 01, C when 10, D when 11 ; この記述を D when others; とすると OK 56
57 テストベンチの記述 57
58 シミュレーションとテストベンチ シミュレーション : 設計した回路が正しく動作するかを検証するために 実装前に コンピュータ上でシミュレータを実行すること - 論理シミュレーション : ( 遅延を無限小として ) 論理動作のみ検証 - 遅延シミュレーション : 回路の遅延情報を考慮して動作を検証 設計した回路記述 : VHDL ファイル (DUT; Device Under Test) シミュレータ : テストベンチ : 必要な信号を生成したり 検証を効率よく行うための結果表示などを記述した VHDL ファイル 論理合成しないので 効率良く記述することを優先 テストベンチ クロック リセット等の生成 入力パタンの生成 設計した回路 (DUT) [ 論理合成可能 ] 結果表示等 58
59 テストベンチの構造 パッケージ の指定 entity エンティティ名 is end エンティティ名 ; architecture アーキテクチャ名 is bigin - DUT の宣言 - 入出力の宣言 - DUT の呼び出し - 波形記述 end アーキテクチャ名 ; configuration コンフィク レーション名 is for アーキテクチャ名 end for; end コンフィク レーション名 ; ライブラリ記述 ポートリストの無いエンティティ記述 アーキテクチャ名 of エンティティ名テストモシ ュール (DUT) のコンホ ーネント宣言 DUT の入出力信号宣言整数の定義 ( クロック周期等 ) DUT の呼び出し宣言 ( インスタンス ) 入力信号の入力波形記述 ( 期待値照合も可能 ) コンフィク レーション名を定義 コンフィク レーション名 of エンティティ名 このコンフィク レーション名でシミュレーターの実行モジュールが作られる 59
60 テストベンチでの入力波形記述例 count4ld ( ロード機能付き 4 ビットバイナリカウンター ) の入力 J 波形の記述例 : constant STEP: time := 100 ns ; begin U0: COUNT4LD port map( CLK, RST, LD, D, Q ); -- 入力 ;CLK RST LD D process begin CLK <= 0 ; wait for STEP/2; CLK <= 1 ; wait for STEP/2; end process ; -- クロックの記述 -- STEP/2 毎に 01 を繰り返す -- 無限にループする process begin D <= 0000 ; -- 入力 Dに 0000 をセット wait for STEP; RST <= 1 ; -- 1クロック後 リセットをon wait for STEP; RST <= 0 ; -- 1クロック後 リセットをoff wait for STEP*20; -- 20クロック進める D <= 1001 ; LD <= 1 ; -- ロードをonして Dに9をロード wait for STEP; LD <= 0 ; -- ロードをoff wait for STEP*8; -- 8クロック進める D <= 0110 ; LD <= 1 ; -- ロードをonして Dに6をロード wait for STEP; LD <= 0 ; -- ロードをoff wait for STEP*12 ; -- 12クロック進める assert false severity failure; -- シミュレーションの強制終了 wait; end process; 60
61 10 進カウンタのテストベンチ記述例 1 library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; DUT: CNT10 - アップ信号付 10 進カウンター entity CNT10 is port ( count_in, reset : in std_logic; count_up, dot : out std_logic; count_led : out std_logic_vector(4 downto 0) ); end CNT10; architecture RTL of CNT10 is signal count10 : std_logic_vector(4 downto 0); signal count_sig : std_logic; begin process(count_in,reset) begin if reset = '1' then count10 <= "00000"; count_sig <= '0'; elsif (count_in'event and count_in='1') then if (count10 = "01001") then count_sig <= '1'; count10 <= "00000"; else count_sig <= '0'; count10 <= count10 + '1'; end if; end if; end process; count_led <= count10; count_up <= count_sig; dot <= '0'; end RTL; 61
62 10 進カウンタのテストベンチ記述例 2 library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity CNT10_tb is ホ ートリスト無しのエンティティ記述 end CNT10_tb; DUTのコンホ ーネント宣言 architecture SIM of CNT10_tb is component CNT10 port ( count_in, reset : in std_logic; count_up, dot : out std_logic; count_led : out std_logic_vector(4 downto 0) ); end component; signal count_in, reset : std_logic :='0' ; signal count_up, dot : std_logic; signal count_led : std_logic_vector(4 downto 0); constant STEP: time := 10 ms; 信号名 & クロック周期の定義 begin DUT: CNT10 port map (count_in, reset, count_up, dot, count_led); インスタンス名 :DUT でテストモシ ュールをインスタンス 信号名とホ ート名の接続 process begin 入力波形の記述 count_in <= '0'; wait for STEP/2 ; count_in <= '1'; wait for STEP/2 ; end process; process begin wait for STEP; reset <= '1'; wait for STEP; reset <= '0'; wait for STEP*20; wait for STEP; reset <= '1'; wait for STEP; reset <= '0'; wait for STEP*30; assert false severity failure; wait; end process; end SIM; configuration cfg_cnt10_tb of CNT10_tb is for SIM end for; end cfg_cnt10_tb; Duty:50% のクロック ( 周期 10ms) を count_in に入力 2 nd 周期に reset 1 3 rd 周期に reset 0 20 周期進める 23 rd 周期に reset 1 24 th 周期に reset 0 30 周期進める 54 周期後に強制終了 コンフィク レーション記述 コンフィク レーション名: cfg_cnt10_tb エンティティ名: CNT10_tb アーキテクチャ名: SIM コンフィク レーション名で実行モジュールが作られる 62
63 CNT10_tb のシミュレーション結果 63
64 7seg_LED の動作記述 7segLED のデコードテーブル 入力信号出力信号 : 7 downto 0 case led is [abcdefg.] when "00000" => seg<=" "; -- 0 when "00001" => seg<=" "; -- 1 when "00010" => seg<=" "; -- 2 when "00011" => seg<=" "; -- 3 when "00100" => seg<=" "; -- 4 when "00101" => seg<=" "; -- 5 when "00110" => seg<=" "; -- 6 when "00111" => seg<=" "; -- 7 when "01000" => seg<=" "; -- 8 when "01001" => seg<=" "; -- 9 when "01010" => seg<=" "; -- A when "01011" => seg<=" "; -- b when "01100" => seg<=" "; -- C when "01101" => seg<=" "; -- d when "01110" => seg<=" "; -- E when "01111" => seg<=" "; -- F when "10101" => seg<=" "; -- = when others => seg<=" "; end case; LED0[7] LED0[6] LED0[5] LED0[4] LED0[3] LED0[2] LED0[1] LED0[0] E11 F11 H12 H13 G12 F12 F13 D13 a b c d e f g dp HEX0 e f [ アノードコモン ] a b g c d dp 64
65 LED7seg のテストベンチ記述例 1 library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity LED7seg is port( dot : in std_logic; led : in std_logic_vector(4 downto 0); seg : out std_logic_vector(7 downto 0)); end LED7seg; architecture RTL of LED7seg is begin process(led) begin if dot='0' then case led is when "00000" => seg<=" "; -- 0 when "00001" => seg<=" "; -- 1 when "00010" => seg<=" "; -- 2 when "00011" => seg<=" "; -- 3 when "00100" => seg<=" "; -- 4 when "00101" => seg<=" "; -- 5 when "00110" => seg<=" "; -- 6 when "00111" => seg<=" "; -- 7 when "01000" => seg<=" "; -- 8 when "01001" => seg<=" "; -- 9 when others => seg<=" "; end case; DUT: LED7seg - 7seg LED のデコーダー - 入力は binary (ascii コードではない ) - ドット表示の有無で場合分け else case led is when "00000" => seg<=" "; -- 0 when "00001" => seg<=" "; -- 1 when "00010" => seg<=" "; -- 2 when "00011" => seg<=" "; -- 3 when "00100" => seg<=" "; -- 4 when "00101" => seg<=" "; -- 5 when "00110" => seg<=" "; -- 6 when "00111" => seg<=" "; -- 7 when "01000" => seg<=" "; -- 8 when "01001" => seg<=" "; -- 9 when others => seg<=" "; end case; end if; end process; end RTL; 65
66 LED7seg のテストベンチ記述例 2 library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; ライブラリ記述 entity LED7seg_tb is end LED7seg_tb; architecture SIM of LED7seg_tb is component LED7seg port( dot : in std_logic; led : in std_logic_vector(4 downto 0); seg : out std_logic_vector(7 downto 0)); end component; signal dot : std_logic; signal led : std_logic_vector(4 downto 0) :="01111"; signal seg : std_logic_vector(7 downto 0); constant STEP: time := 1 us; begin DUT: LED7seg port map (dot, led, seg); end SIM; 波形記述 configuration cfg_led7seg_tb of LED7seg_tb is for SIM end for; end cfg_led7seg_tb; ポートリストの無いエンティティ記述 テストモシ ュール :LED7seg のコンホ ーネント宣言 LED7seg の入出力信号で定義する定数を定義する LED7seg を DUT としてインスタンスする 入力信号の波形を定義する (- 出力波形を記述し期待値照合を行う ) コンフィグレーションを定義する [ コンフィク レーション名 : cng_led7seg_tb ] 66
67 LED7seg のテストベンチ記述例 3 LED7seg の場合の入力波形の記述 constant STEP: time := 1 us; begin DUT: LED7seg port map (dot, led, seg); process begin if led < "01111" then led <= led + '1'; else led <= "00000"; end if; wait for STEP; end process; process begin for I in 0 to 2 loop dot <= '0'; wait for STEP*32; dot <= '1'; wait for STEP*32; end loop; assert false severity failure; wait; end process; 入力信号は dot( スカラー ) と led( ヘ クトル ) led(4 downto 0) の入力信号を生成する ~ (0~15) を STEP(1us) 単位で生成する - 無限に繰り返す dot の入力信号を生成する - 01 を 32STEP 毎に繰り返す - ループを 3 回繰り返した後 assert 文で強制終了する 67
68 LED7seg_tb のシミュレーション結果 ( 全体表示 )
69 3. 課題 2: 自分の名前を表示させよう - 第 3 日目 - M _ T O [ 各文字と各セグメントの表示は テキスト pp を参照 ] _I_AM_TOKUYA_FUJIOKA. 自分の名前 [ 注 ] 31 文字なので 5 ビット化 (32 文字 ) が可能 69
70 名前表示 の開発仕様 [ 実現機能 ] 4 個の 7segLED に 1 秒毎に左に流れるように 0~9 の数字を表示させた後に 自分の名前をアルファベットで表示する [ ボタン仕様 ] Button0(stop): 動作の停止 / 再開停止 : 押下時点での表示をそのまま継続する再開 : 表示状態から次の表示を再開する Button1(reset): 初期状態に戻る (0 表示から始める ) [LED 表示 ] HEX0 : _I_am_( 各人の名前をアルファベットで表示 HEX1/2/3 : -1/-2/-3 秒遅れて HEX0を同じ内容を表示 [ モジュール構成 ] - peripheral_moji: 準備されている ボタン動作に従って 1Hz 周期のカウント信号 (0~63) が出力される : deco0~3[5_0] - conversion_ascii: カウント信号を ascii 文字コードに変換 - moji_deco: ascii 文字コードを 7segLED 信号に変換 70
71 名前表示 のモジュール構成 - 図 2-43 実習課題概要 - 図 2-48 図 2-49 clk stop reset ( 配付モシ ュール ) deco deco deco deco (ascii) (7seg) _ 11 I 12 _ 13 a 14 m 15 _ _ I _ a m _ ( 1 秒毎にカウントアップする ) ( カウントアップした数をascii 文字と7segに変換する ) 71
72 実習の進め方 基本的には テキストに従って ( テキスト : 105 ~ 137 頁 ) 設計 実機確認を終了させる 各モジュールを VHDL で設計 トップ回路の回路図作成 (VHDL) シミュレーション 実機確認 課題 1 を全て VHDL で設計できた人は 実習の進め方を以下の順序に変更する こちらの方が好ましい ModelSim 上で設計 (VHDL) QuartusⅡ で実機確認 [ Modelsim ] 新規プロジェクトを作成する 1 conversion_ascii.vhd ( 各自で記述内容が異なる ) moji_deco.vhd 2 moji_deco_top.vhd トップ回路をVHDLで設計する 3 シミュレーションを実行し 正しく機能しているか確認する 可能な人は テストベンチを作成して simを実行して下さい ( 全員の記述内容が同じ ) を作設計する [QuartusⅡ] 新規プロジェクトを作成する 4 端子割り当て後 実機確認 ModelSim からソースを持ち込み ピンアサインをして コンパイルすると実行モジュール (*.sof) が作成される 72
73 [ 変更した手順の詳細 ] 課題 2 を早く終わった人は テキストの手順の人 以下の内容で再設計する 変更した手順の人 以下の内容の実現していない部分を完了させる 手順変更 & 追加課題 1) 全てを VHDL で記述する トップレベル回路を VHDL 記述し コンパイル後 実機確認する 2) 全体の表示サイクルを変更する 表示サイクル : ( 現在 )64 秒 32 秒 [5 ビット化 ] peripheral_moji.vhd の内部を変更する必要がある 3) テストベンチを作成して シミュレーションを実行する (ModelSim 環境下 ) 1 7segLED デコーダ単体のテストベンチ作成し テストベンチの記述方法を習得する 本資料の テストベンチ の項を参照 2 全体回路のテストベンチを作成し 全体シミュレーションを実行する 73
74 名前表示 のシミュレーション 1. シミュレーションのための工夫 1) チャタリングの周波数を変更 : 50, [ 図 2-69] シミュレーションではチャタリングは発生しない ( 削除しても良い ) 2)deco 出力の周期を変更 : 25,000, [ 図 2-70] シミュレーション時間を短縮するため 図中の 50 は 49 が良い 0~49: 50 実機用 deco 周期 : 20ns 25,000,000 2 =1s Sim 用 deco 周期 : 20ns 50 2=2000ns=2us 2. シミュレーション時の確認内容 1)deco のカウント数に従って 所望の文字列が発生されているか? 2) カウント数が ascii コードに正しく変換されているか? 3)7segLED の信号が正しく生成されている? 4)reset が正しく動作しているか? 5)stop 信号が正しく動作しているか? 1 回目押下 : カウント停止 ( 継続 ) 2 回目押下 : カウント再開 74
75 名前表示 のテストベンチ記述例 library IEEE; use IEEE.std_logic_1164.all; use IEEE.std_logic_unsigned.all; entity deco_top_tb is end deco_top_tb; architecture SIM of deco_top_tb is component deco_top port(c,r,stop : in std_logic; LED0,LED1,LED2,LED3 : out std_logic_vector (7 downto 0)); end component; signal c, r, stop: std_logic := '1' ; signal LED0,LED1,LED2,LED3 : std_logic_vector (7 downto 0); constant STEP: time := 20 ns ; DUT: deco_top - シミュレーション用回路 begin U0: deco_top port map( c,r,stop,led0,led1,led2,led3 ); process begin c <= '1'; wait for STEP/2; c <= '0'; wait for STEP/2; end process ; process begin wait for STEP*4000 ; stop <= '0'; wait for STEP*100 ; stop <= '1'; wait for STEP*900 ; stop <= '0'; wait for STEP*100 ; stop <= '1'; wait for STEP*1900 ; r <= '0'; wait for STEP*200 ; r <= '1'; wait for STEP*4800 ; assert false severity failure; wait; end process; end SIM; clock 生成 configuration cfg_deco_top_tb of deco_top_tb is for SIM end for; end cfg_deco_top_tb; stop 生成 reset 生成 75
76 名前表示 のシミュレーション結果 (1) - 全体表示 - 76
77 名前表示 のシミュレーション結果 (2) - リセット付近 - (ascii コート は 表 2-4 参照 ) 77
78 名前表示 のシミュレーション結果 (3) - ストップ付近 - (ascii コート は 表 2-4 参照 [ 一部ミス有 ]) 78
79 4. 課題 3: チャタリング防止回路 - 第 3 日目 - 79
80 チャタリング防止回路 チャタリング防止回路 - 手法 1& 手法 2 図 チャタリング防止回路配線例 1 入力 1 入力 1 入力 複数入力 チャタリング発生 _ m 80
81 チャタリング現象とサンプリング周波数 [ 図 2-60] チャタリング発生 チャタリング発生 入力信号 高周波数 サンフ リンク 結果 ( 手法 1) 低周波数 サンフ リンク 結果 ( 手法 1) 中周波数 サンフ リンク 結果 ( 手法 1) サンフ リンク 結果 ( 手法 2)
82 実習の進め方 基本的には テキストに従って ( テキスト : 138 ~ 148 頁 ) 設計 実機確認を終了させる 各モジュールを VHDL で設計 トップ回路の回路図作成 (VHDL) シミュレーション 実機確認 HEX0 に Button1 の入力に合わせて 文字列 _I_am_ 自分の名前 を表示させる 時間が無い場合は 手法 1 or 2 のどちらかを設計する ( モジュール構成 ) - chatter: 手法 1 のチャタリング防止回路 prevention_of_chattering_kadai: 手法 2 のチャタリング防止回路 - count_ex: Button1 の押下回数をカウント - conversion_ascii: カウント数を ascii コードに変換 - moji_deco: ascii 文字コードを 7segLED 信号に変換 以上までが 3 日目に達成する目標です 時間が足りない場合は 提供されているソースを利用する 82
83 5. 課題 4: 1 分時計 - 第 4 日目 - 83
84 [ 実現機能 ] 1/100 秒まで表示する 1 分時計を作る 60 秒でトグルする ( 表示例 ) [ 秒桁に ドットを表示する ] [ ボタン仕様 ] Button0(reset): 初期状態に戻る (00.00 秒表示に戻る ) [LED 表示 ] HEX0 : 1/100 秒 1 分時計 の開発仕様 HEX1 : 1/10 秒 HEX2 : 1 秒 ドット を表示させる HEX3 : 10 秒 [ モジュール構成 ] - dividing: 50MHz(20ns) 100Hz(10ms) への分周回路 - chatter: チャタリング防止回路 ( 既設計 手法 1 2 どちらでも可 ) - count10_co: カウントアップ機能付き 10 進カウンタ - count6_co : カウントアップ機能付き 6 進カウンタ - conversion_ascii: ascii コードへ変換 ( 既設計 簡略化してもよい ) - moji_deco: ascii コードを 7segLED 信号に変換 (( 既設計 簡略化してもよい ) ( 注意 ) ドット表示 をどこに組み込むかを考えること 84
85 1 分時計 のトップ回路図 [ 入力 ] - CLK: 50Mhz(20ns) - 非同期 reset 周期 :10ms count10_co 0.01 秒の桁 [ 出力 ] ドットを付ける conversion_ascii 1/100 単位 moji_deco 60 秒で繰り返す count10_co conversion_ascii moji_deco 0.1 秒の桁 count10_co conversion_ascii moji_deco? ドット表示 1 秒の桁 count6 conversion_ascii ドット表示付き moji_deco 10 秒の桁 85
86 カウンタ回路とその応用 CLK Q[0] Q[1] Q[2] Q +1 CLK D CLK D CLK D CLK Q Q Q Q[2] Q[1] Q[0] 分周回路 CLK 周波数 : n 周波数 : n/2 周波数 : n/4 周波数 : n/8 カウント数 10 進 2 進 n / 8 n / 4 n / 2 n 86
87 実習の進め方 基本的には テキストに従って ( テキスト : 149 ~ 166 頁 ) 設計 実機確認を終了させる 各モジュールを VHDL で設計 トップ回路の回路図作成 (VHDL) シミュレーション 実機確認 実機動作を優先させる 本講座のクリア目標 VHDL で全て設計できるようになった人は 実習の進め方を以下の順序に変更する こちらの方が好ましい VHDL で ModelSim 上で設計 QuartusⅡ で実機確認 ( 可能であれば ) テストベンチを作成し シミュレーションする [ModelSim] 新規プロジェクトを作成する 1 分周回路 (dividing) をVHDLで設計 : 50MHz 100KHz へ分周 Modelsimでシミュレーション テストベンチ or 波形入力 2 カウントアップ機能付き10 進カウンタ (count10_co) をVHDLで設計 Modelsimでシミュレーション テストベンチ or 波形入力 3 6 進カウンター (count6) をVHDLで設計 : カウントアップ機能は不要 Modelsimでシミュレーション テストベンチ or 波形入力 87
88 [ModelSim] ( 続き ) 実習の進め方 ( 続き ) 4 トップ回路を VHDL で設計し 全体シミュレーションを実行する シミュレーション時間を調整する 60 ms 必須 - dividing を変更する : 100Hz(10ms) 100,000Hz(10μs) に変更 テキストの 152 頁 ( 図 2-110) を参照のこと チャタリング回路を調整する - トップ回路から chatter を削除する ( コメント行にする ) - chatter を変更する テキストの 125 頁 ( 図 2-69) を参照のこと conversion_ascii moji_deco は 前のプロジェクトから持ち込む そのまま使っても 必要な文字だけ (0~9) にスリム化しても良い [QuartusⅡ] 新規プロジェクトを作成する 1 Modelsim から全てのソースを持ち込む 2 dividing 周波数 チャタリング防止回路 (chatter) を仕様通りに戻す dividing 周波数 : 100Hz(10ms) チャタリング防止回路は チャタリングが発生しないように設定する 準備されているものをそのまま使っても良い 3 端子割り当てをして 実機で動作確認 本講座のクリア目標 88
89 1 分時計 のテストベンチ記述例 - 分周周波数 : 10us 60ms 時計としてシミュレーション library IEEE; use IEEE.std_logic_1164.all; use IEEE.std_logic_unsigned.all; entity minute_top_tb is end minute_top_tb; architecture SIM of minute_top_tb is component minute_top port (clk, reset : in std_logic; LED0,LED1,LED2,LED3 : out std_logic_vector(7 downto 0) ); end component; signal CLK, RST : std_logic := '0' ; signal LED0,LED1,LED2,LED3 : std_logic_vector (7 downto 0); constant STEP: time := 20 ns ; begin U0: minute_top port map ( CLK,RST,LED0,LED1,LED2,LED3 ); process begin CLK <= '1'; wait for STEP/2; CLK <= '0'; wait for STEP/2; end process ; process begin wait for STEP*10000 ; RST <= '1'; wait for step*1000 ; RST <= '0'; wait for STEP* ; assert false severity failure; wait; end process; end SIM; configuration cfg_minute_top_tb of minute_top_tb is for SIM end for; end cfg_minute_top_tb; CLK 生成 200us で 20us の幅 RST 生成 Sim 継続時間 RST 後 64ms 実行して 強制終了 89
90 1 分時計 のシミュレーション結果 1 - RST 入力前後 : us 後の最初の立ち上がり (225us) でカウントアップ (48 49) 90
91 1 分時計 のシミュレーション結果 2-1 秒の桁がカウントアップする時 : 1215us(10us 100 サイクル ) 225us で なので 1215us で 1 秒の桁が変わる (ascii2:48 49) 91
92 1 分時計 のシミュレーション結果 3 - 時計が初期に戻る時 : RST 後 60ms で初期状態に戻る 60215us (225us で なので ) に全ての表示が 0 (ascii:48) になる 92
93 参考資料 93
94 遅延 設計した回路には必ず遅延が存在する 配線遅延 : 配線の長さによる遅延セル遅延 : セル内部で発生する遅延 IN 遅延 IN-A; 1 < 遅延 IN-B; 2 A B 3 C 配線遅延 セル遅延 IN A B C
95 セットアップ時間とホールド時間 入力信号 クロック セットアップ時間 ホールド時間 D CLK Q Q セットアップ時間 ( Set up time ): クロックのアクティブエッジ ( 立上り or 立下がり ) で データを読み込む為に必要なデータ準備時間 ホールド時間 ( Hold time ): クロックのアクティブエッジ ( 立上り or 立下がり ) で データを読み込む為に必要なデータ保持時間 95
96 同期回路の遅延計算 1 配線遅延 2 セル遅延 F/F Q F/F Q CLK FF 間でクロックの 1 周期内でデータを正しく受け渡す条件 : クロック周期 > 性能向上 ( 高速動作 ) のための対策例 : 前段 FF のセル遅延 + 配線遅延の合計 ( 上図 1) + セル遅延の合計 ( 上図 2)) + 後段 FF のセットアップ時間 素子性能の向上 ( セル遅延 セットアップ時間の改善等 ) クリティカルパス ( 最大遅延パス ) の改善 クロックのずれ ( スキュー ) の改善 ( クロックツリー等 ) 96
97 組み合わせ回路 出力がそのときの入力の状態のみで決まる回路 - 出力が回路の以前の動作に依存しない すなわち 情報を記憶しない回路で 入力の組み合わせにより出力が決定される 主な組合せ回路 - マルチプレクサ ( セクター回路 ) - デマルチプレクサ ( 分配回路 ) - デコーダ ( 復号化回路 ) - エンコーダ ( 符号化回路 ) - 演算回路 ( 加算器等 ) - コンパレーター ( 一致検出回路 ) A B C D In SELS マルチプレクサ SELS A B C D Out デマルチプレクサ 2 進出力 エンコーダ 進入力 97
98 順序回路 ある時刻 tの出力 Y(t) が 入力 X(t) と内部状態 Q(t) に依存する論理回路 Y(t)=f(X(t),Q(t)) 組合せ回路 +レジスタ - 非同期式 : 回路動作が任意の時刻に発生する入力変化とその順序 ( 状態 ) だけに依存する順序回路 - 同期式 : 回路動作がクロックに同期する順序回路 ラッチとフリップフロップ - 信号 (0 または 1) を一時的に保持する回路 - タイミングを制御するクロック信号に同期して動作する ( 非同期もあり ) ラッチクロック信号がアクティブである間 入力を出力にそのまま出力し クロック信号がインアクティブに変化する時の値を保持する回路 フリップフロップ ( 同期型 ) クロック信号の立ち上がりまたは立ち下りの瞬間 ( エッジ ) の入力データを保持し その値を出力する回路 98
99 クロック制御の同期式 / 非同期式論理回路 同期式論理回路 レジスタ同士が 同じクロックに同期して動作する クロック周期を前提に回路を考えればよいので 楽に設計できる [ 利点 ] タイミング調整をあまり考えなくていいので大規模回路に向いている [ 欠点 ] クロック信号の分配に細心の注意が 多数のゲートが同時に動作するので 電源電圧 動作速度に影響がある 回路規模が大きくなる傾向がある電力消費と発熱が増加 サイズによるコスト増加 遅延の増加等 非同期式論理回路 レジスタ同士が 違うクロックで動作する 回路全体が簡素化でき クロック周期を気にせず設計できるが 僅かタイミングのずれでグリッジを発生させやすく 誤動作を起こしやすい 温度依存性も高い [ 利点 軽い回路には手軽に使える 必要な時にしかラッチクロックが起きないので費電流が少ない [ 欠点 ] 大規模回路では 予期せぬタイミングトラブルがいろいろな所で発生し 処理に追われ ほぼ設計不可能 ( 最近少し状況が変わってきている ) 99
100 D-Latch と D-FF D-Latch D Q CLK CLK D CLK=1 D 入力を随時伝達 CLK=0 直前データを保持 Q D-FF D Q CLK CLK D CLK: 0 1 ( 立ち上がりエッジ ) で D 入力を取り込む次のエッジまでその値を保持 Q 100
論理回路設計
2017 年度前期集中講義 論理回路設計 - 実習 :VHDL によるデジタル回路設計 - 講座の目的実習を通して 専門分野の問題発見 解決の能力を修得する - LSI 設計の基礎知識を得る - 言語 :VHDLによる設計手法を実習する - EDAツールの操作を経験する - FPGAを搭載した評価ボードで動作を確認する 東京理科大学 基礎工学部電子応用工学科 ( 非常勤講師 ) 藤岡督也 1 /76
論理回路設計
2018 年度前期集中講義 論理回路設計 - 実習 :VHDL によるデジタル回路設計 講座の目的実習を通して 専門分野の問題発見 解決の能力を修得する - LSI 設計の基礎知識を得る - 言語 :VHDLによる設計手法を実習する - EDAツールの操作を経験する - FPGAを搭載した評価ボードで動作を確認する 東京理科大学 基礎工学部電子応用工学科 ( 非常勤講師 ) 藤岡督也 1 /80 集中講義の日程
Microsoft PowerPoint - 集積回路工学_ ppt[読み取り専用]
2007.11.12 集積回路工学 Matsuzawa Lab 1 集積回路工学 東京工業大学 大学院理工学研究科 電子物理工学専攻 2007.11.12 集積回路工学 Matsuzawa Lab 2 1. 1. ハードウェア記述言語 (VHDL で回路を設計 ) HDL 設計の手順や基本用語を学ぶ RTL とは? Register Transfer Level レジスタ間の転送関係を表現したレベル慣例的に以下のことを行う
Microsoft Word - 実験4_FPGA実験2_2015
FPGA の実験 Ⅱ 1. 目的 (1)FPGA を用いて組合せ回路や順序回路を設計する方法を理解する (2) スイッチや表示器の動作を理解し 入出力信号を正しく扱う 2. スケジュール項目 FPGAの実験 Ⅱ( その1) FPGAの実験 Ⅱ( その2) FPGAの実験 Ⅱ( その3) FPGAの実験 Ⅱ( その4) FPGAの実験 Ⅱ( その5) FPGAの実験 Ⅱ( その6) FPGAの実験 Ⅱ(
Microsoft PowerPoint LC_15.ppt
( 第 15 回 ) 鹿間信介摂南大学理工学部電気電子工学科 特別講義 : 言語を使った設計 (2) 2.1 HDL 設計入門 2.2 FPGA ボードの設計デモ配布資料 VHDL の言語構造と基本文法 2.1 HDL 設計入門 EDAツール : メンター社製品が有名 FPGAベンダーのSW 1 1 仕様設計 にも簡易機能あり 2 3 2 HDLコード記述 3 論理シミュレーション 4 4 論理合成
回路 7 レジスタ ( 同期イネーブル及び非同期リセット付 ) 入力データを保持するのに用いる記憶素子 使用用途として, マイクロプロセッサ内部で演算や実行状態の保持に用いられる Fig4-2 のレジスタは, クロック信号の立ち上がり時かつ 信号が 1 のときに外部からの 1 ビットデータ R をレ
第 4 回 VHDL 演習 2 プロセス文とステートマシン プロセス文を用いるステートマシンの記述について学ぶ 回路 6 バイナリカウンタ (Fig.4-1) バイナリカウンタを設計し, クロック信号に同期して動作する同期式回路の動作を学ぶ ⅰ) リスト 4-1 のコードを理解してから, コンパイル, ダウンロードする ⅱ) 実験基板上のディップスイッチを用いて, 発生するクロック周波数を 1Hz
- VHDL 演習 ( 組み合せ論理回路 ) 回路 半加算器 (half adder,fig.-) 全加算器を構成する要素である半加算器を作成する i) リスト - のコードを理解してから, コンパイル, ダウンロードする ii) 実験基板上のスイッチ W, が, の入力,LED, が, の出力とな
第 回 VHDL 演習組み合せ論理回路 VHDL に関する演習を行う 今回は, 組み合せ論理回路の記述について学ぶ - 論理回路の VHDL 記述の基本 同時処理文を並べることで記述できる 部品の接続関係を記述 順番は関係ない process 文の内部では, 順次処理文を使う process 文 つで, つの同時処理文になる順次処理文は, 回路の動作を 逐次処理的 に ( 手続き処理型プログラム言語のように
VHDL
VHDL 1030192 15 2 10 1 1 2 2 2.1 2 2.2 5 2.3 11 2.3.1 12 2.3.2 12 2.4 12 2.4.1 12 2.4.2 13 2.5 13 2.5.1 13 2.5.2 14 2.6 15 2.6.1 15 2.6.2 16 3 IC 17 3.1 IC 17 3.2 T T L 17 3.3 C M O S 20 3.4 21 i 3.5 21
1 1 2 2 2-1 2 2-2 4 2-3 11 2-4 12 2-5 14 3 16 3-1 16 3-2 18 3-3 22 4 35 4-1 VHDL 35 4-2 VHDL 37 4-3 VHDL 37 4-3-1 37 4-3-2 42 i
1030195 15 2 10 1 1 2 2 2-1 2 2-2 4 2-3 11 2-4 12 2-5 14 3 16 3-1 16 3-2 18 3-3 22 4 35 4-1 VHDL 35 4-2 VHDL 37 4-3 VHDL 37 4-3-1 37 4-3-2 42 i 4-3-3 47 5 52 53 54 55 ii 1 VHDL IC VHDL 5 2 3 IC 4 5 1 2
if clear = 1 then Q <= " "; elsif we = 1 then Q <= D; end rtl; regs.vhdl clk 0 1 rst clear we Write Enable we 1 we 0 if clk 1 Q if rst =
VHDL 2 1 VHDL 1 VHDL FPGA VHDL 2 HDL VHDL 2.1 D 1 library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; regs.vhdl entity regs is clk, rst : in std_logic; clear : in std_logic; we
エンティティ : インタフェースを定義 entity HLFDD is port (, : in std_logic ;, : out std_logic ) ; end HLFDD ; アーキテクチャ : エンティティの実現 architecture RH1 of HLFDD is <= xor
VHDL を使った PLD 設計のすすめ PLD 利用のメリット 小型化 高集積化 回路の修正が容易 VHDL 設計のメリット 汎用の設計になる ( どこのデバイスにも搭載可能 ) 1/16 2001/7/13 大久保弘崇 http://www.aichi-pu.ac.jp/ist/~ohkubo/ 2/16 設計の再利用が促進 MIL 記号の D での設計との比較 Verilog-HDL などでも別に同じ
論理設計の基礎
. ( ) IC (Programmable Logic Device, PLD) VHDL 2. IC PLD 2.. PLD PLD PLD SIC PLD PLD CPLD(Complex PLD) FPG(Field Programmable Gate rray) 2.2. PLD PLD PLD I/O I/O : PLD D PLD Cp D / Q 3. VHDL 3.. HDL (Hardware
VelilogHDL 回路を「言語」で記述する
2. ソースを書く 数値表現 数値表現形式 : ss'fnn...n ss は, 定数のビット幅を 10 進数で表します f は, 基数を表します b が 2 進,o が 8 進,d が 10 進,h が 16 進 nn...n は, 定数値を表します 各基数で許される値を書くこ Verilog ビット幅 基数 2 進表現 1'b0 1 2 進 0 4'b0100 4 2 進 0100 4'd4 4
デジタル回路入門
Open-It FPGA トレーニングコース ( 初級編 ) 第 9 版 2. 組み合わせ回路入門 2.2. 実習 Verilog-HDL 記述 2013 年 5 月 10 日修正 デジタル回路の構成要素 O=A&B; O=~I; INV O=A B; 全てのデジタル回路はこの 4 つの要素 ( 回路 ) のみで構成されている 4 要素の HDL 記述を知っていれば最低限の知識としては十分 2 HDL:
arduino プログラミング課題集 ( Ver /06/01 ) arduino と各種ボードを組み合わせ 制御するためのプログラミングを学 ぼう! 1 入出力ポートの設定と利用方法 (1) 制御( コントロール ) する とは 外部装置( ペリフェラル ) が必要とする信号をマイ
arduino プログラミング課題集 ( Ver.5.0 2017/06/01 ) arduino と各種ボードを組み合わせ 制御するためのプログラミングを学 ぼう! 1 入出力ポートの設定と利用方法 (1) 制御( コントロール ) する とは 外部装置( ペリフェラル ) が必要とする信号をマイコンから伝える 外部装置の状態をマイコンで確認する 信号の授受は 入出力ポート 経由で行う (2) 入出力ポートとは?
フリップフロップ
第 3 章フリップ フロップ 大阪大学大学院情報科学研究科 今井正治 [email protected] http://www-ise1.ist.osaka-u.ac.jp/~imai/ 2005/10/17 2006, Masaharu Imai 1 講義内容 フリップ フロップの基本原理 RS フリップ フロップ D ラッチ D フリップ フロップ JK フリップ フロップ T フリップ
スライド 1
1 1. 2 2. 3 isplever 4 5 6 7 8 9 VHDL 10 VHDL 4 Decode cnt = "1010" High Low DOUT CLK 25MHz 50MHz clk_inst Cnt[3:0] RST 2 4 1010 11 library ieee; library xp; use xp.components.all; use ieee.std_logic_1164.all;
ModelSim-Altera - RTL シミュレーションの方法
ALTIMA Corp. ModelSim-Altera RTL シミュレーションの方法 ver.15.1 2016 年 5 月 Rev.1 ELSENA,Inc. 目次 1. 2. 3. はじめに...3 RTL シミュレーションの手順...4 RTL シミュレーションの実施...5 3-1. 3-2. 新規プロジェクトの作成... 5 ファイルの作成と登録... 7 3-2-1. 新規ファイルの作成...
ディジタル電子回路 設計演習課題
Arch 研究室スキルアップ講座 NEXYS4 による 24 時間時計 仕様書および設計例 1 実験ボード (NEXYS4) 外観 ダウンロード (USB) ケーブル接続端子 FPGA:Xilinx 社製 Artix7 XC7A100T-CSG324 7 セグメント LED8 個 LED16 個 リセット SW スライドスイッチ (16 個 ) 押しボタンスイッチ (5 個 ) 2 実験ボードブロック図
Verilog HDL による回路設計記述
Verilog HDL 3 2019 4 1 / 24 ( ) (RTL) (HDL) RTL HDL アルゴリズム 動作合成 論理合成 論理回路 配置 配線 ハードウェア記述言語 シミュレーション レイアウト 2 / 24 HDL VHDL: IEEE Std 1076-1987 Ada IEEE Std 1164-1991 Verilog HDL: 1984 IEEE Std 1364-1995
Microsoft PowerPoint - 3.3タイミング制御.pptx
3.3 タイミング制御 ハザードの回避 同期式回路と非同期式回路 1. 同期式回路 : 回路全体で共通なクロックに合わせてデータの受け渡しをする 通信における例 :I 2 C(1 対 N 通信 ) 2. 非同期式回路 : 同一のクロックを使用せず データを受け渡す回路間の制御信号を用いてデータの受け渡しをす 通信における例 :UART(1 対 1 通信 ) 2 3.3.1 ハザード 3 1 出力回路のハザード
2ALU 以下はデータ幅 4ビットの ALU の例 加算, 減算,AND,OR の4つの演算を実行する 実際のプロセッサの ALU は, もっと多種類の演算が可能 リスト 7-2 ALU の VHDL 記述 M use IEEE.STD_LOGIC_1164.ALL; 00 : 加算 use IEE
差し替え版 第 7 回マイクロプロセッサの VHDL 記述 マイクロプロセッサ全体および主要な内部ユニットの,VHDL 記述の例を示す. 1)MPU(Micro Processor Uit) Module 1MPU のエンティティ記述とコントローラの例以下は, 簡単な MPU の VHDL 記述の例である ただし, アーキテクチャ部分は, 命令読み込みと実行の状態遷移のみを実現したステートマシンである
<91E63589F161>
ハードウェア実験 組み込みシステム入門第 5 回 2010 年 10 月 21 日 順序論理回路の実験 前回予告した今回の内容 次回も IC トレーナを使って 順序論理回路についての実験を行います 内部に 状態 を持つ場合の動作記述について 理解します 個々の IC を接続し SW 入力と LED の点灯表示とで論理回路としての動作を検証します それぞれの IC( 回路素子 ) ごとに真理値表を作成します
QuartusII SOPC_Builderで利用できるGPIF-AVALONブリッジとは?
アルテラ FPGA 向け PLL リコンフィグの応用回路 1. PLL リコンフィグとは アルテラ FPGA は PLL 機能を内蔵しています PLL を利用して基本周波数を逓倍 分周したクロックを利用することができます 通常 FPGA 開発ツール Quartus2( 以下 Q2) の MegaWizard プラグインマネージャを利用して PLL を設定し 希望のクロック周波数を得ることができます
計数工学実験/システム情報工学実験第一 「ディジタル回路の基礎」
計数工学実験 / システム情報工学実験第一 ディジタル回路の基礎 ( 全 3 回 ) システム 8 研 三輪忍 参考資料 五島正裕 : ディジタル回路 ( 科目コード 400060) 講義資料 ( ググれば出てくる ) 高木直史 : 論理回路, 昭晃堂 Altera: Cyclone II FPGA スターター開発ボードリファレンス マニュアル Altera: Introduction to Quartus
HW-Slides-05.ppt
ハードウェア実験 組み込みシステム入門第 5 回 2012 年 10 月 18 日 順序論理回路の実験 このスライドの ゲートの動作記述の部分は 藤井先生のスライドから多くをいただいています 藤井先生に慎んでお礼申し上げます 2 今日の内容! 以下の論理回路を動作させる 1. D フリップフロップ回路 2. 4 進カウンタ回路 ( 同期式 ) 3. 10 進カウンタ回路! シフトレジスタを作成して
VLSI工学
25/1/18 計算機論理設計 A.Matsuzawa 1 計算機論理設計 (A) (Computer Logic Design (A)) 東京工業大学大学院理工学研究科電子物理工学専攻 松澤昭 3. フリップフロップ回路とその応用 25/1/18 計算機論理設計 A.Matsuzawa 2 25/1/18 計算機論理設計 A.Matsuzawa 3 注意 この教科書では記憶回路を全てフリップフロップと説明している
FPGAによる24時間時計回路
の設計 通信処理ネットワーク研究室 10ec062 志村貴大 1. まえがき今回 24 時間時計回路の設計を行った理由は FPGA を用いた論理回路設計の基礎を学ぶにあたり ハード及びソフト双方の基本技術を一度に習得できる題材であると推測したためである 24 時間時計を構成するモジュールの設計を終えた今 その推測は正しかったものと自負している 本レポートは 復習を兼ねた制作記録としてだけではなく 自分と同じ回路設計初心者が学習の参考にできるものにしたいと考えている
スライド 1
isplever CLASIC 1.2 Startup Manual for MACH4000 Rev.1.0 isplever_ CLASIC Startup_for_MACH4000_Rev01.ppt Page: 1 1. Page 3 2. Lattice isplever Design Flow Page 4 3. Page 5 3-1 Page 6 3-2 Page 7 3-3 Page
1. はじめに 本書は スプリット演算器 MFS2 用コンフィギュレータソフトウェア の取扱方法 操作手順 注意事項などを説明したものです Windows の操作や用語を理解している方を前提にしています Windows の操作や用語については それぞれのマニュアルを参照してください 1.1. MFS
スプリット演算器 MFS2 用コンフィギュレータソフトウェア MFS2CFG バージョン 0.02 取扱説明書 1/10 NM-9307 改 2 1. はじめに 本書は スプリット演算器 MFS2 用コンフィギュレータソフトウェア の取扱方法 操作手順 注意事項などを説明したものです Windows の操作や用語を理解している方を前提にしています Windows の操作や用語については それぞれのマニュアルを参照してください
ソフトウェア基礎技術研修
算術論理演算ユニットの設計 ( 教科書 4.5 節 ) yi = fi (x, x2, x3,..., xm) (for i n) 基本的な組合せ論理回路 : インバータ,AND ゲート,OR ゲート, y n 組合せ論理回路 ( 復習 ) 組合せ論理回路 : 出力値が入力値のみの関数となっている論理回路. 論理関数 f: {, } m {, } n を実現.( フィードバック ループや記憶回路を含まない
三菱電機マイコン機器ソフトウエア株式会社
MU500-RX サンプル回路仕様書 三菱電機マイコン機器ソフトウエア株式会社 2012-5-9 1 概要 1.1 目的本仕様書は MU500-RX と MU500-RK で実現する 1 秒カウンタの仕様について記述するものである マイコンで 1 秒を生成し 表示は 7 セグメント LED を用いる また 開始 / 停止は Push-SW を使う 1.2 関連文書 MU500-RX
TECH_I Vol.25 改訂新版PCIデバイス設計入門
library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity n is port( ); end entity n; architecture RTL of nis begin when : process begin end process :process begin end process
Quartus II クイック・スタートガイド
ALTIMA Corp. Quartus II クイック スタートガイド ver.3.0 2010 年 8 月 ELSENA,Inc. 目次 1. はじめに... 3 2. Quartus II の基本操作フロー... 3 3. Quartus II の基本操作... 4 ステップ 1. プロジェクトの作成... 4 ステップ 2. デザインの作成... 4 ステップ 3. ファンクション シミュレーション...
Unconventional HDL Programming ( version) 1
Unconventional HDL Programming (20090425 version) 1 1 Introduction HDL HDL Hadware Description Language printf printf (C ) HDL 1 HDL HDL HDL HDL HDL HDL 1 2 2 2.1 VHDL 1 library ieee; 2 use ieee.std_logic_1164.all;
<4D F736F F F696E74202D C190DD B A CB48D65208E DC58F49205B8CDD8AB B83685D>
今さら聞けない高位合成 ~ 一から学ぶ高位合成 ~ シャープ株式会社電子デバイス事業本部副参事山田晃久 1 ハードウェア設計と抽象度 要求仕様 動作仕様設計制約 ( コスト 性能 消費電力 ) システムの実現方式を決定システム設計 ( 動作レベル設計 ) ( アーキテクチャ アルゴリズム ) システム分割 (HW/SW) 機能ブロック RTL 記述 機能設計 (RTL 設計 ) 論理合成 ハードウェアの処理を設計
SLCONFIG の操作 JF1PYE Ⅰ. PC と slconfig の通信設定 Ⅱ. Slconfig の操作 Ⅲ. 端末ソフトによる Command 機能 Ⅳ. slconfig 実行形式プログラムの作成 Ⅴ. 端末ソフト Tera Term のダウンロード インストー
SLCONFIG の操作 2011.03.02 JF1PYE Ⅰ. PC と slconfig の通信設定 Ⅱ. Slconfig の操作 Ⅲ. 端末ソフトによる Command 機能 Ⅳ. slconfig 実行形式プログラムの作成 Ⅴ. 端末ソフト Tera Term のダウンロード インストール 設定 Soliloc-10G Slconfig の開発 提供ならびに本書を作成するに当たり情報提供を頂いた
電卓の設計 1
電卓の設計 1 FPGA Express と MAXPLUS2 に よる FPGA 設計 FPGA EXPRESS RTL circuit.edf circuit.acf RTL MAXPLUS2 FPGA circuit.acf circuit.sof, ttf, pof SRAM 2 どうして電卓なの? その場で 10 キーを使って動かせる プロセッサだと プログラムを考えたり メモリとのインタフェースが必要
FPGA と LUPO その1
FPGA Lecture for LUPO and GTO Vol. 1 2010, 31 August (revised 2013, 19 November) H. Baba Contents FPGA の概要 LUPO の基本的な使い方 New Project Read and Write 基本的な Behavioral VHDL simulation Firmware のダウンロード FPGA
Welcome-Kit ~STM32L4-Nucleo~
STM32CubeMX の使い方 0 STM32CubeMX ダウンロード 1 1 ST マイクロ社 HP より STM32CubeMX インストーラーをダウンロードし インストーラーの表示に沿ってインストールします URL : http://www.st.com/content/st_com/ja/products/development-tools/software-development-tools/stm32-
Quartus II はじめてガイド - EDA ツールの設定方法
ALTIMA Corp. Quartus II はじめてガイド EDA ツールの設定方法 ver.10.0 2010 年 12 月 ELSENA,Inc. Quartus II はじめてガイド EDA ツールの設定方法 目次 1. はじめに... 3 2. サポート環境... 3 3. 操作方法... 4 3-1. 論理合成ツールとのインタフェース設定... 4 3-2. シミュレータ ツールとのインタフェース設定...
TDK Equivalent Circuit Model Library
TDK SPICE Netlist Library を OrCAD Capture,PSpice で使用する方法 TDK 株式会社アプリケーションセンター江畑克史 Oct. 01, 2008 AN-NL08B002_ja はじめに TDK では, 各種受動電子部品の SPICE モデル集 TDK SPICE Netlist Library を公開しております. TDK SPICE Netlist Library
「電子政府推奨暗号の実装」評価報告書
2011 情財第 399 号 情報セキュリティ対策基盤整備事業 電子政府推奨暗号の実装 評価報告書 平成 24 年 12 月 [ 改訂履歴 ] 日付改訂内容 2012 年 12 月 11 日評価報告書初版発行 2012 年 12 月 21 日 2. 評価結果 内のデータを修正 ( 表 1-1 表 1-2 表 2-1 表 2-2 表 3-1 表 3-2 表 4-1 表 4-2 表 5-1 表 5-2
! STEP 2. Quartus Prime のダウンロード WEB ブラウザで以下の URL を開きます 2 ページ中段の Quartus Prime 開発ソフトウェア ライト エディ
STEP 学習内容 パソコンに FPGA の開発環境を構築します インストールは以下の手順で行います. Quartus Prime とは 2. Quartus Prime のダウンロード. Quartus Prime のインストール. USB ドライバのインストール. Quartus Prime とは Quartus Prime は Intel の FPGA 統合開発環境です Quartus Prime
Quartus II はじめてガイド - EDA ツールの設定方法
ALTIMA Corp. Quartus II はじめてガイド EDA ツールの設定方法 ver.14 2015 年 4 月 Rev.1.1 ELSENA,Inc. Quartus II はじめてガイド EDA ツールの設定方法 目次 1. 2. 3. はじめに...3 サポート環境...4 操作方法...5 3-1. 3-2. 論理合成ツールとのインタフェース設定... 5 シミュレーション ツールとのインタフェース設定...
HW-Slides-04.ppt
ハードウェア実験 組み込みシステム入門第 4 回 2012 年 10 月 11 日 IC TRAINER の導入 2 ブレッドボードとは何か! 手引き書 P8 半田付けせずに 簡単にリード線を差し込むだけで回路の動作を調べることができるボード! 部品挿入エリアでは ABCDE が縦に裏側で接続されている! 電源ラインでは 横に接続されている! 慣例として! 赤 : + 電源! 青 :- 電源または
内容 1. 仕様 動作確認条件 ハードウェア説明 使用端子一覧 ソフトウェア説明 動作概要 ファイル構成 オプション設定メモリ 定数一覧 変数一
RX210 グループ IRQ 割り込みを使用したパルス出力 要旨 本サンプルコードでは IRQ 割り込みが発生すると 一定期間タイマでパルスを出力する 方法について説明します 対象デバイス RX210 1 / 25 内容 1. 仕様... 3 2. 動作確認条件... 3 3. ハードウェア説明... 3 3.1 使用端子一覧... 3 4. ソフトウェア説明... 4 4.1 動作概要... 4
SOPC Builder ペリフェラル 簡易ユーザ・ガイド - PIO (Parallel I/O)
ALTIMA Corp. SOPC Builder ペリフェラル簡易ユーザ マニュアル PIO (Parallel I/O) ver.1.0 2010 年 8 月 ELSENA,Inc. SOPC Builder ペリフェラル簡易ユーザ マニュアル PIO (Parallel I/O) 目次 1. はじめに... 3 2. PIO 概要... 3 2-1. PIO 概要... 3 2-2. PIO
A 既製のプロジェクトがある場合
2008 年 7 月 15 日 ワゴジャパン株式会社 1 使用機器 -Siemens S7-300:CPU315F-2 PN/DP プロセッサ /PROFINET スキャナ -Siemens SIMATIC Manager STEP 7 ソフトウェア バージョン V5.4-750-333 GSD ファイル :B754_V30.GSD(FW Ver.7 以降 ) -WAGO I/O ノード構成ノード
Quartus II はじめてガイド - プロジェクトの作成方法
- Quartus II はじめてガイド - プロジェクトの作成方法 ver. 9.0 2009 年 5 月 1. はじめに Quartus II はユーザ デザインをプロジェクトで管理します プロジェクトは デザインのコンパイルに必要なすべてのデザイン ファイル 設定ファイルおよびその他のファイルで構成されます そのため開発を始めるには まずプロジェクトを作成する必要があります この資料では Quartus
Quartus II はじめてガイド - プロジェクトの作成方法
ALTIMA Corp. Quartus II はじめてガイド プロジェクトの作成方法 ver.10.0 2010 年 7 月 ELSENA,Inc. Quartus II はじめてガイド プロジェクトの作成方法 目次 1. はじめに... 3 2. Quartus II の起動... 3 3. 操作手順... 4 4. 既存プロジェクトの起動... 10 5. プロジェクト作成後の変更...11
Microsoft Word - N-TM307取扱説明書.doc
Page 1 of 12 2CHGATEANDDELAYGENERATORTYPE2 N-TM307 取扱説明書 初版発行 2015 年 10 月 05 日 最新改定 2015 年 10 月 05 日 バージョン 1.00 株式会社 テクノランドコーポレーション 190-1212 東京都西多摩郡瑞穂町殿ヶ谷 902-1 電話 :042-557-7760 FAX:042-557-7727 E-mail:[email protected]
Microsoft Word - HOBO雨量専用説明書_v1.1.doc
HOBOevent による雨量データの 回収と変換の方法 Rev 1.1 HOBO ペンダントシリーズ パルス入力 ベースステーション (USB) 雨量各種 HobowareLite 2007 年 9 月 http://www.weather.co.jp/ 目次 目次...1 はじめに...2 HOBOWARELITE の開始...2 ケーブル接続...2 HOBOwareLite の開始...2
main.dvi
CAD 2001 12 1 1, Verilog-HDL, Verilog-HDL. Verilog-HDL,, FPGA,, HDL,. 1.1, 1. (a) (b) (c) FPGA (d). 2. 10,, Verilog-HDL, FPGA,. 1.2,,,, html. % netscape ref0177/html/index.html.,, View Encoding Japanese
スライド 1
RL78/G13 周辺機能紹介 SAU シリアル アレイ ユニット ルネサスエレクトロニクス株式会社 ルネサス半導体トレーニングセンター 2013/08/02 Rev. 0.00 00000-A コンテンツ SAU の概要 UART 通信機能のプログラム サンプル紹介 2 SAU の概要 3 SAU の機能 クロック同期式調歩同期式マスタ動作のみ チャネル 0: 送信チャネル 1: 受信 4 UART
正転時とは反対に回転する これが逆転である 図 2(d) の様に 4 つのスイッチ全てが OFF の場合 DC モータには電流が流れず 停止する ただし 元々 DC モータが回転していた場合は 惰性でしばらく回転を続ける 図 2(e) の様に SW2 と SW4 を ON SW1 と SW3 を O
コンピュータ工学講義プリント (1 月 29 日 ) 今回は TA7257P というモータ制御 IC を使って DC モータを制御する方法について学ぶ DC モータの仕組み DC モータは直流の電源を接続すると回転するモータである 回転数やトルク ( 回転させる力 ) は 電源電圧で調整でき 電源の極性を入れ替えると 逆回転するなどの特徴がある 図 1 に DC モータの仕組みを示す DC モータは
計算機アーキテクチャ
計算機アーキテクチャ 第 11 回命令実行の流れ 2014 年 6 月 20 日 電気情報工学科 田島孝治 1 授業スケジュール ( 前期 ) 2 回日付タイトル 1 4/7 コンピュータ技術の歴史と コンピュータアーキテクチャ 2 4/14 ノイマン型コンピュータ 3 4/21 コンピュータのハードウェア 4 4/28 数と文字の表現 5 5/12 固定小数点数と浮動小数点表現 6 5/19 計算アーキテクチャ
Quartus II クイック・スタート・ガイド
ver.2.0 2010 年 1 月 1. はじめに 弊社では Quartus II をはじめて使用する方を対象に Quartus II はじめてガイド と題した簡易操作マニュアルを提供しています この資料では Quartus II の基本的な作業フローをご案内すると共に 各オペレーションではどの資料を参考にするのが適当かをご紹介しています 2. Quartus II の基本操作フロー 以下の図は
Microsoft PowerPoint - 7.Arithmetic.ppt
第 7 章デジタル演算回路 1 デジタル信号処理音声, 音楽, 通信信号 信号 = 符号付き 2 進データ 負の数値の表現方法 2 2 進数 n ビット n-1 =Σb i 2 i 0 2 の補数 +=2 n n-1 n-1 2 n =1+Σb i 2 i +Σb i 2 i 0 0 n-1 =2 n ー =1+Σb i 2 i 0 3 2 進数の補数 2 の補数 各桁のビットを反転した後で最下位に
ZVH_VIEWER
R&S FSH4View 操作手順書 Rev 1 ローデ シュワルツ ジャパン株式会社 1 ローデ シュワルツ ジャパン FSH4View 操作手順書 1 FSH4View 操作手順 1.FSH4Viewの起動 2.FSHとPCの接続 3.FSHメモリ内データの転送 4. 測定画像の操作 5. 測定データを数値データへ変換 6. クイック ネーミング機能の設定 2 ローデ シュワルツ ジャパン FSH4View
7-1 Digital IC のライブラリの準備について [ 目的 ] 実験では 74HC00 を使用するので SPICE モデルを入手する [ 方法 ] LTspice User site からライブラリとシンボルを Download します
7-1 Digital IC のライブラリの準備について [ 目的 ] 実験では 74HC00 を使用するので SPICE モデルを入手する [ 方法 ] LTspice User site からライブラリとシンボルを Download します http://groups.yahoo.com/neo/groups/ltspice/files/%20lib/digital%2074hcxxx (( 注意
スライド 1
RL78/G13 周辺機能紹介 ADC A/D コンバータ ルネサスエレクトロニクス株式会社 ルネサス半導体トレーニングセンター 2013/08/02 Rev. 0.00 00000-A コンテンツ ADC の概要 ソフトウエア トリガ セレクト モード 連続変換モードのプログラム サンプル紹介 2 ADC の概要 3 ADC のブロック図 パワー オフが可能 入力 選択 記憶 比較 基準電圧 変換結果
ExcelVBA
EXCEL VBA REGLECASSE YU SATO 目次 はじめに 開発タブの表示 拡張子 VBEの起動と初期設定 モジュールの挿入 削除 プロジェクト モジュール プロシージャ 変数の宣言 (Dim) If~Then For~Next 応用 :If~ThenとFor~Next ボタンの作成 最後に Subプロシージャ 基本説明 セルの指定 (Range) 変数とデータ型 (String,Long)
Microsoft PowerPoint - RL78G1E_スタータキットデモ手順_2012_1119修正版.pptx
Smart Analog Stick をはじめて動かす RL78G1E STARTER KIT を始めて使う方のために インストールから基本的な使い方を体験する部分を順番にまとめました この順番で動かせば とりあえず体験できるという内容で作成してあります 2 度目からお使いの場合には Stick ボードを USB に接続した状態で 3 から始めてください 詳細な機能説明は ユーザーズマニュアルやオンラインヘルプを参考にしてください
C#の基本
C# の基本 ~ 開発環境の使い方 ~ C# とは プログラミング言語のひとつであり C C++ Java 等に並ぶ代表的な言語の一つである 容易に GUI( グラフィックやボタンとの連携ができる ) プログラミングが可能である メモリ管理等の煩雑な操作が必要なく 比較的初心者向きの言語である C# の利点 C C++ に比べて メモリ管理が必要ない GUIが作りやすい Javaに比べて コードの制限が少ない
Microsoft PowerPoint pptx
3.2 スイッチングの方法 1 電源の回路図表記 電源ラインの記号 GND ラインの記号 シミュレーションしない場合は 省略してよい ポイント : 実際には V CC と GND 配線が必要だが 線を描かないですっきりした表記にする 複数の電源電圧を使用する回路もあるので 電源ラインには V CC などのラベルを付ける 2 LED のスイッチング回路 LED の明るさを MCU( マイコン ) で制御する回路
RTC_STM32F4 の説明 2013/10/20 STM32F4 内蔵 RTC の日付 時刻の設定および読み込みを行うプログラムです UART2( 非同期シリアル通信ポート 2) を使用して RTC の設定および読み込みを行います 無料の開発ツール Atollic TrueSTUDIO for
RTC_STM32F4 の説明 2013/10/20 STM32F4 内蔵 RTC の日付 時刻の設定および読み込みを行うプログラムです UART2( 非同期シリアル通信ポート 2) を使用して RTC の設定および読み込みを行います 無料の開発ツール Atollic TrueSTUDIO for ARM Lite 4.2.0 で作成した STM32F4 Discovery 基板用のプロジェクトです
0630-j.ppt
5 part II 2008630 6/30/2008 1 SR (latch) 1(2 22, ( SR S SR 1 SR SR,0, 6/30/2008 2 1 T 6/30/2008 3 (a)(x,y) (1,1) (0,0) X Y XOR S (S,R)(0,1) (0,0) (0,1) (b) AND (a) R YX XOR AND (S,R)(1,1) (c) (b) (c) 6/30/2008
-2 外からみたプロセッサ GND VCC CLK A0 A1 A2 A3 A4 A A6 A7 A8 A9 A10 A11 A12 A13 A14 A1 A16 A17 A18 A19 D0 D1 D2 D3 D4 D D6 D7 D8 D9 D10 D11 D12 D13 D14 D1 MEMR
第 回マイクロプロセッサのしくみ マイクロプロセッサの基本的なしくみについて解説する. -1 マイクロプロセッサと周辺回路の接続 制御バス プロセッサ データ バス アドレス バス メモリ 周辺インタフェース バスの基本構成 Fig.-1 バスによる相互接続は, 現在のコンピュータシステムのハードウェアを特徴づけている. バス (Bus): 複数のユニットで共有される信号線システム内の データの通り道
UIOUSBCOM.DLLコマンドリファレンス
UIOUSBCOM.DLL UIOUSBCOM.DLL Command Reference Rev A.1.0 2008/11/24 オールブルーシステム (All Blue System) ウェブページ : www.allbluesystem.com コンタクト :[email protected] 1 このマニュアルについて...3 1.1 著作権および登録商標...3 1.2
Studuino ライブラリ環境設定Windows編
Studuino ライブラリセット 環境設定手順書 Windows 編 本資料は Studuino ライブラリのセットアップ手順書になります 以下の作業の前に 本資料を参考に Arduino 言語開発環境を設定して下さい Arduino 言語で加速度センサーを制御する Studuino プログラミング環境で Arduino 言語に変換したソースを編集する もくじ 1. Arduino IDE のインストール...
CoIDE 用 F4D_VCP の説明 V /07/05 USB の VCP( 仮想 COM ポート ) による非同期シリアル通信を行うプログラムです Free の開発ツール CoIDE で作成した STM32F4 Discovery 用のプロジェクトです プログラムの開始番地は 0x
CoIDE 用 F4D_VCP の説明 V001 2014/07/05 USB の VCP( 仮想 COM ポート ) による非同期シリアル通信を行うプログラムです Free の開発ツール CoIDE で作成した STM32F4 Discovery 用のプロジェクトです プログラムの開始番地は 0x08000000 です デバッグが可能です 目次 1. USB の VCP( 仮想 COM ポート )
スライド 1
RX62N 周辺機能紹介 TMR 8 ビットタイマ ルネサスエレクトロニクス株式会社ルネサス半導体トレーニングセンター 2013/08/02 Rev. 1.00 00000-A コンテンツ TMR の概要 プログラムサンプル (1) パルス出力機能 (8 ビットモード ) プログラムサンプル (2) インターバルタイマ機能 (16 ビット コンペアマッチカウントモード ) プログラムサンプルのカスタマイズ
Microsoft Word - VBA基礎(3).docx
上に中和滴定のフローチャートを示しました この中で溶液の色を判断する部分があります このような判断はプログラムではどのように行うのでしょうか 判断に使う命令は IF 文を使います IF は英語で もし何々なら という意味になります 条件判断条件判断には次の命令を使います If 条件式 1 Then ElseIf 条件式 2 Then ElseIf 条件式 3 Then 実行文群 1 実行文群 2 実行文群
Report Template
MachXO2 EFB(Embedded Function Block) 1 目次 1 このドキュメントの概要 3 2 EFB の構成 4 3 EFB とハードマクロの生成と注意事項 5 3.1 EFB Enables タブの設定... 5 3.2 I2C タブの設定... 6 3.3 SPI タブの設定... 7 3.4 Timer/Counter タブの設定... 9 4 Wishbone から
TF Series with Tio1608-D System Setup Guide
システムセットアップガイド 第 1 版 : 2016 年 6 月 このガイドでは ヤマハデジタルミキシングコンソール TF シリーズ と I/O ラック Tio1608-D を使用したミキシングシステムのセットアップ手順や Tio1608-D の台数に応じたシステム例を紹介します TF シリーズは単体でも使用することができますが Tio1608-D を併用することで簡単にシステムを拡張することができ
ReTRY HUB
USB デバイス接続制御アダプター ReTRY HUB 型番 CT USB4HUB 設定ソフト Ver1.0 版 マニュアル http://www.centech.jp 2017/04/21 製品仕様 商品名 型番 ReTRY HUB CT USB4HUB サイズ 縦 75mm x 横 120mm x 高さ15mm( 突起部含まず ) 重量 約 230g( 本体のみ ) 消費電流 12V 30mA(
まず,13 行目の HardwareTimer Timer(1); は,HardwareTimer というクラスを利用するという宣言である. この宣言によって Timer というインスタンスが生成される.Timer(1) の 1 は,OpenCM に 4 個用意されているタイマのうち,1 番のタイマ
8 タイマ割り込みを使ってみよう割り込み (Interrupt) とは, 言葉の意味の通り, ある作業中に割り込むことである. マイコンにおいてはとても重要な機能の一つである. 例えば, インスタントカップ麺にお湯を入れて 3 分間待ってから食べることを想像してみよう. お湯を入れてカップ麺ができるまでの 3 分間, 時計の針だけを見つめ続けて, 他には何にもせずに待ち続ける人はほとんどいないだろう.
A&D社製データロガーを初めてお使いになる方へ
温度データーロガー チュートリアル Ver.2.00 ( 株 ) エー アンド デイの温度データーロガーを初めてお使いになる方へ AD-5324SET/AD-5325SET に付属の Win Data Logger ( データーロガー用通信ソフトウェア ) を お使いのコンピュータにあらかじめインストールしてください このチュートリアルは 初めてデーターロガーを使うと言う方のために 実際の取り扱い方を説明いたします
Microsoft PowerPoint - 01_Vengineer.ppt
Software Driven Verification テストプログラムは C 言語で! SystemVerilog DPI-C を使えば こんなに便利に! 2011 年 9 月 30 日 コントローラ開発本部コントローラプラットフォーム第五開発部 宮下晴信 この資料で使用するシステム名 製品名等は一般にメーカーや 団体の登録商標などになっているものもあります なお この資料の中では トレードマーク
Microsoft Word - XPC4ソフトマニュアル.doc
< XPC-4 映像ツール 簡易マニュアル> お試し版 Ver1.0 XPC-4 に USB ケーブルを接続する際の注意事項 ファームウェア アップデートの作業 もしくは XPC-4 映像ツール を使用するときは USB2.0 に対応した USB ケーブル (Type A[ オス ]-Type B[ オス ]) が 1 本必要です USB ケーブルはパソコンの OS(Windows) が完全に起動してから
Taro-82ADAカ.jtd
デジタル & アナログ絶縁入出力ユニット解説書製品型式 8 2 A D A - K C 製品型式 8 2 A D A - B D 製品型式 D A C S - 8 2 0 0 この解説書は 8 2 A D A または D A C S - 8 2 0 0 の動作と使用方法について簡単に説明したものです D A C S - 8 2 0 0 の場合は この解説書の 8 2 A D A という表現を 一部
C プログラミング演習 1( 再 ) 2 講義では C プログラミングの基本を学び 演習では やや実践的なプログラミングを通して学ぶ
C プログラミング演習 1( 再 ) 2 講義では C プログラミングの基本を学び 演習では やや実践的なプログラミングを通して学ぶ 今回のプログラミングの課題 次のステップによって 徐々に難易度の高いプログラムを作成する ( 参照用の番号は よくわかる C 言語 のページ番号 ) 1. キーボード入力された整数 10 個の中から最大のものを答える 2. 整数を要素とする配列 (p.57-59) に初期値を与えておき
スクールCOBOL2002
3. 関連資料 - よく使われる機能の操作方法 - (a) ファイルの入出力処理 - 順ファイル等を使ったプログラムの実行 - - 目次 -. はじめに 2. コーディング上の指定 3. 順ファイルの使用方法 4. プリンタへの出力方法 5. 索引ファイルの使用方法 6. 終わりに 2 . はじめに 本説明書では 簡単なプログラム ( ファイル等を使わないプログラム ) の作成からコンパイル 実行までの使用方法は既に理解しているものとして
オンチップ・メモリ クイック・ガイド for Cyclone III
ver.9.1 2010 年 1 月 1. はじめに アルテラ社製 FPGA デバイスにおいてオンチップ メモリ (FPGA 内部で RAM や ROM などを構成 ) を実現するには Memory Compiler メガファンクションを使用します Memory Compiler メガファンクションは Cyclone シリーズ, Arria シリーズ, Stratix シリーズ, HardCopy
1. UART について UART は Universal Asynchronous Receiver Transmitter の頭文字をとったもので 非同期シリアル通信と呼ばれます シリアル通信とは 一本の信号線でデータをやりとりするために 1bit ずつデータを送出することをいいます データを受
STM32L_UART1 の説明 V004 2014/03/30 STM32L-Discovery の UART 1 の送受信を行うプログラムです 無料の開発ツール Atollic TrueSTUDIO for ARM Lite( 試用版 ) で作成したプロジェクトです プログラムの開始番地は 0x08000000 です デバッグが可能です PC アプリケーションの Access_SerialPort
