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

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

Microsoft Word - 実験4_FPGA実験2_2015

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

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

Microsoft PowerPoint LC_15.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 =

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

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

Microsoft PowerPoint - 7.Arithmetic.ppt

VHDL VHDL VHDL i

HW-Slides-04.ppt

VHDL

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

Microsoft PowerPoint LC1_14_論理回路シミュレータ.ppt

Microsoft PowerPoint LCB_14_論理回路シミュレータ.ppt

論理設計の基礎

フリップフロップ

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

スライド 1

-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

計数工学実験/システム情報工学実験第一 「ディジタル回路の基礎」

Unconventional HDL Programming ( version) 1

Microsoft PowerPoint pptx

コンピュータ工学講義プリント (7 月 17 日 ) 今回の講義では フローチャートについて学ぶ フローチャートとはフローチャートは コンピュータプログラムの処理の流れを視覚的に表し 処理の全体像を把握しやすくするために書く図である 日本語では流れ図という 図 1 は ユーザーに 0 以上の整数 n

プログラミング基礎

<91E63589F161>

情報工学実験 C コンパイラ第 2 回説明資料 (2017 年度 ) 担当 : 笹倉 佐藤

C プログラミング演習 1( 再 ) 2 講義では C プログラミングの基本を学び 演習では やや実践的なプログラミングを通して学ぶ

新しくシンボルを作成することもできるが ここでは シンボル :opamp2.asy ファイル を回路と同じフォルダにコピーする コピーしたシンボルファイルをダブルクリックで 開く Fig.4 opamp2 のシンボル 変更する前に 内容を確認する メニュー中の Edit の Attributes の

VBI VBI FM FM FM FM FM DARC DARC

HW-Slides-05.ppt

PowerPoint プレゼンテーション

7-1 Digital IC のライブラリの準備について [ 目的 ] 実験では 74HC00 を使用するので SPICE モデルを入手する [ 方法 ] LTspice User site からライブラリとシンボルを Download します

Verilog HDL による回路設計記述

Java講座

040402.ユニットテスト

<4D F736F F D20438CBE8CEA8D758DC F0939A82C282AB2E646F63>

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

Microsoft PowerPoint - VBA解説1.ppt [互換モード]

オートマトン 形式言語及び演習 1. 有限オートマトンとは 酒井正彦 形式言語 言語とは : 文字列の集合例 : 偶数個の 1 の後に 0 を持つ列からなる集合 {0, 110, 11110,

デジタル回路入門

PowerPoint Presentation

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

FPGAによる24時間時計回路

Microsoft PowerPoint - 4.CMOSLogic.ppt

RSA FA FA AND Booth FA FA RSA 3 4 5

論理回路設計

Week 1 理解度確認クイズ解答 解説 問題 1 (4 2 点 =8 点 ) 以下の各問いに答えよ 問題 bit 版の Windows8.1 に Java をインストールする時 必要なパッケージはどれか 但し Java のコンパイルができる環境をインストールするものとする 1. jdk

break 文 switch ブロック内の実行中の処理を強制的に終了し ブロックから抜けます switch(i) 強制終了 ソースコード例ソースファイル名 :Sample7_1.java // 入力値の判定 import java.io.*; class Sample7_1 public stati

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

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

スライド 1

PowerPoint Presentation

PeakVHDL Max+Plus VGA VG

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

論理回路設計

C#の基本2 ~プログラムの制御構造~

論理回路設計

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

PowerPoint プレゼンテーション

電卓の設計 1

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

一般電気工学第二

Microsoft PowerPoint - LogicCircuits01.pptx

VLSI工学

SLCONFIG の操作 JF1PYE Ⅰ. PC と slconfig の通信設定 Ⅱ. Slconfig の操作 Ⅲ. 端末ソフトによる Command 機能 Ⅳ. slconfig 実行形式プログラムの作成 Ⅴ. 端末ソフト Tera Term のダウンロード インストー

Transcription:

第 回 VHDL 演習組み合せ論理回路 VHDL に関する演習を行う 今回は, 組み合せ論理回路の記述について学ぶ - 論理回路の VHDL 記述の基本 同時処理文を並べることで記述できる 部品の接続関係を記述 順番は関係ない process 文の内部では, 順次処理文を使う process 文 つで, つの同時処理文になる順次処理文は, 回路の動作を 逐次処理的 に ( 手続き処理型プログラム言語のように ) 記述できる 分かりやすくなる注意 : 回路動作そのものが逐次処理になるわけではない process 文は, 組み合せ論理回路にも, 順序回路にも使える ステートマシンの記述に適す ステートマシンの記述には process 文を使う ( 同時処理文だけでも記述できるが, 設計が大変 ) マイクロプロセッサとインタフェース講義資料 -

- VHDL 演習 ( 組み合せ論理回路 ) 回路 半加算器 (half adder,fig.-) 全加算器を構成する要素である半加算器を作成する i) リスト - のコードを理解してから, コンパイル, ダウンロードする ii) 実験基板上のスイッチ W, が, の入力,LED, が, の出力となる すべての組み合せを入力し,LED の出力から回路の動作を確認, 真理値表を作成せよ リスト - 半加算器 use IEEE.TD_LOGIC_6.LL; use IEEE.TD_LOGIC_RITH.LL; use IEEE.TD_LOGIC_UNIGNED.LL; entity Half_adder is,:in std_logic;, :out std_logic end Half_adder; architecture ehavioral of Half_adder is <= xor ; <= and ; end ehavioral; Fig.- 半加算器 半加算器 桁分の加算のための基本回路 ( 下位からの桁上げ無し ) 入力 bit, 出力 bit + - マイクロプロセッサとインタフェース講義資料

