基于FPGA的UART設(shè)計(jì)綜述_第1頁(yè)
基于FPGA的UART設(shè)計(jì)綜述_第2頁(yè)
基于FPGA的UART設(shè)計(jì)綜述_第3頁(yè)
基于FPGA的UART設(shè)計(jì)綜述_第4頁(yè)
基于FPGA的UART設(shè)計(jì)綜述_第5頁(yè)
已閱讀5頁(yè),還剩31頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、四川師范大學(xué)本科畢業(yè)設(shè)計(jì) 基于 FPGA的 UART設(shè)計(jì) 學(xué)生姓名 院系名稱 專業(yè)名稱 班級(jí) 學(xué)號(hào) 指導(dǎo)教師 完成時(shí)間 基于 FPGA的 UART設(shè)計(jì) 電子信息工程專業(yè) 摘要: UART通( 用異步收發(fā)器 ) 是一種應(yīng)用廣泛,協(xié)議簡(jiǎn)單,易于調(diào)試的串行傳輸接 口。 FPGA是能高密度,低消耗完成所需要的邏輯功能的一種在線可編程器件, 是現(xiàn)在業(yè)內(nèi)提高系統(tǒng)集成度最佳技術(shù)之一,其可反復(fù)配置,且使用靈活。 VHDL 是描述電路功能或行為的一種硬件語(yǔ)言。本文首先闡述了運(yùn)用FPGA實(shí)現(xiàn) UART 接口的意義。接著介紹了 UART的波特率發(fā)生器,發(fā)送功能和接收三大核心功能 的理論知識(shí)。 FPGA的工作原理,配

2、置模式以及 VHDL語(yǔ)言實(shí)現(xiàn)狀態(tài)機(jī)的相關(guān)理論 基礎(chǔ)。給出了運(yùn)用 VHDL語(yǔ)言將 UART三大功能嵌入在 FPGA上的模塊化設(shè)計(jì)方法。 設(shè)計(jì)包括四大模塊:頂層模塊,波特率發(fā)生器, UART接收器, UART發(fā)生器。在 FPGA片上集成 UART主要功能,減少了電路板體積,同時(shí)電路也增加了可移植和 反復(fù)配置功能,有效提高了電路的集成度和靈活性。最后運(yùn)用 Quartus ii 9.1 實(shí)現(xiàn)了其功能仿真。 關(guān)鍵詞: FPGA UART VHDL 有限狀態(tài)機(jī) The Design of Universal Asynchronous Receiver Transmitter Based on FPGA A

3、bstract : UART (Universal Asynchronous Receiver Transmitter) is a widely used, simple protocol, easy to debug serial transmission interface. FPGA is capable of high-density, low-cost needed to complete a line of programmable logic devices, is now one of the industrys best technologies to improve sys

4、tem integration, which can be repeated to configure and use and flexible. VHDL description of the circuit function or behavior is a hardware language. This paper first describes the use of FPGA to realize the significance of the UARTin terface. Then introduced the theory of knowledge UART baud rate

5、generator, sending and receiving three core functions. FPGA works, configuration mode and the VHDL-based state machine theory. Gives the UART using VHDL language to three functions embeddedi n the FPGAd esign. Design includes four modules: the top-level module, baud rate generator, UART receivers, U

6、ART generator. Integrated on-chip UART FPGA basic functions, reducing board space, the circuit also increases the portability and repeated configuration capabilities, improve the integration and flexibility of the circuit. Finally, the use of Quartus ii 9.1 implements its functional simulation. Key

7、Words:FPGA ;UART ;VHDL;FSM II 目錄 摘要: I Abstract : II 1 緒論 1 1.1 課題背景 1 1.2 課題研究現(xiàn)狀 2 1.3 課題研究?jī)?nèi)容與主要工作 3 1.4 課題內(nèi)容結(jié)構(gòu) 3 2 UART理論基礎(chǔ) 4 2.1 接口技術(shù)簡(jiǎn)介 4 2.2 UART 基本結(jié)構(gòu) 4 2.3 UART 數(shù)據(jù)幀格式 5 2.4 涉及到的理論計(jì)算 6 3 設(shè)計(jì)工具 7 3.1 課題硬件平臺(tái) FPGA 7 3.2 設(shè)計(jì)工具 QuartusII 簡(jiǎn)介與使用 7 3.3 VHDL 語(yǔ)言簡(jiǎn)介 7 4 UART實(shí)現(xiàn)方案 8 4.1 系統(tǒng)總體結(jié)構(gòu) 8 4.2 頂層模塊設(shè)計(jì) 8 4.

8、3 波特率發(fā)生模塊設(shè)計(jì) 9 4.4 接收模塊 10 4.5 發(fā)送模塊設(shè)計(jì) 12 5 UART設(shè)計(jì)的仿真與驗(yàn)證 15 5.1 波特率發(fā)生模塊仿真 15 5.2 接收模塊仿真 15 5.3 發(fā)送模塊仿真 16 6 總結(jié) 17 參考文獻(xiàn) 18 致謝 19 附錄 20 基于 FPGA的 UART設(shè)計(jì) 1 緒論 在計(jì)算機(jī)的數(shù)據(jù)通信中, 外設(shè)一般不能與計(jì)算機(jī)直接相連, 它們之間的信息 交換主要存在以下問(wèn)題: (1) 速度不匹配。外設(shè)的工作速度和計(jì)算機(jī)的工作速度不一樣,而且外設(shè)之 間的工作速度差異也比較大。 (2) 數(shù)據(jù)格式不匹配。不同的外設(shè)在進(jìn)行信息存儲(chǔ)和處理時(shí)的數(shù)據(jù)格式可能 不同,例如最基本的數(shù)據(jù)格式可

9、分為并行數(shù)據(jù)和串行數(shù)據(jù)。 (3) 信息類型不匹配。不同的外設(shè)可能采用不同類型的型號(hào),有些是模擬信 號(hào),有些是數(shù)字信號(hào),因此采用的處理方式也不同。 為了解決外設(shè)和計(jì)算機(jī)之間的信息交換問(wèn)題, 即需要設(shè)計(jì)一個(gè)信息交換的中 間環(huán)節(jié)接口。 對(duì)于臺(tái)式電腦、 個(gè)人筆記本,最常用的接口就是 USB接口、串口、并口、PS2 接口、網(wǎng)口。在我們電子設(shè)計(jì)中的 PC終端軟件的通信,應(yīng)用最多的就是串口、 其次是 USB接口、再就是網(wǎng)口。 1.1 課題背景 電子產(chǎn)品中,很多低速的數(shù)據(jù)采集,一些點(diǎn)陣系統(tǒng)的配置, GPRS模塊的調(diào) 試等,都用串口來(lái)實(shí)現(xiàn)跟 PC的通信。甚至一些單片機(jī)的配置都用串口實(shí)現(xiàn)通信。 串口最高可以達(dá)到

