基于FPGA的串口設計微電子論文_第1頁
基于FPGA的串口設計微電子論文_第2頁
基于FPGA的串口設計微電子論文_第3頁
基于FPGA的串口設計微電子論文_第4頁
基于FPGA的串口設計微電子論文_第5頁
已閱讀5頁,還剩36頁未讀, 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、目 錄任務書.開題報告.指導教師審查意見.評閱教師評語.答辯會議記錄 中文摘要.外文摘要.前言11 引言11.1 課題來源11.2 課題研究的研究背景11.3 國外的發展現狀、發展趨勢與存在的主要問題21.4 課題研究的指導思想與技術路線31.5 基于FPGA串口設計的技術要求42 UART原理介紹52.1UART結構和工作原理53 方案選擇63.1 設計語言的選擇63.2 電平轉換方式的選擇73.3 FPGA核心芯片的選擇74 系統硬件設計94.1 器件芯片介紹94.2 系統硬件框圖144.3 主要組成電路分析144.4 總電路圖設計175 系統軟件設計175.1 主程序流程圖175.2 中

2、斷子程序流程圖195.3 DDS控制軟件設計195.4 AD7886 軟件驅動設計205.5 系統源程序216 制作位移測量裝置的步驟217 總結 22參考文獻23致24附錄125附錄226附錄32739 / 41基于FPGA的串口設計摘要隨著微電子技術的快速發展,電子設備逐漸向著小型化.集成化方向的發展。人們在要求設備性能不斷提升的同時,還要求設備功耗低體積小重量輕可靠性高。UART因其可靠性高,傳輸距離遠線路簡單而成為比較廣泛的串行數據通信電路,而現在大部分集成電路通信用的UART芯片,存在成本高,電路復雜,移植性較差等缺點。本設計是基于FPGA的嵌入式UART模塊化設計方法,將UART模

3、塊集成到FPGA上,而這些模塊功能全部基于VHDL硬件描述語言,并通過有限狀態機來實現,增強了設計的靈活性,降低了成本。論文的主要目標是利用FPGA實現UART的功能與PC機實現串口通信,UART的功能模塊通過MAX232將電平轉換后與PC機相連達到設計目的。 UART的功能模塊主要包括波特率產生模塊,數據發送模塊,數據接收模塊三個部分,對各模塊的功能在文中都有詳細的介紹。整個設計都采用硬件描述語言(VHDL)實現,并且采用了分模塊的設計風格,使設計的思路更清晰。關鍵字FPGA UART VHDL PC機 MAX232 The Design Of SerialBase on FPGAFengR

4、an: Chen Xiaojing, Electronic InformationChenXiaojing: Electronic Information Abstract With the rapid development of microelectronicstechnology, electronic equipment become smaller and integratedin the continuous upgrading of equipmentrequlrementsat the same time,also called lowpower devices,small s

5、ize,light weight,highreliabilityUART because of its high reliability, long transmission distance lines become broader and simple serial data communication circuit, but now most of the communication with the UART integrated circuit chip, high cost, circuit complexity, less portable, and other shortco

6、mings. The design is based on modular FPGA designmethodology for embedded UART, UART modules will be integrated into the FPGA, all based on these modules feature hardware description language VHDL and implemented through the finite state machine, and enhance design flexibility, reduced costs.前 言隨著FP

7、GA/CPLD器件在控制領域的廣泛使用,開發嵌于FPGA/CPLD器件部的通用異步收發器,以實現FPGA/CPLD開發系統與PC機之間的數據通信是很有實際意義的。FPGA/CPLD器件與單片機、ARM等器件不同,部沒有集成UART,因此要實現串行通信,必須要獨立開發UART模塊。本設計對于深入理解串口的工作原理和理解FPGA的工作流程具有啟示意義,并通過設計的過程FPGA的應用能力和系統綜合設計能力將得到加強。1 引言1.1 課題來源結合科研1.2課題研究的研究背景當今社會是數字化的社會,是數字集成電路廣泛應用的社會。數字集成電路本身在不斷地進行更新換代。它由早期的電子管、晶體管、小中規模集成

8、電路、發展到超大規模集成電路(VLSIC,幾萬門以上)以與許多具有特定功能的專用集成電路。但是,隨著微電子技術的發展,設計與制造集成電路的任務已不完全由半導體廠商來獨立承擔。系統設計師們更愿意自己設計專用集成電路(ASIC)芯片,而且希望ASIC的設計周期盡可能短,最好是在實驗室里就能設計出合適的ASIC芯片,并且立即投入實際應用之中,因而出現了現場可編程邏輯器件(FPLD),其中應用最廣泛的當屬現場可編程門陣列(FPGA)和復雜可編程邏輯器件(CPLD)。 通用異步收發器(Universal Asynchronous Receiver/Transmitter), 簡稱為UART ) 由于具有

