• 検索結果がありません。

Microsoft Word - 実験4_FPGA実験2_2015

N/A
N/A
Protected

Academic year: 2021

シェア "Microsoft Word - 実験4_FPGA実験2_2015"

Copied!
14
0
0

読み込み中.... (全文を見る)

全文

(1)

1

FPGAの実験Ⅱ

1.目的 (1)FPGA を用いて組合せ回路や順序回路を設計する方法を理解する。 (2)スイッチや表示器の動作を理解し、入出力信号を正しく扱う。 2.スケジュール 項目 内容 FPGA の実験Ⅱ(その 1) 実験の説明、実験(1)の予備実験 FPGA の実験Ⅱ(その 2) 実験(1)の予備実験のまとめ 実験(1)の計画書の作成とチェック FPGA の実験Ⅱ(その 3) 実験(1)の実施 実験(1)のレポートの作成 FPGA の実験Ⅱ(その 4) 実験(1)のレポートのチェック 実験(2)の予備実験 FPGA の実験Ⅱ(その 5) 実験(2)の予備実験のまとめ 実験(2)の計画書の作成とチェック FPGA の実験Ⅱ(その 6) 実験(2)の実施 実験(2)のレポート作成 FPGA の実験Ⅱ(その 7) プレゼンテーション 3.実験 3-1.実験の手順 次の手順で実験を進める。なお(S1)から(S3)は、予め実験計画書にまとめ ておくこと。予備実験はレポートに書かなくても良い。 (S1)準備(実験方法の基本的な考え方をまとめる) (S2)FPGA で実現する回路の構成をブロック図、入出力信号を真理値表で表す (S3)VHDL コードの作成(コーディング) (S4)論理合成、配置配線及びダウンロードの実行と動作の確認 実験ボードの取り扱い及びパソコンの操作については、下記のサイト に掲載する資料(実験補助テキスト)を参考にしてください。 http://esato.net/ex/

(2)

2 3-2.実験ボード

ザイリンクス社製 XC3S700A-4FGG400C(Spartan-3A) ・System Gate 700K

・Equivalent Logic Cells 13,248

3-3. 実験(1)デコーダ回路 3-3-1. 予備実験(1) SW6 と SW7 を操作し、7 セグメント LED の D30 に 0 から 3 を表示させる 回路を作成する。 (S1)準備(実現方法の基本的な考え方をまとめる) 実験ボードでは、プッシュスイッチ SW6 が図 1 のとおり FPGA の M7 ピンに接 続されている。また SW7 も同様の回路で FPGA の L6 ピンに接続されている。SW6 及び SW7 の OFF/ON と FPGA の入力信号(“1”-High / ”0”-Low)の関係は、表 1で表される。 表1 SW の状態と FPGA 入力信号 SW6 FPGA M7 SW7 FPGA L6 OFF OFF ON ON 図 1 プッシュスイッチ SW6 7 セグメント LED の D30 と FPGA の接続を図 2 に示す。使用している 7 セグメ ント LED は、アノードコモンタイプであり、FPGA の U15 ピンを High にすること で表示が可能になる。また、セグメントの割当を図 3 に示す。各セグメントは カソード側に接続された FPGA のピン出力を High にすることで点灯する。7 セグ メント LED に 0 から 3 を表示させるには、FPGA から表 2 の組み合わせで信号を 出力する必要がある。

(3)

3 図 2 7 セグメント LED D30 図 3 セグメント割当 表 2 7 セグメントに 0 から 3 を表示させるための出力信号 7Seg. LED 表示

各セグメント(FPGA のピン)の出力信号 [“1”-High /“0”-Low] * D.P (T13) g (R13) f (U9) e (Y11) d (W10) c (W9) b (Y9) a (Y7) 0 1 2 3 (S2) FPGA で実現する回路の構成をブロック図、入出力信号を真理値表で表す FPGA で実現するデコーダ回路は、入力信号が 2 ビット、出力信号が 8 ビット となる。入出力信号は共にベクトル型で扱うものとし、その変数と回路の構成 を図 4、入出力信号の関係を表 3 に示す。

(4)