10、128000bps 的速率,在低速場(chǎng)合下,完全能夠?qū)崿F(xiàn)與 PC的通 信,來(lái)滿足我們各種要求, 以實(shí)現(xiàn)對(duì)數(shù)據(jù)的實(shí)時(shí)處理。 目前的串行通信常用 UART 實(shí)現(xiàn)數(shù)據(jù)的串 /并轉(zhuǎn)換或并 /串轉(zhuǎn)換。 UART(通用異步收發(fā)器)是一種串行通信 協(xié)議,主要用于短距離,低速率,低成本的數(shù)據(jù)的計(jì)算機(jī)和外設(shè)之間的交流。是 電腦硬件的一部分,具體實(shí)物表現(xiàn)為一塊并行輸入成為串行輸出的模塊化芯片。 8250、8251、NS16450等芯片都是常見(jiàn)的 UART器件。 UART主要功能實(shí)現(xiàn)通信中的數(shù)據(jù)串并轉(zhuǎn)換,且能奇偶檢驗(yàn)。將計(jì)算機(jī)內(nèi)部 傳送過(guò)來(lái)的并行數(shù)據(jù)轉(zhuǎn)換為串行數(shù)據(jù)流加入奇偶校驗(yàn)位后輸出。 或者將計(jì)算機(jī)外 部來(lái)的串行數(shù)

11、據(jù)奇偶校驗(yàn)后轉(zhuǎn)換為字節(jié),供計(jì)算機(jī)內(nèi)部使用并行數(shù)據(jù)的器件使 用。它的異步模式使芯片適應(yīng)性強(qiáng),對(duì)時(shí)鐘精度要求低 (成本低 ) 。 隨著 FPGA的廣泛應(yīng)用, 經(jīng)常需要 FPGA與其他數(shù)字系統(tǒng)進(jìn)行串行通信, 專用 的 UART集成電路如 8250,8251 等是比較復(fù)雜的, 因?yàn)閷S玫?UART集成電路既要 考慮異步的收發(fā)功能, 又要兼容 RS232接口設(shè)計(jì),在實(shí)際應(yīng)用中, 往往只需要用 到 UART的基本功能,使用專用芯片會(huì)造成資源浪費(fèi)和成本提高。如果設(shè)計(jì)上用 到 FPGA /CPLD器件,可以將所需要的 UART功能集成到 FPGA內(nèi)部,實(shí)現(xiàn) FPGA 與其他數(shù)字系統(tǒng)的直接通信, 從而簡(jiǎn)化了整個(gè)

12、系統(tǒng)電路, 提高了可靠性、 穩(wěn)定性 和靈活性。 1.2 課題研究現(xiàn)狀 1.2.1 UART 芯片發(fā)展與現(xiàn)狀 UART產(chǎn)生于上個(gè)世紀(jì) 70 年代,是第一塊大規(guī)模集成電路。 1981年的推出的 IBM PC機(jī)主板上采用了 8250 UART與外設(shè)進(jìn)行數(shù)據(jù)通信。直到上個(gè)世紀(jì)末, UART 一直是 PC中最主要的串行通信接口。 在嵌入式領(lǐng)域,由于 UART具有操作簡(jiǎn)單、工作可靠、抗干擾強(qiáng)、傳輸距離 遠(yuǎn)(組成 485網(wǎng)絡(luò)可以傳輸 1,200 米以上),設(shè)計(jì)人員普遍認(rèn)為 UART是從 CPU 或微控制器向系統(tǒng)的其他部分傳輸數(shù)據(jù)的最佳方式, 因此它們被大量地應(yīng)用在工 業(yè)、通信和家電控制等嵌入式領(lǐng)域。 然而

13、UART的速度、靈活性(軟件可配置 )和體積越來(lái)越不能滿足開(kāi)發(fā)者需要, 隨著高速串行總線 USB的出現(xiàn),現(xiàn)在越來(lái)越多的筆記本電腦上已經(jīng)取消了 UART 串口。 截止到目前,全球范圍內(nèi)有超過(guò) 40種 UART器件可以選擇,大多數(shù) UART器 件是以計(jì)算機(jī)總線轉(zhuǎn)換 UART為應(yīng)用基礎(chǔ)的,與 20 多年的前的 UART相比,現(xiàn)在 芯片的管腳,寄存器及大體操作幾乎沒(méi)有改變。 1.2.2 FPGA 芯片發(fā)展與現(xiàn)狀 FPGA由早期的 PLD(可編程邏輯器件 ) 、PLA(可編程邏輯陣列)、PAL(可編 程陣列邏輯) 逐漸發(fā)展為如今 Altera 的 CPLD(復(fù)雜可編程邏輯器件) 和 Xilinx 的 F

14、PGA(現(xiàn)場(chǎng)可編程邏輯門陣列) 。 PLD(可編程邏輯器件)是 70 年代發(fā)展起來(lái)的新型邏輯器件。 PLD是為彌補(bǔ) 當(dāng)時(shí)的 ASIC(專業(yè)集成電路 ) 可靠性低、成本高、功耗大且設(shè)計(jì)周期長(zhǎng)等不足而 發(fā)展起來(lái)的。 PLA(可編程邏輯陣列)基本結(jié)構(gòu)是基于“與或陣列” ,其“與陣列”和“或 陣列”均可編程。由于 PLA器件的資源利用率低,現(xiàn)已很少使用。 PAL(可編程陣列邏輯)基本結(jié)構(gòu)也是基于“與或陣列” ,它的“與陣列”是 可編程的,而“或陣列”是固定的。 FPG(A 現(xiàn)場(chǎng)可編程邏輯門陣列) 是近幾年集成電路中發(fā)展最快的產(chǎn)品。 從一 開(kāi)始少量生產(chǎn)以配合其他芯片功能發(fā)展到作為核心芯片大量生產(chǎn)。 其綜

15、合了 PLD 的現(xiàn)場(chǎng)可編程特性,調(diào)試時(shí)間短和 ASIC 的低成本,大規(guī)模復(fù)雜集合能力的特點(diǎn) 應(yīng)運(yùn)而生。采用了不同于 PLD架構(gòu)的設(shè)計(jì)方式(主要是 SRAMB ase及 An-ti fuse )。 FPGA芯片由查找表、觸發(fā)器和布線資源組成。 FPGA的邏輯單元由查找表和觸發(fā) 器構(gòu)成。 Altera (QuartussII) 和 Xilinx(ise) 是目前最大的可編程集成電路供貨商。 1985 美國(guó) Xilinx 公司首次推出 FPGA產(chǎn)品 XC2064,Xilinx 公司 FPGA主要有 XC4000、Virtex 、Spartam,以及最新的 Virtex 系列。 Altera 公司 F

16、PGA主要有 FLEX、Cyclone (低端)、 Arria (中端)、Stratix (高端)系列。目前市場(chǎng)上常 用 FPGA產(chǎn)品是 Xilinx 公司的 Spartan 和 Virtex 系列及 Altera 公司的 ACEX和 APEX系列。隨著電子技術(shù)日益成熟,可編程邏輯器件的高速發(fā)展,基于FPGA的 嵌入式系統(tǒng)技術(shù)正在成熟。 FPGA芯片將繼續(xù)向高密度、高容量、低壓低功耗的 方向邁進(jìn)。 1.3 課題研究?jī)?nèi)容與主要工作 隨著 EDA 技術(shù)的發(fā)展,使用硬件描述語(yǔ)言來(lái)設(shè)計(jì) PLD/FPGA 已經(jīng)成為一種 趨勢(shì)。本課題中,將 UART分為幾個(gè)模塊的組合, 利用硬件描述語(yǔ)言 VHDL描述其

