【正文】
接口、控制邏輯、波特率發(fā)生器、發(fā)送部分和接收部分等組成。 UART主要有由數據總線接口、控制邏輯、波特率發(fā)生器、發(fā)送部分和接收部分等組成。下面的設計就是用VHDL來完成實現的。特別是進入20世紀90年代后,電子系統(tǒng)已經從電路板級系統(tǒng)集成發(fā)展成為包括ASIC、FPGA/CPLD和嵌入系統(tǒng)的多種模式。實現了基于FPGA的UART基本功能設計,并給出了UART的軟件編程實例.關鍵字:Verilog HDL;FPGA;UARTBased on SCM ultrasonic ranging system Design( YiChun University Physical science and engineering institute of technology Li Yang)Abstract: this paper briefly introduces the basic function of UART, the Verilog HDL language as a description of the hardware function, using modular design method to design the general asynchronous transceiver module, receive send the module and baud rate generator. Realized the basic function of UART which based on FPGA , and gives the UART software programming examples. Key word: Verilog HDL。 FPGA??梢哉fEDA產業(yè)已經成為電子信息類產品的支柱產業(yè)。1 . UART簡介UART(即Universal Asynchronous Receiver Transmitter 通用異步收發(fā)器)是一種應用廣泛的短距離串行傳輸接口。功能較為簡單,但使用方便、占用資源少,可以靈活地嵌入到各種設計之中。 UART的幀格式UART是異步通信方式,發(fā)送方和接收方分別有各自獨立的時鐘,傳輸的速度由雙方約定,使用起止式異步協(xié)議。從圖中可以看出,這種格式是靠起始位和停止位來實現字符的界定或同步的,故稱為起止式協(xié)議。UART串行數據傳輸的示意圖如圖二所示:19圖二 串行數據傳輸發(fā)送數據過程:空閑狀態(tài),線路處于高電位,當收到發(fā)送數據指令后,拉低線路一個數據位的時間T,接著數據按低位到高位依次發(fā)送,數據發(fā)送完畢后,接著發(fā)送奇偶校驗位和停止位(停止位為高電位),一幀數據發(fā)送結束。在邏輯結構上,每秒9600次的發(fā)送節(jié)拍由波特率發(fā)生器產生,它是一個參數化、分頻比的整數分頻器。所以接收端需要進行過采樣來保證數據的接收,RS232標準規(guī)定的過采樣率是以發(fā)送波特率的16倍時鐘對數據進行檢測。被選通的數碼管顯示數據。 UART設計總模塊將發(fā)送器和接收器模塊組裝起來,就能較容易地實現通用異步收發(fā)器總模塊,而且硬件實現不需要很多資源,尤其能較靈活地嵌入到FPGA/CPLD的開發(fā)中。小功率超聲探頭多作探測作用。UART接收器接收RXD串行信號,并將其轉化為并行數據。n use 。 n txdbuf_in:in std_logic_vector(7 downto 0)。n r_ready:out std_logic。ponent transfern Port (bclkt,resett,xmit_cmd_p:in std_logic。n end ponent。n signal b:std_logic。end Behavioral 波特率發(fā)生器實際上就是一個分頻器。library IEEE。entity baud is Port (clk,resetb:in std_logic。begin if resetb=39。039。 設置分頻系數 else t:=t+1。 end if。然而,為了避免毛刺影響,能夠得到正確的起始位信號,必須要求接收到的起始位在波特率時鐘采樣的過程中至少有一半都是屬于邏輯0才可認定接收到的是起始位。n 在這個狀態(tài)下,UART的發(fā)送器一直在等待一個數據幀發(fā)送命令XMIT_CMD。n 當XMIT_CMD_P=‘1’,狀態(tài)機轉入X_START,準備發(fā)送起始位。 X_SHIFT狀態(tài)n 當狀態(tài)機處于這一狀態(tài)時,實現待發(fā)數據的并串轉換。 UART發(fā)收器程序設計library IEEE。entity transfer is generic(framlent:integer:=8)。 txd_done:out std_logic)。signal tt:integer:=0。begin if resett=39。039。139。 else state=x_idle。 else xt16:=xt16+1。 end if。 else state=x_shift。 end if。 狀態(tài)4,將待發(fā)數據進行并串轉換 when x_stop= 狀態(tài)5,停止位發(fā)送狀態(tài) if xt16=01111 then if xmit_cmd_p=39。 else xt16:=xt16。139。 state=x_