25
1 Verilog-HDL 講習会DE0編(13) RS232C送信(Tx) 1, August, 2013 鹿児島大学 中原 啓貴

Verilog-HDL Tutorial (13)

Embed Size (px)

Citation preview

1

Verilog-HDL 講習会DE0編(13) RS232C送信(Tx)

1, August, 2013 鹿児島大学 中原 啓貴

RS232C信号を送信 (今回も9600 bpsとする)

2

スタートビット (1ビットの0)

データ(8ビット) LSB(最下位ビット)から送信

ストップビット (1ビットの1)

D0 D1 D2 D3 D7

9600 bps = 9600 bit per second つまり, 1秒間に(スタートビットや ストップビットも含めて) 9600bit送信するという意味

送信は結構簡単 •  9600bps -> 9600Hzに同期してデータを送信するだけ

3

スタートビット (1ビットの0)

データ(8ビット) LSB(最下位ビット)から送信

ストップビット (1ビットの1)

D0 D1 D2 D3 D7

タイミングの生成 •  50MHz (DE0ボードのクロック)から 9600Hzをどうやって生成?

4

9600Hz ということは, 1周期= 1 /9600 = 0.04 [sec]

9600Hz

ということは, 0.04 / 2 = 0.02 [sec] 毎にHigh と Low を切り替えればよい

50MHz 50 MHz ということは, 1周期= 1 / 50x106 = 0.02x10-6 [sec]

つまり, 0.02 / (0.02 x 10-6) = 100,000 クロック毎に High と Lowを切り替えればよい

自分で考えてみよう

仕様 •  8個のスライドスイッチ(8ビット)をPCに送信 ‒  ボーレート: 9600bps, ストップビット:1 , パリティ: なし

•  押しボタン (BUTTON[2])を押すと, 1データ送信

5

USBシリアルケーブル (BUFFALO社製) BSUSRC0605BS

を使用 (amazonで¥2011)

送信データ設定 (8ビット)

送信開始ボタン (負論理)

RS232C送信回路の状態遷移図

6

0000 0001 0010 0011 0100 0101

1011 1010 1001 1000 0111 0110

Reset UART_TXD <= 1'b1;

BUTTON[2] == 1'b0 NONE

BUTTON[2] != 1'b0 NONE

BUTTON[2] != 1'b1 NONE

BUTTON[2] == 1'b1 NONE

NONE UART_TXD <= 1'b1;

NONE UART_TXD <= SW[0];

NONE UART_TXD <= SW[1];

NONE UART_TXD <= SW[2];

NONE UART_TXD <= SW[3];

NONE UART_TXD <= SW[4];

NONE UART_TXD <= SW[5];

NONE UART_TXD <= SW[6];

NONE UART_TXD <= SW[7];

NONE UART_TXD <= 1'b1;

7

•  ピン配置が面倒くさいので、デフォルトのプロジェクトを読み込みましょう! (DE0に限った事ではないが、Terasic製品はサンプルCD-ROMの プロジェクトを改変するのが楽でお勧め)

DE0付属のCD-ROM ”Demonstrations”内の "DE0_Top"フォルダの ファイル全てを C:¥verilog¥DE0_tutorial_9_LEDG_Slide¥ 内にコピー

DE0_TOP.qpfをダブルクリックしてQuartus IIを起動

8

Pin Plannerを開いてみると ピン配置が終わっている!

Verilog-HDLを入力

9

ダブルクリック Verilog-HDLの テンプレートが 表示されるので コードを入力

コード入力したら保存を忘れずに!

9600Hz生成回路の追加

10

入力するVerilog-HDL

11

Verilog-HDLを保存する

12

Gen_CLK9600Hz.v として保存

RS232C送信回路の追加

13

入力する Verilog-HDL (1)

14

入力する Verilog-HDL (2)

15

入力する Verilog-HDL (3)

16

Verilog-HDLを保存する

17

RS232C_TX.v として保存

DE0_Top.vの記述

18

コンパイルを行う

19

「保存アイコン」を クリックして保存

「コンパイルアイコン」を クリックして コンパイルを行う

コンパイル後、このウインドウが 表示されればOK

FPGAとPCを接続する前に… •  COMポート(RS232C)の番号を確認 •  マイコンピュータを右クリックして「プロパティ」を選択 (Windowx XP)

20 このPCではCOM7ポート

FPGAをプログラム

21

RS232Cテストツールを起動 •  VECTOR (http://www.vector.co.jp/soft/winnt/hardware/se411276.html)からダウンロードしてインストールしてください

22

ポート名 ↓ 各PC毎に 異なる

ボーレート: 9600, バイトサイズ: 8, パリティ: なし ストップビット: 1

PCとFPGAを RS232Cケーブルで接続

23

RS232C経由で データ送信

24

1. RS232Cテストツールを起動し 設定を行う(前回を参考に)

2. 接続をクリック

3. スライドスイッチを設定(ここでは11000101, つまり16進数で0xC5 )

4. 送信ボタンを押すと スライドスイッチの値が RS232Cテストツールに 表示される

まとめ •  RS232Cデータ送信回路を設計

•  課題: ‒ 他のボーレートに対応する送信回路を設計せよ (115200bps, 14400bps) ‒ パリティを計算する回路を付加した送信回路を設計せよ ‒ 【難】スライドスイッチでボーレートを切り替えることができる送信回路を設計せよ ‒ 【難】9600bpsのRS232C通信で, 受信したデータをそのままPCへ送信する回路(エコー回路)を設計せよ

25