回路 7 レジスタ ( 同期イネーブル及び非同期リセット付 ) 入力データを保持するのに用いる記憶素子 使用用途として, マイクロプロセッサ内部で演算や実行状態の保持に用いられる Fig4-2 のレジスタは, クロック信号の立ち上がり時かつ 信号が 1 のときに外部からの 1 ビットデータ R をレ

Similar documents
- VHDL 演習 ( 組み合せ論理回路 ) 回路 半加算器 (half adder,fig.-) 全加算器を構成する要素である半加算器を作成する i) リスト - のコードを理解してから, コンパイル, ダウンロードする ii) 実験基板上のスイッチ W, が, の入力,LED, が, の出力とな

Microsoft Word - 実験4_FPGA実験2_2015

問 2. タイミングチャート以下に示す VHDL コードで記述されている回路に関するタイミングチャートを完成させよ ) レジスタの動作 use IEEE.std_logic_64.all; entity RegN is generic (N : integer := 8 port ( CLK, EN

エンティティ : インタフェースを定義 entity HLFDD is port (, : in std_logic ;, : out std_logic ) ; end HLFDD ; アーキテクチャ : エンティティの実現 architecture RH1 of HLFDD is <= xor

Microsoft PowerPoint LC_15.ppt

2ALU 以下はデータ幅 4ビットの ALU の例 加算, 減算,AND,OR の4つの演算を実行する 実際のプロセッサの ALU は, もっと多種類の演算が可能 リスト 7-2 ALU の VHDL 記述 M use IEEE.STD_LOGIC_1164.ALL; 00 : 加算 use IEE

Microsoft PowerPoint - 集積回路工学_ ppt[読み取り専用]

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 =

TECH_I Vol.25 改訂新版PCIデバイス設計入門

VHDL VHDL VHDL i

TULを用いたVisual ScalerとTDCの開発

フリップフロップ

スライド 1

VHDL

SOPC Builder ペリフェラル 簡易ユーザ・ガイド - PIO (Parallel I/O)

三菱電機マイコン機器ソフトウエア株式会社

VLSI工学

-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

PowerPoint プレゼンテーション

<91E63589F161>

Jan/25/2019 errata_c17m11_10 S1C17 マニュアル正誤表 項目 リセット保持時間 対象マニュアル発行 No. 項目ページ S1C17M10 テクニカルマニュアル システムリセットコントローラ (SRC) 特性 19-3 S1C17M20/M

スライド 1

論理設計の基礎

<4D F736F F D2091B28BC68CA48B8695F18D902E646F63>

Unconventional HDL Programming ( version) 1

Microsoft PowerPoint - LogicCircuits09note.ppt [互換モード]

HW-Slides-05.ppt

QuartusII SOPC_Builderで利用できるGPIF-AVALONブリッジとは?

ソフトウェア基礎技術研修

Microsoft PowerPoint - 3.3タイミング制御.pptx

スライド 1

arduino プログラミング課題集 ( Ver /06/01 ) arduino と各種ボードを組み合わせ 制御するためのプログラミングを学 ぼう! 1 入出力ポートの設定と利用方法 (1) 制御( コントロール ) する とは 外部装置( ペリフェラル ) が必要とする信号をマイ

Microsoft PowerPoint - LogicCircuits11note.ppt [互換モード]

FPGAによる24時間時計回路

VelilogHDL 回路を「言語」で記述する

ex04_2012.ppt

FPGA と LUPO その1

ディジタル電子回路 設計演習課題

スライド 1


初心者のための RL78 入門コース ( 第 3 回 : ポート出力例 2 とポート入力 ) 第 3 回の今回は, 前回作成したプログラムを RL78/G13 のハードウェアを用いて見直しをお こないます 今回の内容 8. コード生成を利用した実際のプログラム作成 ( その 2) P40 9. コー

スライド 1

スライド 1

ComputerArchitecture.ppt

0630-j.ppt

電卓の設計 1

PeakVHDL Max+Plus VGA VG

ディジタル回路 第1回 ガイダンス、CMOSの基本回路

PowerPoint Presentation

スライド 1

<4D F736F F F696E74202D C190DD B A CB48D65208E DC58F49205B8CDD8AB B83685D>

Microsoft Word - 卒業論文.doc

ソフトウェア基礎技術研修

Microsoft PowerPoint pptx

計算機アーキテクチャ

VBI VBI FM FM FM FM FM DARC DARC

4 分岐処理と繰返し処理 ( 教科書 P.32) プログラムの基本的処理は三つある. (1) 順次処理 : 上から下に順番に処理する ぶんきそろ (2) 分岐処理 : 条件が揃えば, 処理する はんぷく (3) 反復処理 : 条件が揃うまで処理を繰り返す 全てのプログラムは (1) から (3) の

Verilog HDL による回路設計記述

スライド 1

正転時とは反対に回転する これが逆転である 図 2(d) の様に 4 つのスイッチ全てが OFF の場合 DC モータには電流が流れず 停止する ただし 元々 DC モータが回転していた場合は 惰性でしばらく回転を続ける 図 2(e) の様に SW2 と SW4 を ON SW1 と SW3 を O

CSM_H5S_SGTA-024_2_15

スライド 1

OS

前回の内容 マイクロコンピュータにおけるプログラミング PC上で作成 コンパイル マイコンに転送 実行 プログラムを用いて外部の装置を動作させる LED turnonled turnoffled LCD printf プログラムを用いて外部の装置の状態を読み取る プッシュスイッチ getpushsw

LSI LSI 2

Microsoft PowerPoint - kougi7.ppt

卒 業 研 究 報 告

モータ HILS の概要 1 はじめに モータ HILS の需要 自動車の電子化及び 電気自動車やハイブリッド車の実用化に伴い モータの使用数が増大しています 従来行われていた駆動用モータ単体のシミュレーション レシプロエンジンとモータの駆動力分配制御シミュレーションの利用に加え パワーウインドやサ

Microsoft PowerPoint - RL78G14_動画マニュアル_タイマRD.ppt [互換モード]

スライド 1

ハードウェア・ イーサIPコアを解読する

CMOS リニアイメージセンサ用駆動回路 C10808 シリーズ 蓄積時間の可変機能付き 高精度駆動回路 C10808 シリーズは 電流出力タイプ CMOS リニアイメージセンサ S10111~S10114 シリーズ S10121~S10124 シリーズ (-01) 用に設計された駆動回路です セン

スライド 1

論文番号 分 2-2 平成 24 年度全国情報技術教育研究会第 41 回全国大会 ( 新潟大会 ) Xbee を活用した無線通信の研究 期日平成 24 年 8 月 9 日 ( 木 )~10 日 ( 金 ) 場所長岡市シティホールプラザ アオーレ長岡 香川県立三豊工業高等学校 電子科 本行

Microsoft Word - VBA基礎(3).docx

プログラミング基礎

スライド 1

Microsoft PowerPoint LC_7.ppt

TF Series with Tio1608-D System Setup Guide

デザインパフォーマンス向上のためのHDLコーディング法

S-maqs利用の手引きver1.0

TopSE並行システム はじめに

Report Template

評価ボード キット 開発ツールご使用上の注意事項 1. 本評価ボード キット 開発ツールは お客様での技術的評価 動作の確認および開発のみに用いられることを想定し設計されています それらの技術評価 開発等の目的以外には使用しないで下さい 本品は 完成品に対する設計品質に適合していません 2. 本評価

CodeGear Developer Camp

第 1 回マイクロプロセッサの時代 マイクロプロセッサとは, コンピュータの CPU( および周辺回路 ) を1チップ化した集積回路である. このマイクロプロセッサを構成する最も細かい部分の動作の基本は, 電子デバイスの持つ増幅作用と非線形作用にある. 一方, その働き全体を捉えれば, 記号を操作す

Microsoft Word - Ladder Tool 使çfl¨ã…žã…‰ã…¥ã‡¢ã…«ã…©ã…•ã…¼ã†ªã†Š_ docx

CoIDE 用 F4D_VCP の説明 V /07/05 USB の VCP( 仮想 COM ポート ) による非同期シリアル通信を行うプログラムです Free の開発ツール CoIDE で作成した STM32F4 Discovery 用のプロジェクトです プログラムの開始番地は 0x

Handsout3.ppt

データ収集用 NIM/CAMAC モジュールマニュアル 2006/5/23 目次 クレート コントローラ CC/ NIM ADC 1821 (Seiko EG&G)...3 ADC インターフェイス U デッドタイム

CSM_H7CX-_-N_SGTB-014_12_6

メニュー STEP 1 ehome をダウンロード STEP 2-1 アプリへのアカウント登録 ーーーーーーーーーーーーーーーーーーーーーーーーーーーー Amazon Alexa Google Home と連携するには 最新アプリ ehome をご利用ください 事前に 下記手順に従って eremot

RSA FA FA AND Booth FA FA RSA 3 4 5

Microsoft Word - 19-d代 試é¨fi 解ç�fl.docx

Microsoft PowerPoint - 7.Arithmetic.ppt

Microsoft PowerPoint - 01-VerilogSetup-2019.pptx

目 次 1. 概要 ホームアプリの主な機能 操作方法 初期設定 初期画面 診断 ( 車両情報選択画面 ) 車両情報の登録 編集 登録した車両を削除する...

スライド 1

1. USB の VCP( 仮想 COM ポート ) について USB の VCP( 仮想 COM ポート ) は USB を非同期シリアル通信として使用するための USB のドライバです PC には VCP ドライバをインストールする必要があります USB の VCP( 仮想 COM ポート )

スライド 1

Transcription:

第 4 回 VHDL 演習 2 プロセス文とステートマシン プロセス文を用いるステートマシンの記述について学ぶ 回路 6 バイナリカウンタ (Fig.4-1) バイナリカウンタを設計し, クロック信号に同期して動作する同期式回路の動作を学ぶ ⅰ) リスト 4-1 のコードを理解してから, コンパイル, ダウンロードする ⅱ) 実験基板上のディップスイッチを用いて, 発生するクロック周波数を 1Hz に指定する SW12(RESET) が の入力となる LED の出力からカウンタの動作を確認せよ ( 情報科学実習 Ⅱ デジタルシステムの開発 の課題 7 とは,VHDL コードが若干異なる ) リスト 4-1 バイナリカウンタ library IEEE; entity B_CNT is port(,: in std_logic; Q: out std_logic_vector(3 downto 0) ); end B_CNT; architecture Behavioral of B_CNT is signal CNT: std_logic_vector(3 downto 0); Q <= not CNT; process(,) if = '0' then CNT <= (others => '0'); if 'event and = '1' then if CNT = 1111 then CNT <= 0000 ; CNT <= CNT +1; end Behavioral; std_logic_vector 型への全て同じ値の代入 std_logic_vector 型の信号に全て同じ値を代入したい場合, 以下の様に記述する 信号名 <= (others=> 値 ); 記述を再利用する際など, ビット幅が変化しても記述を変化させずに 0 を示す値などを代入することができる 同期式回路の記述クロック信号の立ち上がり時に動作する回路は,process 文の中で以下の様に記述する if クロック信号 event and クロック信号 = 1 then クロック信号立ち上がり時の動作を記述する文 ; クロックの立ち下り時に動作する場合は 1 を 0 とする クロック周波数の指定実験基盤では, 基板上のディップスイッチで発生するクロック周波数を変更することができる 周波数 1Hz の場合 SW3,SW4 を OFF, それ以外を ON if then 構文 4-Bit Register 4 Q[3:0] if 条件 then 条件成立の時の処理 条件不成立の時の処理 ; end if ; 二者択一の条件判断処理に使う Increment Fig4-1 バイナリカウンタ if then 構文その 2 if 条件 1 then 条件 1 成立の時の処理 ; elsif 条件 2 条件 2 成立の時の処理 ; elsif 条件 3 条件 3 成立の時の処理 ; elsif 条件 n 条件 n 成立の時の処理 ; 条件 1~n 全て不成立の時の処理 ; end if ; elsif(+if)e が無いことに注意 マイクロプロセッサとインタフェース講義資料 4-1