4 図 4 FPGA で実現するデコータ回路のブロック図 表 3 FPGA で実現するデコーダ回路の真理値表 入力 出力 A(1) A(0) L(7) L(6) L(5) L(4) L(3) L(2) L(1) L(0) 0 0 0 1 1 0 1 1 (S3) VHDL コードの作成(コーディング) 7 セグメント LED に 0 から 3 を表示させるための VHDL コードを以下に示す。 <リスト 1 デコーダ回路の例 SEG01.vhd> 1 library IEEE; 2 use IEEE.STD_LOGIC_1164.ALL; 3 use IEEE.STD_LOGIC_ARITH.ALL; 4 use IEEE.STD_LOGIC_UNSIGNED.ALL; 5 6 entity SEG01 is

7 Port ( A : in STD_LOGIC_VECTOR (1 downto 0); 8 L : out STD_LOGIC_VECTOR (7 downto 0); 9 SEG : out STD_LOGIC);

10 end SEG01; 11

(5)

5

12 architecture Behavioral of SEG01 is 13 begin 14 process (A) 15 begin 16 case A is 17 when "11" => L <= "________"; 18 when "10" => L <= "________"; 19 when "01" => L <= "________"; 20 when "00" => L <= "________"; 21 when others => null;

22 end case; 23 end process; 24 25 SEG <= '1'; 26 end Behavioral; ※SEG は、7 セグメント LED D30 の選択に利用されている。今回の 7 セグメント LED の利用は D30 のみであるため、25 行目で 1 を出力する。 (S4)論理合成、配置配線及びダウンロードを実行し、目的の動作が実現出来な い場合には、表 2 の信号パターンや VHDL コード、開発環境の操作手順を見直す こと。 表 4 予備実験(1)の結果 SW7 SW6 7 セグメント LED(D30)の表示 3-3-2. 実験(1) 4 つのプッシュスイッチを利用して 7 セグメント LED に 0 から 9 を表示させる 回路を作成せよ。なお、実験ボードのプッシュスイッチ SW16 は FPGA の L7 ピン、 SW17 は K5 ピンに接続されている。 まず実験の手順(S1)から(S3)の実験計画書を作成する。次に実験計画書に基 づいて(S4)を実行し、結果をまとめる。

(6)

6 3-3-3. 追加課題 図 5 はブロック図と真理値表を用いて動作を表しているのに対して、図 6 で は回路図を示している。VHDL でコードを記述する際にも、同様にリスト 2(動 作記述)とリスト 2(構造記述)の2種類の書き方がある。まずは、リスト 3 を 参考にして実験 1 のデコーダ回路を構造記述で実現し、次に動作記述並びに構 造記述の長所・短所について検討せよ。 入力 出 力 A B S F 0 0 0 0 0 1 0 0 1 0 0 0 1 1 0 1 0 0 1 0 0 1 1 1 1 0 1 1 1 1 1 1 図 5 AND/OR セレクタ回路(動作図) ※X, Y, Z は内部信号としてアーキテクチャ宣言内の信号宣言部において、 信号名とデータ型を記す。 図 6 AND/OR セレクタ回路(構造図) B S F A AND/OR ブロック図 真理値表 A X = A・B B S Y = A・S F = X + Y + Z Z = B・S

(7)

7 リスト 2(動作記述) entity sample1 is Port( A, B, S : in std_logic ; F : out std_logic ) ; end sample1 ;

architecture Behavioral of sample1 is begin process( A, B, S ) begin case S is when '0' => F <= A and B ; when '1' => F <= A or B ; when others => null ; end case ; end process ; end Behavioral ; リスト 3(構造記述) entity sample2 is Port( A, B, S : in std_logic ; F : out std_logic ) ; end sample1 ;

architecture Behavioral of sample1 is

signal X, Y, Z : std_logic ; begin X <= A and B ; Y <= A and S ; Z <= B and S ; F <= X or Y or Z ; end Behavioral ; <内部信号の宣言> signal 信号名 : データ型 ;

(8)

8 3-4.実験(2)カウンタ回路 3-4-1. 予備実験(2) FPGA のシステムクロックを利用して約1秒毎に汎用 LED7 が点滅する回路 を作成する。 (S1) 実験ボードでは、FPGA の E11 ピンに 133MHz のシステムクロックが入力されて いる。約 1Hz のクロックを生成するには、このシステムクロックを 1/227に分周 すれば良い。 227= 133×106 / 227 = 汎用 LED7 は、図 5 のとおり FPGA の R3 と接続され ており、Low レベルの信号出力があった場合に点灯 する。 (S2) FPGA で実現する分周回路の構成を図 6 に示す。この回路には、システムクロ ックを 1/227に分周するために内部信号 D0(ベクトル型 27 ビット)を設け、表 4 のとおり 2 進数でシステムクロックの立ち上がりエッジをカウントアップする。 D0 の値が”011 1111 1111 1111 1111 1111 1111”になった時に出力信号 CE=”1” とし、”111 1111 1111 1111 1111 1111 1111”になった時には CE=”0”とする。 システムクロック LED7 133MHz 図 8 分周回路 図 7 汎用 LED7 CLK 分周回路 CE

