<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > EDA/PCB > 設計應用 > 基于FPGA的UART IP核設計與實現(xiàn)

          基于FPGA的UART IP核設計與實現(xiàn)

          作者: 時間:2008-04-23 來源:網絡 收藏
          摘要:本文設計了一種基于核,該核符合串行通信協(xié)議,具有模塊化、兼容性和可配置性,適合于SoC應用。設計中使用VerilogHDL硬件描述語言在XilinxISE環(huán)境下進行設計、仿真,最后在上嵌入實現(xiàn)了電路的異步串行通信功能。
          關鍵詞;;VerilogHDL;

          Abstract:This article introduces the design of a UART core based on FPGA. According to the protocol of serial communication, this core has the characteristic of modularity and configurability, and is ideal for SoC(system on a chip). Verilog hardware description language (HDL) in the Xilinx ISE environment has been used for its design, compilation and simulation. The UART IP core has been implemented using FPGA technology.

          Keywords:IP core;UART;Verilog HDL;FPGA

          1 引言

          在數(shù)據(jù)采集系統(tǒng)中, 常需要進行異步串行數(shù)據(jù)傳輸,目前廣泛使用的RS232異步串行接口,如8250、NS16450等專用集成芯片,雖然使用簡單,卻有占用電路體積、引腳連接復雜等缺點。SoC(System on Chip,片上系統(tǒng))是ASIC設計中的新技術,是以嵌入式系統(tǒng)為核心,以IP 復用技術為基礎,集軟、硬件于一體的設計方法。使用IP復用技術,將UART集成到FPGA芯片上,可增加系統(tǒng)的可靠性,縮小PCB板體積;其次由于的特點,使用IP核可使整個系統(tǒng)更加靈活,還可以根據(jù)需要進行功能的升級、擴充和裁減。

          本文使用Verilog HDL語言編寫UART模塊,將其集成到FPGA芯片上,與芯片上的其它功能模塊構成SoC片上系統(tǒng)。

          2 UART模塊設計與實現(xiàn)

          UART串行數(shù)據(jù)格式如圖1所示,串行數(shù)據(jù)包括8位數(shù)據(jù)(8 data bits)、1位起始位(start bit)、1位結束位(stop bit)、1位校驗位(parity bit),共11位。

          圖1. UART數(shù)據(jù)格式

          UART模塊結構如圖2所示,左邊發(fā)送鎖存器、發(fā)送移位寄存器和邏輯控制組成發(fā)送模塊(txmit),右邊接收鎖存器、接收移位寄存器和邏輯控制組成接收模塊(rxcver)。發(fā)送模塊和接收模塊除了共用復位信號、時鐘信號和并行數(shù)據(jù)線外,分別有各自的輸入、輸出和控制邏輯單元。

          圖2. UART模塊結構

          2.1 波特率時鐘的控制

          UART核包含一個可編程的波特率發(fā)生器,它給發(fā)送模塊和接收模塊提供發(fā)送數(shù)據(jù)和接收數(shù)據(jù)的基準時鐘,波特率發(fā)生器產生的時鐘mclkx16是串行數(shù)據(jù)波特率的16倍。它對系統(tǒng)時鐘進n分頻,計算公式為:mclkx16=系統(tǒng)時鐘/波特率*16,針對不同波特率設定相應的數(shù)值就可以得到期望的內部波特率時鐘。

          2.2 發(fā)送模塊設計

          發(fā)送模塊分為三種模式:空閑模式、載入數(shù)據(jù)模式、移位模式。當并行8位數(shù)據(jù)從總線寫入發(fā)送模塊后,發(fā)送模塊將并行數(shù)據(jù)裝入鎖存器thr中,然后在移位寄存器tsr中將數(shù)據(jù)移位,產生完整的發(fā)送序列(包括起始位,數(shù)據(jù)位,奇偶校驗位和停止位),以相應波特率從tx發(fā)送。發(fā)送模塊的輸入時鐘mclkx16是串行數(shù)據(jù)波特率的16倍,模塊內部將其16分頻后得到波特率時鐘txclk。

          在發(fā)送時序圖中我們看到輸入數(shù)據(jù)為8’b00001111,校驗位為奇校驗,產生校驗位為’1’。tx端依次輸出起始位’0’,8位數(shù)據(jù)’00001111’,校驗位’1’。tsr移位寄存器中數(shù)據(jù)依次右移,高位在前兩次右移中補’1’,之后8次移位中高位補’0’。

          下面是發(fā)送模塊主要程序段,使用Verilog HDL語言編寫。由于初始和移位程序比較簡單,這里沒有給出。

          always @(posedge txclk or posedge reset)

          if (reset)

          idle_reset; //初始程序

          else

          begin

          if (txdone txdatardy)

          load_data; //將數(shù)據(jù)裝入tsr,并發(fā)送起始位

          else

          begin

          shift_data; // tsr8位數(shù)據(jù)移位,并產生校驗位

          if (txdone )

          tx = 1'b1; // 輸出停止位

          else if (paritycycle)

          tx = txparity; // 輸出校驗位

          else

          tx = tsr[0]; //輸出數(shù)據(jù)位

          end

          end

          圖3. 發(fā)送時序

          2.3 接收模塊設計

          接收模塊也分為三種模式:空閑模式、檢測起始位模式、移位模式。首先捕捉起始位,

          在mclkx16時鐘下不斷檢測從rx端輸入數(shù)據(jù)的起始位,當檢測到起始位后,接收模塊由空閑模式轉換為移位模式,并且16分頻mclkx16產生rxclk波特率時鐘。此時rxclk時鐘的上升沿位于串行數(shù)據(jù)每一位的中間,這樣接下來的數(shù)據(jù)在每一位的中點采樣,能有效濾除噪聲影響。然后由rxclk控制在上升沿將數(shù)據(jù)位寫入移位寄存器rsr的rsr[7]位,并且rsr右移1位,照此過程8位數(shù)據(jù)全部寫入rsr,并且停止產生rxclk波特率時鐘。判斷奇偶校驗、幀結構和溢出標志正確后,rsr寄存器中的數(shù)據(jù)寫入rhr數(shù)據(jù)鎖存寄存器中,最后由8位數(shù)據(jù)總線輸出轉換完成的數(shù)據(jù)。

          rxclk時鐘的產生依靠判斷起始位,在起始位’0’的中點產生,并且在檢測到結束位后停止,如圖4所示。

          圖4. 接收模塊波特率時鐘產生時序

          接收移位程序段如下:

          task shift_data;

          begin

          rsr = rsr >> 1; // 寄存器右移一位

          rsr[7] = rxparity; // 數(shù)據(jù)裝入rsr[7]

          rxparity = rxstop;

          rxstop = rx;

          paritygen = paritygen ^ rxstop; // 產生奇偶比較標志

          end

          endtask

          由時序圖可以看到一個完整的數(shù)據(jù)幀的接收過程,hunt和idle標志捕捉到起始位后,產生rxclk波特率時鐘,串行數(shù)據(jù)在rsr中移位,rsr中數(shù)據(jù)右移高位補零。當起始位’0’移位到rsr[0]后,接收模塊在下一個clk上升沿返回空閑狀態(tài),返回空閑狀態(tài)后產生數(shù)據(jù)移位完成中斷rxrdy,數(shù)據(jù)可從8位數(shù)據(jù)總線讀出。

          圖5. 接收時序

          3 UART綜合

          程序經仿真驗證后,須綜合生成IP核并嵌入FPGA中。使用Xilinx公司的Xilinx ISE工具綜合UART模塊,F(xiàn)PGA選用Xilinx公司的Spartan-IIE xc2s50E,系統(tǒng)時鐘40Mhz。經Xilinx ISE綜合后,資源使用結果如下所示,表明使用少量FPGA的Slice和LUT單元就可生成UART核。

          表1. 資源使用情況

          Number of Slices

          108 out of 768

          14%

          Number of Slice Flip Flops

          90 out of 1536

          5%

          Number of 4 input LUTs

          195 out of 1536

          12%

          Number of bonded IOBs

          25 out of 102

          24%

          Number of GCLKs

          1 out of 4

          25%

          UART核可靈活分成接收和發(fā)送兩部分,可根據(jù)需要選擇使用,節(jié)省系統(tǒng)資源;一些控制標志字也可根據(jù)需要自行刪減和擴充。最后將集成有UART核的FPGA數(shù)據(jù)采集系統(tǒng)與測試臺進行異步串行通信實驗,通信數(shù)據(jù)經檢測表明使用UART核傳輸數(shù)據(jù)穩(wěn)定可靠。

          4 結束語

          在數(shù)據(jù)采集系統(tǒng)中經常采用UART異步串行通信接口作為數(shù)據(jù)采集系統(tǒng)的短距離串行通信。相對于傳統(tǒng)的UART芯片來說,集成在FPGA中的具有UART功能的IP核更有利于提高數(shù)據(jù)采集系統(tǒng)的可靠性和穩(wěn)定性,縮小電路體積。本文設計的UART IP核通過仿真驗證,經綜合、編譯、嵌入FPGA,成功應用于數(shù)據(jù)采集系統(tǒng)的端口通信中。

          參考文獻

          [1] 侯伯亨, 顧新. VHDL硬件描述語言與數(shù)字邏輯電路設計[M]. 西安: 西安電子科技大學出版社, 19991

          [2] 張莉, 楊永明. 基于CPLD的UART設計[J]. 微計算機信息. 2002. 2(18): 60-61

          [3] Xilinx, Inc. Spartan-IIE 1.8V FPGA Functional Description , 2003, 9

          [4] 劉 達, 龔建榮. 系統(tǒng)級可編程芯片(SOPC)設計思想與開發(fā)策略[J]. 現(xiàn)代電子技術, 2002, (11): 124

          [5] 周恒, 羅斯青. 基于FPGA的SOC設計策略[J]. 山西電子技術, 2002, (11): 629



          關鍵詞: FPGA UART IP核

          評論


          相關推薦

          技術專區(qū)

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();