9、數據通信時需要的連線少, 具有相關工業標準提供的標準的接口電平規等優點, 在工業控制領域被廣泛采用. 近年來, 隨著FPGA/ CPLD 器件在控制領域的廣泛使用, 開發嵌于FPGA/ CPLD 器件部的通用異步收發器, 以實現FPGA/ CPLD 開發系統與PC 機之間的數據通信引起了FPGA / CPLD 領域研究人員的關注. 為此,本設計基于FPGA 器件設計了符合RS - 232 標準的U ART , 便于實現FPGA/CPLD開發系統與PC 機之間的串口數據交換。1.3國外的發展現狀、發展趨勢與存在的主要問題 通用異步收發器(Universal Asychronous Re

10、ceiver Transmitter,UART)是雷達中常用的器件類型,多用于全機監測、指令發送接收、狀態傳遞、鍵盤顯示操作以與控制等等。由于許多大的器件供應商不再生產此類軍品級產品,因此,就必須另尋途徑解決其在雷達中的應用問題。利用可編程器件實現UART功能模塊,既可以滿足產品類別的需求又可以在使用中根據實際情況增減配置,是我們在設計中值得考慮的一種方法。在嵌入式系統中,嵌入式CPU往往要通過各種串行數據總線與“外界”進行通信。在應用中,異步的串行數據通信用得較多,而通用異步收發器在其中扮演著重要角色:完成數據的串并轉換,即把并行數據按照通信波特率轉化為通信協議中規定的串行數據流,也可從串行

11、數據流中取出有用數據轉變為并行數據。對FPGA芯片來說,該芯片具有靜態可重復編程和動態在系統重構的特性,使得硬件功能可以通過軟件的編程修改參數來實現,這樣不僅從實時性上得到了提高,而且極大提高了電子系統設計的通用性和靈活性,因此,UART接口技術的FPGA實現逐漸運用于現代軍事工業。FPGA是英文 Field Programmable Gate Array的縮寫,即現場可編程門陣列,它是在PAL、GAL、EPLD等可編程器件的基礎上進一步發展的產物。它是作為專用集成電路(ASIC)領域中的一種半定制電路而出現的,既解決了定制電路的不足,又克服了原有可編程器件門電路數有限的缺點。 FPGA 采用

12、了邏輯單元陣列LCA(Logic Cell Array)這樣一個新概念,部包括可配置邏輯模塊CLB (Configurable Logic Block)、輸出輸入模塊IOB(Input Output Block)和部連線(Interconnect)三個部分。FPGA的基本特點主要有:1)采用FPGA設計ASIC電路,用戶不需要投片生產,就能得到合用的芯片。2)FPGA可做其它全定制或半定制ASIC電路的中試樣片。3)FPGA部有豐富的觸發器和IO引腳。4)FPGA是ASIC電路中設計周期最短、開發費用最低、風險最小的器件之一。5)FPGA采用高速CHMOS工藝,功耗低,可以與CMOS、TTL電

13、平兼容。  可以說,FPGA芯片是小批量系統提高系統集成度、可靠性的最佳選擇之一。目前FPGA的品種很多,有XILINX的XC系列,TI公司的TPC系列、ALTERA公司的FIEX系等。FPGA是由存放在片RAM中的程序來設置其工作狀態的,因此,工作時需要對片的RAM進行編程。用戶可以根據不同的配置模式,采用不同的編程方式。加電時,FPGA芯片將EPROM中數據讀入片編程RAM中,配置完成后,FPGA進入工作狀態。掉電后,FPGA恢復成白片,部邏輯關系消失,因此,FPGA能夠反復使用。FPGA的編程無須專用的FPGA編程器,只須用通用的EPROM、PROM編程器即可。當需要

14、修改FPGA功能時,只需換一片EPROM即可。這樣,同一片FPGA,不同的編程數據,可以產生不同的電路功能。因此,FPGA的使用非常靈活。 FPGA有多種配置模式:并行主模式為一片FPGA加一片EPROM的方式;主從模式可以支持一片PROM編程多片FPGA;串行模式可以采用串行PROM編程FPGA;外設模式可以將FPGA作為微處理器的外設,由微處理器對其編程。FPGA的設計難點:1)不同時鐘域轉換2)高速電路設計,信號完整性3)降低功耗1.4課題研究的指導思想與技術路線UART(即Universal Asynchronous Receiver Transmitter 通用異步收發器)是一種應用

15、廣泛的短距離串行傳輸接口。UART允許在串行鏈路上進行全雙工的通信。串行外設用到的RS232-C異步串行接口,一般采用專用的集成電路即UART實現。如8250、8251、NS16450等芯片都是常見的UART器件,這類芯片已經相當復雜,有的含有許多輔助的模塊(如FIFO),有時我們不需要使用完整的UART的功能和這些輔助功能?;蛘咴O計上用到了FPGA/CPLD器件,那么我們就可以將所需要的UART功能集成到FPGA部。使用Verilog將UART的核心功能集成,從而使整個設計更加緊湊、穩定且可靠。本文設計一利用FPGA實現的通用異步收發器UART,能實現與PC機之間的串口通信。1.5基于FPG

