畢業(yè)論文“基于FPGA的UART模塊設(shè)計(jì)”.doc_第1頁(yè)
畢業(yè)論文“基于FPGA的UART模塊設(shè)計(jì)”.doc_第2頁(yè)
畢業(yè)論文“基于FPGA的UART模塊設(shè)計(jì)”.doc_第3頁(yè)
畢業(yè)論文“基于FPGA的UART模塊設(shè)計(jì)”.doc_第4頁(yè)
畢業(yè)論文“基于FPGA的UART模塊設(shè)計(jì)”.doc_第5頁(yè)
免費(fèi)預(yù)覽已結(jié)束,剩余32頁(yè)可下載查看

下載本文檔

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

文檔簡(jiǎn)介

本本科科畢畢業(yè)業(yè)設(shè)設(shè)計(jì)計(jì) 論論文文 題目 基于 FPGA 的 UART 模塊設(shè)計(jì) 學(xué) 院 物理與電子工程學(xué)院 年 級(jí) 06 專 業(yè) 電子科學(xué)與技術(shù) 班 級(jí) 電子 1 班 學(xué) 號(hào) 050206110 學(xué)生姓名 倪海日 指導(dǎo)教師 潘啟勇 職 稱 講師 論文提交日期 2010 5 19 常熟理工學(xué)院本科畢業(yè)設(shè)計(jì) 論文 誠(chéng)信承諾書 本人鄭重聲明 所呈交的本科畢業(yè)設(shè)計(jì) 論文 是本人在導(dǎo)師的指導(dǎo)下 獨(dú)立進(jìn)行研究工作所取得的成果 除文中已經(jīng)注明引用的內(nèi)容外 本論文不 含任何其他個(gè)人或集體已經(jīng)發(fā)表或撰寫過(guò)的作品成果 對(duì)本文的研究做出重 要貢獻(xiàn)的個(gè)人和集體 均已在文中以明確方式標(biāo)明 本人完全意識(shí)到本聲明 的法律結(jié)果由本人承擔(dān) 本人簽名 日期 常熟理工學(xué)院本科畢業(yè)設(shè)計(jì) 論文 使用授權(quán)說(shuō)明 本人完全了解常熟理工學(xué)院有關(guān)收集 保留和使用畢業(yè)設(shè)計(jì) 論文 的規(guī) 定 即 本科生在校期間進(jìn)行畢業(yè)設(shè)計(jì) 論文 工作的知識(shí)產(chǎn)權(quán)單位屬常熟理 工學(xué)院 學(xué)校有權(quán)保留并向國(guó)家有關(guān)部門或機(jī)構(gòu)送交論文的復(fù)印件和電子版 允許畢業(yè)設(shè)計(jì) 論文 被查閱和借閱 學(xué)??梢詫厴I(yè)設(shè)計(jì) 論文 的全部或部分 內(nèi)容編入有關(guān)數(shù)據(jù)庫(kù)進(jìn)行檢索 可以采用影印 縮印或掃描等復(fù)制手段保存 匯編畢業(yè)設(shè)計(jì) 論文 并且本人電子文檔和紙質(zhì)論文的內(nèi)容相一致 保密的畢業(yè)設(shè)計(jì) 論文 在解密后遵守此規(guī)定 本人簽名 日期 導(dǎo)師簽名 日期 常熟理工學(xué)院畢業(yè)設(shè)計(jì) 論文 I 基于 FPGA 的 UART 模塊設(shè)計(jì) 摘 要 通用異步收發(fā)器 Universal Asynchronous Receiver Transmitter UART 是一種廣 泛應(yīng)用于短距離 低速 低成本通信的串行傳輸接口 UART允許在串行鏈路上進(jìn)行全雙 工通信 常見(jiàn)的串行接口芯片能夠?qū)崿F(xiàn)比較全面的串行通信功能 而在實(shí)際應(yīng)用中 我 們往往并不需要如此完整的功能 從而會(huì)造成資源的浪費(fèi)和成本的提高 由于常用UART 芯片比較復(fù)雜且移植性差 本文提出一種采用可編程器件FPGA實(shí)現(xiàn)UART功能的方法 采 用TOP DOWN設(shè)計(jì)方法 對(duì)系統(tǒng)劃分模塊以及各個(gè)模塊的信號(hào)連接 然后進(jìn)行模塊設(shè)計(jì) 并用VHDL語(yǔ)言編寫代碼來(lái)實(shí)現(xiàn)各模塊功能 從而簡(jiǎn)化了電路 減小了體積 提高了系統(tǒng) 的可靠性 使用Quartus自帶的仿真器對(duì)各模塊進(jìn)行功能仿真和時(shí)序仿真 實(shí)現(xiàn)了發(fā)送 接收等功能 驗(yàn)證了結(jié)果 表明設(shè)計(jì)正確 功能良好 符合設(shè)計(jì)要求 關(guān)鍵詞關(guān)鍵詞 FPGA VHDL UART 有限狀態(tài)機(jī) 常熟理工學(xué)院畢業(yè)設(shè)計(jì) 論文 II The Design of Universal Asynchronous Receiver Transmitter Based on FPGA Abstract UART Universal Asynchronous Receiver Transmitter is a widely used for short range low speed low cost serial communication transmission interface UART allow full duplex communication on serial links Common serial interface chips can realize comprehensive serial communication function In practice we often did not need such a complete feature which will result in waste of resources and higher costs As the UART chips used more complex and it s transplantation is poor this paper presents a method that a implementation of UART based on programmable devices FPGA TOP DOWN design method is used the system is divided into modules and signal connections of each module the module function is designed in VHDL language In this way the design can simplifies the circuit reduces the volume improves the reliability of the system Using Quartus simulator for each module function simulation and temporal simulation this designing has realized send receive and other functions Verifing the results suggests that the design comply with the design requirements Key Words FPGA VHDL UART FSM 常熟理工學(xué)院畢業(yè)設(shè)計(jì) 論文 III 目 錄 第一章 緒論 1 1 1 課題背景與現(xiàn)實(shí)意義 1 1 2 課題研究的現(xiàn)狀及相關(guān)技術(shù)的介紹 1 1 2 1 UART 芯片的性能指標(biāo) 1 1 2 2 FPGA 的發(fā)展歷程和結(jié)構(gòu)介紹 2 1 2 3 FPGA 的設(shè)計(jì)方法及軟件平臺(tái) 3 1 2 4 VHDL 語(yǔ)言簡(jiǎn)介 4 1 3 本文的研究?jī)?nèi)容 5 1 4 本文的內(nèi)容結(jié)構(gòu) 6 1 5 小節(jié) 6 第二章 UART 理論基礎(chǔ) 7 2 1 UART 原理 7 2 2 串行通信基礎(chǔ)知識(shí) 8 2 2 1 串行通信工作方式 9 2 2 2 串行異步通信 9 2 2 3 串行同步通信 11 2 3 小節(jié) 11 第三章 UART 的設(shè)計(jì)實(shí)現(xiàn) 12 3 1 UART 的設(shè)計(jì)分析 12 3 1 1 UART 設(shè)計(jì)概述 12 3 1 2 UART 設(shè)計(jì)整體結(jié)構(gòu) 12 3 2 UART 模塊設(shè)計(jì) 13 3 2 1 頂層模塊設(shè)計(jì) 13 3 2 2 波特率發(fā)生模塊設(shè)計(jì) 13 3 2 3 接收模塊設(shè)計(jì) 14 3 2 4 發(fā)送模塊設(shè)計(jì) 16 常熟理工學(xué)院畢業(yè)設(shè)計(jì) 論文 IV 3 3 小節(jié) 17 第四章 UART 設(shè)計(jì)的仿真與驗(yàn)證 18 4 1 頂層模塊仿真 18 4 2 波特率發(fā)生模塊仿真 19 4 3 接收模塊仿真 19 4 4 發(fā)送模塊仿真 20 4 5 FPGA 開發(fā)版下載驗(yàn)證 21 4 6 小節(jié) 22 結(jié)語(yǔ) 23 致謝 25 參考文獻(xiàn) 26 附錄 部分程序代碼 27 常熟理工學(xué)院畢業(yè)設(shè)計(jì) 論文 1 第一章 緒 論 1 11 1 課題背景與現(xiàn)實(shí)意義課題背景與現(xiàn)實(shí)意義 通用異步收發(fā)器 Universal Asynchronous Receiver Transmitter UART 是一種廣 泛應(yīng)用于短距離 低速 低成本通信的串行傳輸接口 是計(jì)算機(jī)中最普遍的一部分 異 步串行通信接口具有傳輸線少 成本低 可靠性高 實(shí)現(xiàn)簡(jiǎn)單等優(yōu)點(diǎn) 廣泛應(yīng)用于微機(jī) 和外設(shè)的數(shù)據(jù)交換 如和鼠標(biāo) 鍵盤 調(diào)制解調(diào)器 打印機(jī)之間以及微機(jī)與微機(jī)之間的 串行數(shù)據(jù)傳輸 l 同時(shí)在當(dāng)今的嵌入式微處理器芯片的設(shè)計(jì)中 UART接口已成為標(biāo)準(zhǔn)配 置 通用異步收發(fā)器主要實(shí)現(xiàn)功能是接收外設(shè)傳送的串行數(shù)據(jù)轉(zhuǎn)換為并行數(shù)據(jù)同時(shí)校驗(yàn)該 數(shù)據(jù) 然后將并行數(shù)據(jù)提供給處理器處理 或者將處理器發(fā)送來(lái)的并行數(shù)據(jù)轉(zhuǎn)換成串行 數(shù)據(jù)同時(shí)根據(jù)串行通信協(xié)議附加上起始位 奇偶校驗(yàn)位以及停止位 然后從串行數(shù)據(jù)輸 出端發(fā)送出去 2 3 用UART來(lái)實(shí)現(xiàn)傳輸數(shù)據(jù)的串 并轉(zhuǎn)換或者并 串轉(zhuǎn)換 目前大部分處理器芯片中都集成 了UART功能 但是在FPGA芯片中一般沒(méi)有集成UART 這增加了FPGA芯片與其它處理器間 數(shù)據(jù)交換的復(fù)雜性 為提高FPGA設(shè)計(jì)的靈活性 我們可以用硬件描述語(yǔ)言編寫一個(gè)具有 UART功能的模塊 然后把這個(gè)模塊配置到FPGA芯片中 由于FPGA的功能日益強(qiáng)大 開發(fā) 周期短 現(xiàn)場(chǎng)可編程等一系列優(yōu)點(diǎn)也越來(lái)越明顯 將需要的UART功能集成到FPGA內(nèi)部 利用VHDL語(yǔ)言將UART的核心功能集成 去掉一些不必要的管腳 這樣既可簡(jiǎn)化電路又能 提高系統(tǒng)可靠性以及穩(wěn)定性并可以方便地對(duì)芯片進(jìn)行升級(jí)或內(nèi)嵌到各種不同的FPGA芯片 中 方便快捷 使整個(gè)設(shè)計(jì)更加緊湊 穩(wěn)定 可靠 因此利用FPGA自身的優(yōu)點(diǎn)來(lái)設(shè)計(jì)設(shè) 備間串行通信接口 具有較高的實(shí)用價(jià)值和重大意義 4 1 21 2 課題研究的現(xiàn)狀及相關(guān)技術(shù)的課題研究的現(xiàn)狀及相關(guān)技術(shù)的介紹介紹 1 2 1 UART 芯片的性能指標(biāo) 自第一個(gè)大規(guī)模集成電路芯片發(fā)明以后 在上世紀(jì)70年代UART就得到了廣泛的應(yīng)用 經(jīng)過(guò)幾十年的發(fā)展 UART芯片的管腳名稱 管腳功能以及整體的操作模式幾乎沒(méi)有太大 的改變 現(xiàn)在的一些基于CMOS工藝的UART芯片諸如NSl6650的原型可以追溯到早期的一些 經(jīng)典接口器件像Intel8250 5 這些年來(lái)因一些高速M(fèi)odem以及一些軟件 例如Laplink 要 求更高速的數(shù)據(jù)傳輸速率 UART內(nèi)部的基本構(gòu)架已經(jīng)得到了擴(kuò)展 常熟理工學(xué)院畢業(yè)設(shè)計(jì) 論文 2 衡量UART的性能指標(biāo)主要有 主機(jī)接口性能 數(shù)據(jù)緩沖寄存器的深度 波特率等等 在主機(jī)接口方面 被稱為VLIO 可變延遲I O 的新型接口現(xiàn)在得到了采用 此外新一代 1 8V UART設(shè)計(jì)成可以與總線無(wú)縫連接 現(xiàn)代工藝的進(jìn)一步發(fā)展推動(dòng)了新一代具有靈活性 主機(jī)接口的高性能UART的出現(xiàn) 這些UART工作在低電壓低功耗下 能夠提供較高的數(shù)據(jù) 傳輸速率來(lái)滿足藍(lán)牙EDR等新連接標(biāo)準(zhǔn)的要求 UART傳輸數(shù)據(jù)所需的CPU開銷直接受UART 內(nèi)部的FIFO深度影響 FIFO的深度越深 每次中斷時(shí)就可以傳輸更多數(shù)據(jù) 這大大提高 了數(shù)據(jù)的吞吐量 6 從而減少CPU的開銷 提高了系統(tǒng)的運(yùn)行效率 因此對(duì)UART性能方面 的提高主要是對(duì)數(shù)據(jù)緩沖寄存器方面進(jìn)一步的優(yōu)化 接下來(lái)UART芯片的發(fā)展將會(huì)以智能 化通信協(xié)調(diào)處理器的形式出現(xiàn) 這類設(shè)備已經(jīng)在一些PC機(jī)的插件上應(yīng)用了 4 1 2 2 FPGA 的發(fā)展歷程和結(jié)構(gòu)介紹 當(dāng)今社會(huì)是數(shù)字化的社會(huì) 是數(shù)字集成電路廣泛應(yīng)用的社會(huì) 數(shù)字集成電路本身在不 斷地進(jìn)行更新?lián)Q代 隨著微電子設(shè)計(jì)技術(shù)與工藝的發(fā)展 數(shù)字集成電路從電子管 晶體 管 中小規(guī)模集成電路 超大規(guī)模集成電路 VLSIC 逐步發(fā)展到專用集成電路 ASIC 但 是ASIC因其設(shè)計(jì)周期長(zhǎng) 不可移植性 靈活性差等缺陷制約著它的應(yīng)用范圍 現(xiàn)場(chǎng)可編 程邏輯器件的出現(xiàn)使ASIC的設(shè)計(jì)周期大大縮短 在設(shè)計(jì)初期就能設(shè)計(jì)出合適的ASIC芯片 并且立即投入實(shí)際應(yīng)用之中 其中應(yīng)用最廣泛的當(dāng)屬現(xiàn)場(chǎng)可編程門陣列FPGA Field Programmable Gate Array 和復(fù)雜可編程邏輯器件CPLD Complex Programmable Logic Device FPGA與CPLD都是可編程邏輯器件 它們是在PAL 可編程陣列邏輯 以及隨后出現(xiàn)的 PLA 可編程邏輯陣列 等邏輯器件的基礎(chǔ)上發(fā)展起來(lái)的 PAL PLA的區(qū)別就是與門和或門 的結(jié)構(gòu)不同 到了80年代初期在PLD的輸出端口附加上了新的輸出邏輯宏單元 這時(shí)候就 發(fā)展成為GAL 通用陣列邏輯 隨后出現(xiàn)的一些尖端的技術(shù)把GAL器件都集成到了一個(gè)硅 片上 就得到了CPLD 復(fù)雜可編程邏輯器件 一直到了上世紀(jì)80年代中期 出現(xiàn)了 FPGA 現(xiàn)場(chǎng)可編程門陣列 器件 7 FPGA與傳統(tǒng)的那些可編程邏輯器件相比 8 它最大的 優(yōu)點(diǎn)就是設(shè)計(jì)靈活 可移植性以及可以對(duì)外接或內(nèi)置的RAM或EPROM反復(fù)無(wú)限次得編程 可以實(shí)時(shí)地改變器件內(nèi)部的邏輯功能 實(shí)現(xiàn)現(xiàn)場(chǎng)可編程 這種芯片受到世界范圍內(nèi)電子 工程設(shè)計(jì)人員的廣泛關(guān)注和普遍歡迎 FPGA器件從結(jié)構(gòu)上而言 其核心部分是邏輯單元陣列LCA Logic Cell Array LCA是 由內(nèi)部邏輯塊矩陣及周圍的輸入 輸出模塊IOB Input Output Block 組成 而其內(nèi)部連 線 可編程內(nèi)部互連資源PI Programmable Interconnection 則占據(jù)邏輯塊的行列之 常熟理工學(xué)院畢業(yè)設(shè)計(jì) 論文 3 間 以及邏輯塊與FO塊之間的通道 LCA的可編程邏輯塊CLB Configurable Logic Block 和 IOB的功能及其互連 是由存儲(chǔ)器中的配置程序來(lái)控制的 1 可編程邏輯塊CLB FPGA器件的主體部分是由很多可編程邏輯塊CLB構(gòu)成的矩陣 每個(gè)CLB含有可編程的組 合邏輯和寄存器 寄存器可由組合邏輯或直接由CLB的輸出裝入信息 寄存器的輸出也可 以直接驅(qū)動(dòng)組合邏輯 一個(gè)CLB包括4個(gè)Slices 每個(gè)Slices包括兩個(gè)查找表LUT 兩個(gè)觸 發(fā)器和相關(guān)邏輯 查找表本質(zhì)上就是一個(gè)RAM 目前FPGA中多使用4輸入的LUT 所以每一個(gè)LUT可以看成 一個(gè)有4位地址線的16X1的RAM 當(dāng)用戶通過(guò)原理圖或HDL描述了一個(gè)邏輯電路以后 CPLD FPGA開發(fā)軟件會(huì)自動(dòng)計(jì)算邏輯電路的所有可能的結(jié)果 并把結(jié)果事先寫入RAM 這 樣 每輸入一個(gè)信號(hào)進(jìn)行邏輯運(yùn)算就等于輸入一個(gè)地址進(jìn)行查表 找出與地址對(duì)應(yīng)的內(nèi) 容 然后輸出即可 2 輸入輸出塊I 0 輸入輸出I 0含有一個(gè)可編程輸入通道和一個(gè)可編程輸出通道 可編程輸入通道由驅(qū) 動(dòng)器 觸發(fā)器及程序控制多路開關(guān)組成 它可以通過(guò)程序控制選擇直接輸入或通過(guò)寄存 器輸入 可編程輸出通道由多路開光和輸出緩沖器組成 它可以通過(guò)程序控制選擇三態(tài) 輸出 常開或常閉三種狀態(tài) 3 RAM塊 中小規(guī)模的存儲(chǔ)模塊可以簡(jiǎn)化系統(tǒng)的設(shè)計(jì) 提高系統(tǒng)的工作速度 而且可以減少數(shù)據(jù) 存儲(chǔ)的成本 使芯片內(nèi)外數(shù)據(jù)信息的交換更可靠 4 可編程互連資源PI 可編程互連資源包括各種長(zhǎng)度的金屬連線段和一些可編程連接開關(guān) 它們將各個(gè)CLB 之間或CLB與IOB之間互相連接起來(lái) 構(gòu)成各種復(fù)雜功能的系統(tǒng) 14 1 2 3 FPGA 的設(shè)計(jì)方法及軟件平臺(tái) 傳統(tǒng)的數(shù)字邏輯設(shè)計(jì)手段是采用原理圖輸入的方式進(jìn)行的 當(dāng)時(shí)所做的復(fù)雜數(shù)字邏輯 電路及系統(tǒng)的設(shè)計(jì)規(guī)模比較小相對(duì)而言也比較簡(jiǎn)單 其中用到的FPGA或ASIC設(shè)計(jì)工作往 往只能采用廠家提供的專用電路圖輸入工具來(lái)進(jìn)行 為了滿足設(shè)計(jì)性能指標(biāo) 工程師往 往需要花費(fèi)很長(zhǎng)時(shí)間進(jìn)行手工布線并且還得非常熟悉所選器件的內(nèi)部結(jié)構(gòu)和外部引線特 點(diǎn) 才能達(dá)到設(shè)計(jì)要求 這種低效率的設(shè)計(jì)方法大大延長(zhǎng)了設(shè)計(jì)周期 設(shè)計(jì)往往是從功 能描述開始的 設(shè)計(jì)人員首先要考慮規(guī)劃出能完成某一具體功能 滿足產(chǎn)品系統(tǒng)設(shè)計(jì)要 常熟理工學(xué)院畢業(yè)設(shè)計(jì) 論文 4 求地某一功能模塊 利用某種方式把功能描述出來(lái) 通過(guò)功能仿真以驗(yàn)證設(shè)計(jì)思路地正 確性 當(dāng)所設(shè)計(jì)功能滿足需要時(shí) 再考慮以何種方式完成所需要的設(shè)計(jì) 并能直接使用 功能定義地描述 這就是自頂而下的設(shè)計(jì)方法 簡(jiǎn)單分為功能定義 設(shè)計(jì)輸入 功能仿 真 邏輯綜合 綜合后仿真 布局布線 布局布線后仿真 下載驗(yàn)證等8個(gè)步驟 9 本課題 邏輯設(shè)計(jì)使用的軟件為Altera公司的Quartus II Quartus II的主要特點(diǎn) Quartus II是一個(gè)集成環(huán)境 可以完成整個(gè)FPGA開發(fā)過(guò)程 Quartus II集成了很多著名 的FPGA設(shè)計(jì)工具 根據(jù)設(shè)計(jì)流程合理應(yīng)用這些工具 會(huì)使工程師的設(shè)計(jì)工作如魚得水 Quartus II界面風(fēng)格簡(jiǎn)潔流暢 易學(xué)易用 Quartus II的界面秉承了可視化編程技術(shù) 界面根據(jù)設(shè)計(jì)流程而組織 整個(gè)設(shè)計(jì)過(guò)程只需按照界面組織結(jié)構(gòu)依次點(diǎn)擊相應(yīng)的按鈕或 相應(yīng)的選項(xiàng)即可 強(qiáng)大的設(shè)計(jì)輔助功能 Quartus II秉承了Altera設(shè)計(jì)軟件的強(qiáng)大輔助功能 在編寫代 碼時(shí)可以使用編寫向?qū)晌募^和模塊框架 也可以使用語(yǔ)言模板幫助編寫代碼 在 圖形輸入時(shí)可以使用輔助項(xiàng)幫助設(shè)計(jì)原理圖 另外 Quartus II可以方便地生成IP Core IP核 與高效模塊為用戶所用 大大減少了設(shè)計(jì)者的工作量 提高了設(shè)計(jì)效率和質(zhì) 量 Quartus II的集成工具主要分為設(shè)計(jì)輸入工具 綜合工具 仿真工具 實(shí)現(xiàn)工具和 輔助設(shè)計(jì)工具等5類 HDL Editor可以完成設(shè)計(jì)電路的HDL語(yǔ)言的輸入 能根據(jù)語(yǔ)法來(lái)彩 色顯示關(guān)鍵字 自帶仿真器做仿真 特點(diǎn)是仿真速度快 仿真精度高 綜合能力強(qiáng) 1 2 4 VHDL 語(yǔ)言簡(jiǎn)介 隨著電子技術(shù)的發(fā)展 集成電路的規(guī)模越來(lái)越大 復(fù)雜程度也越來(lái)越高 對(duì)于如此 大規(guī)模的和復(fù)雜程度的電路設(shè)計(jì)問(wèn)題 傳統(tǒng)的門級(jí)描述方法顯得過(guò)于瑣碎和難以管理 而 VHDL 語(yǔ)言具有強(qiáng)大的功能 覆蓋面廣 描述能力強(qiáng) 可用于從門級(jí) 電路級(jí)直至系統(tǒng) 級(jí)的描述 仿真和綜合 下面簡(jiǎn)要介紹了 VHDL 語(yǔ)言 VHDL 的英文全名是 Very High Speed Integrated Circuit Hardware DescriptiON Language 誕生于 1982 年 1987 年底 VHDL 被 IEEE 和美國(guó)國(guó)防部確認(rèn)為標(biāo)準(zhǔn)硬件描述 語(yǔ)言 自 IEEE 公布了 VHDL 的標(biāo)準(zhǔn)版本 IEEE 1076 簡(jiǎn)稱 87 版 之后 各 EDA 公司相 繼推出了自己的 VHDL 設(shè)計(jì)環(huán)境 或宣布自己的設(shè)計(jì)工具可以和 VHDL 接口 此后 VHDL 在 電子設(shè)計(jì)領(lǐng)域得到了廣泛的接受 并逐步取代了原有的非標(biāo)準(zhǔn)的硬件描述語(yǔ)言 1993 年 IEEE 對(duì) VHDL 進(jìn)行了修訂 從更高的抽象層次和系統(tǒng)描述能力上擴(kuò)展 VHDL 的內(nèi)容 公布 了新版本的 VHDL 即 IEEE 標(biāo)準(zhǔn)的 1076 1993 版本 簡(jiǎn)稱 93 版 現(xiàn)在 VHDL 和 Verilog 作為 IEEE 的工業(yè)標(biāo)準(zhǔn)硬件描述語(yǔ)言 又得到眾多 EDA 公司的支持 在電子工程領(lǐng)域 已 常熟理工學(xué)院畢業(yè)設(shè)計(jì) 論文 5 成為事實(shí)上的通用硬件描述語(yǔ)言 有專家認(rèn)為 在新的世紀(jì)中 VHDL 與 Verilog 語(yǔ)言將 承擔(dān)起大部分的數(shù)字系統(tǒng)設(shè)計(jì)任務(wù) VHDL 主要用于描述數(shù)字系統(tǒng)的結(jié)構(gòu) 行為 功能和 接口 除了含有許多具有硬件特征的語(yǔ)句外 VHDL 的語(yǔ)言形式和描述風(fēng)格與句法是十分 類似于一般的計(jì)算機(jī)高級(jí)語(yǔ)言 VHDL 的程序結(jié)構(gòu)特點(diǎn)是將一項(xiàng)工程設(shè)計(jì) 或稱設(shè)計(jì)實(shí) 體 可以是一個(gè)元件 一個(gè)電路模塊或一個(gè)系統(tǒng) 分成外部 或稱可視部分 及端口 和內(nèi)部 或稱不可視部分 即設(shè)計(jì)實(shí)體的內(nèi)部功能和算法完成部分 在對(duì)一個(gè)設(shè)計(jì)實(shí)體 定義了外部界面后 一旦其內(nèi)部開發(fā)完成后 其它的設(shè)計(jì)就可以直接調(diào)用這個(gè)實(shí)體 這 種將設(shè)計(jì)實(shí)體分成內(nèi)外部分的概念是 VHDL 系統(tǒng)設(shè)計(jì)的基本點(diǎn) 概括的說(shuō) VHDL 具有以下主要優(yōu)點(diǎn) VHDL 支持層次化設(shè)計(jì) 可以在 VHDL 的環(huán)境下 完成從簡(jiǎn)練的設(shè)計(jì)原始描述 經(jīng)過(guò)層 層細(xì)化求精 最終獲得可直接付諸生產(chǎn)的電路級(jí)或版圖參數(shù)描述的全過(guò)程 VHDL 有良好的可讀性 它可以被計(jì)算機(jī)接受 也容易被讀者理解 用 VHDL 書寫的源 文件 既是程序又是文檔 既是技術(shù)人員直接交換信息的文件 又可作為合同簽約者之 間的文件 VHDL 有良好的可移植性 作為一種已被 IEEE 承認(rèn)的工業(yè)標(biāo)準(zhǔn) VHDL 事實(shí)上已成為 通用的硬件描述語(yǔ)言 可以在不同的設(shè)計(jì)環(huán)境和系統(tǒng)平臺(tái)中使用 使用 VHDL 可以延長(zhǎng)設(shè)計(jì)的生命周期 因?yàn)?VHDL 的硬件描述與工藝技術(shù)無(wú)關(guān) 不會(huì) 因?yàn)楣に囎兓姑枋鲞^(guò)時(shí) 與工藝技術(shù)有關(guān)的參數(shù)可通過(guò) VHDL 提供的屬性加以描述 工藝改變時(shí) 只需要修改相應(yīng)程序中的屬性參數(shù)即可 VHDL 支持對(duì)大規(guī)模設(shè)計(jì)的分解和已有設(shè)計(jì)的再利用 VHDL 可以描述復(fù)雜的電路系統(tǒng) 支持對(duì)大規(guī)模設(shè)計(jì)進(jìn)行分解 由多人 多項(xiàng)目組來(lái)共同承擔(dān)和完成 標(biāo)準(zhǔn)化的規(guī)則和風(fēng) 格 為設(shè)計(jì)的再利用提供了有力的支持 1 31 3 本文的研究?jī)?nèi)容本文的研究?jī)?nèi)容 本課題的內(nèi)容就是要用VHDL語(yǔ)言在FPGA上實(shí)現(xiàn)一個(gè)通用異步收發(fā)器 首先根據(jù)通用異 步收發(fā)器的具體性能與要求將UART分為幾個(gè)模塊的組合 采用Top Down的層次化設(shè)計(jì)方 法和硬件描述語(yǔ)言 VHDL 來(lái)編寫內(nèi)部的邏輯功能模塊 然后運(yùn)用Quartus II的綜合工具 以及Quartus II的仿真工具中對(duì)其進(jìn)行綜合優(yōu)化以及仿真驗(yàn)證 最后下載到實(shí)物開發(fā)板 上進(jìn)行調(diào)試 主要的研究?jī)?nèi)容有如下幾點(diǎn) 第一步 熟悉FPGA的設(shè)計(jì)開發(fā)流程以及通用異步收發(fā)器 UART 的各個(gè)子模塊的功能 常熟理工學(xué)院畢業(yè)設(shè)計(jì) 論文 6 掌握各個(gè)模塊之間的聯(lián)系與工作流程 熟悉UART通信協(xié)議 RS 232協(xié)議 第二步 用VHDL語(yǔ)言編寫通用異步收發(fā)器內(nèi)部的各個(gè)子模塊以及頂層模塊的程序代碼 第三步 在Quartus II集成的軟件開發(fā)環(huán)境中對(duì)其進(jìn)行邏輯綜合 仿真驗(yàn)證 布局布 線 以及最后的硬件實(shí)現(xiàn) 1 41 4 本文的結(jié)構(gòu)本文的結(jié)構(gòu) 第一章主要指出本課題的提出背景以及研究意義 以及與本研究該課題相關(guān)的技術(shù)及 開發(fā)環(huán)境 第二章著重介紹了通用異步收發(fā)器的理論內(nèi)容 包括UART通信時(shí)各模塊的工作特性及 串行通信協(xié)議 第三章主要對(duì)UART的結(jié)構(gòu)設(shè)計(jì) 包括系統(tǒng)設(shè)計(jì)以及各個(gè)模塊的設(shè)計(jì)過(guò)程進(jìn)行了分析 第四章主要是對(duì)設(shè)計(jì)完成后的UART進(jìn)行邏輯綜合 功能模擬及時(shí)序仿真 同時(shí)分析邏 輯綜合和仿真結(jié)果 最后下載到FPGA實(shí)驗(yàn)板中進(jìn)行實(shí)物驗(yàn)證 第五章是結(jié)束語(yǔ) 主要分析本課題所取得的研究成果以及有待改進(jìn)的不足之處 1 51 5 小節(jié)小節(jié) 本章首先介紹了此課題的研究背景和研究意義 然后闡述了與該課題相關(guān)的內(nèi)容 UART 芯片研究狀況 FPGA 特點(diǎn) VHDL 語(yǔ)言 最后分析了該課題的研究方法和研究?jī)?nèi)容 常熟理工學(xué)院畢業(yè)設(shè)計(jì) 論文 7 第二章 UART 理論基礎(chǔ) UART 是通用異步收發(fā)器的英文縮寫 它包括了 RS232 RS499 RS423 RS422 和 RS485 等接口標(biāo)準(zhǔn)規(guī)范和總線標(biāo)準(zhǔn)規(guī)范 即 UART 是異步串行通信口的總稱 而 RS232 RS499 RS423 RS422 和 RS485 等 是對(duì)應(yīng)各種異步串行通信口的接口標(biāo)準(zhǔn)和總 線標(biāo)準(zhǔn) 它規(guī)定了通信口的電氣特性 傳輸速率 連接特性和接口的機(jī)械特性等內(nèi)容 UART 是異步串行通信方式 通信的發(fā)送方和接收方各自有獨(dú)立的時(shí)鐘 傳輸?shù)乃俾视呻p 方約定 串行通信分為兩種類型 同步通信方式和異步通行方式 UART 是一種串行異步通信 方式 它是各種設(shè)備之間進(jìn)行通信的關(guān)鍵模塊 允許在串行鏈路上進(jìn)行全雙工的通信 在發(fā)送端 并行的數(shù)字信號(hào)需要轉(zhuǎn)化成串行信號(hào)才能通過(guò)有線或無(wú)線傳輸?shù)搅硗庖慌_(tái)設(shè) 備 而在接收端 串行信號(hào)必須要被恢復(fù)成并行信號(hào)才能進(jìn)行數(shù)據(jù)處理 UART 就是用來(lái) 處理這種數(shù)據(jù)與串口之間的串并和并串轉(zhuǎn)換的 本章首先介紹 UART 的基本結(jié)構(gòu) 然后闡述一些有關(guān)串行通信的知識(shí) 在串行通信基 礎(chǔ)知識(shí)介紹中對(duì)同步通信也作了簡(jiǎn)要介紹 2 12 1 UARTUART 原理原理 通用異步接收 發(fā)送器UART用于將并行數(shù)據(jù)轉(zhuǎn)換成串行形式 串行輸入時(shí) 又將串行 形式轉(zhuǎn)換成并行形式 圖2 1顯示UART基本結(jié)構(gòu) 它的組成包括 10 圖2 1 UART基本結(jié)構(gòu) 1 UART內(nèi)核 常熟理工學(xué)院畢業(yè)設(shè)計(jì) 論文 8 內(nèi)核模塊是UART設(shè)計(jì)的核心部分 內(nèi)部為控制邏輯 它接收來(lái)自微處理器或上層部件 的控制信號(hào) 執(zhí)行其所要求的操作 并輸出狀態(tài)信息和控制信號(hào) 在數(shù)據(jù)接收時(shí) UART 內(nèi)核模塊負(fù)責(zé)控制波特率發(fā)生器和移位寄存器 控制移位寄存器在波特率時(shí)鐘的驅(qū)動(dòng)下 同步接收同時(shí)保存RS 232接收端口上的串行數(shù)據(jù) 在數(shù)據(jù)發(fā)送時(shí) UART內(nèi)核模塊首先根 據(jù)待發(fā)送數(shù)據(jù) 奇偶校驗(yàn)位和停止位的設(shè)置產(chǎn)生完整的發(fā)送序列 包括起始位 數(shù)據(jù)位 奇偶校驗(yàn)位和停止位 之后控制移位寄存器將發(fā)送序列加載到移位寄存器的內(nèi)部寄存器 里 最后控制波特率發(fā)生器驅(qū)動(dòng)移位寄存器將數(shù)據(jù)串行輸出 2 信號(hào)監(jiān)測(cè)器 對(duì)串行輸入端 RXD 的輸入信號(hào)進(jìn)行實(shí)時(shí)監(jiān)測(cè) 一旦發(fā)現(xiàn)新的數(shù)據(jù)信號(hào)監(jiān)測(cè)器立即發(fā) 送信號(hào)通知UART內(nèi)核 3 移位寄存器 移位寄存器用來(lái)存儲(chǔ)輸入或者輸出的數(shù)據(jù) 發(fā)送時(shí) 微處理器將待發(fā)數(shù)據(jù)送入發(fā)送數(shù) 據(jù)寄存器 然后對(duì)待發(fā)數(shù)據(jù)格式化 包括起始位 奇偶校驗(yàn)位和停止位 將格式化后的 數(shù)據(jù)送到發(fā)送移位寄存器 然后按先前規(guī)定的波特率串行輸出 接收時(shí) 串行輸入設(shè)備 通過(guò)UART的串行輸入端口發(fā)送串行數(shù)據(jù)到UART的接收器 一旦串行輸入端口電位由高電 平變到低電平 接收器就認(rèn)為接收到起始位 并把后續(xù)的數(shù)據(jù)位依次移入接收移位寄存 器 當(dāng)接收一個(gè)完整數(shù)據(jù)后 就送往內(nèi)核的接收移位寄存器 并通知微處理器或上層部 件讀取接收到的數(shù)據(jù) 4 波特率發(fā)生器 UART的發(fā)送和接收是按照相同的波特率進(jìn)行收發(fā)的 波特率發(fā)生器產(chǎn)生的時(shí)鐘頻率是 根據(jù)給定的的波特率算出的 5 奇偶校驗(yàn)器 為了使傳送數(shù)據(jù)過(guò)程更可靠 在UART中設(shè)置了錯(cuò)誤標(biāo)志 奇偶錯(cuò)誤 在接收時(shí) 奇 偶校驗(yàn)器檢查接收到的每一個(gè)字符碼中 l 的個(gè)數(shù) 若不符合要求 則發(fā)出奇偶校驗(yàn)出 錯(cuò)信息 發(fā)送時(shí)則根據(jù)待發(fā)送數(shù)據(jù)計(jì)算出奇偶校驗(yàn)標(biāo)志 由內(nèi)核加載到發(fā)送數(shù)據(jù)中 6 總線選擇器 總線選擇模塊選擇奇偶校驗(yàn)器的輸入是數(shù)據(jù)接收總線還是數(shù)據(jù)發(fā)送總線 7 計(jì)數(shù)器 計(jì)數(shù)器模塊的功能是在可控的輸入時(shí)鐘驅(qū)動(dòng)下進(jìn)行計(jì)數(shù) 當(dāng)達(dá)到計(jì)數(shù)上閾時(shí)給UART內(nèi) 核一個(gè)提示信號(hào) 常熟理工學(xué)院畢業(yè)設(shè)計(jì) 論文 9 2 22 2 串行通信基礎(chǔ)知識(shí)串行通信基礎(chǔ)知識(shí) 串行通信傳送的一組組的字符信息通常稱為信息幀 為了正確得到發(fā)送和接收這些數(shù) 據(jù)幀 就要求數(shù)據(jù)通信中實(shí)現(xiàn)同步通信 同步就是通信雙方協(xié)調(diào)發(fā)送和接收之間的動(dòng)作 通信雙方必須對(duì)數(shù)據(jù)傳輸方式 同步控制方式 差錯(cuò)處理 應(yīng)答方式和數(shù)據(jù)格式等問(wèn)題 做出一組規(guī)定并共同遵守來(lái)實(shí)現(xiàn)同步 這種規(guī)定即為通信協(xié)議 串行通信分為異步通信 和同步通信兩種 相應(yīng)的串行通信協(xié)議中則分有異步通信協(xié)議和同步通信協(xié)議 2 2 1 串行通信工作方式 串行通信是把傳輸?shù)臄?shù)據(jù)一位一位地順序傳送的一種通信方式 在傳送一個(gè)字節(jié)數(shù)據(jù) 時(shí) 每次將數(shù)據(jù)依次發(fā)送至單根傳輸線上 或者反過(guò)來(lái) 從單根傳輸線上依次地接收數(shù) 據(jù) 然后組合成一個(gè)字節(jié)數(shù)據(jù) 因其需要的數(shù)據(jù)線少 傳送距離長(zhǎng) 可靠性高而廣泛用 于外設(shè)與計(jì)算機(jī)之間的通信 如終端 打印機(jī) 磁盤等 但由于傳送數(shù)據(jù)格式繁瑣 速 度慢 效率低 實(shí)時(shí)性差 而無(wú)法應(yīng)用于高速實(shí)時(shí)數(shù)據(jù)通信 串行通信的有如下三種 11 1 單工方式 單工方式只允許數(shù)據(jù)按一個(gè)固定的方向傳送 采用這種方式時(shí) 就已經(jīng)確定了通信方 式中的一方為接收端 并且這種方式是不可改變的 2 半雙工方式 這種方式下的通信雙方A和B都具有接收和發(fā)送能力 但通信線只有一條 因此在特定 的時(shí)刻雙方只能有一個(gè)發(fā)送而另一個(gè)接收或一方接收 另一方發(fā)送 決不允許A和B同時(shí) 接收或同時(shí)發(fā)送 3 雙工方式 全雙工具有兩條獨(dú)立的通信線 一條專門用作發(fā)送 另一條為接收 這就克服了單工 或半雙工帶來(lái)的A和B雙方不能同時(shí)既發(fā)送又接收的缺點(diǎn) 因此 為保證實(shí)現(xiàn)全雙工通信 任務(wù) A和B雙方的串行接口必須具備一套完全獨(dú)立的發(fā)送器和接收器 2 2 2 串行異步通信 串行異步通信是計(jì)算機(jī)通信中最常用的數(shù)據(jù)信息傳輸方式 接收和發(fā)送雙方不使用共 同的參考時(shí)鐘 但要求發(fā)送的每一位數(shù)據(jù)都必須經(jīng)過(guò)事前格式化 發(fā)送時(shí)以字符為單位 在其前后分別加 起始位 和 停止位 用以指示每一數(shù)據(jù)的開始和結(jié)束來(lái)進(jìn)行傳輸 字符之間沒(méi)有固定的時(shí)間間隔要求 而每個(gè)字符中的各位則以固定的時(shí)間傳送 由于要 給每一位數(shù)據(jù)位加起始位 停止位 故傳送效率不及同步通信高 但對(duì)接收與發(fā)送時(shí)鐘 常熟理工學(xué)院畢業(yè)設(shè)計(jì) 論文 10 的同步要求降低了 1 串行異步通信的數(shù)據(jù)格式 收發(fā)雙方取得同步的方法是在字符格式中設(shè)置起始位和停止位 在一個(gè)有效字符正式 發(fā)送前 發(fā)送器先發(fā)送一個(gè)起始位 然后發(fā)送有效字符位 在字符結(jié)束時(shí)再發(fā)送一個(gè)停 止位 起始位到停止位構(gòu)成一幀 故這種通信方式又稱為起止式異步通信方式 在一幀 信息傳送之前 傳輸線邏輯上處于1狀態(tài) 在傳送字符信息的時(shí)候 先發(fā)送起始位邏輯 O 緊隨其后發(fā)送5到8位的數(shù)據(jù)信息位 從低位到高位順序排列 就是說(shuō)先傳低位后傳高 位 在字符的最高位之后是一個(gè)可選擇的奇偶校驗(yàn)位 可以選擇奇校驗(yàn) 偶校驗(yàn)或無(wú)校 驗(yàn) 在奇偶校驗(yàn)位之后是標(biāo)志著一幀字符結(jié)束的停止位 這位必須是邏輯1 位數(shù)可以選 擇1位 1 5位或者2位 在傳送數(shù)據(jù)的時(shí)候 數(shù)據(jù)幀與幀之間如果有間隙的話 就在停止 位之后附加空閑位 用邏輯l來(lái)表示 當(dāng)沒(méi)有空閑位的時(shí)候 傳送數(shù)據(jù)的效率是最高的 異步串行通信的數(shù)據(jù)格式如圖2 2所示 12 圖2 2串行異步通信的數(shù)據(jù)幀格式 2 發(fā)送和接收時(shí)鐘 在UART通信協(xié)議中 發(fā)送模塊和接收模塊不使用共同的時(shí)鐘信號(hào) 所以稱作異步發(fā)送 和接收器 也就是在串行通信時(shí)發(fā)送 接受數(shù)據(jù)的兩個(gè)UART接口不會(huì)共用一個(gè)時(shí)鐘信號(hào) 13 兩者的時(shí)鐘頻率在一定的誤差范圍內(nèi)近似相等 為提高定位采樣的分辨能力和抗干擾能 力接收器采用比波特率更高頻率的時(shí)鐘進(jìn)行采樣 這個(gè)頻率的倍數(shù)即為波特率因子 一 般取16 32和64 3 起 止位 起 止位作為聯(lián)絡(luò)信號(hào) 用于異步通信雙方的同步 當(dāng)起始位出現(xiàn)時(shí) 信號(hào)電平由高變 低 告訴接收方新的一幀已經(jīng)到達(dá) 后面接著是數(shù)據(jù)位 起始位用來(lái)表示一個(gè)數(shù)據(jù)幀傳 送的開始 停止位表示一個(gè)數(shù)據(jù)幀傳送的結(jié)束 這就為通信雙方提供了何時(shí)開始收發(fā) 何時(shí)結(jié)束的標(biāo)志 有了起 止位 傳輸數(shù)據(jù)時(shí)收發(fā)雙方對(duì)時(shí)鐘同步的要求就不需太高 發(fā) 送器和接收器可以使用不同的時(shí)鐘 即使收發(fā)雙方的時(shí)鐘頻率存在一定的偏差 但字符 間的停止位和空閑位為此提供了緩沖 這樣就不會(huì)因連續(xù)誤差的累積導(dǎo)致錯(cuò)位 保證了 常熟理工學(xué)院畢業(yè)設(shè)計(jì) 論文 11 數(shù)據(jù)傳輸?shù)目煽窟M(jìn)行 4 奇偶校驗(yàn) 奇偶校驗(yàn)是最簡(jiǎn)單也最常用的校驗(yàn)方法 它的基本原理是在傳輸?shù)挠行?shù)據(jù)中附加一 個(gè)檢驗(yàn)位 利用這個(gè)校驗(yàn)位 使得數(shù)據(jù)信息位 包括有效數(shù)據(jù)位和檢驗(yàn)位 中1的個(gè)數(shù)為偶 數(shù)或者奇數(shù) 如果整個(gè)信息位1的個(gè)數(shù)為偶數(shù)的話稱為偶檢驗(yàn) 為奇數(shù)的話則稱為為奇檢 驗(yàn) 在接收端用專門的電路來(lái)檢查1的個(gè)數(shù)與事先的規(guī)定是否符合 若奇偶性發(fā)生了變化 則說(shuō)明傳輸出現(xiàn)了錯(cuò)誤 這種方法只能檢查傳輸數(shù)據(jù)幀的一位錯(cuò)誤 兩位數(shù)據(jù)位以上的 錯(cuò)誤就無(wú)法檢查出來(lái) 由于傳輸過(guò)程中最容易產(chǎn)生一位數(shù)據(jù)位的錯(cuò)誤 加上奇偶校驗(yàn)的 實(shí)現(xiàn)方法最簡(jiǎn)單 所以實(shí)際應(yīng)用也最廣泛 2 2 3 串行同步通信 同步通信的基本特征是發(fā)送與接收時(shí)鐘始終保持嚴(yán)格的同步 傳送的信息流中每個(gè)二 進(jìn)制位都需要時(shí)鐘同步 要讓接收設(shè)備能正確接收發(fā)送的數(shù)據(jù)位 就要進(jìn)行同步 在串行同步通信中 接收雙方的同步方法可以分為內(nèi)同步和外同步 內(nèi)同步法就是接 收端從接收到的數(shù)據(jù)信息波形本身提取同步的方法 而外同步法是在發(fā)送數(shù)據(jù)之前向接 收器發(fā)送一串時(shí)鐘脈沖 接收端按這個(gè)時(shí)鐘頻率調(diào)整自己的時(shí)序 使接收時(shí)鐘頻率鎖定 在接收到的時(shí)鐘頻率上 并作為同步時(shí)鐘來(lái)接收數(shù)據(jù) 2 32 3 小節(jié)小節(jié) 本章著重介紹了 UART 的理論基礎(chǔ)包括 UART 芯片的基本結(jié)構(gòu)并對(duì)每塊作了詳細(xì)介紹 串行通信基礎(chǔ)知識(shí)如串行通信工作方式 串行異步通信和串行同步通信 本章是理解下 章的理論前提 常熟理工學(xué)院畢業(yè)設(shè)計(jì) 論文 12 第三章 UART 的設(shè)計(jì)實(shí)現(xiàn) UART Universal Asynchronous Receiver Transmitter 是計(jì)算機(jī)串行通信系統(tǒng)中廣 泛使用的接口 發(fā)送端將計(jì)算機(jī)處理完的數(shù)據(jù)進(jìn)行并串轉(zhuǎn)換送給外圍設(shè)備 接收端將外 設(shè)傳送來(lái)的數(shù)據(jù)進(jìn)行串并轉(zhuǎn)換送給計(jì)算機(jī)處理 下面就如何設(shè)計(jì)UART模塊進(jìn)行重點(diǎn)分析 3 13 1 UARTUART 的設(shè)計(jì)分析的設(shè)計(jì)分析 3 1 1 UART 設(shè)計(jì)概述 UART通用異步收發(fā)器 是微機(jī)系統(tǒng)與外界串行設(shè)備進(jìn)行數(shù)據(jù)通信的芯片 作為RS 232C數(shù)據(jù)終端設(shè)備接口 UART主要提供以下主要功能 將微機(jī)系統(tǒng)內(nèi)部傳送來(lái)的并行數(shù)據(jù)轉(zhuǎn)換為串行數(shù)據(jù)流輸出 將微機(jī)系統(tǒng)外設(shè)發(fā)送來(lái)的 串行數(shù)據(jù)轉(zhuǎn)換為并行數(shù)據(jù) 供微機(jī)系統(tǒng)內(nèi)部器件處理 在輸出串行數(shù)據(jù)流中加入奇偶校 驗(yàn)位 啟停標(biāo)記 并對(duì)從外部接收的數(shù)據(jù)流進(jìn)行奇偶校驗(yàn) 刪除啟停標(biāo)記 本論文所設(shè)計(jì)的UART具有通用UART的基本功能 同時(shí)支持通用的異步串行通信協(xié)議 其基本功能如下 具有可編程串行接口特性 如字符數(shù)據(jù)位數(shù) 奇偶校驗(yàn)?zāi)J?通信速率 具有全雙工的數(shù)據(jù)發(fā)送器 接收器 能夠?qū)€路狀態(tài)以及錯(cuò)誤開始位的檢測(cè) 支持標(biāo)準(zhǔn)RS 232接口 接收通道發(fā)生奇偶校驗(yàn) 最大傳輸速率為系統(tǒng)時(shí)鐘1 16 本UART使用16次采樣 即在每一個(gè)采樣時(shí)鐘脈沖的上升沿采樣接收數(shù)據(jù)線 將第8個(gè) 脈沖采樣到的數(shù)據(jù)送至接收模塊的移位寄存器 計(jì)到第16個(gè)脈沖的時(shí)候代表一位數(shù)據(jù)位 接收完畢 脈沖計(jì)數(shù)值清零 開始下一位數(shù)據(jù)位的采樣 發(fā)送時(shí) 采樣時(shí)鐘每計(jì)數(shù)到16 次 輸出一比特?cái)?shù)據(jù) 同時(shí)計(jì)數(shù)值清零 開始下一位數(shù)據(jù)的傳送 3 1 2 UART 設(shè)計(jì)整體結(jié)構(gòu) 在了解 UART 的相關(guān)知識(shí)并結(jié)合 FPGA 的設(shè)計(jì)特點(diǎn)后 依據(jù) FPGA 的 TOP DOWN 設(shè)計(jì)方 法將 UART 的 FPGA 設(shè)計(jì)分為 4 個(gè)子模塊設(shè)計(jì) 頂層模塊設(shè)計(jì) 波特率發(fā)生模塊設(shè)計(jì) 接 收模塊設(shè)計(jì) 發(fā)送模塊設(shè)計(jì) 常熟理工學(xué)院畢業(yè)設(shè)計(jì) 論文 13 3 23 2 UARTUART 模塊模塊設(shè)計(jì)設(shè)計(jì) 3 2 1 頂層模塊設(shè)計(jì) 異步收發(fā)器的頂層模塊由波特率發(fā)生器 UART 接收器和 UART 發(fā)送器構(gòu)成 UART 發(fā) 送器的用途是將準(zhǔn)備輸出的并行數(shù)據(jù)按照基本 UART 幀格式轉(zhuǎn)為 TXD 信號(hào)串行輸出 UART 接收器接收 RXD 串行信號(hào) 并將其轉(zhuǎn)化為并行數(shù)據(jù) 波特率發(fā)生器就是專門產(chǎn)生一個(gè)遠(yuǎn) 高于波特率的本地時(shí)鐘信號(hào)對(duì)輸入 RXD 不斷采樣 使接收器與發(fā)送器保持同步 將波特 率發(fā)生器 發(fā)送器和接收器簡(jiǎn)單的組裝起來(lái) 就能較容易地實(shí)現(xiàn)通用異步收發(fā)器總模塊 頂層模塊 RTL 級(jí)圖和頂層模塊接口信號(hào)分別如圖 3 1 圖 3 2 所示 圖 3 1 頂層模塊的 RTL 圖 圖 3 2 頂層模塊接口信號(hào) 3 2 2 波特率發(fā)生模塊設(shè)計(jì) 波特率是單位時(shí)間內(nèi)傳送的二進(jìn)制數(shù)據(jù)的位數(shù) 以位 秒 b s 表示 也稱為數(shù)據(jù)位 率 收 發(fā)時(shí)鐘頻率與波特率之間關(guān)系 收 發(fā)時(shí)鐘頻率 N 波特率 N 可以取 8 16 32 和 64 等 為了兼顧速度和穩(wěn)定性一般取為 16 N 在硬件設(shè)計(jì)時(shí) 已經(jīng)設(shè)定好 軟件不能改變 波特率發(fā)生器由兩個(gè) 8 位的數(shù)據(jù)寄存器組合成 16 位的分頻 寄存器 可以實(shí)現(xiàn)系統(tǒng)頻率的 1 2 16 分頻 達(dá)到預(yù)定的波特率設(shè)置 波特率發(fā)生器的功能是產(chǎn)生和 RS 232 通信所采用的波特率同步的時(shí)鐘 實(shí)現(xiàn)波特率 時(shí)鐘的基本思路就是設(shè)計(jì)一個(gè)計(jì)數(shù)器 該計(jì)數(shù)器工作在速度很高的系統(tǒng)時(shí)鐘下 當(dāng)計(jì)數(shù)到 某數(shù)值時(shí)將輸出置為高電平 再計(jì)數(shù)一定數(shù)值后將輸出置為低電平 如此反復(fù)就能得到所 需的波特率時(shí)鐘 由于內(nèi)部采樣時(shí)鐘 bclk 周期 由波特率發(fā)生器產(chǎn)生 是發(fā)送或接收波特 常熟理工學(xué)院畢業(yè)設(shè)計(jì) 論文 14 率時(shí)鐘頻率的 16 倍 例如 FPGA 的系統(tǒng)時(shí)鐘為 40MHz 通信波特率為 9600bps 則波特率時(shí) 鐘的每個(gè)周期約相當(dāng)于 260 個(gè)系統(tǒng)時(shí)鐘的周期 假如要得到占空比為 50 的波特率時(shí)鐘 只要使計(jì)數(shù)器在計(jì)數(shù)到 260 50 130 時(shí)將輸出置為高電 平 之后在計(jì)數(shù)到 260 時(shí)輸出低電平并重新計(jì)數(shù) 就能得到 和 9600 波特率同步的時(shí)鐘 波特率發(fā)生器接口信號(hào)如圖 3 3 所示 3 2 3 接收模塊設(shè)計(jì) 接收模塊是發(fā)送模塊功能的逆序執(zhí)行 它接收來(lái)自外部的串行數(shù)據(jù) 根據(jù)配置去除 數(shù)據(jù)的起始位 停止位和奇偶校驗(yàn)位 若出現(xiàn)數(shù)據(jù)的奇偶校驗(yàn)有差錯(cuò)則立即產(chǎn)生錯(cuò)誤信 息 如果沒(méi)有錯(cuò)誤 則將剩余的 8 位有用數(shù)據(jù)送入 RBR Receive Buffer Register 接收 緩沖寄存器 再由 RBR 送給 CPU 串行數(shù)據(jù)幀和接收時(shí)鐘是異步的 發(fā)送來(lái)的數(shù)據(jù)由邏輯 1 變?yōu)檫壿?0 可以視為一個(gè) 數(shù)據(jù)幀的開始 接收器先要捕捉起始位 確定 RXD REC 輸入由 1 到 0 邏輯 0 要 8 個(gè) bclk 時(shí)鐘周期 才是正常的起始位 然后在每隔 16 個(gè) bclk 時(shí)鐘周期采樣接收數(shù)據(jù) 移 位輸入接收移位寄存器 rec buf 最后輸出數(shù)據(jù) 還要輸出一個(gè)數(shù)據(jù)接收標(biāo)志信號(hào) rec ok 標(biāo)志數(shù)據(jù)接收完 UART 接收器接口信號(hào)如圖 3 4 所示 圖 3 4 接收模塊接口信號(hào) 由于串行數(shù)據(jù)幀和接收時(shí)鐘是異步的 由邏輯 1 轉(zhuǎn)為邏輯 0 可以被視為一個(gè)數(shù)據(jù)幀 的起始位 然而 為了避免信號(hào)干擾 得到正確的起始位信號(hào) 必須要求接收到的起始 位在波特率時(shí)鐘采樣的過(guò)程中至少有一半都是屬于邏輯 0 才可認(rèn)定接收到的是起始位 由于內(nèi)部采樣時(shí)鐘 bclk 周期 由波特率發(fā)生器產(chǎn)生 是發(fā)送或接收波特率時(shí)鐘頻率的 16 倍 所以起始位需要至少 8 個(gè)連續(xù) bclk 周期的邏輯 0 被接收到 才認(rèn)為起始位接收到 接著數(shù)據(jù)位和奇偶校驗(yàn)位將每隔 16 個(gè) bclk 周期被采樣一次 即每一個(gè)波特率時(shí)鐘被采樣 一次 如果起始位的確是 16 個(gè) bclk 周期長(zhǎng) 那么接下來(lái)的數(shù)據(jù)將在每個(gè)位的中點(diǎn)處被 采樣 UART 接收器的狀態(tài)機(jī)一共有 5 個(gè)狀態(tài) 圖 3 3 波特率模塊接口信號(hào) 常熟理工學(xué)院畢業(yè)設(shè)計(jì) 論文 15 1 等待起始位狀態(tài) REC START 當(dāng) UART 接收器復(fù)位后 接收狀態(tài)機(jī)將處于這一狀態(tài)下 此時(shí) 接受狀態(tài)機(jī)一直在等 待 RXD 的電平從邏輯 1 變?yōu)檫壿?0 的跳轉(zhuǎn) 一旦確定了產(chǎn)生電平跳變 狀態(tài)機(jī)將轉(zhuǎn)入 REC CENTER 狀態(tài) 在 REC CENTER 狀態(tài)中檢測(cè)是否為起始位 確定即意味著新的一 UART 數(shù)據(jù)幀的開始 RXD SYNC 信號(hào)是 RXD 的同步信號(hào) 因?yàn)樵谶M(jìn)行邏輯 1 或邏輯 0 判斷時(shí) 不希望檢測(cè)的信號(hào)是不穩(wěn)定的 所以不直接檢測(cè) RXD 信號(hào) 而是檢測(cè)經(jīng)過(guò)同步后的 RXD SYNC 信號(hào) 2 確定起始位并求中點(diǎn)狀態(tài) REC CENTER 對(duì)于異步串行信號(hào) 為了使每次都能正確檢測(cè)數(shù)據(jù)位信號(hào) 且在后面的數(shù)據(jù)位檢測(cè) 時(shí)累計(jì)誤差較小 顯然在每位的中點(diǎn)檢測(cè)是最為理想的 本狀態(tài)就是通過(guò)對(duì) bclk 的個(gè)數(shù) 進(jìn)行計(jì)數(shù) REC CNT16 由起始位求出每位的中點(diǎn) 但計(jì)數(shù)值要考慮得當(dāng) 正確選擇 要考 慮經(jīng)過(guò)一個(gè)狀態(tài) 也即經(jīng)過(guò)了一個(gè) bclk 周期 所希望得到的是在采樣時(shí) 1 2 位 8 個(gè) bclk 周期 另外 在 REC START 狀態(tài)檢測(cè)到的起始位可能不是真正的起始位 可能是一 個(gè)偶然出現(xiàn)的干擾尖脈沖 負(fù)脈沖 但這種干擾脈沖的周期是很短的 所以可以認(rèn)為檢 測(cè)到的邏輯 0 保持時(shí)間超過(guò) 1 2 個(gè)位時(shí)間 8 個(gè) bclk 周期 的信號(hào)一定是起始位 3 等待采樣狀態(tài) REC WAIT 當(dāng)狀態(tài)機(jī)處于這一狀態(tài) 等待計(jì)滿 15 個(gè) bclk 在第 16 個(gè) bclk 是進(jìn)入 REC SAMPLE 狀態(tài)進(jìn)行數(shù)據(jù)位的采樣檢測(cè) 同時(shí)也判斷數(shù)據(jù)位長(zhǎng)度是否已達(dá)到數(shù)據(jù)幀的長(zhǎng)度 FrameLen 如果計(jì)數(shù)已滿 就說(shuō)明停止位來(lái)臨了 FrameLeng 是可更改的 使用了 Generic 在本設(shè) 計(jì)中默認(rèn)為 8 即對(duì)應(yīng)的 UART 工作在 8 位數(shù)據(jù)位 奇偶校驗(yàn)任選 4 采樣數(shù)據(jù)狀態(tài) REC SAMPLE 即數(shù)據(jù)位采樣檢測(cè) 同時(shí)對(duì)已接受的數(shù)據(jù)求奇偶校驗(yàn) 完成后無(wú)條件狀態(tài)機(jī)轉(zhuǎn)入 REC WAIT 狀態(tài) 等待下次數(shù)據(jù)位的到來(lái) 5 停止位和奇偶校驗(yàn)接收狀態(tài) REC STOP 無(wú)論停止位是 1 位還是 1 5 位 或是 2 位 狀態(tài)機(jī)在 REC STOP 不具體檢測(cè) RXD 在 無(wú)奇偶校驗(yàn)時(shí)只是輸出幀接收完畢信號(hào) rec ok 1 停止位后狀態(tài)機(jī)轉(zhuǎn)回到 REC START 狀態(tài) 等待下一個(gè)幀的起始位 在有奇偶校驗(yàn)時(shí)判斷接收到的校驗(yàn)位與求出的 校驗(yàn)值是否相同 若相同則表明接受的數(shù)據(jù)正確 rec ok 出 1 error 輸出 0 不 相同表明接受的數(shù)據(jù)有錯(cuò)誤 rec ok 輸出 0 error 輸出 1 狀態(tài)轉(zhuǎn)移如圖 3 4 所 示 狀態(tài)機(jī)部分實(shí)現(xiàn)代碼見(jiàn)附錄 接收模塊狀態(tài)機(jī)部分代碼 常熟理工學(xué)院畢業(yè)設(shè)計(jì) 論文 16 上述狀態(tài)定義如下 type states is rec start rec center rec wait rec sample rec stop 定義各子狀態(tài) signal state states rec start 圖 3 4 接收模塊狀態(tài)機(jī) 3 2 4 發(fā)送模塊設(shè)計(jì) 發(fā)送模塊的核心是狀態(tài)機(jī) 它可以讀入來(lái)自 THR Transmit Hold Register 發(fā)送保持 寄存器的數(shù)據(jù) 并根據(jù)配置寄存器里面的信息加入起始位 1 1 5 或 2 位停止位和奇偶 校驗(yàn)位 然后把打包的數(shù)據(jù)通過(guò)移位寄存器把數(shù)據(jù)以標(biāo)準(zhǔn)的串口協(xié)議發(fā)送給串口接收設(shè) 備 數(shù)據(jù)的發(fā)送是由微處理器控制 微處理器給出 tansfer cmd 信號(hào) 發(fā)送器根據(jù)此信 號(hào)將并行數(shù)據(jù) txdbuf framleng 1 0 通過(guò)移位操作發(fā)送串行數(shù)據(jù)至串行數(shù)據(jù)輸出端 txd 在數(shù)據(jù)發(fā)送過(guò)程中用輸出信號(hào) send over 作為標(biāo)志信號(hào) 當(dāng)數(shù)據(jù)移位串行發(fā)送完畢 時(shí) send over 信號(hào)為 1 通知 CPU 在下個(gè)時(shí)鐘裝入新數(shù)據(jù) UART 發(fā)送器的接口信號(hào)如 圖 3 5 所示 圖 3 5 發(fā)送模塊器的接口信號(hào) 發(fā)送器只要每隔 l6 個(gè) bclk 周期輸出 1 個(gè)數(shù)據(jù)即可 次序遵循第 1 位是起始位 第 8 位是停止位 在本設(shè)計(jì)中可選擇是否產(chǎn)生校驗(yàn)位 改變 Generic 參數(shù) FrameLent 可以 改變數(shù)據(jù)長(zhǎng)度 停止位是固定的 1 位格式 在發(fā)送時(shí)已計(jì)算出此數(shù)據(jù)的奇偶校驗(yàn)值 發(fā)送狀態(tài)機(jī)一共有 5 個(gè)狀態(tài)如圖 3 6 所示 常熟理工學(xué)院畢業(yè)設(shè)計(jì) 論文 17 1 空閑狀態(tài) TRA IDLE 當(dāng) UART 被復(fù)位后 狀態(tài)機(jī)將立刻進(jìn)入這一狀態(tài) UART 的發(fā)送器一直在等待數(shù)據(jù)幀發(fā) 送命令 TRANSFER CMD TRA CMD 信號(hào)是對(duì) TRANSFER CMD 的處理 TRA CMD 是一個(gè)短脈沖 信號(hào) 當(dāng) TRA CMD 1 狀態(tài)機(jī)轉(zhuǎn)入 TRA START 準(zhǔn)備發(fā)送起始位 2 發(fā)送起始位狀態(tài) TRA START 在這個(gè)狀態(tài)下 UART 的發(fā)送器發(fā)送一個(gè) bclk 周期時(shí)間寬度的邏輯 0 信號(hào)至 TXD 緊 接著狀態(tài)機(jī)轉(zhuǎn)入 TRA WAIT 狀態(tài) TRA CNT 是 bclk 的計(jì)數(shù)器 3 等待移位狀態(tài) TRA WAIT 當(dāng)狀態(tài)機(jī)處于這一狀態(tài) 先等待計(jì)滿 15 個(gè) bclk 完成一個(gè)完整的起始位發(fā)送 在第 16 個(gè) bclk 是進(jìn)入 TRA SHIFT 狀態(tài)進(jìn)行數(shù)據(jù)移位發(fā)送 同時(shí)也判斷數(shù)據(jù)位長(zhǎng)度是否已達(dá)到 數(shù)據(jù)幀的長(zhǎng)度 FrameLeng 如果計(jì)數(shù)已滿 就說(shuō)明數(shù)據(jù)發(fā)送完畢 進(jìn)入 TRA STOP 狀態(tài) 4 移位狀態(tài) TRA SHIFT 當(dāng)狀態(tài)機(jī)處于這一狀態(tài)時(shí) 實(shí)現(xiàn)待發(fā)數(shù)據(jù)的并串轉(zhuǎn)換并發(fā)送 TRA WAIT 轉(zhuǎn)換完成立 即回到 TRA WAIT 狀態(tài) 5 校驗(yàn) 停止位狀態(tài) TRA STOP 當(dāng)數(shù)據(jù)幀發(fā)送完畢 狀態(tài)機(jī)轉(zhuǎn)入該狀態(tài) 此狀態(tài)下先判斷是否要發(fā)送奇偶校驗(yàn)位 若需要?jiǎng)t先發(fā)送校驗(yàn)位后發(fā)送停止位 不需要直接發(fā)送 16 個(gè) bclk 周期的邏輯 1 信號(hào) 即 1 位停止位 狀態(tài)機(jī)送完停止位后判斷 TRANSFER CMD 信號(hào) 為 1 回到 TRA IDLE 狀態(tài) 并等待另一個(gè)數(shù)據(jù)幀的發(fā)送命令 狀態(tài)機(jī)部分實(shí)現(xiàn)代碼見(jiàn)附錄 發(fā)送模塊狀態(tài)及部分代 碼 發(fā)送模塊狀態(tài)定義如下 type states is tra idle tra start tra wait tra shift tra stop

溫馨提示

  • 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)論