17、邏輯功能,并采用自頂向下的設(shè)計(jì)方法進(jìn)行設(shè)計(jì)。 核心部分用有限狀態(tài)機(jī) (FSM), 使邏輯設(shè)計(jì)更為直觀簡(jiǎn)單。使用 Quartus II 工具,對(duì)邏輯設(shè)計(jì)逐層進(jìn)行仿真驗(yàn) 證。 課題主要工作 1. 熟悉FPGA設(shè)計(jì)開(kāi)發(fā)流程以及 UART各個(gè)模塊的功能,掌握各個(gè)模塊的工作流程, 熟悉UART通信協(xié)議。 2. 用VHDL語(yǔ)言編程 UART各個(gè)模塊的邏輯行為,以及頂層模塊的功能。 3. 在Quartus II 軟件上對(duì)其進(jìn)行進(jìn)行邏輯綜合,仿真驗(yàn)證。 1.4 課題內(nèi)容結(jié)構(gòu) 第一章緒論介紹課題背景、研究意義,以及與本課題相關(guān)的技術(shù)當(dāng)前現(xiàn)狀, 明確研究?jī)?nèi)容以及主要工作。 第二章介紹了 UART的理論內(nèi)容,明確

18、UART各模塊的工作特性。 第三章介紹本次設(shè)計(jì)實(shí)現(xiàn)平臺(tái)和工具。具體為硬件平臺(tái)FPGA,軟件平臺(tái) Quartusii 以及硬件描述語(yǔ)言 VHDL. 第四章根據(jù)理論依據(jù)對(duì) UART結(jié)構(gòu)設(shè)計(jì),包括整體系統(tǒng)框架介紹和各部分模 塊說(shuō)明以及相關(guān)流程圖。 第五章對(duì)設(shè)計(jì)完成后的 UART進(jìn)行邏輯綜合,功能及時(shí)序仿真,并分析總結(jié) 邏輯綜合和仿真結(jié)果。 第六章對(duì)課題的總結(jié)以及有待改進(jìn)之處 第七章致謝 2 UART 理論基礎(chǔ) 2.1 接口技術(shù)簡(jiǎn)介 接口是 CPU與外界的連接部件,是 CPU與外界交換信息的中轉(zhuǎn)站。 一個(gè)接口的基本功能是在系統(tǒng)總線和 I/O 設(shè)備之間傳輸信號(hào),提供緩沖作 用,以滿足接口兩邊的時(shí)序要求。

19、如圖 1, 圖 1 接口功能 主要的計(jì)算機(jī)接口技術(shù)有兩種:并行接口和串行接口。 串行通信是把要傳輸數(shù)據(jù)中的各個(gè)二進(jìn)制碼置于同一條傳輸線上, 從低位到 高位、逐位地、順序地進(jìn)行傳送。所用傳輸線少,一個(gè)方向只需一條傳輸線,成 本低。 串行通信分為兩種類型:同步通信和異步通信。 串行異步是計(jì)算機(jī)通信最常用的數(shù)據(jù)信息傳輸方式, 接收和發(fā)送雙方不使用 共同的參考時(shí)鐘, 以字符為單位進(jìn)行傳輸, 字符之間的傳輸間隔任意, 而每個(gè)字 符的前后都要用一些位數(shù)來(lái)作為分隔位。 2.2 UART 基本結(jié)構(gòu) UART主要由 UART內(nèi)核、信號(hào)檢測(cè)器、移位寄存器、波特率發(fā)生器和計(jì)數(shù)器 組成,如圖 2 所示。 接收數(shù)據(jù) 握

20、手信號(hào) UAR內(nèi)T 核 接收數(shù)據(jù) 發(fā)送數(shù)據(jù) 移位寄存器 控制 信號(hào) RXD 接收數(shù)據(jù) 發(fā)送數(shù)據(jù) TXD 圖 2 UART 功能模塊 信號(hào)檢測(cè)器 后續(xù)數(shù)據(jù)處理模塊 波特率 時(shí)鐘 數(shù)據(jù)發(fā) 送緩沖 器 從異步接收輸入信號(hào) RXD接收到的異步信號(hào)通過(guò)接收器完成串行并行的 轉(zhuǎn)換,形成異步數(shù)據(jù)幀; 發(fā)送器將 CPU發(fā)出的 8 位數(shù)據(jù)進(jìn)行并行串行轉(zhuǎn)換, 從 TXD發(fā)送出去 2.3 UART數(shù)據(jù)幀格式 基本的 UART通信只需要兩條信號(hào)線 (RXD,TXD)就可以完成數(shù)據(jù)的相互通信, 接收與發(fā)送是全雙工形式,其中 TXD是 UART發(fā)送端, RXD是 UART接收端。 UART 基本特點(diǎn)是:在信號(hào)線上有兩種狀

21、態(tài),可分別用邏輯1(高電平)和邏輯 0(低 電平)來(lái)區(qū)分。在發(fā)送器空閑時(shí),數(shù)據(jù)線應(yīng)保持在邏輯高電平狀態(tài)。發(fā)送器是通 過(guò)發(fā)送起始比特而開(kāi)始一個(gè)字符傳送, 起始比特使數(shù)據(jù)線處于邏輯 0 狀態(tài),提示 接收器數(shù)據(jù)傳輸即將開(kāi)始。 數(shù)據(jù)位一般為 8位一個(gè)字節(jié)的數(shù)(也有 6位 7位的情 況),低位( LSB)在前,高位( MSB)在后。校驗(yàn)位一般用來(lái)判斷接收的數(shù)據(jù)位 有無(wú)錯(cuò)誤,一般是奇偶校驗(yàn)。停止位在最后,用以標(biāo)志 UART一個(gè)字符傳送的結(jié) 束,它對(duì)應(yīng)于邏輯 1 狀態(tài), UART數(shù)據(jù)幀格式如圖 3所示 數(shù)據(jù)位 空號(hào) 1 起始位 0 DO D1 D2 D3 D4 D5 D6 D7 奇偶位 停止位 1 空號(hào) 1

22、 一個(gè)字符單位 圖 3 UART 數(shù)據(jù)幀格式 一幀異步通信傳輸經(jīng)歷的步驟為: 無(wú)傳輸:發(fā)送器處于空閑狀態(tài),數(shù)據(jù)線保持“ 1”狀態(tài)。 起始傳輸:發(fā)送器發(fā)出一個(gè) “0”表示傳輸字符開(kāi)始。而同時(shí),接收方收到 空號(hào)后,開(kāi)始與發(fā)送方同步,并期望收到隨后的數(shù)據(jù)。 數(shù)據(jù)傳輸:傳輸 8 位數(shù)據(jù) D0-D7。低位到高位傳輸。 奇偶傳輸:在使用中,校驗(yàn)位常常取消。 停止傳輸:一個(gè)字符數(shù)據(jù)的結(jié)束標(biāo)志??梢允?1 位、1.5 位、2 位的高電平 “1”。 2.4 涉及到的理論計(jì)算 2.4.1 位時(shí)間 即每個(gè)位的時(shí)間寬度。起始位、數(shù)據(jù)位、校驗(yàn)位的位寬度是一致的,停止位 有 0.5 位、 1 位、 1.5 位格式,一般為