16、A串口設計的技術要求 (1)設計出能完成串行數據發送和接收的的串口,可實現與PC機的通訊。(2)設計波特率為9600bit/s(3)收發數據幀格式定義為:1位起始位,8位數據位和1位停止位。(4)用modelsim仿真2 UART原理介紹2.1 UART結構和工作原理2.1.1UART介紹UART:Universal Asynchronous Receiver/Transmitter,通用異步接收/發送裝置,UART是一個并行輸入成為串行輸出的芯片,通常集成在主板上,多數是16550AFN芯片。因為計算機部采用并行數據,不能直接把數據發到Modem,必須經過UART整理才能進行異步傳輸,其過程

17、為:CPU先把準備寫入串行設備的數據放到UART的寄存器(臨時存塊)中,再通過FIFO(First Input First Output,先入先出隊列)傳送到串行設備,若是沒有FIFO,信息將變得雜亂無章,不可能傳送到Modem。UART是用于控制計算機與串行設備的芯片。有一點要注意的是,它提供了RS-232C數據終端設備接口,這樣計算機就可以和調制解調器或其它使用RS-232C接口的串行設備通信了。作為接口的一部分,UART還提供以下功能:將由計算機部傳送過來的并行數據轉換為輸出的串行數據流。將計算機外部來的串行數據轉換為字節,供計算機部使用并行數據的器件使用。在輸出的串行數據流中加入奇偶校

18、驗位,并對從外部接收的數據流進行奇偶校驗。在輸出數據流中加入啟停標記,并從接收數據流中刪除啟停標記。處理由鍵盤或鼠標發出的中斷信號(鍵盤和鼠標也是串行設備)??梢蕴幚碛嬎銠C與外部串行設備的同步管理問題。圖1 UART數據傳輸結構圖2.1.2 UART 幀的格式UART 幀的格式包括線路空閑狀態(idle,高電平有效)、起始位(start bit,低電平有效)、58 位數據位(data bits)、校驗位(parity bit,可選)和1 位停止位(stop bit)。字符的同步由起始位和停止位來實現。UART 部配置有寄存器,可以配置實現數據位數(58 位)可選、是否有校驗位和校驗的類型等設置

19、。 圖2 UART數據帖格式 2.1.3 UART工作原理UART 接收器在工作時,信號檢測器一直監視RxD 線上的電平,當RxD 線上出現低電平時, 通知串行接收控制器有數據需要接收,此時接收控制器啟動移位寄存器、波特率發生器和數據位計數器. 在波特率時鐘的驅動下移位寄存器將RxD 線上的電平值依次移入部寄存器,當計數器的計數值達到10 時表示一幀數據接收完成,這時接收控制器產生數據接收完成中斷,并從接收的數據幀中提取出數據并鎖存,供后續模塊使用.U ART 發送器在工作時,發送信號檢測器一直監視發送請求信號是否有效, 若檢測發送請求信號有效,則發送信號檢測器停止接收發送請求. 發送請求信號

20、傳到串行發送控制器后, 控制器啟動發送移位寄存器、波特率發生器和數據位計數器, 在波特率時鐘的驅動下, 發送移位寄存器先發送一位起始位( 邏輯0) , 然后將待發送的并行數據從最低位開始逐位發出,數據發送完后, 再發送一位停止位( 邏輯1)。在移位寄存器移出一位邏輯值后數據位計數器加1,當數據位計數器記滿10 表示一帖數據發送完成,此時控制器停止各個輔助部件并且再次啟動發送信號檢測器, 開始監視下一次發送請求.3方案選擇3.1設計語言選擇 本次設計用的硬件描述語言是VHDL,主要原因是以前學過該語言和它具有如下優勢:(1)與其他的硬件描述語言相比,VHDL具有更強的行為描述能力,從而決定了他成

21、為系統設計領域最佳的硬件描述語言。強大的行為描述能力是避開具體的器件結構,從邏輯行為上描述和設計大規模電子系統的重要保證。 (2)VHDL豐富的仿真語句和庫函數,使得在任何大系統的設計早期就能查驗設計系統的功能可行性,隨時可對設計進行仿真模擬。 (3)VHDL語句的行為描述能力和程序結構決定了他具有支持大規模設計的分解和已有設計的再利用功能。符合市場需求的大規模系統高效,高速的完成必須有多人甚至多個代發組共同并行工作才能實現。(4)VHDL對設計的描述具有相對獨立性,設計者可以不懂硬件的結構,也不必管理最終設計實現的目標器件是什么,而進行獨立的設計。3.2電平轉換方式選擇RS232C 是與RS

22、499、RS423、RS422和RS485 并列的一種UART ( universal asynchronous receiver / transm itter)接口標準規和總線標準規. 這些規雖然規定了不同的通信接口電氣特性、傳輸速率、連接特性和接口的機械特性等容, 但是都對應異步串行通信協議. 由于實際中PC 的外部接口配置為RS232C 已經成為事實標準, 所以文章以RS232C 為基礎編寫FPGA 串口驅動程序。而MAX232芯片是美信公司專門為電腦的RS-232標準串口設計的單電源電平轉換芯片,所以電平轉換部分就是用MAX232實現的。3.3 FPGA核心芯片的選擇 本系統用的主芯片

