ハードウェア記述言語による 論理回路設計とFPGAへの実装 2

21
ハハハハハハハハハハハハハ ハハハハハハハ ハハハハ FPGA 2 SPP 2009.8.27 高高高高高高 ハハハハハハハ ハハハハ ハハハハ

Upload: ikia

Post on 19-Jan-2016

89 views

Category:

Documents


0 download

DESCRIPTION

ハードウェア記述言語による 論理回路設計とFPGAへの実装 2. SPP 2009.8.27 高知工業高校  高知大学理学部 本田理恵、三好康夫. 内容. 前回の補足 回路と使用されたロジックエレメントの確認 HDL 文法 順序回路 フリップフロップ カウンタ 実習 1 (先週の課題を完成) 実習 2 -自由課題ー. モジュール 構造. module モジュール名 ( ポートリスト) ; ポート宣言 ネット宣言 レジスタ宣言 パラメータ宣言  回路記述本体 assign function always など end module. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: ハードウェア記述言語による 論理回路設計とFPGAへの実装 2

ハードウェア記述言語による論理回路設計とFPGAへの実装

2SPP

2009.8.27高知工業高校 

高知大学理学部 本田理恵、三好康夫

Page 2: ハードウェア記述言語による 論理回路設計とFPGAへの実装 2

内容

• 前回の補足– 回路と使用されたロジックエレメントの確認– HDL 文法

• 順序回路– フリップフロップ– カウンタ

• 実習 1 (先週の課題を完成)• 実習 2 -自由課題ー

Page 3: ハードウェア記述言語による 論理回路設計とFPGAへの実装 2

モジュール 構造

module モジュール名 ( ポートリスト) ;ポート宣言ネット宣言レジスタ宣言パラメータ宣言

 回路記述本体assignfunction

always などend module

内部でやりとりする信号

Page 4: ハードウェア記述言語による 論理回路設計とFPGAへの実装 2

信号の種類タイプ 説明 宣言文 入出力区別ポート 入出力信号 input 信号 , 信号 ...;  

  output 信号 , 信号 ...;  inout 信号 , 信号 ...;   

入力出力入出力

レジスタ

回路内部で、変化し、記憶される信号

reg 信号 , 信号 ; 出力内部の信号

ネット 回路内部の信号(変更されない)

wire 信号 , 信号 ; 入力内部の信号複数ビットの場合はビット幅をつけて宣言( 1bit の場合は省略可能)

  reg [7:0] a;  

     wide [15:8] b;同じビット幅の信号のみ , で連ねて宣言できる。同じ信号をポートとレジスタ、ポートとネットの両方で宣言することがある。

output [7:0] a; reg [7:0] a;

Page 5: ハードウェア記述言語による 論理回路設計とFPGAへの実装 2

論理値と数値表現コメント

論理値 0, 1, x, z x 、不定値、z、ハイインピーダンス

数値 < ビット幅 >’ < 基数 >< 数値 > 基数   b,B 2 進数        o,O 8 進数 d,D 10 進数        h,H 16 進数

例    8’haa →10101010例    1’b1 → 1例    b1 → 0000000.....1 (32bit)

ビット幅省略→ 32bit基数省略→ 10 進数x,z は使えない。

Page 6: ハードウェア記述言語による 論理回路設計とFPGAへの実装 2

演算子算術演算

+ 加算、プラス記号

- 減算、マイナス記号

* 乗算

/ 割り算

% 剰余 ( あまり)

等号演算

== 等しい

!= 等しくない

=== 等しい( z,x も)

!== 等しくない( z,xも)

ビット演算

~ NOT

& AND

| OR

^ XOR

|~ XNOR

関係演算

< 小

<= 小または等しい

> 大

>= 大または等しい

Page 7: ハードウェア記述言語による 論理回路設計とFPGAへの実装 2

基本文parameter 定数の代入 parameter  パラメータ名 =  定数 ( 式)

assign 信号の値の継続的な代入

assign 信号名 = 式  ; assign 信号名 = (条件式) ? 式 1: 式 2; 条件式が成立するとき式 1 を、    そうでないとき式 2 を信号に代入

always あるイベントが起こった時に処理する内容を記述

always @ ( イベント式 )例 reg [7:0] sum always @ (a or b) sum <= a+b; ( a の値か b の値が変化したとき sum に a+b を代入)

Page 8: ハードウェア記述言語による 論理回路設計とFPGAへの実装 2

if 文による条件分岐if 逐次的な条件分

岐begin

if ( 条件式 1 )    文1else if ( 条件式 2)  ←省略可能 文 2else          文 3      

end

case 複数への同時分岐

begincase ( 式)

値 1: 文 1; 値 2: 文 2; default: 文 3;

endcaseend

Page 9: ハードウェア記述言語による 論理回路設計とFPGAへの実装 2

組み合わせ回路ーセレクターmodule sel(d0,d1,dout)input d0, d1;output dout;assign dout= (sel==1’b1)? d1:d0 ;end module

module sel(d0,d1,dout)input d0, d1;output dout;beginif (sel==1’b1)

dout<=d1;else

dout<= d0end endmodule

module sel(d0,d1,dout)input d0, d1;output dout;always @(d1 or d0 or sel) begin

if (sel==1’b1)dout<=d1;

else dout<= d0;

endend module

× module 中にいきなり if を入れてはいけない ( 独特のルール )

d0

d 1

sel

dout

d0,d1,selが変化したとき

Page 10: ハードウェア記述言語による 論理回路設計とFPGAへの実装 2

順序回路

• 回路内に記憶素子を含んでいて、クロックと呼ばれる基準信号と入力によって出力がきまる回路

