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

Verilog-HDL Tutorial (13)