回路 7 レジスタ ( 同期イネーブル及び非同期リセット付 ) 入力データを保持するのに用いる記憶素子 使用用途として, マイクロプロセッサ内部で演算や実行状態の保持に用いられる Fig4-2 のレジスタは, クロック信号の立ち上がり時かつ 信号が 1 のときに外部からの 1 ビットデータ R をレジスタ内部に取り込み, 後続のデータが取り込まれるまでレジスタ内部状態を保持する 表 4-1 レジスタの状態遷移表 R S T C L K E N Q 0 0 1 0 Q 1 1 R 1 以外 Q R Register Q Fig4-2 レジスタ リスト 4-2 レジスタの VHDL コード library IEEE; entity Register is port(,, R, : in std_logic; Q : out std_logic ); end Register; architecture Behavioral of Register is process(,) if = 0 then Q<= 0 ; elsif event and = 1 then if = 1 then Q<=R; Q<=Q; end Behavioral; クロック信号 の立ち上がり時に 信号が 1 であれば, 外部信号 R を取り込み, そうでなければ取り込んだ値を保持する! 4-2 マイクロプロセッサとインタフェース講義資料

演習 1 リスト 4-3 に示す VHDL コードが示すハードウェアの回路図を完成させよ リスト 4-3 演習 4 のハードウェア library IEEE; entity Hard is port ( : in std_logic; : in std_logic; : in std_logic; D : in std_logic; SEL: in std_logic; Q0, Q1, Q2, Q3 : out std_logic); end Hard; architecture Behavioral of Hard is signal din, e, f, g, h, i : std_logic; process(,) -- register0 if ='0' then e<='0'; elsif 'event and ='1' then if ='1' then e<=din; e<=e; process(,) -- register1 if ='0' then f<='0'; elsif 'event and ='1' then if ='1' then f<=e; f<=f; 続く process(,) -- register2 if ='0' then g<='0'; elsif 'event and ='1' then if ='1' then g<=f; g<=g; process(,) -- register3 if ='0' then h<='0'; elsif 'event and ='1' then if ='1' then h<=g; h<=h; process(sel,d,i) -- multiplexer if SEL='1' then din <= D; din <= i; i <= h; Q0 <= e; Q1 <= f; Q2 <= g; Q3 <= h; end Behavioral; D マルチプレクサ din SEL i R Q Register0 e f g R Q R Q R Q Register1 Register2 Register3 h Fig4-3 演習 1 の回路 ( 未完成 ) Q0 Q1 Q2 Q3 マイクロプロセッサとインタフェース講義資料 4-3

