WBUART.vhd


概要

WISHBONE-I/FのUART通信モジュール。
ステートマシーンからの操作にも対応出来る設計にしてあります。
genericにてDIVIDER_INITを操作する事で初期値のボーレート設定が可能。
基本設計ではN81-57600bps。
9bit長データの使い方はFirmWareがパリティー処理をするのを想定した設計。
※川島が趣味で設計したモジュール。自己責任で使用する事を許可します。(^^;


レジスタの説明

レジスタは8bit長です。

C_DATA  : 00H : 送信/受信値 (W/R)
		bit7-0 : 書けば送信値。読めば受信値。
C_STAT  : 01H : 状態値が読めます。 (-/R)
                C_DATAを読むと値がクリアされます。
                bit0   : txempty : 送信バッファ空なら'1'
                bit1   : rxready : 受信バッファにデータがあれば'1'
                bit2   : rxferr  : 受信時にFlaming-Errorなら'1'
                bit3   : rxoerr  : 受信時にOver-Run-Errorなら'1'
		bit7-4 : '0'固定
C_DIV_L : 02H : ボーレート設定のLow-Byte値 (W/R)
		bit7-0 : ボーレート値のbit7-0の値
C_DIV_H : 03H : ボーレート設定のHigh-Byte値 (W/R)
		bit3-0 : ボーレート値のbit11-8の値
		bit7-4 : '0'固定
C_CTRL  : 04H : 割り込み制御とData長(8bit/9bit)の制御
                bit0   : txempty割込 (0/1=禁止/許可)
                bit1   : rxready割込 (0/1=禁止/許可)
                bit2   : rxferr割込  (0/1=禁止/許可)
                bit3   : rxoerr割込  (0/1=禁止/許可)
                bit4   : 8/9bit長    (0/1=8bit/9bit)
		bit7-5 : '0'固定
C_DATA9 : 05H : 9bit目の送信値と受信値。 (W/R)
                bit0   : DATA9
                         9bit長通信後に8bit長に切替たらDATA9='1'に設定
                         ('0'値が入っているとゴミデータとして送信される為)
		bit7-1 : '0'固定

ボーレートの計算式
  WB_CLK_I / (BPS   * 16) = DIVIDER
  48MHz    / (57600 * 16) = 52 = 0x034
  C_DIV_H = 0x00
  C_DIV_L = 0x34


シミュレーション波形

8bit長データで0x89を送信してLOOP-BACK受信。


File's


履歴