勇敢的芯伴你玩轉Altera FPGA連載67:UART loopback測試 特權同學(xué),版權所有 配套例程和更多資料下載鏈接: http://pan.baidu.com/s/1i5LMUUD ![]() UART(Universal Asynchronous Receiver/Transmitter),即通用異步收發(fā),它的數據傳輸不需要時(shí)鐘,只要兩條信號線(xiàn)分別進(jìn)行數據收發(fā)。既然沒(méi)有時(shí)鐘,那么他們是如何保證數據收發(fā)的準確性的?很簡(jiǎn)單,收發(fā)雙方首先需要做到知己知彼,約定好數據傳輸的速率(簡(jiǎn)單的講就是約定好一個(gè)數據位傳輸的時(shí)間)和幀格式(即一幀的長(cháng)短,一幀由哪些位組成,他們的功能都是什么)。 我們看看UART的一個(gè)幀定義。簡(jiǎn)單的串口幀格式如圖8.49所示,它由1個(gè)起始位(必須為0)、8個(gè)數據位(用戶(hù)數據)、1個(gè)奇偶校驗位(用于簡(jiǎn)單的糾錯以保證傳輸可靠性)和1或2個(gè)停止位(必須為1)組成。除了奇偶校驗位,其他三個(gè)部分都是必須的。當信號線(xiàn)空閑時(shí),必須為高電平。要發(fā)起數據傳輸時(shí),1個(gè)低電平的脈沖表示起始位,然后連續傳輸8個(gè)數據位和若干個(gè)高電平的停止位,這樣便完成一次傳輸。 ![]() 圖8.49串口幀格式 該實(shí)驗要實(shí)現的功能是FPGA實(shí)時(shí)監測uart_rx信號是否有數據,若接收到數據,則把接收到的數據通過(guò)uart_tx發(fā)回給對方。PC機使用一個(gè)串口調試助手進(jìn)行通信。 在代碼設計中,speed_setting.v模塊里可以修改收發(fā)數據的波特率,如9600bps,19200bps,38400bps,57600bps或115200bps等。發(fā)送的數據幀格式為:1bit起始位,8bit數據,無(wú)校驗位,1bit停止位。 該實(shí)例的內部功能如圖8.50所示。 ![]() 圖8.50 串口實(shí)例功能框圖 該工程實(shí)例的設計模塊層次如圖8.51所示。 ![]() 圖8.51 串口實(shí)例模塊層次 |