23、是EP1C12Q240C8,該系列的芯片采用324引腳、BGA封裝的EP1C12 FPGA,它擁有12060個LE,52個M4K片上RAM(共計239616bits),2個高性能PLL以與多達249個用戶自定義IO。同時,系統還可以根據用戶不同的設計需求來更換其它不同系列的核心板,如: EP1C6、EP2C20、EP3C25等。所以,不管從性能上而言,還是從系統靈活性上而言,它都會成為我們的好幫手。EP1C12核心板具有JTAG調試接口、50MHz高精度時鐘源等可用資源,因此對于設計和仿真都提供了較好的條件。3.4 總體設計框圖FPGARS232電平轉換PC機圖3 總體設置框圖4 系統硬件設計

24、4.1 器件芯片介紹4.1.1 FPGA核心板EP1C12介紹EP1C12核心板為基于Altera Cyclone器件的嵌入式系統開發提供了一個很好的硬件平臺,它可以為開發人員提供以下資源:1 主芯片采用Altera Cyclone器件EP1C12F324C8 2EPCS4I8配置芯片3 4個用戶自定義按鍵4 4個用戶自定義LED 5 1個七段碼LED 6 標準AS編程接口和JTAG調試接口7 40MHz高精度時鐘源8 三個高密度擴展接口9 系統上電復位電路10 支持+5V直接輸入,板上電源管理模塊系統主芯片采用324引腳、BGA封裝的E1C12 FPGA,它擁有12060個LE,52個M4K

25、片上RAM(共計239616bits),2個高性能PLL以與多達249個用戶自定義IO。同時,系統還可以根據用戶不同的設計需求來更換其它不同系列的核心板,如: EP1C6、EP2C20、EP3C25等。圖4 EP1C12核心板系統功能框圖FPGA開發平臺提供了豐富的資源供學生或開發人員學習使用,資源包括接口通信、控制、存儲、數據轉換以與人機交互顯示等幾大模塊,接口通信模塊包括SPI接口、IIC接口、VGA接口、RS232接口、USB接口、PS2鍵盤/鼠標接口、1Wire接口等;存儲模塊包括EEPROM存儲器模塊等;數據轉換模塊包括串行ADC、 DAC以與音頻CODE等;人機交互顯示模塊包括8個

26、按鍵、16個LED發光二極管顯示、1602字符型點陣LCD、8位動態7段碼管、實時時鐘、SD卡等。上述的這些資源模塊既可以滿足初學者入門的要求,也可以滿足開發人員進行二次開發的要求。EDA/SOPC實驗開發平臺提供的資源有:1、標準配置核心板為EP1C12核心板(核心芯片為EP1C12F324C8)??筛鼡QEP2C20F484C8等其它核心板。2、 1602字符型液晶點陣。3、 RTC,提供系統實時時鐘。4、 1個256色VGA接口。5、1個標準串行接口。6、 1個USB設備接口,利用PDIUSBD12芯片實現USB協議轉換。7、基于SPI或IIC接口的音頻CODEC模塊。8、 1個蜂鳴器輸出

27、模塊。9、 2個PS2鍵盤/鼠標接口。10、串行ADC和串行DAC模塊。11、 IIC接口的EEPROM存儲器模塊。12、基于1-Wire接口的數字溫度傳感器。13、 8位動態七段碼管LED顯示。14、 16個用戶自定義LED顯示,8個用戶自定義按鍵輸出。15、一個SD卡接口模塊。16、擴展接口,供用戶高速穩定的自由擴展。圖5 FPGA系統平臺功能框圖JTAG調試接口 在FPGA開發過程中,JTAG是一個比不可少的接口,因為開發人員需要下載配置數據到FPGA。在Nios II開發過程中,JTAG更是起著舉足輕重的作用,因為通過JTAG接口,開發人員不僅可以對Nios II系統進行在線仿真調試,

28、而且還可以下載代碼或用戶數據到CFI Flash中。開發板上提供如圖2-6所示的10針插座,其每個插針的信號定義見表1。圖6開發板上的JTAG調試插座JP1插座信號定義 1TCK 2GND 3TDO 4Vcc(3.3V) 5TMS 6 / 7/ 8/ 9TDI 10GND 表1 JTAG插座信號定義注: /表示該插針沒有任何信號。晶振核心板上提供了高精度、高穩定性50MHz的有源晶振,晶振所輸出的脈沖信號直接與FPGA的時鐘輸入引腳相連。如果設計人員需要其它頻率時鐘源,可以在FPGA部進行分頻或利用FPGA部PLL倍頻等途徑來得到。有源晶振的輸出端與FPGA的IO接口對應關系如表2所示。40M

