版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、摘 要UART(Universal Asynchronous Receiver/Transmitter),通用異步接收/發(fā)送裝置,是設(shè)備之間進(jìn)行通信廣泛使用的接口。當(dāng)兩個(gè)設(shè)備需要通信時(shí),通常采用數(shù)字信號(hào),這種并行的信號(hào)必須轉(zhuǎn)換成串行信號(hào)才能傳輸。在目的端,串行信號(hào)又轉(zhuǎn)換成并行信號(hào)進(jìn)行處理。UART 控制器就是處理這種數(shù)據(jù)總線和串行口之間的串-并和并-串轉(zhuǎn)換。本文所要實(shí)現(xiàn)的就是這種串-并和并-串的轉(zhuǎn)換,使之能夠進(jìn)行數(shù)據(jù)的傳輸。現(xiàn)在市場上有許多為 UART 開發(fā)的專用芯片,但是其功能固定,不能根據(jù)用戶的需求來靈活的改變控制邏輯。因此,本文介紹了用 FPGA 技術(shù)實(shí)現(xiàn) UART 控制器設(shè)計(jì)的一種方法
2、,用 VHDL 進(jìn)行編程,在 MAX+plus II 10.2 下進(jìn)行編譯及仿真,從而實(shí)現(xiàn)能夠更改靈活、既方便又實(shí)用的 UART 具有重要意義。關(guān)鍵字:FPGA,VHDL,UART,接收,發(fā)送AbstractUART(Universal Asynchronous Receiver/Transmitter),is the key of communications between devices.When a device needs to communicate with a connected device,usually digital signals applied,which must
3、 be transformed into serialised signal to another device. UART processes this serial_data to parallel_data /parallel _data to serial_data transform between data bus and slave port.This paper is to implement this serial to parallel and parallel to serial transform and 1make the transferring between d
4、ata properly.This paper introduces a method implemented by FPGA technique programmed by VHDL,simulated and compiled by MAX+plus II 10.2. in order to make it flexible, convenient and practical so that the UART is great significance.Keywords:FPGA,VHDL ,UART,receive ,send 目錄摘 要.1ABSTRACT.2第一章 前 言.51.1
5、本文研究的背景 .512 本文研究的內(nèi)容 .51.3 本論文的結(jié)構(gòu)安排如下 .6第二章 計(jì)算機(jī)接口與 RS-232 串口簡介.72.1 計(jì)算機(jī)接口介紹 .72.1.1 計(jì)算機(jī)接口簡介 .72.2 RS-232 串口通信簡介.82.2.1 串行通信概述 .82.2.2RS-232 協(xié)議.92.2.3RS-232 通信時(shí)序和 UART .112.2.4. 串行通信實(shí)現(xiàn)方案 .13第三章 EDA 技術(shù)及 FPGA 的概述 .143.1 EDA 技術(shù)發(fā)展歷程 .143.1.1 CAD 階段 .143.1.2 CAE 階段.143.1.3 EDA 階段.153.2 EDA 技術(shù)的基本特征及優(yōu)勢.153.
6、3 MAX+PLUS II 軟件介紹.163.3.1 MAX+plus II 開發(fā)系統(tǒng)的特點(diǎn).183.3.2 項(xiàng)目編譯 .193.3.3 項(xiàng)目仿真 .20第四章 UART 方案設(shè)計(jì).214.1 UART 實(shí)現(xiàn)原理.214.2 UART 工作流程.22第五章 UART 模塊的 VHDL 語言設(shè)計(jì) .255.1 信號(hào)監(jiān)測模塊的實(shí)現(xiàn) .255.2 波特率發(fā)生器模塊的實(shí)現(xiàn) .255.3 移位寄存器模塊的實(shí)現(xiàn) .285.4 奇偶校驗(yàn)器模塊實(shí)現(xiàn) .295.5 總線選擇模塊的實(shí)現(xiàn) .305.6 計(jì)數(shù)器模塊的實(shí)現(xiàn) .315.7 UART 內(nèi)核模塊的實(shí)現(xiàn).325.7.1 UART 內(nèi)核模塊的接口.325.7.2
7、 UART 內(nèi)核模塊的狀態(tài)機(jī)設(shè)計(jì).385.7.3 UART 內(nèi)核模塊的實(shí)現(xiàn).405.8 UART 頂層模塊的實(shí)現(xiàn).48第六章 UART 的 VHDL 程序的仿真、驗(yàn)證.526. 1 編譯、綜合.526. 2 UART 主要模塊仿真波形.526.2.1 信號(hào)監(jiān)測器模塊的仿真 .526.2.2 波特率時(shí)鐘模塊的仿真 .536.2.3 移位寄存器模塊的仿真 .536.2.4 奇偶校驗(yàn)器模塊的仿真 .536.2.5 總線選擇器模塊的仿真 .546.2.6 計(jì)數(shù)器模塊的仿真 .546.2.7 頂層模塊的仿真 .54總 結(jié).57致 謝.58參考文獻(xiàn).590第一章 前 言1.1 本文研究的背景在 1980
8、至 1990 年代,提供 FPGA 數(shù)萬邏輯門的 FPGA 器件主要被系統(tǒng)設(shè)計(jì)人員用作“連接邏輯”,將電路板上的不同元器件連接到一起,或用來修正ASIC 不方便處理的問題。但在 1990 年代末期,百萬門現(xiàn)場可編程門陣列(FPGA)產(chǎn)品的出現(xiàn)使在單塊可編程芯片中集成系統(tǒng)級功能成為可能。目前市場上出售的最大規(guī)模 FPGA 產(chǎn)品有 600 萬系統(tǒng)門和 1.4 億個(gè)晶體管,已經(jīng)躋身于最復(fù)雜的半導(dǎo)體器件之列。而如今,F(xiàn)PGA 的一些新的技術(shù)發(fā)展趨勢不僅使其越來越多地替代 ASIC,成為可編程邏輯領(lǐng)域的主流產(chǎn)品,從 ASIC 市場搶奪越來越多的市場份額;同時(shí),還為自身不斷帶來新的利潤增長點(diǎn)和廣闊的市場前
9、景串行外設(shè)都會(huì)用到 RS232-C 異步串行接口,傳統(tǒng)上采用專用的集成電路即 UART 實(shí)現(xiàn),如 TI、EXAR、EPIC 的。550、452 等系列,但是我們一般不需要使用完整的 UART 的功能,而且對于多串口的設(shè)備或需要加密通訊的場合使用 UART 也不是最合適的。如果設(shè)計(jì)上用到了 FPGA/CPLD 器件,那么就可以將所需要的 UART 功能集成到 FPGA 內(nèi)部。FPGA 的發(fā)展也促進(jìn)了 PLD 設(shè)計(jì)方法的進(jìn)步,基于硬件描述語言(HDL)高級綜合的電子設(shè)計(jì)自動(dòng)化(EDA)方法已成為 FPGA 的主流設(shè)計(jì)技術(shù),使得用戶能夠高效地完成復(fù)雜地大型設(shè)計(jì)任務(wù),并直接生成 FPGA 的 ASIC
10、 器件。12 本文研究的內(nèi)容本論文的任務(wù)就是在 FPGA 技術(shù)的基礎(chǔ)上,用 VHDL 語言來描述 UART 功能,使之能完成 UART 的一些主要功能:1)寫數(shù)據(jù) 將數(shù)據(jù)總線上的一個(gè)數(shù)據(jù)寫入發(fā)送寄存器。2)讀數(shù)據(jù) 數(shù)據(jù)從輸出寄存器發(fā)送到數(shù)據(jù)總線上。3)數(shù)據(jù)接收控制 當(dāng)數(shù)據(jù)接收端 RxD 出現(xiàn)低電平,一個(gè)數(shù)據(jù)啟動(dòng)位到來時(shí)送數(shù)據(jù)到來。5)接收數(shù)據(jù)移位控制 進(jìn)行數(shù)據(jù),一個(gè)接收計(jì)數(shù)周期開始,當(dāng)計(jì)數(shù)到 7 時(shí),計(jì)數(shù)器清零等待下一個(gè)啟動(dòng)位的到來。4)數(shù)據(jù)發(fā)送控制 當(dāng)一個(gè)數(shù)據(jù)寫入到發(fā)送寄存器時(shí),其控制計(jì)數(shù)器開始一個(gè)發(fā)送的計(jì)數(shù)周期,當(dāng)一個(gè)數(shù)據(jù)發(fā)送結(jié)束,計(jì)數(shù)器清零,等待下一個(gè)發(fā)的串并1變換。6)發(fā)送數(shù)據(jù)的并串變
11、化。1.3 本論文的結(jié)構(gòu)安排如下本論文的結(jié)構(gòu)安排如下第 1 章 前言,主要介紹了課題的背景以及研究的意義,相關(guān)領(lǐng)域的發(fā)展和研究現(xiàn)狀,提出了本文的主要研究內(nèi)容。第 2 章 計(jì)算機(jī)接口與 RS-232 串口簡介;介紹了常用的計(jì)算機(jī)接口,接口的控制方式,串行通信的工作原理,RS-232 協(xié)議,RS-232 通信時(shí)序和 UART,串行通信的實(shí)現(xiàn)方案。第 3 章 UART 設(shè)計(jì)方案。介紹了 UART 實(shí)現(xiàn)原理、UART 工作流程。第 4 章 EDA 技術(shù)及 FPGA 的概述;介紹了 EDA 技術(shù)的定義及發(fā)展歷程、VHDL 語言及程序結(jié)構(gòu)、可編程邏輯器件、CPLD 與 FPGA 及其特點(diǎn)。第 5 章 UA
12、RT 模塊的 VHDL 語言設(shè)計(jì)及仿真;介紹了語言的描述方式、信號(hào)檢測模塊的實(shí)現(xiàn)、波特率發(fā)生器模塊的實(shí)現(xiàn)、移位寄存器模塊的實(shí)現(xiàn)、奇偶校驗(yàn)器模塊的實(shí)現(xiàn)、總線選擇模塊的實(shí)現(xiàn)、計(jì)數(shù)器模塊的實(shí)現(xiàn)、UART 內(nèi)核模塊的實(shí)現(xiàn)、UART 頂層模塊的實(shí)現(xiàn)。第 6 章 UART 的 VHDL 程序的編譯、綜合、仿真、驗(yàn)證;介紹了編譯、綜合,系統(tǒng)描述波形仿真,包括信號(hào)監(jiān)測器模塊的仿真、波特率時(shí)鐘模塊的仿真、移位寄存器模塊的仿真、奇偶校驗(yàn)?zāi)K的仿真、總線選擇器模塊的仿真、計(jì)數(shù)器模塊的仿真、頂層模塊的仿真。最后,對本文研究工作進(jìn)行總結(jié)和展望,探討今后工作改進(jìn)的方法。2第二章 計(jì)算機(jī)接口與 RS-232 串口簡介2.1
13、 計(jì)算機(jī)接口介紹2.1.1 計(jì)算機(jī)接口簡介計(jì)算機(jī)接口有串行接口、并行接口、磁盤接口等。1.串行接口串行口是計(jì)算機(jī)的一種標(biāo)準(zhǔn)接口,現(xiàn)在的 PC 機(jī)至少有 COM1 和 COM2 兩個(gè)串行口。串行口的數(shù)據(jù)和控制信息是一位接一位串行地傳送下去。雖然速度會(huì)慢一些,但傳送距離較并行口更長,長距離的通信要使用串行口。COM1 使用的是9 針 D 形連接器,而 COM2 有些使用的是老式的 DB25 針連接器。2.并行接口目前,計(jì)算機(jī)中的并行接口主要用于打印機(jī)端口,接口使用的是 25 針 D 形接頭。所謂“并行”,就是指 8 位數(shù)據(jù)同時(shí)通過并行線傳送,這樣數(shù)據(jù)傳送速度得到提高,但并行傳送的線路長度增加,干擾
14、會(huì)增加,容易出錯(cuò)。標(biāo)準(zhǔn)的并行口有 4 位、8 位、半 8 位:4 位口一次只能輸入 4 位數(shù)據(jù),但可以輸出 8 位數(shù)據(jù);8 位口的可以一次輸入和輸出 8 位數(shù)據(jù);半 8 位也可以。3.磁盤接口1)IDE 接口IDE 接口也叫 ATA 端口,只可接兩個(gè)容量小于 528M 的硬盤驅(qū)動(dòng)器,接口成本很低,在 386、486 時(shí)期非常流行。2)EIDE 接口EIDE 接口較 IDE 接口有了很大改進(jìn),是目前最流行的接口。2.1.2 接口控制方式CPU 通過接口對外設(shè)進(jìn)行控制的方式有以下幾種:1)程序查詢方式這種方式下,CPU 通過 I/O 指令詢問指定外設(shè)當(dāng)前的狀態(tài),如果外設(shè)準(zhǔn)備就緒,則進(jìn)行數(shù)據(jù)的輸入或
15、輸出,否則 CPU 等待,循環(huán)查詢。這種方式的結(jié)構(gòu)簡單,只需少量的硬件電路便可實(shí)現(xiàn),但不足在于 CPU 的速度高于外設(shè),CPU 通常處于等待狀態(tài),工作效率也就很低。2)中斷處理方式在這種方式下,CPU 是可以執(zhí)行其他程序的,當(dāng)外設(shè)為數(shù)據(jù)交換準(zhǔn)備好時(shí),3就可以向 CPU 提出請求,如果 CPU 響應(yīng)該請求,就暫時(shí)停止當(dāng)前的程序,去執(zhí)行和該請求對應(yīng)的程序,待該請求完成后,繼續(xù)執(zhí)行原來的程序。3)DMA(直接存儲(chǔ)器存?。﹤魉头绞紻MA 不是用軟件而是采用一個(gè)專門的控制器來控制內(nèi)存與外設(shè)之間的數(shù)據(jù)交流,不需要 CPU 介入,提高 CPU 的工作效率。2.2 RS-232 串口通信簡介2.2.1 串行通
16、信概述在計(jì)算機(jī)網(wǎng)絡(luò)、數(shù)據(jù)通信以及分布式工業(yè)控制系統(tǒng)中,常采用串行通信來實(shí)現(xiàn)數(shù)據(jù)和信息的交換。1969 年,EIA(美國電子工業(yè)協(xié)會(huì))將 RS-232 定為串行通信接口的電氣標(biāo)準(zhǔn),該標(biāo)準(zhǔn)定義了數(shù)據(jù)終端設(shè)備(DTE)和數(shù)據(jù)通信設(shè)備(DCE)將按位串行傳輸?shù)慕涌谛畔ⅲ侠淼陌才帕私涌诘碾姎庑盘?hào)和機(jī)械要求,適合于數(shù)據(jù)傳輸速率在 0-20000bit/s 范圍內(nèi)的通信。RS-232 不僅被內(nèi)置于每一臺(tái)計(jì)算機(jī)中,還被內(nèi)置于各種外設(shè)中。EIA(美國電子工業(yè)協(xié)會(huì))還制定了 RS-232 與 RS-485 標(biāo)準(zhǔn)。為彌補(bǔ) RS-232 不足提出了 RS-422。RS-422 定義了一種平衡通信接口,將傳輸速率提升
17、到10Mbit/s, 傳輸距離延長到 4000 英尺(速率低于 100kbit/s),并允許在一天平衡總線上連接最多 10 各連接器。RS-422 是一種單機(jī)發(fā)送、多機(jī)接收的單向、平衡傳輸規(guī)范,被命名為 TIA/EIA-422-A 標(biāo)準(zhǔn)。為擴(kuò)展應(yīng)用范圍,EIA 又于1983 年在 RS-433 基礎(chǔ)上制定了 RS-485 標(biāo)準(zhǔn),增強(qiáng)了多點(diǎn)、雙向通信能力,即允許多個(gè)收發(fā)器連到同一條總線上,同時(shí)增強(qiáng)了發(fā)送器的驅(qū)動(dòng)能力和沖突保護(hù)特性,擴(kuò)展了總線共模范圍,命名為 RS-485 標(biāo)準(zhǔn)。RS-232,RS-422 與 RS-485的電氣參數(shù)如表 2-1 所示。4表表 2-12-1 RS-232RS-232
18、,RS-422RS-422 與與 RS-485RS-485 的電氣參數(shù)的電氣參數(shù)規(guī)定RS-232RS-422RS-485工作方式單端差分差分節(jié)點(diǎn)數(shù)1 收 1 發(fā)1 發(fā) 10 收1 法 32 收最大傳輸電纜長度50 英尺400 英尺400 英尺最大傳輸速率20kbit/s10Mbit/s10Mbit/s最大驅(qū)動(dòng)輸出電壓+/-25V-0.25V+6V-7V+12V驅(qū)動(dòng)器輸出信號(hào)電平(附在最小值)+/-5V+/-15V+/-2.0V+/-1.5V驅(qū)動(dòng)器輸出信號(hào)電平(空載最大值)+/-25V+/-6V+/-6V驅(qū)動(dòng)器負(fù)載阻抗37 千歐姆100 歐姆54 歐姆擺率(最大值)30V/usN/AN/A接收器
19、輸入電壓范圍+/-15V-10V+10V-7V+12V接收器輸入門限+/-3V+/-200mV+/-200mV接收器輸入電阻37 千歐姆4 千歐姆(最小)=12 千歐姆驅(qū)動(dòng)器共模電壓-3V+3V-1V+3V接收器共模電壓-7V+7V-7V+12V雖然 RS-232,RS-422 與 RS-485 標(biāo)準(zhǔn)對電器特性做出了規(guī)范,但是沒有規(guī)定連接插件、電纜或協(xié)議,所以在此基礎(chǔ)上用戶可以建成自己的高層通信協(xié)議。RS-232 等協(xié)議在視頻傳輸中被廣泛應(yīng)用,許多廠家多建立了一套高層通信協(xié)議,或公開或廠家獨(dú)家使用。RS-232 是目前 PC 機(jī)與通信工業(yè)中應(yīng)用最廣泛的一種串行接口。2.2.2RS-232 協(xié)議
20、標(biāo)準(zhǔn)的 RS-232 接口有 25 跟信號(hào)線,4 根數(shù)據(jù)線、11 根控制線、3 根定時(shí)線和 7 根備用線。通常使用 9 根就可以實(shí)現(xiàn) RS-232 通信。1DSR 信號(hào)線DSR (Data Set Ready) 是數(shù)據(jù)裝置就緒,狀態(tài)為有效時(shí),表示 Modem 可以使用的狀態(tài)。2DTR 信號(hào)線DTR(Data Terminal Ready)以四位數(shù)據(jù)終端就緒,狀態(tài)為有效時(shí),數(shù)據(jù)終端可以使用。3RTS 信號(hào)線5RTS(Request To Send)是請求發(fā)送,終端需要發(fā)送數(shù)據(jù)時(shí),使該數(shù)據(jù)有效,向 Modem 請求發(fā)送。用于控制 Modem 是否有效,通知終端開始發(fā)送數(shù)據(jù)。4CTS 信號(hào)線CTS
21、(Clear To Send) 是允許發(fā)送,對 RTS 信號(hào)的響應(yīng)。當(dāng) Modem 已經(jīng)準(zhǔn)備好接收終端發(fā)送過來的數(shù)據(jù)時(shí),使該信號(hào)有效,通知終端開始發(fā)送數(shù)據(jù)。5DCD 信號(hào)線DCD (Data Carrier Detection) 為數(shù)據(jù)載波檢出,有效時(shí)表示 Modem 已經(jīng)接通了通信鏈路,即本地 Modem 受到了通信鏈路另一端的遠(yuǎn)程 Modem 送來的載波信號(hào),終端可以準(zhǔn)備接收數(shù)據(jù)。6RI 信號(hào)線RI(Ringing) 表示振鈴指示,但本地 Modem 受到交換臺(tái)發(fā)送的振鈴呼叫信號(hào)時(shí),使該信號(hào)有效,通知終端已被呼叫。TxD 信號(hào)線TxD(Transmitted Data)是發(fā)送數(shù)據(jù),終端通過
22、此信號(hào)將數(shù)據(jù)發(fā)送給Modem。8.RxD 信號(hào)線RxD (Received Data)是接收數(shù)據(jù),終端通過此信號(hào)從 Modem 接收數(shù)據(jù)。地線地線分別是信號(hào)地 SG (Signal Ground)和保護(hù)地 PE(Protection ground),信號(hào)地使所有信號(hào)的參考電平,保護(hù)地用于連接設(shè)備的外殼或者地表。常見的 RS-232 串行口連接器主要有兩種,一種是 25 針的 DB-25,另一種是9 針的 DB-9,其示意圖如圖 2.1 所示,DB-9 主要用于上述的 9 根信號(hào)線連接的方法,DB-25 可以連接所有的 RS-232 標(biāo)準(zhǔn)定義的信號(hào)線。DB-25 也可用像 DB-9那樣使用,但是
23、它們的針號(hào)與信號(hào)之間的連接關(guān)系是不一樣的,如表 2-2。6表表 2-22-2DB-9DB-9 與與 DB-9DB-9 針號(hào)信號(hào)線連接對應(yīng)表針號(hào)信號(hào)線連接對應(yīng)表9 針串口連接器 DB-925 針串口連接器 DB-25針號(hào)功能縮寫針號(hào)功能縮寫1數(shù)據(jù)載波檢測DCD8數(shù)據(jù)載波檢測DCD2接收數(shù)據(jù)RXD3接收數(shù)據(jù)RXD3發(fā)送數(shù)據(jù)TXD2發(fā)送數(shù)據(jù)TXD4數(shù)據(jù)終端準(zhǔn)備DTR20數(shù)據(jù)終端準(zhǔn)備DTR5信號(hào)線GND7信號(hào)線GND6數(shù)據(jù)設(shè)備準(zhǔn)備好DSR6數(shù)據(jù)設(shè)備準(zhǔn)備好DSR7請求發(fā)送RTS4請求發(fā)送RTS8清除發(fā)送CTS5清除發(fā)送CTS圖圖 2.12.1 RS-232RS-232 串行口連接器示意圖串行口連接器示意
24、圖最為簡單常用的 RS-232 連接方法是三線連接法,即地、接收數(shù)據(jù)和發(fā)送數(shù)據(jù)三角相連。對于上述的 DB-25 連接器和 DB-9 連接器,三線連接法的原則如下所示。表 2-3DB-25,DB-25, DB-9DB-9 三線連接法三線連接法DB-9- DB-9DB-25- DB-25DB-25-DB-9233222322333557757由于 RS-232 電氣特定的電平不符合通常電路中所使用的 TTL 或者 CMOS 點(diǎn)評,所以在接入電路之前需要對其進(jìn)行轉(zhuǎn)換。RS-232 串口電平的轉(zhuǎn)換一般使用的是專門的芯片實(shí)現(xiàn),其中最常用的就是 MAX232。MAX232 可以將串口設(shè)備需要發(fā)送的 TTL
25、/CMOS 邏輯電平轉(zhuǎn)換為 RS-232 邏輯電平,同時(shí)也可以見要接收的RS-232 電平轉(zhuǎn)換為 TTL/CMOS 邏輯電平,下圖 2.2 為 MAX232 的頂層圖。7MAX232 典型的連接方法如圖 2.3 所示,其中有 5 個(gè) 0.1u 的去耦電容;11管腳和 10 管腳是 TTL/CMOS 電平輸入,對應(yīng) 14 管腳和 7 管腳的 RS-232 電平輸出,它們一般接到 RS-232 的 RxD 上,12 管腳和 9 管腳是 TTL/CMOS 電平輸出,對應(yīng) 13 管腳和 8 管腳的 RS-232 電平輸入,它們一般接到 RS-232 的 TxD 上。2.2.3RS-232 通信時(shí)序和
26、UART在串行通信中,用“波特率”來描述數(shù)據(jù)的傳輸速率。所謂波特率,即每秒鐘傳送的二進(jìn)制位數(shù),其單位是 bit/s(bit per second ),它是衡量傳輸串行數(shù)據(jù)速度快慢的重要指標(biāo)。有時(shí)也用“位周期”來表示傳輸速率,位周期是波特率的倒數(shù)。國際上規(guī)定了一個(gè)波特率系列,110bit/s、300bit/s、600bit/s、1200bit/s、1800bit/s、2400bit/s、4800bit/s、9600bit/s、14.4kbit/s、19.2kbit/s、28.8kbit/s、33.6kbit/s、56kbit/s。如 9600bit/s,其意義是每秒鐘傳送 9600 位數(shù)據(jù),包含
27、字符位和其他的必要位,如奇偶校驗(yàn)位、起始位、停止位。大多數(shù)串行接口電路的接收波特率和發(fā)送波特率多可以設(shè)置,但接收方的接收波特率必須與發(fā)送方的發(fā)送波特率相同。通信線上所傳輸?shù)淖址麛?shù)據(jù)(代碼)都是逐位傳送的,1 個(gè)字符由若干位組成,因此每秒種所傳輸?shù)淖址麛?shù)(字符速率)波特率是兩種概念。在串行通信中所說的傳輸速率是指波特率,而不是指字符速率,假如在異步串行通信中,傳輸一個(gè)字符,包括 12 位(其中8有一個(gè)起始位,8 個(gè)數(shù)據(jù)位,2 個(gè)停止位),其傳輸速率是 1200bit/s,每秒所能傳送的字符是 1200/(1+8+1+2)=100 個(gè)。在串行通信中,除了可以設(shè)置波特率外,其他的如字符數(shù)據(jù)的位數(shù)、奇
28、偶校驗(yàn)位、停止位也可以被設(shè)置。其中,字符數(shù)據(jù)的位數(shù)可以被設(shè)置為 58 位;奇偶校驗(yàn)位可以去除,也可以設(shè)置為奇校驗(yàn)或者偶校驗(yàn);停止位可以設(shè)置為 1位、1.5 位或者 2 位。串行通信的時(shí)序,串行總線在空閑時(shí)保持邏輯“1”狀態(tài)(即串行連接線上的電平為-3-15V),當(dāng)需要傳送一個(gè)字符時(shí),首先會(huì)發(fā)送一個(gè)邏輯“0”的起始位,表示開始發(fā)送數(shù)據(jù);之后,就逐個(gè)發(fā)送數(shù)據(jù)位、奇偶校驗(yàn)位和停止位(邏輯為“1”)。發(fā)送時(shí)序圖如圖 2.4 所示。圖圖 2.42.4 RS-232RS-232 串行口通信時(shí)序圖串行口通信時(shí)序圖對于一個(gè)設(shè)備的處理器來說,要接收和發(fā)送串行通信的數(shù)據(jù),還需要一個(gè)期間將串行口的數(shù)據(jù)轉(zhuǎn)換為并行口數(shù)
29、據(jù)以便于處理器進(jìn)行處理,這個(gè)器件就是UART ( Universial Asynchronous Receiver/Transmitter)全稱是通用異步收發(fā)器,其功能是輔助處理器與外部設(shè)備之間的通信。作為 RS-232 通信接口的一個(gè)重要部分,UART 具有以下功能:將由計(jì)算機(jī)內(nèi)部傳動(dòng)過來的并行數(shù)據(jù)轉(zhuǎn)換成用于輸出的串行數(shù)據(jù)。將計(jì)算機(jī)外部傳送來的串行數(shù)據(jù)轉(zhuǎn)換成字節(jié),供計(jì)算機(jī)內(nèi)部使用并行數(shù)據(jù)的器件使用。在輸出的串行通信數(shù)據(jù)流中加入奇偶校驗(yàn)位,并對從外部接收的數(shù)據(jù)進(jìn)行奇偶校驗(yàn)。在輸出數(shù)據(jù)流中加入啟停標(biāo)記,并從接收數(shù)據(jù)流中刪除啟停標(biāo)記。提供和處理器之間的通信信號(hào),可以處理處理器和串行通信設(shè)備之間的同
30、步管理問題。92.2.4. 串行通信實(shí)現(xiàn)方案實(shí)現(xiàn)串行通信主要需要完成三部分工作:(1) 將串口電壓轉(zhuǎn)換成設(shè)備電路板的工作電壓,即實(shí)現(xiàn) RS-232 電平和TTL/CMOS 電平的轉(zhuǎn)換。(2)接收并校驗(yàn)串行的數(shù)據(jù),將數(shù)據(jù)變成并行的數(shù)據(jù)并提供給處理器處理。(3)接收并行數(shù)據(jù)并轉(zhuǎn)換成串行數(shù)據(jù)供串行端口發(fā)送。10第三章 EDA 技術(shù)及 FPGA 的概述EDA(Electronic Design Automation)工程就是以計(jì)算機(jī)為工作平臺(tái),EDA軟件工具為開發(fā)環(huán)境,以硬件描述語言為設(shè)計(jì)語言,以可編程器件為實(shí)驗(yàn)載體,以 ASIC、SOC 芯片為目標(biāo)器件,以電子系統(tǒng)設(shè)計(jì)為應(yīng)用方向的電子產(chǎn)品自動(dòng)化設(shè)計(jì)過
31、程。3.1 EDA 技術(shù)發(fā)展歷程EDA 技術(shù)伴隨著計(jì)算機(jī)、集成電路、電子系統(tǒng)設(shè)計(jì)的發(fā)展,經(jīng)歷了計(jì)算機(jī)輔助設(shè)計(jì)(Computer Assist Design, 簡稱 CAD)、 計(jì)算機(jī)輔助工程設(shè)計(jì)(Compute Assist Engineering,簡稱 CAE)和電子設(shè)計(jì)自動(dòng)化(E1ectronic Design Automation,簡稱 EDA)三個(gè)發(fā)展階段。3.1.1 CAD 階段第一階段(20 世紀(jì) 60 年代中期20 世紀(jì) 80 年代初期),是 EDA 技術(shù)發(fā)展的初期,由于 PCB 布圖布線工具受到計(jì)算機(jī)工作平臺(tái)的制約,己無法滿足設(shè)計(jì)精度和效率的要求。因此工程師們開始進(jìn)行二維平面圖
32、形的計(jì)算機(jī)輔助設(shè)計(jì)(Computer Aided Design,CAD),產(chǎn)生了第一代 EDA 工具。該階段的特征是采用小型計(jì)算機(jī),軟件功能為交互式圖形編輯、設(shè)計(jì)規(guī)則檢查。第一代 EDA 工具用于集成電路的版圖設(shè)計(jì)。3.1.2 CAE 階段第二階段(20 世紀(jì) 80 年代中期20 世紀(jì) 90 年代初期),隨著計(jì)算機(jī)和集成電路的法展,出現(xiàn)了以計(jì)算機(jī)仿真和自動(dòng)布線為核心技術(shù)的第二代 EDA工具。產(chǎn)生了計(jì)算機(jī)輔助制造(Computer Aided Manufacturing,CAM)、計(jì)算機(jī)輔助測試(Computer Aided Test CAT)和計(jì)算機(jī)輔助工程(Computer Aided En
33、gineering CAE)等概念。第二代 EDA 工具的主要特征是以邏輯模擬、定時(shí)分析、故障仿真、自動(dòng)布局和布線為核心。此工具主要用來解決電路設(shè)計(jì)沒有完成之前的功能檢測等問題。113.1.3 EDA 階段20 世紀(jì) 90 年代以來,設(shè)計(jì)師逐步從使用硬件轉(zhuǎn)向設(shè)計(jì)硬件,從電路級電子產(chǎn)品開發(fā)轉(zhuǎn)向系統(tǒng)級電子產(chǎn)品開發(fā)(即片上系統(tǒng)集成),因此 EDA 工具是以系統(tǒng)設(shè)計(jì)為核心,包括系統(tǒng)行為級描述與結(jié)構(gòu)級綜合,系統(tǒng)仿真與測試驗(yàn)證,系統(tǒng)劃分與指標(biāo)分配,系統(tǒng)決策與文件生成等一整套的電子系統(tǒng)設(shè)計(jì)自動(dòng)化工具。EDA 工具不僅具有電子系統(tǒng)設(shè)計(jì)的能力,而且能提供獨(dú)立于工藝和廠家的系統(tǒng)級設(shè)計(jì)能力,具有高級抽象的設(shè)計(jì)構(gòu)思手
34、段。例如:提供方框圖、狀態(tài)圖和流程圖的編輯能力,具有適合層次描述和混合信號(hào)描述的硬件描述語言(如VHDL、AHDL 或 verilogHDL),同時(shí)含有各種工藝標(biāo)準(zhǔn)元件庫。第三代 EDA 工具可以使電子系統(tǒng)工程師在不熟悉各種半導(dǎo)體廠家和各種半導(dǎo)體工藝的情況下,完成電子系統(tǒng)的設(shè)計(jì)。3.2 EDA 技術(shù)的基本特征及優(yōu)勢現(xiàn)代 EDA 技術(shù)的基本特征是采用高級語言描述,具有系統(tǒng)級仿真和綜合能力。傳統(tǒng)手工設(shè)計(jì)方法對復(fù)雜電路的設(shè)計(jì)調(diào)試?yán)щy;在設(shè)計(jì)過程中對出現(xiàn)的錯(cuò)誤進(jìn)行查找和修改十分不便;不易管理在設(shè)計(jì)過程中產(chǎn)生的大量文檔;并且必須在設(shè)計(jì)完成后或生產(chǎn)出芯片后才能進(jìn)行實(shí)測,而 EDA 技術(shù)與其相比有著很大的優(yōu)
35、勢:采用硬件描述語言,有利于復(fù)雜系統(tǒng)的設(shè)計(jì);具有強(qiáng)大的系統(tǒng)建模和電路仿真功能;具有自主的知識(shí)產(chǎn)權(quán);其開發(fā)技術(shù)更標(biāo)準(zhǔn)化和規(guī)范化;全方位的利用計(jì)算機(jī)的自動(dòng)設(shè)計(jì)、仿真和測試技術(shù);對設(shè)計(jì)者的硬件知識(shí)和硬件經(jīng)驗(yàn)要求低。傳統(tǒng)的電路設(shè)計(jì)采用的是自底向上的設(shè)計(jì)方法,而 EDA 技術(shù)采用一種自頂向下的設(shè)計(jì)方法。所謂“自頂向下”法就是設(shè)計(jì)者首先從整體上規(guī)劃整個(gè)系統(tǒng)的功能和性能,然后將系統(tǒng)劃分為規(guī)模較小、功能較為簡單的局部模塊,并確立它們之間的相互關(guān)系,這種劃分過程可以不斷地進(jìn)行下去,直到劃分得到的單元可以映射到物理實(shí)現(xiàn)。圖 3-2-1 所示的是自頂向下與自底向上的設(shè)計(jì)比較。12圖圖 3-2-1 自頂向下與自底向上
36、的設(shè)計(jì)比較自頂向下與自底向上的設(shè)計(jì)比較自底向上的設(shè)計(jì)方法就是首先確定構(gòu)成系統(tǒng)的最底層的電路模塊或原件的結(jié)構(gòu)和功能,然后根據(jù)主系統(tǒng)的結(jié)構(gòu)和要求,將它們組合成更大的功能塊,使它們的結(jié)構(gòu)和功能滿足高層系統(tǒng)的要求。以此流程逐步向上遞推,直到完成整個(gè)目標(biāo)系統(tǒng)的設(shè)計(jì)。它可以用來解決系統(tǒng)最底層硬件的可獲得性和功能特性方面的諸多細(xì)節(jié)問題,不過在整個(gè)逐級設(shè)計(jì)和測試過程中,有時(shí)可能會(huì)出現(xiàn)目標(biāo)器件的更換、某些技術(shù)指標(biāo)不滿足要求或提高運(yùn)行速度等問題。因此,傳統(tǒng)的自底向上的設(shè)計(jì)方法是一種低效、低可靠性、且成本高昂的設(shè)計(jì)方法。而自頂而下的設(shè)計(jì)方法使系統(tǒng)被分成各個(gè)模塊的集合,然后將每個(gè)獨(dú)立模塊指派給不同的工作小組讓其分工合
37、作,最后將不同的模塊集合成一整體系統(tǒng)模型,并對其進(jìn)行綜合測試和評價(jià)。這樣一來系統(tǒng)性能參數(shù)將得到進(jìn)一步的細(xì)化與確認(rèn),并隨時(shí)可以根據(jù)需要加以調(diào)整,從而可保證設(shè)計(jì)結(jié)果的正確性,縮短設(shè)計(jì)周期,設(shè)計(jì)規(guī)模越大,這種設(shè)計(jì)方法的優(yōu)勢越明顯。3.3 MAX+plus II 軟件介紹MAX+PLUX II 開發(fā)工具是 Altera 自行設(shè)計(jì)的 EDA 軟件,Altera 是世界上最大可編程邏輯器件的供應(yīng)商之一。MAX+PLUX II 界面友好,使用便捷,被認(rèn)為是最易用易學(xué)的 EDA(Electronic Design Automation)軟件,可不需要第三方軟件,支持 3 萬門以下所有設(shè)計(jì)。如圖 4-3-1 所
38、示。在 MAX+PLUX II 上可以完成設(shè)計(jì)輸入、元件適配、時(shí)序仿真和功能仿真、編程下載整個(gè)流程它提供了一用系統(tǒng)級行為描述表達(dá)一個(gè)包輸入輸出的頂層模塊,同時(shí)完成整個(gè)系統(tǒng)的模擬與性能分析由 EDA 綜合工具完成到工藝的映射將系統(tǒng)劃分為各個(gè)功能模塊,每個(gè)模塊由更細(xì)化的行為描述表達(dá)由各個(gè)功能模塊連成一個(gè)完整系統(tǒng)由邏輯單元組成各個(gè)獨(dú)立的功能模塊由基本門組成各個(gè)組合與時(shí)序邏輯單元自頂向下(Top-down)自底向上(Bottom-up)進(jìn)行整個(gè)系統(tǒng)的測試與性能分析13種與結(jié)構(gòu)無關(guān)的設(shè)計(jì)環(huán)境,使設(shè)計(jì)者能方便地進(jìn)行設(shè)計(jì)輸入、快速處理和器件編程。圖圖 3-3-1 MAX+PLUX II 軟件的集成電路軟件的
39、集成電路MAX+PLUX II 被普片認(rèn)為是最優(yōu)秀的 PLD 開發(fā)平臺(tái)之一,適合開發(fā)中小規(guī)模 PLD/FPGAMAX+PLUX II 軟件的設(shè)計(jì)流程:輸入設(shè)計(jì)項(xiàng)目和存盤;編輯文本文件;將設(shè)計(jì)項(xiàng)目設(shè)置成工程文件 Project;選擇目標(biāo)器件進(jìn)行編譯;波形編譯;時(shí)序仿真;引腳鎖定;編程下載。打開 MAX+PLUX II,執(zhí)行菜單 File New 命令,彈出如圖 3-3-2 所示的新建文件對話框。 圖圖 3-3-2 新建文件對話框新建文件對話框MAX+PLUX II 將用戶所設(shè)計(jì)的電路原理圖或電路描述轉(zhuǎn)變?yōu)?CPLD/FPGA 內(nèi)部的基本邏輯單元,寫入芯片中,從而實(shí)現(xiàn)用戶所設(shè)計(jì)的電路。它的功能描述
40、如圖 3-3-3 所示14輸入設(shè)計(jì)MAX+PLUX IICPLD/FPGA實(shí)現(xiàn)圖圖 3-3-3 MAX+PLUX II 的功能描述的功能描述MAX+PLUX II 的具體功能如圖的具體功能如圖 3-3-4 所示所示圖圖 3-3-4MAX+PLUX II 具體功能具體功能3.3.1 MAX+plus II 開發(fā)系統(tǒng)的特點(diǎn)(1)開放的界面MAX+plus II 支持與 Cadence, Exemplarlogic, Mentor Graphics, Synplicty, Viewlogic 和其它公司所提供的 EDA 工具接口。(2)與結(jié)構(gòu)無關(guān)MAX+plus II 系統(tǒng)的核心 Complier
41、支持 Altera 公司的FLEX10K、FLEX8000、MAX9000、MAX7000、MAX5000 和 Classic 可編程邏輯器件,提供了世界上唯一真正與結(jié)構(gòu)無關(guān)的可編程邏輯設(shè)計(jì)環(huán)境。設(shè)計(jì)輸入 項(xiàng)目編譯項(xiàng)目校驗(yàn) 器件編程MAX+PLUX II文本編輯器MAX+PLUX II圖形編輯器編譯器網(wǎng)表提取器數(shù)據(jù)庫建庫器邏輯綜合器適配MAX+PLUX II時(shí)序分析器MAX+PLUX II 編程器MAX+PLUX II信息處理器和層次顯示15(3)完全集成化MAX+plus II 的設(shè)計(jì)輸入、處理與校驗(yàn)功能全部集成在統(tǒng)一的開發(fā)環(huán)境下,這樣可以加快動(dòng)態(tài)調(diào)試、縮短開發(fā)周期。( 4 ) 豐富的設(shè)計(jì)庫
42、MAX+plus II 提供豐富的庫單元供設(shè)計(jì)者調(diào)用,其中包括 74 系列的全部器件和多種特殊的邏輯功能(Macro-Function)以及新型的參數(shù)化的兆功能(Macro-Function)。( 5 ) 模塊化工具設(shè)計(jì)人員可以從各種設(shè)計(jì)輸入、處理和校驗(yàn)選項(xiàng)中進(jìn)行選擇從而使設(shè)計(jì)環(huán)境用戶化。( 6 ) 硬件描述語言(HDL)Max+plus II 軟件支持各種 HDL 設(shè)計(jì)輸入選項(xiàng),包括 VHDL、Verilog、HDL和 Altera 自己的硬件描述語言 AHDL。( 7 ) Opencore 特征Max+plus II 軟件具有開放核的特點(diǎn),允許設(shè)計(jì)人員添加自己認(rèn)為有價(jià)值的宏函數(shù)。.3.3.
43、2 項(xiàng)目編譯 使用編譯器 MAX+PLUSII 編譯設(shè)計(jì)項(xiàng)目時(shí),編譯器將進(jìn)行設(shè)計(jì)錯(cuò)誤檢查、網(wǎng)表提取、邏輯綜合和器件適配等。從圖 3-4-5 可見該項(xiàng)目設(shè)計(jì)正確,且該軟件自動(dòng)為該項(xiàng)目選取 FLEX10K 系列器件 EPF10K10LC84 芯片。圖圖3-4-5 VHDL 源代碼編譯過程源代碼編譯過程系統(tǒng)自動(dòng)通知應(yīng)選擇的下載器件編譯過程編譯成功163.3.3 項(xiàng)目仿真仿真的主要作用是驗(yàn)證工程的邏輯操作與時(shí)延的正確性。由于本例的數(shù)字系統(tǒng)是一個(gè)小規(guī)模的數(shù)字系統(tǒng),無需進(jìn)行代碼級的功能仿真。圖中的仿真是在邏輯綜合 、器件劃分、適配之后進(jìn)行的,只對邏輯綜合后符合規(guī)則的接點(diǎn)進(jìn)行仿真,其過程考慮了器件的物理結(jié)構(gòu)
44、造成的延時(shí),因此屬于時(shí)序仿真。運(yùn)行仿真器,執(zhí)行菜單 MAX+PLUS/Simulator 命令,單擊彈出的仿真器窗口的 Start 按鈕,對話框中會(huì)顯示“0 errors, 0 warnings”。如果沒有變化,看看是否因?yàn)轱@示比例太大,可以單擊圖左邊工具欄的縮小按鈕或顯示全部按鈕。當(dāng)仿真器結(jié)束工作時(shí),單擊 Open SCF 按鈕,將看到仿真結(jié)果。使用 MAX+PLUS開發(fā)軟件的波形編輯器直接畫出輸入激勵(lì)波形,啟動(dòng)仿真器,得到顯示模擬仿真的結(jié)果。17第四章 UART 方案設(shè)計(jì)4.1 UART 實(shí)現(xiàn)原理UART 主要由 UART 內(nèi)核、信號(hào)監(jiān)測器、移位寄存器、波特率發(fā)生器,計(jì)數(shù)器、總線選擇器和奇
45、偶校驗(yàn)器總共 7 個(gè)模塊組成,如圖 4.1.1 所示 圖圖 4.1.14.1.1 UARTUART 實(shí)現(xiàn)原理圖實(shí)現(xiàn)原理圖 UART 各個(gè)模塊的功能如下:1UART 內(nèi)核模塊UART 內(nèi)核模塊是整個(gè)設(shè)計(jì)的核心。在數(shù)據(jù)接收時(shí),UART 內(nèi)核模塊負(fù)責(zé)控制波特率發(fā)生器和移位寄存器,使得移位寄存器在波特率是中的驅(qū)動(dòng)下同步地接收并且保存 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)位和停止位),之后控制移位寄存器將序列加載到移位寄存器的內(nèi)部寄存器里,最后再控制波特率發(fā)生器驅(qū)動(dòng)移位寄存器將數(shù)據(jù)串行輸出
46、。2信號(hào)監(jiān)測模塊信號(hào)監(jiān)測模塊用于對 RS-232 的輸入信號(hào)(經(jīng)過電平轉(zhuǎn)換后的邏輯信號(hào))進(jìn)行實(shí)時(shí)的檢測,一旦發(fā)現(xiàn)新的數(shù)據(jù)則立即通知 UART 內(nèi)核。3移位寄存器模塊移位寄存器模塊的作用是存儲(chǔ)輸入或者輸出的數(shù)據(jù)。當(dāng) UART 接收 RS-23218輸入時(shí),移位寄存器在波特率模式下采集 RS-232 輸入信號(hào),并且保存結(jié)果;當(dāng)UART 進(jìn)行 RS-232 輸出時(shí),UART 內(nèi)核首先將數(shù)據(jù)加載到移位寄存器內(nèi),再使移位寄存器在波特率模式下將數(shù)據(jù)輸出到 RS-232 輸出端口上。4波特率發(fā)生模塊由于 RS-232 傳輸必定是工作在某種波特率下,比如 9600,為了便于和 RS-232 總線同步,需要產(chǎn)生
47、符合 RS-232 傳輸波特率的時(shí)鐘。5奇偶校驗(yàn)?zāi)K奇偶校驗(yàn)?zāi)K的功能是根據(jù)奇偶校驗(yàn)的設(shè)置和輸入數(shù)據(jù)計(jì)算出相應(yīng)的奇偶校驗(yàn)位,它是通過組合邏輯實(shí)現(xiàn)的。6總線選擇模塊總線選擇模塊用于選擇奇偶校驗(yàn)器的輸入是數(shù)據(jù)發(fā)送總線還是數(shù)據(jù)接收總線。在接收總線時(shí),總線選擇模塊將數(shù)據(jù)接收總線連接到奇偶校驗(yàn)器的輸入端,來檢查已接收的數(shù)據(jù)的奇偶校驗(yàn)位是否正確;而在發(fā)送數(shù)據(jù)時(shí),總線選擇模塊將數(shù)據(jù)發(fā)送總線連接到奇偶校驗(yàn)器的輸入端,UART 內(nèi)核模塊就能夠獲取并且保存發(fā)送序列所需的奇偶校驗(yàn)位了。7,計(jì)數(shù)器模塊計(jì)數(shù)器模塊的功能是記錄串行數(shù)據(jù)發(fā)送或者接收的數(shù)目,在計(jì)數(shù)到某數(shù)值時(shí)通知 UART 內(nèi)核模塊。4.2 UART 工作流程
48、UART 工作流程可以分為接收過程和發(fā)送過程部分。接收過程指的是 UART 監(jiān)測到 RS-232 總線上的數(shù)據(jù),順序讀取串行數(shù)據(jù)并且將其輸出給 CPU 的過程。當(dāng)信號(hào)監(jiān)測到新的數(shù)據(jù)(RS-232 輸入邏輯變?yōu)?0,即 RS-232 輸入?yún)f(xié)議的起始位)就會(huì)觸發(fā)接收過程,其流程如圖所示。首先UART 內(nèi)核會(huì)重置波特率發(fā)生器和移位寄存器,并且設(shè)置移位寄存器的工作模式為波特率模式,以準(zhǔn)備接收數(shù)據(jù)。其次,移位寄存器在波特率時(shí)鐘的驅(qū)動(dòng)下工作,不斷地讀取 RS-232 串行總線的輸入數(shù)據(jù),并且將數(shù)據(jù)保存在內(nèi)部的寄存器內(nèi)。接收完成后,UART 內(nèi)核會(huì)對已接收的數(shù)據(jù)進(jìn)行奇偶校驗(yàn)并且輸出校驗(yàn)結(jié)果。最后,UART
49、內(nèi)核會(huì)重置信號(hào)監(jiān)測器,以備下一次數(shù)據(jù)接收。19圖圖 4.2.14.2.1 UARTUART 接收數(shù)據(jù)流程圖接收數(shù)據(jù)流程圖發(fā)送過程有加載和發(fā)送兩個(gè)步驟組成,如圖 4.2 所示。加載步驟是 UART 內(nèi)核按 RS-232 串行發(fā)送的順序?qū)⑵鹗嘉?、?shù)據(jù)位、奇偶校驗(yàn)位和停止位加載到移位寄存器內(nèi),這個(gè)過程工作在系統(tǒng)時(shí)鐘下,相對于 RS-232 的傳輸速度來說非???。完成加載步驟后,UART 內(nèi)核會(huì)重置波特率發(fā)生器,并且設(shè)置移位寄存器工作在波特率模式下,于是移位寄存器便在波特率時(shí)鐘的驅(qū)動(dòng)下依次將加載的數(shù)據(jù)發(fā)送到 RS-232 的發(fā)送端 TxD,這樣便產(chǎn)生了 RS-232 的數(shù)據(jù)發(fā)送時(shí)序。 圖圖 4.2.2
50、4.2.2 UARTUART 發(fā)送數(shù)據(jù)流程圖發(fā)送數(shù)據(jù)流程圖 20第五章 UART 模塊的 VHDL 語言設(shè)計(jì)5.1 信號(hào)監(jiān)測模塊的實(shí)現(xiàn)信號(hào)監(jiān)測模塊的功能是監(jiān)測 RS-232 輸入端的信號(hào),當(dāng)有新的數(shù)據(jù)傳輸時(shí)通知 UART 內(nèi)核開始接收數(shù)據(jù),端口定義如表 5-1 所示。表 5-1 信號(hào)監(jiān)測器端口定義表 名稱類型寬度說明Clk輸入1時(shí)鐘信號(hào)Reset_n輸入1復(fù)位信號(hào)RxD輸入1RS-232 輸入信號(hào)New_data輸出1指示信號(hào),當(dāng)監(jiān)測到新數(shù)據(jù)時(shí)置高在監(jiān)測到傳輸?shù)钠鹗嘉缓?,信?hào)監(jiān)測器需要將自己鎖定,即不對輸入信號(hào)進(jìn)行監(jiān)測,直到 UART 內(nèi)核將其復(fù)位。信號(hào)監(jiān)測器的實(shí)體聲明代碼如下:- 庫聲明li
51、brary IEEE;use IEEE.STD_LOGIC_1164.all; use WORK.UART_PACKAGE.ALL;- 實(shí)體聲明entity detector isport (clk : in std_logic;reset_n : in std_logic;RxD : in std_logic;new_data : out std_logic );end detector;5.2 波特率發(fā)生器模塊的實(shí)現(xiàn)波特率發(fā)生器的功能是產(chǎn)生和 RS-232 同心所采用的波特率同步的時(shí)鐘,這樣才能方便的按照 RS-232 串行通信的時(shí)序要求進(jìn)行數(shù)據(jù)接收和發(fā)送。圖 5.1 表示了波特率時(shí)鐘和
52、RS-232 接收端信號(hào)的時(shí)序關(guān)系,波特率時(shí)鐘的頻率就是波特率。21 圖圖 5.15.1 波特率時(shí)鐘與波特率時(shí)鐘與 RxDRxD 時(shí)序圖時(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í)鐘。圖圖 5.25.2 波特率時(shí)鐘實(shí)現(xiàn)原理波特率時(shí)鐘實(shí)現(xiàn)原理假設(shè) FPGA 的系統(tǒng)時(shí)鐘為 50MHz, RS-232 同心的波特率為 9600,則波特率時(shí)鐘的每個(gè)周期相當(dāng)于(1/9600)/(1/50*e6)=5208 各系統(tǒng)時(shí)鐘的周期。假設(shè)要得到占空比為 50%的波特率時(shí)鐘,只需使
53、得計(jì)數(shù)器在計(jì)數(shù)到 5208*50%=1604 時(shí)將輸出置高,之后在計(jì)數(shù)到 5208 時(shí)將輸出置低并且重新計(jì)數(shù),就能夠?qū)崿F(xiàn)和9600 波特率同步的時(shí)鐘,原理圖如圖 5.2 所示。波特率發(fā)生器得端口定義如下表 5-2 所示。表表 5-25-2 波特率發(fā)生器端口定義如下表波特率發(fā)生器端口定義如下表名稱類型寬度說明Clk輸入1時(shí)鐘信號(hào)Reset_n輸入1復(fù)位信號(hào)Ce輸入1使能信號(hào)Bd_out輸出1波特率時(shí)鐘輸出信號(hào)indicator輸出1指示信號(hào),在每輸出一個(gè)周期的波特率時(shí)鐘,在信號(hào)上述出一個(gè)小脈沖波特率發(fā)生器在復(fù)位后,將內(nèi)部計(jì)數(shù)器置為“0”,如果是能信號(hào)有效,22則在每個(gè)系統(tǒng)時(shí)鐘的上升沿工作,將計(jì)數(shù)
54、器計(jì)數(shù)增加一。當(dāng)輸出一個(gè)完整的波特率時(shí)鐘信號(hào)后,波特率發(fā)生器會(huì)自動(dòng)將內(nèi)部計(jì)數(shù)器置為零,同時(shí)開始下一個(gè)脈沖的計(jì)數(shù)。還有一個(gè) indicator 信號(hào),每產(chǎn)生一個(gè)完整的波特率時(shí)鐘周期,indicator 信號(hào)用于表示產(chǎn)生了一個(gè)完整的波特率時(shí)鐘周期,UART 通過此信號(hào)來了解波特率發(fā)生器已輸出的脈沖個(gè)數(shù)。波特率發(fā)生器的實(shí)體聲明代碼如下,其中在實(shí)體聲明中聲明了兩個(gè)類屬參數(shù),F(xiàn)ULL_PULSE_COUNT 表示一個(gè)波特率時(shí)鐘完整的周期所對應(yīng)的計(jì)數(shù)器計(jì)數(shù),RISE_PULSE_COUNT 表示波特率時(shí)鐘信號(hào)上升時(shí)刻對應(yīng)的計(jì)數(shù)器計(jì)數(shù),這樣波特率時(shí)鐘的占空比可以表示為(FULL_PULSE_COUNT-RI
55、SE_PULSE_COUNT)/ FULL_PULSE_COUNT。- 庫聲明library IEEE;use IEEE.STD_LOGIC_1164.all;use WORK.UART_PACKAGE.ALL;entity baudrate_generator isgeneric (FULL_PULSE_COUNT : BD_COUNT := BD9600_FPC;RISE_PULSE_COUNT : BD_COUNT := BD9600_HPC );port (clk : in std_logic;reset_n : in std_logic;ce : in std_logic;bg_ou
56、t : out std_logic;indicator : out std_logic );end baudrate_generator;以上代碼中的 BD_COUNT 是在 UART_PACKAGE 庫中定義的,它代表范圍從065535 的整數(shù)(即 16 位整數(shù));BD9600_FPC 代表波特率時(shí)鐘完整周期對應(yīng)的計(jì)數(shù),而 BD9600_HPC 代表的是波特率時(shí)鐘半周其對應(yīng)的計(jì)數(shù),它們也在UART_PACKAGE 庫中定義的,如下所示:- 計(jì)數(shù)器計(jì)數(shù)范圍type BD_COUNT is range 65535 downto 0;- 9600波特率對應(yīng)參數(shù)constant BD9600_FPC
57、 : BD_COUNT := 5208;constant BD9600_HPC : BD_COUNT := 2604;下面介紹一下波特率發(fā)生器的仿真測試過程。由于 9600 波特率對應(yīng)的參數(shù)樹枝比較大,所以為了觀察仿真的波形,可以首先選擇輸出較小的測試數(shù)據(jù)。23比如,可以在 UART_PACKAGE 庫中定義完整波特率時(shí)鐘周期對應(yīng)計(jì)數(shù)為 10,半周期對應(yīng)計(jì)數(shù) 5,代碼如下:- 波特率測試參數(shù)constant BDTEST_FPC : BD_COUNT := 10;constant BDTEST_HPC : BD_COUNT := 5;在測試平臺(tái)文件中,申明波特率發(fā)生器實(shí)例時(shí)應(yīng)先將其類屬參數(shù)設(shè)置
58、為測試參數(shù),如下所示:- Unit Under Test port mapUUT : baudrate_generatorgeneric map (FULL_PULSE_COUNT = 10,RISE_PULSE_COUNT = 5)port map (clk = clk,reset_n = reset_n,ce = ce,bg_out = bg_out,indicator = indicator);5.3 移位寄存器模塊的實(shí)現(xiàn)移位寄存器模塊在整個(gè)設(shè)計(jì)中非常關(guān)鍵,無論是數(shù)據(jù)接收還是數(shù)據(jù)的發(fā)送都需要用到移位寄存器。移位寄存器的基本工作原理是在觸發(fā)信號(hào)的驅(qū)動(dòng)下將內(nèi)部寄存器序列的最高位輸出,將此高位
59、到最低為向高位移動(dòng)一位,并且讀取輸入端的數(shù)據(jù)保存到最低位。由于在 RS-232 通信在不同的傳輸設(shè)置下(比如奇偶校驗(yàn),停止位)總的數(shù)據(jù)位數(shù)不同,所以為了能夠靈活的配置移位寄存器,可以在聲明移位寄存器實(shí)體的時(shí)候添加一個(gè)表示寄存器序列總長度的類屬參數(shù),代碼如下:entity shift_register isgeneric (TOTAL_BIT : integer := 10 );port (clk : in std_logic;reset_n : in std_logic;din : in std_logic;24regs : out std_logic_vector(TOTAL_BIT-1 d
60、ownto 0);dout : out std_logic );end shift_register;以上代碼中的 TOTAL_BIT 表示的就是寄存器序列的長度,默認(rèn)為 10,對應(yīng)的傳輸設(shè)置是 8 為數(shù)據(jù)位、奇偶校驗(yàn)位、1 位停止位。表表 5-35-3 移位寄存器得端口定義移位寄存器得端口定義名稱類型寬度說明clk輸入1時(shí)間信號(hào)Reset_n輸入1復(fù)位信號(hào)din輸入1輸入信號(hào)regs輸出TOTAL_BIT內(nèi)部寄存器輸出dout輸出1輸出信號(hào)5.4 奇偶校驗(yàn)器模塊實(shí)現(xiàn)奇偶校驗(yàn)器根據(jù)奇偶校驗(yàn)的設(shè)置和輸入數(shù)據(jù)計(jì)算出奇偶校驗(yàn)位,所以在定義其實(shí)體時(shí)需要添加兩個(gè)類屬參數(shù)entity parity_ver
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 現(xiàn)代辦公家具的環(huán)保理念與可持續(xù)發(fā)展
- 現(xiàn)代生活節(jié)奏下的胃腸疾病預(yù)防教育
- 生產(chǎn)制造中的綠色技術(shù)升級路徑與策略
- 基坑施工安全專項(xiàng)方案
- 現(xiàn)代服務(wù)業(yè)的發(fā)展趨勢及投資策略研究
- 生產(chǎn)安全監(jiān)督與危機(jī)管理一體化建設(shè)
- 生態(tài)農(nóng)業(yè)發(fā)展對商業(yè)模式的創(chuàng)新影響
- 現(xiàn)代農(nóng)業(yè)機(jī)械設(shè)備智能化國際對比研究
- 2024-2025學(xué)年高中生物 專題5 課題1 DNA的粗提取與鑒定說課稿 新人教版選修1
- 9 生活離不開他們 第一課時(shí) 說課稿-2023-2024學(xué)年道德與法治四年級下冊統(tǒng)編版001
- 《游戲界面設(shè)計(jì)專題實(shí)踐》課件-知識(shí)點(diǎn)5:圖標(biāo)繪制準(zhǔn)備與繪制步驟
- 自動(dòng)扶梯安裝過程記錄
- MOOC 材料科學(xué)基礎(chǔ)-西安交通大學(xué) 中國大學(xué)慕課答案
- 帕金森病的言語康復(fù)治療
- 中國城市居民的健康意識(shí)和生活方式調(diào)研分析報(bào)告
- 復(fù)產(chǎn)復(fù)工試題含答案
- 售后服務(wù)經(jīng)理的競聘演講
- 新概念英語第2冊課文(完整版)
- 慢加急性肝衰竭護(hù)理查房課件
- 文件丟失應(yīng)急預(yù)案
- 全球職等系統(tǒng)GGS職位評估手冊
評論
0/150
提交評論