ちょっと複雑なステートマシン ステートマシン ( 状態遷移回路 ) は, 外部信号によって内部の状態が遷移する順序回路である マイ クロプロセッサ等の各種デジタルシステムに搭載されている制御回路はステートマシンで実現される 回路 8 ステートマシンを用いた 2 ビットのアップダウンカウンタ リスト 4-4 ステートマシンを用いた 2 ビットのアップダウンカウンタの VHDL コード library IEEE; これを操作してアップ / ダウン entity State_cnt is カウントを切り替える port (, UP_DOWN : in std_logic; end State_cnt; CNT : out std_logic_vector(1 downto 0) ); architecture RTL of State_cnt is signal sel : std_logic_vector(1 downto 0); signal state : std_logic_vector(1 downto 0); process() if 'event and ='1' then case state is when "00" => if UP_DOWN='1' then state <="01"; state <="11"; when "01" => if UP_DOWN='1' then state <="10"; state <="00"; when "10" => if UP_DOWN='1' then state <="11"; state <="01"; when "11" => if UP_DOWN='1' then state <="00"; state <="10"; when others => end case; state <="00"; 状態の値を保持するステートレジスタ ステートマシンの記述 sel<= state; process(sel) case sel is when "00" => CNT<="00"; when "01" => CNT <="01"; when "10" => CNT <="10"; when "11" => CNT <="11"; when others=> CNT <="00"; end case; end RTL; UP_DOWN='1' UP_DOWN='0' UP_DOWN='0' UP_DOWN='0' UP_DOWN='0' 00 01 10 CNT=0 を出力 UP_DOWN='1' CNT=1 を出力 UP_DOWN='1' 状態に従って CNT に信号を出力する デコーダ CNT=2 を出力 UP_DOWN='1' 11 CNT=3 を出力 Fig4-4 リスト 4-4 の状態遷移図 4-4 マイクロプロセッサとインタフェース講義資料

