基於FPGA的UART串列埠通訊

2021-08-19 00:08:19 字數 1229 閱讀 5213

通過串列埠除錯助手pc傳送16bit給fpga,fpga接收後返還給pc。

串列埠通訊其實沒我們想象中的那麼難,只要花點時間去理解,很快就會上手,在直入正題前,先來一點基礎知識。

串列埠是指傳送和接收資料的序列口,就是我們開啟電腦裝置管理器後看到的com口。fpga或微控制器的板子中很多都用到的是uart(通用非同步收發傳輸器)和rs232

uart:計算機內部採用並行資料,不能直接把資料發到modem,必須經過uart整理才能進行非同步傳輸,其過程為:cpu先把準備寫入序列裝置的資料放到uart的暫存器(臨時記憶體塊)中,再通過fifo(first input first output,先入先出佇列)傳送到序列裝置,若是沒有fifo,資訊將變得雜亂無章,不可能傳送到modem。它是用於控制計算機與序列裝置的晶元。有一點要注意的是,它提供了rs-232c資料終端裝置介面,這樣計算機就可以和數據機或其它使用rs-232c介面的序列裝置通訊了。

rs232:個人計算機上的通訊介面之一,由電子工業協會(electronic industries association,eia) 所制定的非同步傳輸標準介面,通常為9個引腳,但在我們的應用中rs-232口一般只使用rxd、txd、gnd三條線。

現在很少能看到這種口了,基本上都用的是usb,所以在下面我們fpga的實際例子中,大家只要認準rxd、txd兩個引腳就好。

在進入實際工程中前我們要明白什麼叫波特率:波特率指1s內所要傳送的資料,在我們的串列埠設定中有很多種波特率,比如4800、9600和19200等,根據你的實際需要選擇不同的波特率。波特率應提前被協議雙方確定,在我們的實驗中,我們是通過pc向fpga傳送乙個16bit的資料,fpga接收後再返還給pc。那麼在這個過程中,pc發了16位的資料,fpga要知道每一位傳送的時間有多長,fpga才能在資料送過來時,去取樣,將資料提取出來。比如我們給定的波特率是9600,那麼傳送一位的時間為1/9600=0.000104166667s約等於104ns,那麼我們就可以讓fpga每隔52ns的中間點去採一次樣,存下現在這一位資料是多少,16位資料,經過1664ns採集完。1664ns是乙個時間段,它可以明確我們採集的是16bit的資料,當然現在這樣說還不太準確,因為我們在串列埠通訊時還存在奇偶校驗位和停止位,這兩個位的概念我們下面會講到

UART串列埠通訊協議的FPGA實現

引言 uart串列埠通訊協議,全稱叫做通用非同步收發器 universal asynchronous receiver transmitter 通常稱作uart。uart是非同步通訊,它只需要一根線就可以進行資料的通訊。1 基本概念 具體的時序圖如下圖所示 2 verilog實現 module ua...

UART串列埠通訊

先簡單說說串列埠通訊 uart 我做的這個實驗只針對rs232標準,在fpga與上位機給出的rs232口之間通過電平轉換電路 最上面圖中的max232晶元 實現ttl電平與rs232電平之間的轉換。我們只關心rs232 tx和rs232 rx兩個訊號,rs232 tx是資料傳送埠,rs232 rx是...

FPGA視角 低速串列埠 UART

uart,只有一根資料通訊線,沒有伴隨時鐘線,屬於非同步通訊。這類介面的衍生諸如 rs232 rs422 rs485 spi等。資料互動時,一般做一收一發,通過固定頻率的高低電平的變換,傳遞資料。這裡只說明其邏輯特性,硬體特性不做說明。用於描述uart的通訊速率,單位bps,以最常見的9600bps...