23、 1 位。每一個(gè)數(shù)據(jù)位的寬度等于傳送波特 率的倒數(shù)。 2.4.2 幀 從起始位開(kāi)始到停止位結(jié)束的時(shí)間間隔稱之為一幀。 2.4.3 波特率 UART的傳送速率,用于說(shuō)明數(shù)據(jù)傳送的快慢。在串行通信中,數(shù)據(jù)是按位 進(jìn)行傳送的,因此傳送速率用每秒鐘傳送數(shù)據(jù)位的數(shù)目來(lái)表示,稱之為波特率。 如波特率 9600=9600bps(位/ 秒)。發(fā)送模塊和接收模塊不使用共同的時(shí)鐘信號(hào), 也就是在串行通信中發(fā)送數(shù)據(jù)的同時(shí)不會(huì)把時(shí)鐘信號(hào)從一個(gè)UART接口送到另一 個(gè) UART接口。發(fā)送數(shù)據(jù)時(shí)每位持續(xù)時(shí)間是固定的,由發(fā)送器本地時(shí)鐘( bclk ) 控制,每秒發(fā)送的數(shù)據(jù)位個(gè)數(shù),即為“波特率” 。 2.4.4 波特率因子

24、為了使接收方能夠進(jìn)行同步檢測(cè), 接收器采用比波特率更高頻率的時(shí)鐘來(lái)提 高定位采樣的分辨能力和抗干擾能力。 而這個(gè)頻率的倍數(shù)就稱作波特率因子。 一 般是 16、32 和 64. 3 設(shè)計(jì)工具 3.1 課題硬件平臺(tái) FPGA FPGA設(shè)計(jì)方法有“自頂向下”和“自下而上” ,一般 FPGA設(shè)計(jì)常選擇前者。 所謂“自頂向下”的設(shè)計(jì)方法,就是把系統(tǒng)分成若干個(gè)基本單元,然后再把 每個(gè)基本單元?jiǎng)澐譃橄乱粚哟蔚幕締卧?一直這樣做下去, 直到可以直接使用 EDA元件庫(kù)為止。具體步驟為:按照“自頂向下”的設(shè)計(jì)方法進(jìn)行系統(tǒng)劃分,用 硬件描述語(yǔ)言, 將設(shè)計(jì)產(chǎn)品的功能描述出來(lái), 將設(shè)計(jì)輸入編譯成標(biāo)準(zhǔn)文件; 利用 綜

25、合器對(duì)源代碼進(jìn)行綜合優(yōu)化處理得到 EDA工業(yè)標(biāo)準(zhǔn)文件; 把設(shè)計(jì)好的邏輯安放 到 PLD/FPGA內(nèi) (布局布線);用仿真軟件驗(yàn)證電路的時(shí)序;無(wú)誤后將適配器產(chǎn) 生的器件編程文件通過(guò)編程器或下載電纜載入到目標(biāo)芯片F(xiàn)PGA中。 3.2 設(shè)計(jì)工具 QuartusII 簡(jiǎn)介與使用 Quartus II 是 Altera 公司推出的 CPLD/FPGA集成化開(kāi)發(fā)軟件,可以完成設(shè) 計(jì)輸入、邏輯綜合、布局與布線、仿真、時(shí)序分析、硬件配置完整的PLD設(shè)計(jì)流 程。 Quartus 提供了多種設(shè)計(jì)輸入方式、快速的編譯和直接易懂的器件編程。 具有友好的用戶界面, 快速的綜合速度和更優(yōu)化的綜合和適配功能。 Quartu

26、s II 自帶宏功能模塊庫(kù),大大減輕了用戶的工作量,加快設(shè)計(jì)速度。 Quartus II 內(nèi)置仿真器可以在工程中仿真任何設(shè)計(jì)。 可進(jìn)行功能仿真、 時(shí)序仿真來(lái)檢驗(yàn)設(shè)計(jì) 的邏輯功能和計(jì)算設(shè)計(jì)的內(nèi)部定時(shí)是否符合設(shè)計(jì)。 仿真器可以仿真整個(gè)設(shè)計(jì), 或 仿真設(shè)計(jì)的任何部分。支持可編程系統(tǒng)( SOPC)和大規(guī)模 FPGA設(shè)計(jì)開(kāi)發(fā),集系 統(tǒng)級(jí)設(shè)計(jì)、嵌入式軟件開(kāi)發(fā)、 可編程邏輯設(shè)計(jì)于一體, 是一種綜合性的開(kāi)發(fā)平臺(tái)。 該軟件支持 Altera 公司的 Stratix 、 Stratix GX、Stratix 、 MAX3000、A MAX7 000B、MAX7 000AE、MAX 、FLEX6000、FLEX10

27、K系列、 Cyclone 、Cyclone 、 APEX 、 APEX20K和 ACEX1K系列。 3.3 VHDL 語(yǔ)言簡(jiǎn)介 目前常用硬件描述語(yǔ)言是 VHDL和 VerilogHDL 。較于在 C 語(yǔ)言基礎(chǔ)上發(fā)展起 來(lái)的語(yǔ)言格式自由的 VerilogHDL 而言,VHDL語(yǔ)言更為嚴(yán)謹(jǐn), 在大學(xué)里運(yùn)用較多。 IEEE和美國(guó)國(guó)防部于 1987 年正式確認(rèn) VHDL為標(biāo)準(zhǔn)硬件描述語(yǔ)言。 VHDL功能強(qiáng) 大, 簡(jiǎn)單的語(yǔ)言程序即可實(shí)現(xiàn)復(fù)雜的硬件電路。其次, VHDL即可支持標(biāo)準(zhǔn)定義的 數(shù)據(jù)類型, 也支持用戶定義的數(shù)據(jù)類型, 豐富的數(shù)據(jù)類型增強(qiáng)了描述自由度。 不僅如此, VHDL語(yǔ)言的描述,模擬,綜合和

28、布線均符合標(biāo)準(zhǔn),可移植能力強(qiáng),不 同的工作平臺(tái)可以用同一個(gè)硬件電路的 VHDL語(yǔ)言描述,設(shè)計(jì)方案亦在設(shè)計(jì)人員 之間共享, 大大減少設(shè)計(jì)工作量和開(kāi)發(fā)周期, 受到了設(shè)計(jì)人員廣泛推崇。 甚至在 使用 VHDL語(yǔ)言描述硬件電路時(shí),設(shè)計(jì)人員可以先進(jìn)行設(shè)計(jì)電路,而不用考慮選 擇設(shè)計(jì)的器件,因其可適用于不同的器件結(jié)構(gòu)。 4 UART 實(shí)現(xiàn)方案 4.1 系統(tǒng)總體結(jié)構(gòu) 由圖 4 可以看出, 基于 FPGA的 UART設(shè)計(jì)采用模塊化的思想, 分為三個(gè)子模 塊:波特率發(fā)生器,接收模塊,發(fā)送模塊。如下圖 CPU CPU 圖 4 系統(tǒng)結(jié)構(gòu)圖 對(duì)象器 件 對(duì)象器 采用 VHDL硬件描述語(yǔ)言按照“由上至下”的思想對(duì)各個(gè)模塊