演習 2 Fig.4-5 はタイマーシステムの構成図である このタイマーシステムは,1~8 までの数字キーを押し て時間を設定した後 START ボタンを押すとカウントダウンが行われ残り時間が 7 セグメント LED に表示 される 設定時間が経過するとスピーカからアラーム音が鳴る アラーム音は 10 回断続的に鳴るか STOP ボタンを押すかで, 鳴り止む その後再度数字キーにより時間を設定後,START ボタンを押せばタイマ ー機能が同様に繰り返される また, ボタンを押すと全ての機能動作がリセットされる 6 7 8 3 4 5 1 2 START クロック生成回路 数字キー VAL 制御回路 (State_timer) TIMER 7-SEG LED Decoder STOP Fig.4-5 タイマーシステム START STOP START STOP ALARM_ Fig.4-6 タイマーシステムの内部構成 Fig.4-6 はタイマーシステムの内部構成である その中の制御回路 (State_timer) は周辺回路全体の制 御を行う この制御回路を実現するためにステートマシン導入し,VHDL により設計した 制御回路の VHDL コードをリスト 4-5 に示す タイマーの入出力信号の説明 : 外部から入力する基準クロック信号 [ 入力,1ビット] VAL: 数字キーインタフェースからの設置値入力 [ 入力,3ビット] START: タイマーのスタートボタン入力 [ 入力,1ビット] STOP: タイマーのストップボタン入力 [ 入力,1ビット] : タイマーのリセットボタン入力 [ 入力,1ビット] TIMER: タイマー表示出力 [ 出力,4ビット] ALARM_: アラーム許可信号 [ 出力,1ビット] ( スピーカ回路はALARM_=1 で鳴るように設計されている ) マイクロプロセッサとインタフェース講義資料 4-5