回路 全加算器 (full adder Fig.-) 半加算器を用いて全加算器を記述する 構造化記述を理解する ⅰ) リスト - のコードを理解してから, コンパイル, ダウンロードする ⅱ) 実験基板上のスイッチ W,, が,, の入力,LED, が, の出力となる すべての組み合せを入力し,LED の出力から回路の動作を確認, 真理値表を作成せよ Full dder リスト - 全加算器 use IEEE.TD_LOGIC_6.LL; use IEEE.TD_LOGIC_RITH.LL; use IEEE.TD_LOGIC_UNIGNED.LL; entity Full_adder is,,:in std_logic;, :out std_logic end Full_adder; architecture ehavioral of Full_adder is component Half_adder port (,:in std_logic;,: out std_logic end component; signal U_,U_,U_: std_logic; U: Half_adder port map (,, U_, U_ U: Half_adder port map (U_,,, U_ <= U_ or U_; end ehavioral; としてもよい Half dder Fig.- 全加算器 Half dder 構造化記述コンポーネント宣言下位モジュールをコンポーネントとして呼び出す際に, コンポーネントの形を宣言する component コンポーネント名ポート宣言 end component; コンポーネント インスタンス文下位モジュールを呼び出し 信号と下位モジュールのポートを結びつけるラベル名 : コンポーネント名 port map ( 信号, 結合のさせ方には以下の二通りがある 位置による結合信号とポートを, ポート文で書かれた順番に結合 名前による結合 port map の信号の部分にポート名 => 信号名と記述することで結合を指定可能 全加算器 桁分の加算のための基本回路 ( 下位からの桁上げ有り ) 入力 bit, 出力 bit C + U_ U_ U_ 5 マイクロプロセッサとインタフェース講義資料 -

演習 半加算器 (H) 及び全加算器 (F) を再利用して,Fig.- のような bit 加算器を設計する その VHDL コードはリスト - のようになる この中で用いられているコンポーネント インスタンスの文の上位及び下位モジュール同士のポート接続関係を示す部分は~9にて記述する これらの部分を埋めてリスト - の VHDL コードを完成させよ dder_ リスト - bit 加算器の VHDL コード use IEEE.TD_LOGIC_6.LL; use IEEE.TD_LOGIC_RITH.LL; use IEEE.TD_LOGIC_UNIGNED.LL; entity dder_ is Port ( : in std_logic_vector( downto : in std_logic_vector( downto Y : out std_logic_vector( downto ) end dder_; architecture TRUCTURE of dder_ is component Half_adder is,:in std_logic;, :out std_logic end component; component Full_adder is,,:in std_logic;, :out std_logic end component; signal U_C,U_C,U_C : std_logic; () () () () () () () () H F F F H F F F U_C U_C U_C Y() Y() Y() Y() Y() H : Half_adder port map (,,, F : Full_adder port map (5, 6, 7, 8, 9 F : Full_adder port map (,,,, F : Full_adder port map (5, 6, 7, 8, 9 Fig.- bit 加算器 End TRUCTURE; 7 8 9 7 8 9 - マイクロプロセッサとインタフェース講義資料

process 文 ハードウェアを逐次処理文によって記述 [< ラベル名 >] : process [< センシティビティリスト >] [ 宣言文 ] [ 逐次処理文による記述 ] end process [< ラベル名 >] CLK <= CKG or G; process(clk,r) if R = then Q <= ; if CLK event and CLK = then Q <= Q+; end process; R <= C and G; C G CKG R Q Q Q CLK 逐次処理文による記述 ( プロセス文の中身 ) は C 言語などと同様に, 文の順番が意味を持つ つのプロセス文は, 他の文に対して同時処理文として処理されるステートマシンの記述に使われることが多いが, 組合せ論理回路の記述にも使用可能 回路 マルチプレクサ (Fig.-) 選択信号の入力により出力を切り替えるマルチプレクサの動作を理解する process 文および if 文の文法を学ぶ i) リスト - のコードを理解してから, コンパイル, ダウンロードする ii) 実験基板上のスイッチ W, が, の入力,W が の入力となる W の値により Y の値が出力される L の切り替わる様子を確認せよ リスト - マルチプレクサ use IEEE.TD_LOGIC_6.LL; use IEEE.TD_LOGIC_RITH.LL; use IEEE.TD_LOGIC_UNIGNED.LL; entity MUX is,:in std_logic; :in std_logic; Y :out std_logic end MUX; architecture ehavioral of MUX is process(,,) process 文内では, 手続き言語プ if ='' then Y <= ; ログラムのように, 逐次処理的 else Y <= ; に動作を表す! end process; end ehavioral; Fig.- マルチプレクサ Y process 文上から順番に処理される順次処理文を記述する [< ラベル名 >]:process [< センシティビティリスト >] [ 宣言文 ] [ 順次処理文による記述 ] end process [< ラベル名 >] センシティビティリスト : このリストに指定した信号に変化が生じたときに ~end process 内の記述を実行する つのプロセス文は, 他の文に対して同時処理文として処理される if 文,case 文等は process 文の内部でのみ記述できる if 文 条件分岐を伴う回路を記述する際に使用する if 条件 then 条件成立の時の処理 ; else 条件不成立の時の処理 ; 複数の条件で分岐を行う場合は以下のように記述する if 条件 then 条件 成立の時の処理 ; elsif 条件 then 条件 成立の時の処理 ; elsif 条件 n then 条件 n 成立の時の処理 ; else 条件 ~n が全て不成立の時の処理 *Fig.- の回路は,ND-OR elector とも呼ばれる マイクロプロセッサとインタフェース講義資料 -5

回路 5 7 セグメントデコーダ (Fig.-5) デコーダ回路を利用した 7 セグメント LED の駆動回路を作成する case 文の文法を理解する ⅰ) リスト -5 のコードを理解してから, コンパイル, ダウンロードする ⅱ)W~ を用いて入力を変化させ,7 セグメントデコーダの動作を確認する ⅲ) 桁の 7 セグメントデコーダに, 各自の学籍番号を表示するにはどうすればよいか 百の位, 十の位, 一の位の出力をそれぞれ Y,Y,Y とし, 代入文 (Y<= ; など ) のみを記せ リスト -5 7 セグメントデコーダ use IEEE.TD_LOGIC_6.LL; use IEEE.TD_LOGIC_RITH.LL; use IEEE.TD_LOGIC_UNIGNED.LL; entity Decoder is : in std_logic_vector( downto Y: out std_logic_vector(6 downto ) end Decoder; architecture ehavioral of Decoder is process() case is when "" => Y <= ""; when "" => Y <= ""; when "" => Y <= ""; when "" => Y <= ""; when "" => Y <= ""; when "" => Y <= ""; when "" => Y <= ""; when "" => Y <= ""; when "" => Y <= ""; when "" => Y <= ""; when others => Y <= ""; end case; end process; end ehavioral; 複数ビットの扱い方 std_logic_vector( N downto N+ ビットの信号を扱うことが可能 M が一番大きい数字の場合 downto,m が の場合は to を用いる 信号名 (i) とすることで i 番目の値, 信号名 (i downto j) とすることで i 番目から j 番目までの複数のビットを取り出すことができる case 文信号の値により動作を切り替える回路を記述する際に使用する case 信号 is when 値 => 文 ; -- 信号が値 の時の動作を記述 when 値 => 文 ; -- 信号が値 の時の動作を記述 when others => 文 ;-- 全てに該当しなかった時の記述 end case; () () () () Y() Y() Y() Y() Y() Y(5) Y(6) Fig.-5 7 セグメント LED 用デコーダ -6 マイクロプロセッサとインタフェース講義資料

演習 7 セグメントデコーダ ( リスト -5) 入力 W~W で設定される入力 ()~() と 7 セグメント LED に表示された文字パターンの全ての組み合せを示せ. 文字パターンの図示の例 参考文献 ) 小川晃 :PLD MTER Digital Technical olutions, マイクロアプリケーションラボラトリー () ) 長谷川裕恭 :VHDL によるハードウェア設計入門,CQ 出版社 (995) ) 吉田, 尾知 :VHDL で学ぶディジタル回路設計,CQ 出版社 () ) 坂巻佳寿美 : 見てわかる VHDL, 工業調査会 () マイクロプロセッサとインタフェース講義資料 -7

演習問題の解答例演習 component 文による ビット加算回路の構成 ( リスト -) 半加算器 (H) 及び全加算器 (F) を再利用して,Fig.- のような bit 加算器を設計する その VHDL コードはリスト - のようになる この中で用いられているコンポーネント インスタンスの文の上位及び下位モジュール同士のポート接続関係を示す部分は ~9 にて記述する これらの部分を埋めてリスト - の VHDL コードを完成させよ 解答欄 () () Y() U_C 5 () 6 () 7 U_C 8 Y() 9 U_C () () U_C Y() U_C 5 () 6 () 7 U_C 8 Y() 9 Y() # 上の回答例は,Fig.- の回路図通りの構成を実現するためのものです 実際には,half adder および full adder への入力ビットの順番が変わっても, 外から見た ビット加算器としての機能に変わりはありません つまり, と,5~7,~,5~7 のそれぞれの組の中での順番は変わっても構いません, もちろん, これは full adder や half adder の特性から来るものです 演習 7 セグメントデコーダ ( リスト -5) 入力 pg~pg と 7 セグメント LED に表示された文字パターンを示せ.,, PG()~PG() = のとき PG()~PG() = のとき PG()~PG() = のとき 5 6 PG()~PG() = のとき PG()~PG() = のとき PG()~PG() = のとき PG()~PG() = のとき 6 PG()~PG() = のとき PG()~PG() = のとき PG()~PG() = のとき PG()~PG() = ~ のとき 解説 日の字型パターン を持つ 7 セグメント LED で数字を表示するための回路の例です when 構文を使っています 入力の 進数が ( 進数の ) 以上では表示は E となるようにしています 桁分の表示なので,~ までしか入力しないことを前提にしていても,when 構文では全ての場合について出力を記述します -8 マイクロプロセッサとインタフェース講義資料