29、先分別設(shè)計(jì)然 后連接起來(lái)形成總體架構(gòu)。串口采用標(biāo)準(zhǔn)的 RS-232 協(xié)議,主要參數(shù)選擇為:波 特率 9 600 bit s,8 位有效位,無(wú)奇偶校驗(yàn)位, 1 位停止位。 4.2 頂層模塊設(shè)計(jì) 按照系統(tǒng)功能劃分, UART由波特率發(fā)生模塊、接收模塊和發(fā)送模塊構(gòu)成。 發(fā)送模塊的用途是將準(zhǔn)備輸出的并行數(shù)據(jù)按照基本 UART幀格式轉(zhuǎn)為 TXD信 號(hào)串行輸出。接收模塊接收 RXD串行信號(hào),并將其轉(zhuǎn)化為并行數(shù)據(jù)。 波特率發(fā)生器就是專門產(chǎn)生一個(gè)遠(yuǎn)遠(yuǎn)高于波特率的本地時(shí)鐘信號(hào)對(duì)輸入 RXD不斷采樣,使接收器與發(fā)送器保持同步。 圖 5 UART 總模塊圖 串行數(shù)據(jù)幀和接收時(shí)鐘是異步的, 發(fā)送來(lái)的數(shù)據(jù)由邏輯 1 變

30、為邏輯 0 可以視 為一個(gè)數(shù)據(jù)幀的開(kāi)始。接收器先要捕捉起始位,確定 rxd 輸入由 1 到 0,邏輯 0 要 8 個(gè) CLK16時(shí)鐘周期,才是正常的起始位,然后在每隔 16 個(gè) CLK16時(shí)鐘周期 采樣接收數(shù)據(jù), 移位輸入接收移位寄存器 rsr ,最后輸出數(shù)據(jù) dout 。還要輸出一 個(gè)數(shù)據(jù)接收標(biāo)志信號(hào)標(biāo)志數(shù)據(jù)接收完。 4.3 波特率發(fā)生模塊設(shè)計(jì) 波特率發(fā)生器實(shí)際上就是一個(gè)分頻器(計(jì)數(shù)器) 。功能是產(chǎn)生 RS232通信所 采用波特率同步時(shí)鐘,按照 RS232串行通信的時(shí)序要求進(jìn)行數(shù)據(jù)接收或發(fā)送。 圖 6 波特率發(fā)生模塊 如左圖所示,系統(tǒng)時(shí)鐘從輸入端口 clk 輸入( FPGA提供 30MHZ系

31、統(tǒng)時(shí)鐘), RS232芯片通信波特率范圍 0-20000bps, 本次設(shè)計(jì)中采用 9600bps 進(jìn)行數(shù)據(jù)的傳 送。取波特率因子 N=16,即收發(fā)頻率是數(shù)據(jù)傳輸速率的 16 倍。那么波特率發(fā)生 器輸出頻率為 9600*16HZ=153600H。Z 波特率產(chǎn)生過(guò)程:提供的時(shí)鐘為 30MHz,以圖 6 輸入端口 clk 輸入,通過(guò)總 線寫入不同的數(shù)值到波特率保持寄存器, 然后用計(jì)數(shù)器的方式生成所需要的各種波特率, 數(shù)值的計(jì)算原則: 30MHZ(/ 16* 所期望的波特率),這里希望輸出 9600Hz 的波特率,那么這個(gè)值就是 30MHZ(/ 16*9600)=195(11000011B)。 由此輸

32、出端口 bclk 可輸出頻率 153600HZ來(lái)控制數(shù)據(jù)的收發(fā)采樣。 4.4 接收模塊 4.4.1 接收模塊及其功能 接收模塊的作用是把收到的串行數(shù)據(jù)轉(zhuǎn)換成并行數(shù)據(jù)進(jìn)行輸出, 并判斷收到 的數(shù)據(jù)是否有錯(cuò)。接收模塊的引腳如圖 7 所示, 圖 7 接收模塊引腳圖 接收模塊信號(hào): resetr (輸入):復(fù)位信號(hào); bclkr (輸入):輸入時(shí)鐘; rxdr (輸入):串行數(shù)據(jù)輸入信號(hào); rbuf 7.0 (輸出):并行數(shù)據(jù)輸出總線; r_ready (輸出):數(shù)據(jù)接收完畢信號(hào)。 串行接收模塊框圖如圖 8,程序在檢測(cè)到起始位后 (rxdr 由 1跳變到0), 計(jì)數(shù)連續(xù) 8個(gè)接收時(shí)鐘采樣仍然是低電平后

33、, 開(kāi)始接收串行數(shù)據(jù), 當(dāng)采樣計(jì)數(shù)器 計(jì)數(shù)結(jié)束后,所以數(shù)據(jù)已移位輸入 RSR。最后對(duì)高電平進(jìn)行檢測(cè),檢測(cè)到正確的 停止位后說(shuō)明本幀數(shù)據(jù)接收完畢。將數(shù)據(jù)轉(zhuǎn)存在數(shù)據(jù)寄存器RBR中,串/ 并轉(zhuǎn)換 后,輸出 8 位并行數(shù)據(jù) rbuf7.0 。其中,RBR的狀態(tài)可通過(guò)引腳 r_ready 來(lái)表 示。 r_ready 輸出高電平 1表示數(shù)據(jù)接收有效。 8位并行數(shù)據(jù) 圖 8 UART 串行接收模塊工作框圖 10 對(duì)于接收器工作頻率有必要強(qiáng)調(diào)一下:串行數(shù)據(jù)一位一位由低位到高位 D0 D7傳輸,傳輸速率為 9600bps。而接收器工作頻率遠(yuǎn)遠(yuǎn)高于數(shù)據(jù)的傳輸速 率。 本設(shè)計(jì)中的接收器工作頻率由波特率發(fā)生器產(chǎn)生,

34、頻率是 9600bps的 16倍, 由輸入端 bclk 輸入,在接收器工作時(shí), 接收端一直以 16 倍波特率的速率讀取線 路狀態(tài),檢測(cè)線路上出現(xiàn)低電平的時(shí)刻。 一旦檢測(cè)到有 1跳變到 0,接著 判斷跳變是否由噪音引起或者確實(shí)是串行數(shù)據(jù)到來(lái)。 找到起始位以后, 就開(kāi)始接 收數(shù)據(jù),用 16 倍波特率的時(shí)鐘作為接收時(shí)鐘,就是為了確保在位寬的中心時(shí)間 對(duì)接收的位序列進(jìn)行可靠采樣, 當(dāng)采樣計(jì)數(shù)器計(jì)數(shù)結(jié)束后所有數(shù)據(jù)位都已經(jīng)輸入 完成。 4.4.2 UART 接收器的接收狀態(tài)機(jī) 接收狀態(tài)機(jī)一共有 5 個(gè)狀態(tài): R_STAR(T等待起始位)、R_CENTE(R求中點(diǎn))、 R_WAIT(等待采樣)、R_SAMP

35、L(E采樣)、R_STO(P 停止位接收)。 UART接收模塊狀態(tài)轉(zhuǎn)換圖如圖 9 所示: R_START RXD_SYNC= 0 檢測(cè)到起始位 RXD_SYNC= 1 虛假起始位 R_STOP 1100AND R_SAMPLE RCN16= RBITCNT=FRAMELEN REC_DONE= 1 RCNT16= 1110 AND RBITCNT=FRAMELEN 采樣計(jì)數(shù)器計(jì)數(shù)結(jié)束 RCNT16= 0100AND RXD_SYNC= 起始位正確 0 R_WAIT 圖 9 接收模塊狀態(tài)轉(zhuǎn)換圖 1:R_START狀態(tài):當(dāng) UART接收器復(fù)位( rsetr=1 )后,接收狀態(tài)機(jī)將處于 這一個(gè)狀態(tài)。