リスト 4-5 制御回路の VHDL コード Library IEEE; entity State_timer is Port ( : in std_logic; : in std_logic; START : in std_logic; STOP end State_timer; : in std_logic; VAL : in std_logic_vector(2 downto 0); TIMER : out std_logic_vector(3 downto 0); ALARM_ : out std_logic); architecture Behavioral of State_timer is process(,) signal state : std_logic_vector(1 downto 0); signal t_cnt_en : std_logic; signal t_cnt : std_logic_vector(2 downto 0); signal a_cnt_en : std_logic; signal a_cnt : std_logic_vector(3 downto 0); signal rd_en : std_logic; if ='1' then state<=(others=>'0'); elsif 'event and ='1' then case state is when "00" => if START='1' then state<="01"; when "01" => state<="00"; if t_cnt="000" then when "10" => state<="10"; state<="01"; if STOP='1' then when "11" => state<="00"; state<="11"; if STOP='1' or a_cnt="1001" then state<="00"; state<="10"; when others => end case; state<="00"; process(,rd_en,val) if rd_en='1' then t_cnt<=val; elsif 'event and ='1' then if t_cnt_en='1' then if t_cnt="000" then t_cnt<=t_cnt; t_cnt<=t_cnt-'1'; t_cnt<=t_cnt; rd_en <= '1' when state="00" '0'; t_cnt_en<='1' when state="01" '0'; TIMER <=t_cnt; process(,) if ='1' then a_cnt<= (others=>'0'); elsif 'event and ='1' then if a_cnt_en = '1' then if a_cnt = "1001" then a_cnt <= (others=>'0'); a_cnt <= a_cnt+'1'; a_cnt <= a_cnt; a_cnt_en <='1' when state="11" '0'; ALARM_<='1' when state="10" '0'; end Behavioral; 4-6 マイクロプロセッサとインタフェース講義資料

リスト 4-5 について ここで使われているステートマシンの状態遷移図を Fig.4-4 を参考にし,01,10 などのステー トを付け加えて完成してください また 各ステートは何を意味するかも書きなさい リスト 4-5 の状態遷移図 = 1 00 START= 0 START= 1 各ステートの意味 ステート 00 タイマー時間入力 タイマーの設定時間を数字キーから入力し,START ボタンが押されてタイマーが動作するのを待つ ステート 01 タイマー動作 タイマーが動作し 設定した時間になるまでカウンタがカウントダウンを行い, その時の値が TIMER 信号を通じて 7 セグメント LED に表示される ステート 10 アラーム音 ON タイマーの設定時間が経過し スピーカからアラーム音を鳴らすためにスピーカ駆動信号 ARARM_ を 1 にしてスピーカへ出力し アラームを鳴らす また STOP 信号が 押された ( 1 になった ) 時アラーム音を鳴らすのをやめてタイマー時間乳慮おく状態へ戻る ステート 11 アラーム音 OFF 今まで ON になっていたアラーム音を OFF にする このときアラーム音が断続的に 10 回鳴るか STOP 信号が押された ( 1 になった ) 時タイマー時間入力状態へ戻る マイクロプロセッサとインタフェース講義資料 4-7

演習問題の解答例 リスト 4-5 の状態遷移図 = 1 00 START= 0 01 START= 1 t_cnt= 000 t_cnt 000 STOP= 1 STOP= 0 and a_cnt 1001 STOP= 1 or a_cnt= 1001 10 11 STOP= 0 各ステートの意味 ステート 00 タイマー時間入力タイマーの設定時間を数字キーから入力し,START ボタンが押されてタイマーが動作するのを待つ ステート 01 タイマー動作 タイマーが動作し 設定した時間になるまでカウンタがカウントダウンを行い, その時の値が TIMER 信号を通じて 7 セグメント LED に表示される ステート 10 アラーム音 ON タイマーの設定時間が経過し スピーカからアラーム音を鳴らすためにスピーカ駆動信号 ARARM_ を 1 にしてスピーカへ出力し アラームを鳴らす また STOP 信号が 押された ( 1 になった ) 時アラーム音を鳴らすのをやめてタイマー時間入力状態へ戻る ステート 11 アラーム音 OFF 今まで ON になっていたアラーム音を OFF にする このときアラーム音が断続的に 10 回鳴るか STOP 信号が押された ( 1 になった ) 時タイマー時間入力状態へ戻る 4-8 マイクロプロセッサとインタフェース講義資料