29、時鐘信號EP1C12引腳40MHZ J3 表3 時鐘信號與FPGA IO接口對應表-4.1.2 MAX232 MAX232芯片是美信公司專門為電腦的RS-232標準串口設計的單電源電平轉換芯片,使用+5v單電源供電。圖7 MAX232芯片引腳介紹第一部分是電荷泵電路。由1、2、3、4、5、6腳和4只電容構成。功能是產生+12v和-12v兩個電源,提供給RS-232串口電平的需要。 第二部分是數據轉換通道。由7、8、9、10、11、12、13、14腳構成兩個數據通道。 其中13腳(R1IN)、12腳(R1OUT)、11腳(T1IN)、14腳(T1OUT)為第一數據通道。 8腳(R2IN)、9腳(

30、R2OUT)、10腳(T2IN)、7腳(T2OUT)為第二數據通道。 TTL/CMOS數據從T1IN、T2IN輸入轉換成RS-232數據從T1OUT、T2OUT送到電腦DB9插頭;DB9插頭的RS-232數據從R1IN、R2IN輸入轉換成TTL/CMOS數據后從R1OUT、R2OUT輸出。 第三部分是供電。15腳GND、16腳VCC(+5v)。主要特點1、符合所有的RS-232C技術標準 2、只需要單一 +5V電源供電 3、片載電荷泵具有升壓、電壓極性反轉能力,能夠產生+10V和-10V電壓V+、V- 4、功耗低,典型供電電流5mA 5、部集成2個RS-232C驅動器 6、部集成兩個RS-23

31、2C接收器 7、高集成度,片外最低只需4個電容即可工作。4.1.3 RS232 RS232接口是1970年由美國電子工業協會(EIA)聯合貝爾系統、調制解調器廠家與計算機終端生產廠家共同制定的用于串行通訊的標準。它的全名是“數據終端設備(DTE)和數據通訊設備(DCE)之間串行二進制數據交換接口技術標準”。 該標準規定采用一個25個腳的DB25連接器,對連接器的每個引腳的信號容加以規定,還對各種信號的電平加以規定。隨著設備的不斷改進,出現了代替DB25的DB9接口,現在都把RS232接口叫做DB9。RS-232C 的接口信號:RS-232C 的功能特性定義了25芯標準連接器中的20根信號線,其

32、中2條地線、4條數據線、11條控制線、3條定時信號線,剩下的5根線作備用或未定義。常用的只有10根,它們是:(1)聯絡控制信號線:數據發送準備好(Data set ready-DSR)有效時(ON)狀態,表明MODEM處于可以使用的狀態。 數據終端準備好(Data terminal ready-DTR)有效時(ON)狀態,表明數據終端可以使用。 這兩個信號有時連到電源上,一上電就立即有效。這兩個設備狀態信號有效,只表示設備本身可用,并不說明通信鏈路可以開始進行通信了,能否開始進行通信要由下面的控制信號決定。 請求發送(Request to send-RTS)用來表示DTE請求DCE發送數據,即

33、當終端要發送數據時,使該信號有效(ON狀態),向MODEM請求發送。它用來控制MODEM是否要進入發送狀態。 允許發送(Clear to send-CTS)用來表示DCE準備好接收DTE發來的數據,是對請求發送信號RTS的響應信號。當MODEM已準備好接收終端傳來的數據,并向前發送時,使該信號有效,通知終端開始沿發送數據線TxD發送數據。 這對RTS/CTS請求應答聯絡信號是用于半雙工MODEM系統中發送方式和接收方式之間的切換。在全雙工系統中,因配置雙向通道,故不需要RTS/CTS聯絡信號,使其變高。 接收線信號檢出(Received Line detection-RLSD)用來表示DCE已

34、接通通信鏈路,告知DTE準備接收數據。當本地的MODEM收到由通信鏈路另一端(遠地)的MODEM送來的載波信號時,使RLSD信號有效,通知終端準備接收,并且由MODEM將接收下來的載波信號解調成數字兩數據后,沿接收數據線RxD送到終端。此線也叫做數據載波檢出(Data Carrier dectection-DCD)線。 振鈴指示(Ringing-RI)當MODEM收到交換臺送來的振鈴呼叫信號時,使該信號有效(ON狀態),通知終端,已被呼叫。 (2)數據發送與接收線:發送數據(Transmitted data-TxD)通過TxD終端將串行數據發送到MODEM,(DTEDCE)。 接收數據(Rec

35、eived data-RxD)通過RxD線終端接收從MODEM發來的串行數據,(DCEDTE)。 (3)地線 : GND、Sig.GND保護地和信號地,無方向。 上述控制信號線何時有效,何時無效的順序表示了接口信號的傳送過程。例如,只有當DSR和DTR都處于有效(ON)狀態時,才能在DTE和DCE之間進行傳送操作。若DTE要發送數據,則預先將DTR線置成有效(ON)狀態,等CTS線上收到有效(ON)狀態的回答后,才能在TxD線上發送串行數據。這種順序的規定對半雙工的通信線路特別有用,因為半雙工的通信才能確定DCE已由接收方向改為發送方向,這時線路才能開始發送。 2個數據信號:發送TXD;接收R