(9)

9 表 4 分周回路に設けた内部信号 D0 と出力信号 CE の関係 10 進数 D0 CE 0 000 0000 0000 0000 0000 0000 0000 0 1 000 0000 0000 0000 0000 0000 0001 0 : : : 67,108,862 011 1111 1111 1111 1111 1111 1110 0 67,108,863 011 1111 1111 1111 1111 1111 1111 1 : : : 134,217,726 111 1111 1111 1111 1111 1111 1110 1 134,217,727 111 1111 1111 1111 1111 1111 1111 0 (S3) <リスト 4 分周回路の例 CNT01.vhd> 1 library IEEE; 2 use IEEE.STD_LOGIC_1164.ALL; 3 use IEEE.STD_LOGIC_ARITH.ALL; 4 use IEEE.STD_LOGIC_UNSIGNED.ALL; 5 6 entity CNT01 is 7 Port ( CLK : in STD_LOGIC; 8 CE : out STD_LOGIC); 9 end CNT01; 10 11 architecture Behavioral of CNT01 is

12 signal D0 : std_logic_vector(26 downto 0); 13

14 begin

15 process (CLK) 16 begin

17 if CLK'event and CLK='1' then 18 D0 <= D0 + '1'; 19 end if; 20 end process; 21 22 process (D0) 23 begin 24 if D0 = "011111111111111111111111111" then 25 CE <= '1';

(10)

10 26 elsif D0 ="111111111111111111111111111" then 27 CE <= '0'; 28 end if; 29 end process; 30 31 end Behavioral; (S4)論理合成、配置配線及びダウンロードを実行し、目的の動作が実現出来な い場合には、表 2 の信号パターンや VHDL コード、開発環境の操作手順を見直す こと。 3-4-2. 実験(2) 予備実験を参考にして、約 1 秒毎に表示が切り替わる 10 進カウンタを作成 する。なおカウンタ値の表示は、汎用 LED4 から LED7 を利用する。各 LED の FPGA への接続先を表 5 に示す。各 LED は、LED7 と同様に Low レベル出力で点灯する。 まず実験の手順(S1)から(S3)の実験計画書を作成する。次に実験計画書に基 づいて(S4)を実行し、結果をまとめる。 表 5 汎用 LED の接続先 汎用 LED FPGA のピン LED4 T4 LED5 U1 LED6 U3 LED7 R3 図 9 10 進カウンタ 10 進カウンタ 分周回路 システム クロック 133MHz CE QE(3) QE(2) QE(1) QE(0) LED4 LED5 LED6 LED7 CLK

(11)

11

ヒント リスト 5 カウンタ回路の例(改良点のみ) 31 process (CE)

32 begin

