基于FPGA 的簡(jiǎn)化UART 電路設(shè)計(jì)
發(fā)送模塊主要實(shí)現(xiàn)對(duì)并行數(shù)據(jù)的緩存,并串轉(zhuǎn)換,然后把串行數(shù)據(jù)按照既定數(shù)據(jù)幀格式進(jìn)行輸出,其機(jī)構(gòu)如圖3 所示:
圖3 UART 發(fā)送模塊
a) data_input[7:0]是8 位并行數(shù)據(jù)的輸入端,轉(zhuǎn)換成串行數(shù)據(jù)后從txd 輸出;
b) wrn 是寫控制信號(hào),為1 時(shí)禁止數(shù)據(jù)輸入,為0 時(shí)允許輸入;
c) reset 為系統(tǒng)復(fù)位輸入端,低電平有效;
d) clk 為系統(tǒng)時(shí)鐘信號(hào)輸入端,由波特率發(fā)生器產(chǎn)生;
e) tser 是并串轉(zhuǎn)換過(guò)程的標(biāo)志:在沒(méi)有數(shù)據(jù)轉(zhuǎn)換時(shí)保持為1,在并串轉(zhuǎn)換開(kāi)始時(shí)變成0,
并在轉(zhuǎn)換過(guò)程中保持為0; f) tbre 是整個(gè)工作過(guò)程的標(biāo)志。實(shí)驗(yàn)中串行數(shù)據(jù)結(jié)構(gòu)為1 位起始位,8 位數(shù)據(jù)位,1 位奇偶校驗(yàn)位,1 位停止位。數(shù)據(jù) 的發(fā)送由外部接收模塊控制,接收模塊給出wrn 信號(hào),UART 發(fā)送模塊根據(jù)此信號(hào)將并行數(shù)據(jù)data-input 鎖存進(jìn)發(fā)送緩沖,并通過(guò)移位寄存器進(jìn)行并串轉(zhuǎn)換,在轉(zhuǎn)換結(jié)束后加上奇偶校驗(yàn)位,發(fā)送到端口txd 進(jìn)行串行輸出。在整個(gè)工作過(guò)程中,輸出信號(hào)tbre 作為標(biāo)志信號(hào),在串行數(shù)據(jù)全部輸出完畢之后變成0, 并在發(fā)送模塊未工作時(shí)保持為0。
2.4 接收模塊
接收模塊的結(jié)構(gòu)如圖4 所示。接收模塊的作用是把收到的串行數(shù)據(jù)轉(zhuǎn)換成并行數(shù)據(jù)進(jìn)行輸出,并判斷收到數(shù)據(jù)是否有錯(cuò)。接收模塊的內(nèi)部結(jié)構(gòu)及工作過(guò)程與發(fā)送模塊類似,只不過(guò)接收模塊的工作和發(fā)送模塊的工作相反,是進(jìn)行數(shù)據(jù)的串并轉(zhuǎn)換。
圖4 UART 接收模塊
a) rxd 接收串行數(shù)據(jù)輸入;
b) rdn 為輸入控制端,只有rdn 為0 時(shí),并行數(shù)據(jù)才允許輸出;
c) data-ready 為數(shù)據(jù)是否準(zhǔn)備好的標(biāo)志;
d) parity-error 為校驗(yàn)位是否出錯(cuò)的標(biāo)志;
e) framing-error 為幀是否出錯(cuò)的標(biāo)志;
f) data-out[7:0]為并行數(shù)據(jù)輸出端。
接收模塊從捕捉到數(shù)據(jù)串的第一個(gè)0 開(kāi)始工作,然后把隨后依次輸入的8 個(gè)數(shù)據(jù)位通過(guò)移位在寄存器中完成竄并轉(zhuǎn)換,并將并行數(shù)據(jù)輸出至端口data-out 。將8 個(gè)數(shù)據(jù)位移位至寄存器后,接收模塊將檢測(cè)輸入數(shù)據(jù)串的最后一位是否為1(停止位)來(lái)判斷接收到的數(shù)據(jù)幀是否出錯(cuò),若不為1,就將輸出framing-error 置1。
3 仿真驗(yàn)證在實(shí)驗(yàn)中,作者選用Altera 公司的Cyclone 系列產(chǎn)品中的EP1C12Q240C8 芯片,硬件描述語(yǔ)言采用Verilog HDL,用Quartus 5.1 進(jìn)行邏輯綜合,仿真工具則使用ModelSim6.0 。發(fā)送模塊和接收模塊的仿真結(jié)果分別如圖5 所示。發(fā)送的數(shù)據(jù)能夠嚴(yán)格按照串行通信協(xié)議進(jìn)行傳輸;接收的數(shù)據(jù)也完全正確。通過(guò)仿真測(cè)試后,將程序下載到FPGA 芯片中運(yùn)行,結(jié)果通信數(shù)據(jù)正確,電路工作穩(wěn)定、可靠。
圖5 發(fā)送和接收模塊仿真
4 結(jié)束語(yǔ)
用FPGA 實(shí)現(xiàn)了UART 通信功能,可以實(shí)現(xiàn)對(duì)數(shù)據(jù)的接收和發(fā)送,并可以在接收 數(shù)據(jù)時(shí)對(duì)其校驗(yàn)位、停止位進(jìn)行判斷,在發(fā)送數(shù)據(jù)時(shí)可以形成完整的一幀數(shù)據(jù)格式。本 文利用FPGA 設(shè)計(jì)實(shí)現(xiàn)了UART 的核心功能,可以和上位機(jī)進(jìn)行異步串行通信。實(shí)驗(yàn) 證明該UART 設(shè)計(jì)占用資源少,工作穩(wěn)定可靠。
本文作者創(chuàng)新觀點(diǎn):本文對(duì)UART 系統(tǒng)結(jié)構(gòu)進(jìn)行了模塊化分析,可以根據(jù)實(shí)際的需要可選擇地實(shí)現(xiàn)相應(yīng)的通信功能,簡(jiǎn)化了電路設(shè)計(jì),提高了系統(tǒng)的可靠性,可以靈活地嵌入到各個(gè)通信系統(tǒng)當(dāng)中。
評(píng)論