36、在此狀態(tài),狀態(tài)機(jī)一直在等待串行數(shù)據(jù)的到來(lái), 即 RXD的電平從邏 輯 1 變?yōu)檫壿?0 ,意味著新的一幀 UART數(shù)據(jù)幀的開(kāi)始,一旦起始位被確定,狀 態(tài)機(jī)將轉(zhuǎn)入 R_CENTE狀R態(tài)(圖 9中的 RXD_SYN信C號(hào)是 RXD的同步信號(hào))。 2:R_CENTE狀R 態(tài):在本狀態(tài),由起始位求出每位的中點(diǎn),通過(guò)對(duì) bclk 的 個(gè)數(shù)進(jìn)行計(jì)數(shù) (RCNT1)6,但計(jì)數(shù)值不是想當(dāng)然的 “1000”,要考慮經(jīng)過(guò)一個(gè)狀態(tài), 11也即經(jīng)過(guò)了一個(gè) bclk 周期,所希望得到的是在采樣時(shí) 1/2 位。另外,可能在 R_START狀態(tài)檢測(cè)到的起始位不是真正的起始位, 可能是一個(gè)偶然出現(xiàn)的干擾尖 脈沖(負(fù)脈沖)。這

37、種干擾脈沖的周期是很短的,所以可以認(rèn)為保持邏輯 0 超過(guò) 1/4 個(gè)位時(shí)間的信號(hào)一定是起始位。 3:R_WAIT狀態(tài):當(dāng)狀態(tài)機(jī)處于這一狀態(tài),等待計(jì)滿 15個(gè) bclk ,在第 16 個(gè) bclk 是進(jìn)入 R_SAMPL狀E 態(tài)進(jìn)行數(shù)據(jù)位的采樣檢測(cè), 同時(shí)也判斷是否采集的數(shù) 據(jù)位長(zhǎng)度已達(dá)到數(shù)據(jù)幀的長(zhǎng)度( FRAMELE)N,如果到來(lái),就說(shuō)明停止位來(lái)臨了。 FRAMELE在N設(shè)計(jì)時(shí)是可更改的(使用了 Generic ),在本設(shè)計(jì)中默認(rèn)為 8,即對(duì) 應(yīng)的 UART工作在 8 位數(shù)據(jù)位、無(wú)校驗(yàn)位格式。 4:R_SAMPL狀E 態(tài):即數(shù)據(jù)位采樣檢測(cè),完成后無(wú)條件狀態(tài)機(jī)轉(zhuǎn)入 R_WAIT狀態(tài), 等待下次數(shù)

38、據(jù)位的到來(lái)。 5:R_STOP狀態(tài):無(wú)論停止位是 1 還是 1.5 位,或是 2位,狀態(tài)機(jī)在 R_STOP不 具體檢測(cè) RXD,只是輸出幀接收完畢信號(hào)( REC_DONE=1),停止位后狀態(tài)機(jī) 轉(zhuǎn)回到 R_START狀態(tài),等待下一個(gè)幀的起始位。 狀態(tài)機(jī)的 VHDL代碼見(jiàn)附錄 1 程序清單。 4.5 發(fā)送模塊設(shè)計(jì) 4.5.1 發(fā)送模塊及其功能 發(fā)送模塊主要實(shí)現(xiàn)對(duì)并行數(shù)據(jù)的緩存、 并串轉(zhuǎn)換, 并把串行數(shù)據(jù)按照既定數(shù) 據(jù)幀格式進(jìn)行輸出。每隔一個(gè)固定發(fā)送周期發(fā)送符合數(shù)據(jù)幀格式要求的數(shù)據(jù)幀, 發(fā)送時(shí)輸出起始位低電平, 依次將數(shù)據(jù)位輸出, 最后將起始位重新置為高。 空閑 時(shí)是高電平,收到一個(gè)發(fā)送指令后,將

39、數(shù)據(jù)裝載進(jìn)來(lái),開(kāi)始位拉低,然后移出數(shù) 據(jù),停止位高電平意味著一幀傳輸結(jié)束 發(fā)送模塊的引腳如圖 10 所示, 發(fā)送模塊信號(hào): resett( 輸入):復(fù)位端口, 低電平有效; xmit_cmd_p 輸入):寫控制信 號(hào),低電平時(shí)允許數(shù)據(jù)輸入; txdbuf 7.0 (輸入):8 位并行數(shù)據(jù)輸入信號(hào); bclkt (輸入):外部時(shí)鐘信 號(hào);對(duì) CPU16倍頻采樣; txd_done(輸出):并 / 串轉(zhuǎn)換后數(shù)據(jù)輸出提示信號(hào),高電平有效; txd (輸 出):串行數(shù)據(jù)輸出。 圖 10 發(fā)送模塊引腳圖 12 UART發(fā)送模塊框圖如圖 11所示, CPU復(fù)位時(shí),引腳 txd_done 為高電平。 當(dāng) F

40、PGA外部引腳 txdbuf7.0 輸入 8位并行數(shù)據(jù)時(shí),裝載 8 位數(shù)據(jù)在發(fā)送保持寄 存器 THR中。裝載完畢后, 引腳 txd_done 變?yōu)榈碗娖健?當(dāng)檢測(cè)到 txd_done 變?yōu)?低電平時(shí),自動(dòng)時(shí)能串行數(shù)據(jù)發(fā)送。 8位并行 數(shù)據(jù)輸入 txdbuf7.0 總線控制器 發(fā)送器控制和狀態(tài) 數(shù)據(jù)輸出結(jié)束標(biāo)志 txd_done=1 發(fā)送保持 寄存器THR 發(fā)送移位 存器TS 串行數(shù)據(jù)輸出 xd引腳 圖 11 UART 串行發(fā)送器模塊框圖 發(fā)送數(shù)據(jù)時(shí),先發(fā)送一位起始位( 1),同時(shí) THR中數(shù)據(jù)并行載入到 TSR 中。接著 8 位數(shù)據(jù)由低位到高位依次從 TSR中串行移出。最后產(chǎn)生一位停止位 (0

41、)標(biāo)志一幀數(shù)據(jù)傳輸完畢。 同接收器一樣,串行數(shù)據(jù)已內(nèi)部頻率的 1/16 傳輸。當(dāng)數(shù)據(jù)傳輸完畢或沒(méi)有 數(shù)據(jù)傳輸 txd 輸出高電平。 4.5.2 UART 接收器的發(fā)送狀態(tài)機(jī) 發(fā)送狀態(tài)機(jī)一共有 5個(gè)狀態(tài) X_IDLE(空閑) X_STAR(T起始位) X_WAIT(移 位等待) X_SHIFT(移位) X_STO(P停止位)。UART發(fā)送器狀態(tài)轉(zhuǎn)換圖如圖 12所 示: 13 IDLE XCNT16=01111 ANDX XMIT_CMD_P= 1 X_START 01111 01110AND XBITCNT=FRAMELEN 圖 12 發(fā)送模塊狀態(tài)轉(zhuǎn)換圖 1:X_IDLE狀態(tài):當(dāng) UART被復(fù)位