36、XD。 1個信號地線:SG。 6個控制信號: DSR 數傳發送準備好,Data Set Ready。 DTR 數據終端準備好,Data Terminal Ready。 RTS DTE請求DCE發送(Request To Send)。 CTS DCE允許DTE發送(Clear To Send),該信號是對RTS信號的回答。 DCD 數據載波檢測(Data Carrier Detection),當本地DCE設備(Modem)收到對方的DCE設備送來的載波信號時,使DCD有效,通知DTE準備接收, 并且由DCE將接收到的載波信號解調為數字信號, 經RXD線送給DTE。 RI 振鈴信號(Ringing

37、),當DCE收到對方的DCE設備送來的振鈴呼叫信號時,使該信號有效,通知DTE已被呼叫。 由于RS232接口標準出現較早,難免有不足之處,主要有以下四點: (1)接口的信號電平值較高,易損壞接口電路的芯片,又因為與TTL電平不兼容故需使用電平轉換電路方能與TTL電路連接。 (2)傳輸速率較低,在異步傳輸時,波特率20Kbps。 (3)接口使用一根信號線和一根信號返回線而構成共地的傳輸形式,這種共地傳輸容易產生共模干擾,所以抗噪聲干擾性弱。 (4)傳輸距離有限,最大傳輸距離標準值為50英尺(實際15米)。RS232(DB9)接口定義圖8 接口說明1 DCD 載波檢測 2 RXD 接收數據 3 T

38、XD 發送數據 4 DTR 數據終端準備好 5 SG 信號地 6 DSR 數據準備好 7 RTS 請求發送 8 CTS 允許發送 9 RI 振鈴提示4.2 系統硬件框圖FPGAAS下載方式 JTAG接口MAX232PC終端電源時鐘晶振圖9 系統硬件圖4.3 主要組成電路分析本系統設計目標主要包括兩個部分:FPGA模塊、電平轉換模塊。4.3.1 FPGA模塊FPGA模塊主要由波特率產生模塊、數據發送模塊、數據接收模塊三部分組成。下圖為FPGA的頂層原理圖。圖10 .頂層模塊的電路圖波特率產生模塊: 波特率發生器實際上就是一個分頻器??梢愿鶕o定的系統時鐘(晶振時鐘)和要求的波特率算出波特率分頻因

39、子,算出的波特率分頻器的分頻數。即分頻數=系統時鐘(16×波特率),波特率分頻數可以根據不同的應用需要更改。題目要求波特率為9600bit/s,由于FPGA的EP1C12核心板提供了高精度、高穩定性的40MHz時鐘源。波特率發生器模塊圖如下所示圖11 波特率發生器模塊圖波特率發生器的仿真結果如圖:Clk:時鐘信號周期Resetb:復位信號Bclk:輸出波特率時鐘信號周期圖12 波特率發生器的仿真波形UART接收器模塊: 由于串行數據幀和接收時鐘是異步的,由邏輯1轉為邏輯0可以被視為一個數據幀的起始位。然而,為了避免毛刺影響,能夠得到正確的起始位信號,必須要求接收到的起始位在波特率時鐘

40、采樣的過程中至少有一半都是屬于邏輯0才可認定接收到的是起始位。由于部采樣時鐘bclk周期(由波特率發生器產生)是發送或接收波特率時鐘頻率的16倍,所以起始位需要至少8個連續bclk周期的邏輯0被接收到,才認為起始位接收到,接著數據位和奇偶校驗位將每隔16個bclk周期被采樣一次(即每一個波特率時鐘被采樣一次)。如果起始位的確是16個bclk周期長,那么接下來的數據將在每個位的中點處被采樣。1、R_START狀態:當UART接收器復位后,接收狀態機將處于這一狀態。在此狀態,狀態機一直在等待RXD的電平跳轉,從邏輯1變為邏輯0,即起始位,這意味著新的一幀UART數據幀的開始,一旦起始位被確定,狀態

41、機將轉入R_CENTER狀態。圖6中的RXD_SYNC信號是RXD的同步信號,因為在進行邏輯1或邏輯0判斷時,不希望檢測的信號是不穩定的,所以不直接檢測RXD信號,而是檢測經過同步后的RXD_SYNC信號。 2、R_CENTER狀態:對于異步串行信號,為了使每一次都檢測到正確的位信號,而是在較后的數據位檢測時累計誤差較小,顯然在每位的中點檢測是最為理想的。在本狀態,就是由起始位求出每位的中點,通過對bclk的個數進行計數(RCNT16),但計數值不是想當然的“1000”,要考慮經過一個狀態,也即經過了一個bclk周期,所希望得到的是在采樣時1/2位。另外,可能在R_START狀態檢測到的起始位