33 if (CE'event and CE='1') then 34 if(QE =" ") then 35 QE <="0000"; 36 else 37 QE <= QE + '1'; 38 end if; 39 end if; 40 end process; ※QE を新たに出力端子としてエンティティ宣言する。一方、CE は内部変数 として D0 と同様にアーキテクチャ宣言部へ移動します。 3-4-3. 追加課題 プッシュスイッチ SW6 を押すと、7 セグメント LED の表示が 9 となり、9 から 0 まで約 1 秒毎にカウントダウンするタイマを作成せよ。 ヒント ・実験(1)と実験(2)の回路を合わせる ・10 進カウンタに SW6 によるプリセット機能を設ける ・各回路の入出力の論理(High/Low)に注意すること プッシュスイッチ SW6 図 10 10 進カウンタの応用 10 進カウンタ デコーダ 7 セグメント LED 表示器(D30) 分周回路 システム クロック 133MHz CE QE(0)~QE(3) L(0)~L(7) SEG

(12)

12 4. 付録:VHDL の書き方 VHDL のコードは、ライブラリ宣言、エンティティ宣言、アーキテクチャ宣言 の 3 ブロックからなる。 ①ライブラリ宣言 データ型や演算子などを利用するために必要なライブラリとパッケージ を指定する。 library ライブラリ名 ; use ライブラリ名.パッケージ名 ; ②エンティティ宣言 入出力の設定。エンティティ名は、他のファイルと重複しないようにし、 モード型は入出力の区別(input/output/inout;双方向)を行う。 entity エンティティ名 is port (ポート名:モード型 データ型); end エンティティ名 ; ③アーキテクチャ宣言 デジタル回路の機能を記述。信号宣言部は、内部信号を記述する部分で あり、signal 文を使用する。機能宣言部は、begin と end で挟まれた部分 であり、デジタル回路の論理機能を記述する。演算結果の代入には、「 <= 」 記号を用いる。 architecture アーキテクチャ名 of エンティティ名 is ≪ 信 号 宣 言 部 ≫ begin ≪ 機 能 宣 言 部 ≫ end アーキテクチャ名 ;

(13)

13 A1.論理演算子 例) X <= A and B ; A と B の論理積をとり X に格納 Y <= not C ; C の否定をとり、Y とする A2.データ型 std_logic 0,1 などの論理値 std_logic_vector std_logic のベクトル値 例えば、複数ビットの論理データはベクトルとして次のようにまとめることができる。 A0: in std_logic;

A1: in std_logic; A: in std_logic_vector(2 downto 0);

A2: in std_logic; * A(2),A(1),A(0)とみなす A3. Signal 文 回路の内部信号は、アーキテクチャ宣言の信号宣言部において以下のように記述する。 signal 信号名:データ型 ; B1. Process 文 センシティビティリストに記述した信号が変化すると、シーケンシャル領域に記述し た内容を上から順に実行する。 [ラベル名:] process( センシティビティリスト ) begin ≪シーケンシャル領域≫ 上から順に実行 end process [ ラベル名 ]; **アーキテクチャ宣言部で記述した複数の文は、通常同時に(並行)実行される。 一般のプログラミング言語(アセンブラ, C など)のようにシーケンシャルに実行させ る必要がある場合には、process 文を利用する。 演算子 機能 and 論理積 or 論理和 not 論理否定 nand 否定論理積 nor 否定論理和 xor 排他的論理和 xnor 否定排他的論理和

(14)

14 B2. If 文 条件が真(成立)の場合には順次処理 1 が実行され、偽の場合には順次処理 2 が実行 される。else 部は省略することもできる。 if ( 条件 ) then ※複数の条件を判定したい場合には、 順次処理 1 ; if ( 条件 1 ) then else 順次処理 1; 順次処理 2 ; elsif ( 条件 2 ) then end if; 順次処理 2; else 条件の記載に用いる関係演算子には、 順次処理 3; A = B A と B は等しい end if; A /= B A と B は等しくない A < B A は B より小さい A >= B A は B 以上 などがある。 B3. Case 文 信号の値によって処理が選ばれる。もし、一致するものが無ければ、when others で指 定した処理 n が実行される。 case ( 信号名 ) is when 信号の値 1 => 処理 1 ; when 信号の値 2 => 処理 2 ; : when others => 処理 n ; end case ; D. 実習ボード TS102(東京エレクトロンデバイス) ②7セグメント LED D30 ③汎用 LED7(右端) ④プッシュスイッチ SW17 SW7 SW7 SW6 ①電源スイッチ

参照

関連したドキュメント

[12] F.Milani,M.Solazzi and A.Uncini, ”Blind source sep- aration of convolutive nonlinear mixture by flexible s- pline nonlinear functions”, IEEE

In the FB- BSS, when complete separation is achieved, the sep- aration block has a unique solution, and the output signals are equal to the single signal source included in

In order to estimate the noise spectrum quickly and accurately, a detection method for a speech-absent frame and a speech-present frame by using a voice activity detector (VAD)

2021] .さらに対応するプログラミング言語も作

BC107 は、電源を入れて自動的に GPS 信号を受信します。GPS

DVI-D シングルリンク信号エクステンダー DVIDEX-UTPPSV は、安価な CAT5e 以上の UTP LAN ケ ーブルを使用して、DVI-D

古物営業法第5条第1項第6号に規定する文字・番号・記号 その他の符号(ホームページのURL)

名      称 図 記 号 文字記号