42、信號(hào)復(fù)位后,狀態(tài)機(jī)將立刻進(jìn)入這一狀態(tài)。 在這個(gè)狀態(tài)下, UART的發(fā)送器一直在等待一個(gè)數(shù)據(jù)幀發(fā)送命令 XMIT_CM。D (由于無(wú)法對(duì)外加信號(hào) XMIT_CMD脈沖寬度進(jìn)行限制讀取。 用短脈沖 XMIT_CMD_P 信號(hào)對(duì) XMIT_CMD處理,當(dāng) XMIT_CMD_P=1,狀態(tài)機(jī)轉(zhuǎn)入 X_STAR,T 準(zhǔn)備發(fā)送起 始位。) 2:X_START狀態(tài):在這個(gè)狀態(tài)下, UART的發(fā)送器發(fā)送一個(gè)位時(shí)間寬度的邏 輯 0 信號(hào)至 TXD,即起始位。緊接著狀態(tài)機(jī)轉(zhuǎn)入 X_WAIT狀態(tài)。 XCNT16是 bclk 的計(jì)數(shù)器 3:X_WAIT狀態(tài):同 UART接收狀態(tài)機(jī)中的 R_WAIT狀態(tài)類似。 4:X_S

43、HIFT狀態(tài):當(dāng)狀態(tài)機(jī)處于這一狀態(tài)時(shí),實(shí)現(xiàn)待發(fā)數(shù)據(jù)的并串轉(zhuǎn)換。 轉(zhuǎn)換完成立即回到 X_WAIT狀態(tài)。 5:X_STOP狀態(tài):停止位發(fā)送狀態(tài), 當(dāng)數(shù)據(jù)幀發(fā)送完畢, 狀態(tài)機(jī)轉(zhuǎn)入該狀態(tài), 并發(fā)送 16個(gè) bclk 周期的邏輯 1信號(hào),即 1位停止位。狀態(tài)機(jī)送完停止位后回到 X_IDLE狀態(tài),并等待另一個(gè)數(shù)據(jù)幀的發(fā)送命令。 狀態(tài)機(jī)的 VHDL代碼見(jiàn)附錄 1 程序清單。 14 5 UART 設(shè)計(jì)的仿真與驗(yàn)證 5.1 波特率發(fā)生模塊仿真 為方便波特率發(fā)生器模塊仿真, 便于觀察仿真波形, 將系統(tǒng)時(shí)鐘周期設(shè)置為 20ns, 分頻系數(shù)設(shè)置為 10。 圖 13. 波特率發(fā)生器的功能仿真圖 從圖 13可以看到波特率

44、發(fā)生器每經(jīng)過(guò) 10個(gè)時(shí)鐘周期輸出一個(gè)完整的波特率 時(shí)鐘周期, 對(duì)模塊中的類屬參數(shù)設(shè)置可以實(shí)現(xiàn)任意要求的分頻。 分頻以后的時(shí)鐘 周期是 200ns,可見(jiàn)波特率發(fā)生器的工作完全滿足設(shè)計(jì)的要求,仿真結(jié)果正確。 5.2 接收模塊仿真 為了驗(yàn)證 UART接收模塊的正確性,對(duì)接收過(guò)程進(jìn)行了波形仿真。波特率產(chǎn) 生器設(shè)置為 16 個(gè)系統(tǒng)時(shí)鐘產(chǎn)生一個(gè)完整的波特率時(shí)鐘。圖 14 是 UART模塊接收 過(guò)程的仿真波形圖。 圖 14 接收功能仿真圖 串行數(shù)據(jù)從接收模塊的輸入端口 rxdr 進(jìn)入,從低位到高位按順序接收,然 后經(jīng)過(guò)接收移位寄存器的串并轉(zhuǎn)換,最終將并行數(shù)據(jù)同時(shí)送到接收緩沖寄存器, 15 同時(shí)輸出線路狀態(tài)信

45、息。 rxdr 信號(hào)從高電平轉(zhuǎn)到低電平的時(shí)候,就認(rèn)為是一個(gè) 數(shù)據(jù)幀的開(kāi)始, 接收狀態(tài)機(jī)馬上進(jìn)入開(kāi)始狀態(tài)。 移位了 8 位有效數(shù)據(jù)長(zhǎng)度后, 就 把它轉(zhuǎn)換成并行數(shù)據(jù)裝載到接收緩沖寄存器里,同時(shí)發(fā)出數(shù)據(jù)接收準(zhǔn)備好信號(hào), 等待 CPU讀取。 在圖 14 中,rxdr 上的數(shù)據(jù)序列為 0101000111,第一位為起始位, 最后一位 是停止位,那么接收到的數(shù)據(jù)為 10100011,r_buf 是數(shù)據(jù)接收總線,接收時(shí)數(shù)據(jù) 低位在前,可以看到最終得到的數(shù)據(jù)正是 11000101. 即圖上 r_buf 輸出的 197. 在接收完成后 r_ready 輸出一個(gè)脈寬的高電平作為提示。 經(jīng)驗(yàn)證,數(shù)據(jù)接收過(guò)程 完全正

46、確。 5.3 發(fā)送模塊仿真 PC機(jī)發(fā)送并行數(shù)據(jù), FPGA對(duì)其采樣,采樣時(shí)鐘 bclkt 以 PC機(jī)頻率 16 倍進(jìn) 行采樣,并行數(shù)據(jù)從輸入端口 txd 進(jìn)入,裝載到發(fā)送緩沖器, 經(jīng)移位寄存器完成 串并裝換后由低位到高位順序發(fā)送串行數(shù)據(jù)。 圖 15 發(fā)送功能仿真圖 如圖 15 所示,待發(fā)送的數(shù)據(jù)為 01001101,由 xmit_cmd_p 信號(hào)觸發(fā)后,從 低位順序發(fā)送, txd 端輸出 0101100101,其中第一位是起始位, 中間 8 位是待發(fā) 數(shù)據(jù),最后一位是發(fā)送結(jié)束后輸出提示信號(hào) txd_done 高電平。由圖示 txdbuf 輸出 77,二進(jìn)制編碼為 01001101. 經(jīng)驗(yàn)證,數(shù)

47、據(jù)發(fā)送過(guò)程完全正確。 16 6 總結(jié) UART是廣泛使用的串行數(shù)據(jù)通信電路,因其要求的傳輸線少,可靠性高, 傳輸距離遠(yuǎn), 所以系統(tǒng)間互聯(lián)常采用異步串行通信接口方式。 本文用 VHDL語(yǔ)言, 結(jié)合有限狀態(tài)機(jī)的設(shè)計(jì)方法實(shí)現(xiàn)了 UART的功能,將其核心功能集成到 FPGA上, 使整體設(shè)計(jì)緊湊、小巧,實(shí)現(xiàn)的 UART功能穩(wěn)定、可靠 ; 同時(shí),利用有限狀態(tài)機(jī)的 方法具有結(jié)構(gòu)模式直觀簡(jiǎn)單,設(shè)計(jì)流程短,程序?qū)哟畏置?,易綜合,可靠性高等 優(yōu)點(diǎn),必將在 EDA技術(shù)中發(fā)揮重要作用。 本設(shè)計(jì)具有較大的靈活性, 通過(guò)調(diào)整波特率發(fā)生器的分頻參數(shù), 就可以使其 工作在不同的頻率。采用 16 倍波特率的采樣時(shí)鐘,可以實(shí)時(shí)有