42、不是真正的起始位,可能是一個偶然出現的干擾尖脈沖(負脈沖)。這種干擾脈沖的周期是很短的,所以可以認為保持邏輯0超過1/4個位時間的信號一定是起始位。圖13 UART接收器的接收狀態機注:狀態機一共有5個狀態:R_START(等待起始位)、R_CENTER(求中點)、R_WAIT(等待采樣)、R_SAMPLE(采樣)和R_STOP(停止位接收)。3、R_WAIT狀態:當狀態機處于這一狀態,等待計滿15個bclk,在第16個bclk是進入R_SAMPLE狀態進行數據位的采樣檢測,同時也判斷是否采集的數據位長度已達到數據幀的長度,如果到來,就說明停止位來臨了。在本設計中默認為8,即對應的UART工作

43、在8位數據位、無校驗位格式。4、R_SAMPLE狀態:即數據位采樣檢測,完成后無條件狀態機轉入R_WAIT狀態,等待下次數據位的到來。5、R_STOP狀態:無論停止位是1還是1.5位,或是2位,狀態機在R_STOP不具體檢測RXD,只是輸出幀接收完畢信號(REC_DONE<1),停止位后狀態機轉回到R_START狀態,等待下一個幀的起始位。圖14 UART接收器的模塊圖UART接收器的仿真波形結果Bclkr:波特率時鐘信號周期Resetr:復位信號Rxdr:電平觸發信號,從邏輯1變為邏輯0R_ready:數據幀Rbuf:并行數據圖15 UART接收器的仿真波形UART發送器模塊: 發送器

44、只要每隔16個bclk周期輸出一個數據即可,次序遵循第一位是起始位,第8位是停止位。在本設計中沒有校驗位,但只要改變Generic參數Frameelen,也可以加入校驗位,停止位是固定的1位格式6。圖4.4.3.1是發送狀態機的狀態圖。 此狀態機一共有5個狀態:X_IDLE(空閑)、X_START(起始位)、X_WAIT(移位等待)、X_SHIFT(移位)和X_STOP(停止位)。1、X_IDLE狀態:當UART被復位信號RESETL復位后,狀態機將立刻進入這一狀態。在這個狀態中,UART的發送器一直在等待一個數據幀發送命令XMIT_CMD。這時由于XMIT_CMD是一個外加信號,在FPGA之

45、外,不可能對XMIT_CMD的脈沖寬帶進行限制,如果XMIT_CMD有效在UART發完一個數據幀依然有效,那么就會錯誤地被認為,一個新的數據發送命令又到來了,UART發送器就會再次啟動UART幀的發送,顯然該幀的發送是錯誤的。在此對XMIT_CMD進行了脈沖寬度的限定,用XMIT_CMD_P代替XMIT_CMD信號,XMIT_CMD_P是一個短脈沖信號。當XMIT_CMD_P=1,狀態機轉入X_START,準備發送起始位。2、X_START 狀態:在這個狀態下,UART的發送器一個時間寬度的邏輯0信號至TXD,即起始位。緊接著狀態機轉入X_WAIT狀態。XCNT16是bclk的計數器。 3、X

46、_WAIT 狀態:同UART接收狀態機中的R_WAIT狀態類似。 4、X_SHIFT 狀態:當狀態機處于這一狀態時,實現待發數器的并串轉換。轉換完成立即回到X_WAIT狀態。 5、X_STOP :停止位發送狀態,當數據幀發送完畢,狀態機轉入該狀態,并發送16個bclk周期的邏輯1信號,即1位停止位。狀態機送完停止位后回到X_IDLE狀態,并等待另一個數據幀的發送命令。圖16 發送狀態機的狀態圖圖17 UART發送器的模塊圖UART發送器的仿真波形結果如圖4.4 .3.3Bclkt:波特率時鐘信號周期Resett:復位信號Xmit_cmd_p:短脈沖信號Txddone:串行數據Txd:數據幀圖1

47、8 UART發送器的仿真波形4.3.2電平轉換模塊 電平轉換是由MAX232芯片實現的。MAX232芯片是美信公司專門為電腦的RS-232標準串口設計的單電源電平轉換芯片,使用+5v單電源供電。該模塊的作用就是實現電平轉換后于PC機相連。 圖19 MAX232電平轉換電路4.4 總電路圖設計見附錄1和附錄2。5 系統軟件設計軟件設計概述:本設計使用的軟件主要是ModelSim SE 6.2b和Quartus II 9.0 兩個軟件,用Quartus II 9.0主要是用來程序仿真畫頂層原理圖和生成子模塊圖。ModelSim SE 6.2b主要用來波形仿真。5.1 發送數據程序流程圖Y開始波特率

48、設置(9600bit/s)復位信號為0Y準備發送(等待發送脈沖信號)發送數據起始位移位等待數據轉換?換?發送停止位發送完成準備發送下一帖數據完成N圖20 數據發送模塊流程圖5.2 接收數據程序流程圖開始波特率設置(9600bit/s)復位信號為0Y準備接收接收起始位(邏輯0超過1/4個位時間為起始位)RXD_SYNC=0RXD_SYNC=1數據位是否為8位?YN接收停止位接收完成結束準備接收下一帖數據圖21數據介紹模塊流程圖5.5 系統源程序系統程序見附錄3。6 制作步驟本課題的制作是分這幾個步驟完成的:、查閱大量的資料,完成開題報告。在這個過程中我經常到圖書館查閱FPGA以與UART的相關資

