UART
UART(Universal Asynchronous Receiver/Transmitter)
通用非同步接收發送機,是硬體的一部分,將資料由序列通訊與並列通訊作傳輸轉換。UART通常用在與其他通訊界面的連接上,如RS232、RS485。
是對應各種非同步串行通信口的接口標準和匯流排標準,它規定了通信口的電氣特性、傳輸速率、連接特性和接口的機械特性等內容。
實際上是屬於通信網路中的實體層(Physical Layer)的概念,即電氣特性,與通信協定沒有直接關係。而通信協定,是屬於通信網路中的資料鏈結層(Data Link Layer)的概念,規範了被傳送資料的格式。
COM 是 PC(個人計算機)上,非同步串行通信口的簡寫。由於歷史原因,IBM的PC外部接口配置為RS232,成為實際上的PC界默認標準,最早就是由 IBM 所使用,所以後來繼續沿用,現在 PC 機的 COM 均為 RS232。若配有多個非同步串行通信口,則分別稱為COM1、COM2... 。在裝置管理員中可以找到。
通用非同步接收發送機,是硬體的一部分,將資料由序列通訊與並列通訊作傳輸轉換。UART通常用在與其他通訊界面的連接上,如RS232、RS485。
是對應各種非同步串行通信口的接口標準和匯流排標準,它規定了通信口的電氣特性、傳輸速率、連接特性和接口的機械特性等內容。
實際上是屬於通信網路中的實體層(Physical Layer)的概念,即電氣特性,與通信協定沒有直接關係。而通信協定,是屬於通信網路中的資料鏈結層(Data Link Layer)的概念,規範了被傳送資料的格式。
COM 是 PC(個人計算機)上,非同步串行通信口的簡寫。由於歷史原因,IBM的PC外部接口配置為RS232,成為實際上的PC界默認標準,最早就是由 IBM 所使用,所以後來繼續沿用,現在 PC 機的 COM 均為 RS232。若配有多個非同步串行通信口,則分別稱為COM1、COM2... 。在裝置管理員中可以找到。
與同步傳輸的差異在於 Clock 信號的有無,在傳遞訊號時會用起始位元來表示資料訊框的開始,以結束位元當作資料的終止,結束位元可能會有不同個數的選擇,則依據不同的鮑率需要選擇不同的結束位元數目,一般以資料傳輸位元在小於4%的畸變的考量下去決定最高的鮑率和結束位元數目。
USART
在 UART 上追加同步方式。
PC16550D
TI(Texas Instruments, 德州儀器)的 UART晶片,帶有FIFO功能。UART演進
16550 可以選擇是否要ENABLE FIFO,切換有無FIFO的模式。Mode 16450和 Mode FIFO,在1645並沒有FIFO的功能。 16550加了FIFO,有16 bytes 緩衝,即深度16 bytes,寬8 bits。(資料來源:wiki )
Basic Configuration
用在 CPU BUS和通訊界面之間互相的連接,此處的 DATA BUS為 8 bits的匯流排,為 Intel 8086/8088(16位元CPU)所使用,利用 8 bits BUS 並列讀寫 D0 到 D7 八個位元,將串列換成序列資料到傳輸介面。
相對來說,8 個位元的並列傳輸要傳輸 8 bits 的資料只需要一個 tick 的時間,串列傳輸卻需要重複傳輸八次,需要八倍的時間也就是八個 tick 的時間,光是效率上就差了八倍。但是就距離而言,串列傳輸的傳送長度比並列傳輸要大得多,因為在並列傳輸上,每條信號線到達目的端時間點可能不同,或者有不同的相位差,造成信號的偏差,所以一般並列式傳輸的距離較短。
相對來說,8 個位元的並列傳輸要傳輸 8 bits 的資料只需要一個 tick 的時間,串列傳輸卻需要重複傳輸八次,需要八倍的時間也就是八個 tick 的時間,光是效率上就差了八倍。但是就距離而言,串列傳輸的傳送長度比並列傳輸要大得多,因為在並列傳輸上,每條信號線到達目的端時間點可能不同,或者有不同的相位差,造成信號的偏差,所以一般並列式傳輸的距離較短。
圖中 EIA-DRIVERS 可以為 RS232或RS485 由DRIVER的類型決定,DRIVER晶片轉換PC16550D的 TTL 電壓到interface對應的電壓範圍進行通訊。
PC16550D腳位
資料傳輸
D0-D7 並列 資料(parallel)
SIN串列資料(serial)
SOUT
WR/RD 讀寫控制(PIN方向)
晶片選擇
CS0/CS1/CS2
有三條線,代表最多可以有2的3次方,即8個不同裝置
有三條線,代表最多可以有2的3次方,即8個不同裝置
MODEM控制
RI (鈴聲指示)
DCD(載波偵測)
DSR
CTS(清除以傳送)
DTR
RTS(準備傳送)
現在通常已經沒有一定要實作的必要,但是都會保留下來。還是可以當作判斷有沒有在進行通訊中。
現在通常已經沒有一定要實作的必要,但是都會保留下來。還是可以當作判斷有沒有在進行通訊中。
中斷信號
INTR
DMA信號
TXRDY
RXRDY
Register 位址選擇
A0/A1/A2
ADS
Address 就根據 IO base加上相對的暫存器位置。
PC16550D Function Block Diagram
左邊區塊為晶片的邏輯控制,Register Address 的選擇和讀寫的控制。
中間為 Register 的種類,如 Line Control, Divisor Latch, Modem Control, Interrupt Enable, FIFO Control 控制類型的,和狀態讀取的 Line Status, Modem Status, Interrupt ID,還有接受和傳送用的Register, Receiver Buffer, Transmitter Holding。
右上接收的移位暫存器,接收完畢後送到Receiver Buffer 然後Data Ready旗標 ,右中為傳送的移位暫存器,
各暫存器(Register)種類
利用 Address Line 可以定址到不同 Register 進行讀寫,如 address 0 同時是接收(RBR)和發射(THR)的暫存器,可是進行 Read 和 Write 不同行為,卻是對應到兩個不同暫存器。還有另一個位元 DLAB為1時,定址到 address 0 也會對應到不同暫存器 Divisor Latch(LS,MS)。在最一開始設定暫存器時,需要注意當時寫入的是哪個暫存器。以下是各暫存器內容
Registers Addressing
中斷(INTERRUPT)控制
當有中斷信號產生時,原本執行中的行程被中斷,必須要處理中斷服務常式內的程序,等到 ISR 執行完後返回原本中斷的地方,繼續當初正在執行的動作。
當各種 interrupt 有被致能時,只要對應的 Register 行為產生,INTR pin就會發出 interrupt信號,譬如說 Receiver Buffer Register 接收滿了,對應的 Interrupt Data Ready(DR) 中斷信號就會產生。
由於晶片上只有一個 INTR 的腳位,只要有任何中斷信號發生,INTR pin 信號就會舉起,等等待 CPU 執行對應的動作 INTR 電壓準位才會降下,像是讀取 RBR,硬體動作就會自動將 INTR 內容清除為 0。為了知道中斷信號產生時,這個信號是從誰而來,每個中斷信號會分到不同的優先權等級,代表不同類型的行為。
分成四個等級,如接收錯誤、接收完成、發送、MODEM控制。
沒有留言:
張貼留言