48、效探測(cè)數(shù)據(jù)的起 始位,并可對(duì)數(shù)據(jù)位進(jìn)行“對(duì)準(zhǔn)”中央采樣,保證了所采樣數(shù)據(jù)的正確性。該模 塊可以作為一個(gè)完整的 IP 核移植進(jìn)各種 FPGA中,在實(shí)際應(yīng)用時(shí)可嵌入到其他系 統(tǒng)中,很容易實(shí)現(xiàn)和遠(yuǎn)端上位機(jī)的異步通信。 17 參考文獻(xiàn) 1 潘松,黃繼業(yè) .EDA技術(shù)實(shí)用教程 M. 北京:科學(xué)出版社, 2002.10 第 一版. 2 趙俊超等 . 集成電路設(shè)計(jì) VHDL教程M . 北京:北京希望電子出版社, 2002.8 第一版 . 3 . 林思夏,馬海波,姜薇,微計(jì)算機(jī)信息, 2009年第 25卷,第 8-2 期, 基于 FPGA的 UART 擴(kuò)展總線設(shè)計(jì)和應(yīng)用, 中國(guó)礦業(yè)大學(xué), 徐州,文獻(xiàn)編碼 B

49、4 . 劉賢明;趙侃;謝愷; 一種基于 FPGA的 UARTI P 核設(shè)計(jì)J; 四川兵工學(xué) 報(bào);2011 年 03 期 5 . 蘇繼強(qiáng); 沈云付; 基于模型檢查的 VHDL到 FSM的轉(zhuǎn)換J; 計(jì)算機(jī)工程 與設(shè)計(jì);2008 年 22 期 6 . 廣西 張瓊廈;串口通信的基本概念 (上)N; 電子報(bào);2009 年 7 . Digital Circuit Experiment System Based on FPGAA;2010 International Conference on E-Health Networking, Digital Ecosystems and Technologies

50、Proceedings(Volume 2)C;2010年 8 . Hardware Chip Simulation TechniqueA;2009 ETP/IITA World Congress in Applied Computing, Computer Science, and Computer Engineering (ACC 2009) ProceedingsC;2009 年 9 . Optimization design on some of the data processing in bank-campus multi-function card systemA;Proceedi

51、ngs of 2010 Chinese Control and Decision ConferenceC;2010 年 10 . 周修理,楊方,陳萍;常見(jiàn)的串行通訊接口標(biāo)準(zhǔn) J; 電測(cè)與儀表 ;2001 年 04 期 11 . The design of intelligent marking system for electronic circuit experiment reportsA; 教育部中南地區(qū)高等學(xué)校電子電氣基礎(chǔ)課教學(xué)研究會(huì) 第二十屆學(xué)術(shù)年會(huì)會(huì)議論文集(上冊(cè)) C;2010 年 18 致謝 在畢業(yè)設(shè)計(jì)實(shí)施過(guò)程中, 我的指導(dǎo)老師廖磊老師給予了我很大的幫助和細(xì)致 的指導(dǎo),使得我能夠

52、如期的完成畢業(yè)設(shè)計(jì)。 首先, 在我最初確定畢業(yè)設(shè)計(jì)題目之 后,廖老師就針對(duì)題目的具體內(nèi)涵給我做了非常細(xì)致的講解, 并引導(dǎo)我對(duì)設(shè)計(jì)題 目進(jìn)行了初步的分解和認(rèn)識(shí), 使得我對(duì)整個(gè)設(shè)計(jì)有深入的了解, 能夠?qū)⒄麄€(gè)大項(xiàng) 目分解成具體的小部分, 然后各個(gè)擊破; 其次,在之后查找相關(guān)資料和材料收集 的構(gòu)成中, 廖老師也給我提供了很多幫助, 使得我在收集資料的過(guò)程中能夠具有 針對(duì)性,不至于茫然的不知所措;再次,在整個(gè)設(shè)計(jì)進(jìn)行過(guò)程中,我在很多環(huán)節(jié) 都遇到了自己無(wú)法攻破的難題, 廖老師都提供了無(wú)私的幫助和耐心的指導(dǎo); 最后, 在論文的最終定稿過(guò)程中, 廖老師又花費(fèi)了大量的時(shí)間對(duì)我的論文進(jìn)行細(xì)致的審 閱,并提出了一些

53、寶貴的建議, 使得我的論文能盡可能的完美。 廖老師的淵博的 學(xué)識(shí)和對(duì)學(xué)生認(rèn)真負(fù)責(zé)的態(tài)度使得我受益匪淺, 在此,對(duì)廖老師表達(dá)深深的感謝 和誠(chéng)摯的敬意。 在平時(shí)的學(xué)習(xí)生活中, 我的同班同學(xué), 尤其是我的室友們也給予我很多的幫 助。在學(xué)習(xí)中遇到困難時(shí),大家相互交流,共同探討,相互鼓勵(lì),使得我在解決 學(xué)業(yè)中遇到的問(wèn)題的同時(shí)也體會(huì)到了大家庭的溫暖。 這種共同學(xué)習(xí), 一起進(jìn)步的 經(jīng)歷豐富了我的大學(xué)生活, 在這種過(guò)程中, 我想我學(xué)會(huì)了如何與人協(xié)作共同解決 問(wèn)題,我相信這種經(jīng)歷對(duì)我將來(lái)的發(fā)展也會(huì)起到很大的作用。 在此,我想對(duì)所有 給幫助過(guò)我的同學(xué),一一表示衷心的感謝。 當(dāng)然,在本次畢業(yè)設(shè)計(jì)的完成過(guò)程了, 還得

54、到了其他老師和同學(xué)的幫助和指 導(dǎo),例如像是在此一并表示感謝。 最后感謝我的父母, 感謝他們對(duì)我學(xué)業(yè)和生活的支持、 理解和寬容, 他們一 直是我最堅(jiān)強(qiáng)的后盾,他們的鼓勵(lì)和支持一直是我最大的動(dòng)力! 謹(jǐn)以此文獻(xiàn)給所有支持和關(guān)心我的人! 19 附錄 部分程序代碼 發(fā)送模塊狀態(tài)機(jī)部分代碼 architecture Behavioral of transfer is type states is (x_idle,x_start,x_wait,x_shift,x_stop); - 定義各子狀態(tài) signal state:states:=x_idle; signal tcnt:integer:=0; begi

55、n process(bclkt,resett,xmit_cmd_p,txdbuf) - 主控時(shí)序、組合進(jìn)程 variable xcnt16:std_logic_vector(4 downto 0):=00000; - 定義中間變量 variable xbitcnt:integer:=0; variable txds:std_logic; begin if resett=1 then state=x_idle; txd_done-狀態(tài) 1,等待數(shù)據(jù)幀發(fā)送命 令 if xmit_cmd_p=1 then state=x_start; txd_done=0; else state -狀態(tài) 2,發(fā)送信號(hào)至起始位 if xcnt16=01111 then state=x_wait; xcnt16:=00000; else xcnt16:=xcnt16+1; txds:=0; state -狀態(tài) 3,等待狀態(tài) 20 if xcnt16=01110 then if xbitcnt=framlent then state=x_stop;xbitcnt:=0;xcnt16:=00000; el

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論