49、料,同時我也經常上網搜索這方面的資料,知識總是在不斷積累的過程中了解和掌握的。因此,一段時間下來,我對位FPGA和 UART的國外研究狀況、發展趨勢、工作原理和制作方法都有了比較清晰的了解。 、確定方案。通過一段時間的學習和查閱資料確定了設計的主要流程和主要器件。、硬件設計。硬件設計主要是指畫硬件電路,在這里要用到一個畫圖軟件Protel。畫硬件電路不僅可以體現一個人的基礎知識掌握這樣不僅看的時候好看,也以節約資源。 、軟件設計。本課題的軟件部分是用VHDL語言設計而成的。系統軟件的設計采用了模塊化的結構方式,將各個功能分成獨立模塊,由系統的監控程序統一管理執行。編寫完程序后,要編譯,編譯通過

50、后生成VHDL文件。文件編譯成功后將由Quartus II 9.0 生成子模塊和狀態轉換圖,再在ModelSim 里面運行程序觀察波形。7 總結本文對以FPGA為核心實現UART與PC機之間的串口通信的整體結構、 性能功用與各組成模塊的設計方法都做了較為詳細的研究。通過波特率發生器、發送器和接收器模塊的設計與仿真,能較容易地實現通用異步收發器總模塊,。本設計完全采用VHDL 語言進行描述。實現的UART設置了時鐘輸入clk ,復位輸入reset ,串行數據輸入rxd ,讀寫信號輸入rd 和wr、片選輸入cs、傳送數據位數選擇輸入a1 和 a0、定時器初值輸入count ,串行發送數據輸入txd

51、 ,接收寄存器狀態輸出rdfull 、發送寄存器狀態輸出tdempty 以與數據總線data。并詳細討論了采用VHDL 對異步通信接口UART 的設計流程,對設計進了功能仿真、綜合,以與靜態時序分析和時序仿真,完成了在FAGA 上實現UART的全過程,再通過電平轉換與PC機相連,就實現了與PC機的通信。 通過本次畢業設計,我完成了基于FPGA串口設計。在這次畢業設計中使我對FPGA技術有了進一步的認識,FPGA技術注重培養學生的自主創新的意識和能力,側重使用電子系統的設計。在整個設計中最難點和學習費時在于硬件描述語言VHDL語言,在利用硬件描述語言完成電路設計后,必須基于Quartus II

52、6.0軟件的文本輸入設計流程和ModelSim SE 6.2b波形仿真。首先得學習軟件的安裝和使用,尤其在編譯成功后的仿真波形的測試。通過系統的學習使用對軟件的使用和對設計的編程都有了進一步的提升。在整個設計階段感受最為深刻的是掌握學習的方式和解決問題的方法。首先是解決問題的方式,在面臨的大量的信息中如何篩選出所需的信息,才是解決問題的關鍵。畢業中出現的困難我通過和老師的溝通、查閱相關書籍、網上搜索以與同學的幫助,最終得到了解決。由于本人水平有限,文中難免存在不足之處,敬請各位老師和同學批評指正。參考文獻(1)永剛 基于FPGA的通用異步收發器的設計 交通大學學報2010年2月(2)王敬美基于

53、FPGA和UART的數據采集器設計 電子器件 2009年4月(3)方喜波基于FPGA串口通訊開發 計算機與信息技術(4)黃智偉.FPGA系統設計與實踐.電子工業,2005·(5)廖日坤.CPLD/FPGA嵌入式應用開發技術白金手冊.中國電力;2005·(6)王振紅.VHDL數字電路設計與應用實踐教程.:機械工業,2003·(7)凱林偉.VHDL實例剖析.:國防工業,2004·(8)徐光輝徐志軍.CPLD/FPGA的開發與應用.:電子工業,2002·致 本文是在我的指導老師曉靜講師的悉心指導下完成的,從論文的選題到最后的定稿都凝聚著老師的心血。四

54、年來,學校各位老師高超的學術思想、淵博的學術知識、豐富的學術經驗、嚴謹的治學態度、豁達的為人風格和不斷開拓進取的科學研究風尚都直接、間接和潛移默化地影響著我,使我始終充滿不斷求知求新和拓展學術領域的熱情。在學業即將完成之際,謹向各位恩師表示我最衷心的感!除此以外,還要感各位同學的熱情幫助和鼓勵,四年的學習生活,我們結下了深厚的友誼。當我在學習生活中遇到一些問題和煩惱時,是他們給予我與時的幫助和熱心的鼓勵,我會加倍珍惜同學之間的這種友誼。我還要深深的感支持和鼓勵我的家人,是他們默默的付出,使我能夠無牽掛的學習,我只有更加努力的學習與工作,才能回報他們的關愛。最后,謹向所有關心、幫助和支持過我的老師、同學和家人們表示衷心的感!附錄1附錄2附錄33 主要程序(1)主程序library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity top is

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論