• クロックという時間の概念存在する• 基本論理素子と記憶素子で構成されてい

る• 順序回路の例としては、フリップフロッ

プやカウンタなどがある

Page 11: ハードウェア記述言語による 論理回路設計とFPGAへの実装 2

クロック信号

• ディジタル回路において順序回路を動作させるための基準信号のことであり、一定の周期でH => L => H を繰り返す・・・・信号

Page 12: ハードウェア記述言語による 論理回路設計とFPGAへの実装 2

補足:7セグメント LED のデコード値

A[7:0] 16 進数

0 1111 1100 FC

1 0110 0000 60

2 1101 1010 DA

3 1111 0010 F2

4 0110 0110 66

5 1011 0110 B6

6 1011 1110 BE

7 1110 0000 E0

A[7:0] 16 進数

8 1111 1110 FE

9 1111 0110 F6

a 1110 1110 EE

b 0011 1110 3E

c 0001 1010 1A

d 0111 1010 7A

e 1001 1110 9E

f 1000 1110 8E

Page 13: ハードウェア記述言語による 論理回路設計とFPGAへの実装 2

フリップフロップ• フリップフロップとは、シーソーの働きの意味

。• 回路の働きが文字通りシーソーの働きに似てい

る。

入力 (D ) の変化がクロック (CLK) の立ち上がり、又は立下りにより出力 (Q) に伝わる通常、リセット (RESET) はクロック (CLK) とは非同期リセット (RESET) は“ L” 時リセット

Page 14: ハードウェア記述言語による 論理回路設計とFPGAへの実装 2

フリップフロップ– HDL 記述 -

module test(a,b,clk,rst);input a;              // 入力input clk; // クロック信号           input rst; // リセット信号output b;            // 出力reg b;always @( posedge clk or negedge rst ) begin if (!rst) b <= 1‘b0; else b <= a; endendmodule

クロックの立ち上がりかリセットの立ち下がりを検出したら以下の動作を行う

a

b

clk

posedgenegedge

rst

Page 15: ハードウェア記述言語による 論理回路設計とFPGAへの実装 2

実機確認

– 作成済みのデスクトップにある SPP/test/test.pof をダブルクリックしてプロジェクト開始

–各信号は下記の表の通り割り当てられている

–再コンパイルとプログラミングを行う– クロック信号をそれぞれ 610Hz 、 305Hz 、 1Hz 、単発

パルスにしたときの SW_A0 の押し離しに対する LED1の反応を観察しなさい。

信号 信号名(HDL) 装置 ピン番号

入力 a SW_A0 2

出力 b LED1 47

リセット信号 rst RESET 240

クロック信号 clk SW27 28

Page 16: ハードウェア記述言語による 論理回路設計とFPGAへの実装 2

参考:周波数の切り替え

メモリSW27 0 1 2 3 4 5 6 7

周波数 40MHz

20MHz

10MHz

5MHz

1.25MHz

325KHz

78.1KHz

19.5KHz

★1 クロックスイッチ SW28 を有効にする。スイッチ押し下げごとに 1 つ単発のクロックを発生させる。

1 Hz :1秒間に 1 回のクロック信号(1つのたち上がりとたち下がり)

メモリSW27 8 9 A B C D E F

周波数 9.8KHz

4.9KHz

244KHz

1.22KHz

610Hz

305Hz

1.0Hz ★

周波数 周期1MHz 1x10-6sec1KHz 1x10-3sec1Hz 1sec

Page 17: ハードウェア記述言語による 論理回路設計とFPGAへの実装 2

カウンタ• スイッチを押して 10秒後に学籍番号を点灯

• 入力されるクロックは 10MH zとする。

10MHz→1 周期 1E-7sec10sec →99999999 回カウントしたら表示

Page 18: ハードウェア記述言語による 論理回路設計とFPGAへの実装 2

カウンタ

• HDL 記述は資料 6 を参考に

Page 19: ハードウェア記述言語による 論理回路設計とFPGAへの実装 2

実習1

• 先週のメッセージを表示する課題を完成しなさい。– デスクトップの SPP/gakuseki/gakuseki.pof を

ダブルクリックして利用してください• 別途配布するプリントを埋めながら実施

してください。

Page 20: ハードウェア記述言語による 論理回路設計とFPGAへの実装 2

実習 2 -自由課題ー• 資料 1 の カウンタ( P73-) 、クロック( P75 - )、シフト回路

( P78-) の説明に目を通して実装して動作確認を行いなさい。また、合成された回路のロジックエレメント数を答えてください。– デスクトップにある作成済みのプロジェクトを利用して構いません

• 練習 8  カウンタ   SPP/count/count.pof  • 練習 9  クロック   SPP/clk/clk.pof• シフト回路        SPP/shift/clksegseg.pof

• どれか 1 つを選んで 1 か所でもよいので , 自分なりに変更を加えてみてください。この際、資料 6 の HDL 記述の説明をみながらその回路記述を理解して変更してください

• 例• シフト回路のメッセージを変える。左から右にシフトさせる。• クロックを 3ケタにする。• カウンタの時間とメッセージを変える。

• 作業の過程を別紙(配布する)に記録してください。

Page 21: ハードウェア記述言語による 論理回路設計とFPGAへの実装 2

参考

• HDL 独習ソフトで学ぶ CQEndeavor Verilog HDL 小林、 CQ 出版

• JFIT資料• 個人で Quartus II を使用してみたい人は、• http://www.altera.co.jp/products/software/q

uartus-ii/web-edition/qts-we-index.html• または Google で  Quartus II と入力