版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、<p> 畢 業(yè) 設(shè) 計(論文)</p><p> 題目: 片上系統(tǒng)的UART接口控制器IP設(shè)計</p><p> 姓名 學(xué) 號 </p><p><b> 所在單位 </b></p><p> 指導(dǎo)教師 完成日期
2、 </p><p> 片上系統(tǒng)的UART接口控制器IP設(shè)計</p><p><b> 摘 要</b></p><p> 當(dāng)代在通信和控制系統(tǒng)中,常使用UART (通用異步收發(fā)器)實現(xiàn)系
3、統(tǒng)輔助信息的傳輸。 UART雖然通信速度不快,但是它具有電路簡單,成本低,性能可靠,特別適合遠距離數(shù)據(jù)傳輸?shù)葍?yōu)點。因此,在許多對通信速度要求不高的場合,異步串行口還發(fā)揮著很重要的作用,被廣泛的使用。而如今市場上的UART功能復(fù)雜,在應(yīng)用只使用到它的幾個基本功能,因而造成資源浪費,為此我們需要對UART的功能進行精簡,方便使用,降低CPU的工作負擔(dān),提高了系統(tǒng)性能。</p><p> 關(guān)鍵詞: UART 片上系統(tǒng)
4、 通信協(xié)議;</p><p><b> Abstract</b></p><p> Contemporary in communication and control system, often use UART (general asynchronous transceiver) to implement system auxiliary information
5、 transmission. UART although communication at a modest pace, but it has a circuit is simple, low cost and reliable performance, especially suitable for the remote data transmission, etc. Therefore, in many of the communi
6、cation speed demand is not high occasions, asynchronous serial mouth still plays a very important role, is widely used. And now the market </p><p> Key Words: UART; SOC; agree on communication</p>&l
7、t;p><b> 目 錄</b></p><p><b> 第一章 緒論1</b></p><p><b> 第二章 背景2</b></p><p><b> 2.1知識背景2</b></p><p> 2.2 本課題的研究內(nèi)容
8、3</p><p> 2.3 論文結(jié)構(gòu)4</p><p> 第三章 UART接口協(xié)議5</p><p><b> 3.1幀格式5</b></p><p><b> 3.2 示例7</b></p><p> 3.3 物理接口8</p>&
9、lt;p> 第四章 UART接口控制器的設(shè)計與實現(xiàn)11</p><p> 4.1 UART接口控制器核(Core)的設(shè)計與實現(xiàn)11</p><p> 4.2 UART頂層設(shè)計24</p><p> 第五章 測試驗證32</p><p> 5.1 基于quartus II的功能仿真測試32</p>
10、<p> 5.2 基于FPGA的系統(tǒng)級測試34</p><p> 第六章 總結(jié)35</p><p><b> 致 謝37</b></p><p><b> 附 錄38</b></p><p><b> 第一章 緒論</b></p>
11、;<p> 當(dāng)今社會,隨著計算機的廣泛應(yīng)用,網(wǎng)絡(luò)技術(shù)的快速發(fā)展和數(shù)字通信技術(shù)的日益普及,經(jīng)常會采用串行通信方式來進行數(shù)據(jù)信息的交換傳輸。在串口通信中,數(shù)據(jù)的串行/并行轉(zhuǎn)換工作主要是由UART來實現(xiàn)。UART是當(dāng)前較廣泛使用的串行數(shù)據(jù)傳輸協(xié)議之一,它允許在串行鏈路上進行全雙工通信,其應(yīng)用范圍遍及計算機外設(shè)、工業(yè)控制等場合?,F(xiàn)在專用的UART集成電路如8250、8251等既要考慮異步收發(fā)功能,又要兼容RS-232C接口設(shè)計等
12、功能,比較復(fù)雜。而在實際應(yīng)用中,往往只需要用到UART的幾個基本功能,而使用專用芯片勢必會造成資源的浪費以及設(shè)備成本的提高。所以我們可以將所需的UART功能集成到SOC內(nèi)部,實現(xiàn)與其他SOC數(shù)字系統(tǒng)的直接通信,從而簡化了整個系統(tǒng)電路,使系統(tǒng)更為靈活、緊湊,性能也更加穩(wěn)定。UART16550采用通用的RS-232C串行接口標(biāo)準(zhǔn),其實現(xiàn)較為簡單,最少只需要2條導(dǎo)線即可實現(xiàn)基本通信。</p><p><b>
13、 第二章 背景</b></p><p><b> 2.1知識背景</b></p><p> 一、UART概述及其發(fā)展</p><p> UART:(Universal Asynchronous Receiver/Transmitter),全稱是通用異步接收/發(fā)送裝置,UART是一個并行輸入成為串行輸出的芯片,用于控制計算機
14、與串行設(shè)備, 是實現(xiàn)設(shè)備之間低速數(shù)據(jù)通信的標(biāo)準(zhǔn)協(xié)議。通常集成在主板上,多數(shù)是16550AFN芯片。UART作為一種串口因可靠性高、傳輸距離遠、線路簡單、串口通信協(xié)議的簡潔而廣泛應(yīng)用于串行數(shù)據(jù)通信電路。其基本原理是1個完整的數(shù)據(jù)在數(shù)據(jù)線上依次按比特位傳送,雖然傳輸速率較低,但由于這種傳輸方式需要的數(shù)據(jù)線較少,只需用兩根線就可以完成數(shù)據(jù)的收發(fā)(一根接收數(shù)據(jù),一根發(fā)送數(shù)據(jù)),而且成本低廉,因此特別適合遠距離數(shù)據(jù)傳輸。“異步”指不需要額外的時鐘
15、線進行數(shù)據(jù)的同步傳輸,是一種串行總線接口。常用的標(biāo)準(zhǔn)通信波特率有9600bps、115200bps等。</p><p> UART產(chǎn)生于上個世紀(jì)70年代,是第一塊大規(guī)模集成電路。1981年的推出的IBM PC采用了8250 UART與外設(shè)進行數(shù)據(jù)通信,直到上個世紀(jì)末,UART一直是PC中最主要的串行通信接口。隨著高速串行總線USB的出現(xiàn),USB以其諸多的優(yōu)點取代了UART成為個人電腦中應(yīng)用最廣泛的串行接口。 &
16、lt;/p><p> 而在嵌入式領(lǐng)域,由于UART具有操作簡單、工作可靠、抗干擾強、傳輸距離遠(組成485網(wǎng)絡(luò)可以傳輸1,200米以上),設(shè)計人員普遍認為UART是從CPU或微控制器向系統(tǒng)的其他部分傳輸數(shù)據(jù)的最佳方式,因此它們被大量地應(yīng)用在工業(yè)、通信和家電控制等嵌入式領(lǐng)域。通常MCU/CPU都會自帶一個UART串口,但實際應(yīng)用中一個串口往往不夠用,需要進行UART串口擴展。 </p><p>
17、;<b> 二、UART控制器</b></p><p> UART控制器完成串行通信功能,控制器在內(nèi)部總線的操作下,通過對寄存器的讀寫,完成如波特率設(shè)置、串并變換、FIFO控制、流控制及中斷控制等,最終將需要發(fā)送的并行數(shù)據(jù)以一定的格式發(fā)送;同時也將外部輸入的串口數(shù)據(jù)流按一定格式進行采集完成數(shù)據(jù)的接收。</p><p> 計算機內(nèi)部采用并行數(shù)據(jù),不能直接把數(shù)據(jù)發(fā)到
18、Modem,必須經(jīng)過UART整理才能進行異步傳輸,其過程為:CPU先把準(zhǔn)備寫入串行設(shè)備的數(shù)據(jù)放到UART的寄存器(臨時內(nèi)存塊)中,再通過FIFO(First Input First Output,先入先出隊列)傳送到串行設(shè)備,ykl若是沒有FIFO,信息將變得雜亂無章,不可能傳送到Modem。 </p><p> 三、SOC的基本概念</p><p> SOC (系統(tǒng)級芯片System
19、 onChip),也有稱片上系統(tǒng),狹義的角度上講,它是信息系統(tǒng)核心的芯片集成,是將系統(tǒng)關(guān)鍵部位集成在一塊芯片上;從廣義角度講,SOC是一個小型系統(tǒng),是一個產(chǎn)品,是一個有專用目標(biāo)的集成電路,其中包含完整系統(tǒng)并有嵌入軟件的全部內(nèi)容。SOC 也有譯為“系統(tǒng)芯片集成”,意指它是一種技術(shù),用以實現(xiàn)從確定系統(tǒng)功能開始,到軟/硬件劃分,并完成設(shè)計的整個過程。</p><p> SOC是在單個芯片上集成一個完整的系統(tǒng),對所有或
20、部分必要的電子電路進行包分組的技術(shù)。所謂完整的系統(tǒng)一般包括中央處理器(CPU)、存儲器、以及外圍電路等。 SoC是與其它技術(shù)并行發(fā)展的,如絕緣硅,它可以提供增強的時鐘頻率,從而降低微芯片的功耗。 </p><p> 片上系統(tǒng)技術(shù)通常應(yīng)用于小型的,日益復(fù)雜的客戶電子設(shè)備。例如,聲音檢測設(shè)備的片上系統(tǒng)是在單個芯片上為所有用戶提供包括音頻接收端、模數(shù)轉(zhuǎn)換器(ADC)、微處理器、必要的存儲器以及輸入輸出邏輯控制等設(shè)備。
21、此外系統(tǒng)芯片還應(yīng)用于單芯片無線產(chǎn)品,諸如藍牙設(shè)備,支持單芯片WLAN和蜂窩電話解決方案。 </p><p> 2.2 本課題的研究內(nèi)容</p><p> 本課題內(nèi)容是設(shè)計面向SOC的UART接口控制器,具體來說是設(shè)計基于Nios II處理器系統(tǒng)的UART接口控制器并在DE2開發(fā)板上進行了驗證。</p><p><b> 2.3 論文結(jié)構(gòu)</b&
22、gt;</p><p><b> 第一章為緒論</b></p><p> 第二章介紹了背景,包括UART、SOC.</p><p> 第三章介紹UART接口協(xié)議</p><p> 第四章為UART接口控制器的設(shè)計與實現(xiàn)</p><p><b> 第五章為測試驗證</b&g
23、t;</p><p><b> 第六章為總結(jié)</b></p><p> 第三章 UART接口協(xié)議</p><p> UART主要由數(shù)據(jù)總線接口、控制邏輯、波特率發(fā)生器、發(fā)送部分和接收部分等組成。UART內(nèi)部所實現(xiàn)的功能包括微處理器接口、發(fā)送緩沖器、發(fā)送移位寄存器、幀產(chǎn)生、奇偶校驗、數(shù)據(jù)接收緩沖器、接收移位寄存器等。</p>
24、<p><b> 3.1幀格式</b></p><p> UART一幀由起始位、數(shù)據(jù)位、校驗位和停止位組成。數(shù)據(jù)逐位傳輸,示意圖如圖 3-1所示。異步串口通信協(xié)議作為UART的一種,工作原理是將傳輸數(shù)據(jù)的每個字符一位接一位地傳輸。 其中各位的意義如下:</p><p> 圖3-1 UART幀格式示意圖</p><p><
25、b> 一、起始位 </b></p><p> UART空閑時(沒有數(shù)據(jù)傳輸),總線為高電平(邏輯1),當(dāng)需要數(shù)據(jù)傳輸時,首先發(fā)送一個“起始位”,起始位為一個低電平“邏輯0”。 </p><p> 二、數(shù)據(jù)位(資料位) </p><p> 如圖3-1的“2.”所示,緊挨著“起始位”的是數(shù)據(jù)位,它可以是4、5、6、7或8位,收/發(fā)雙方在數(shù)據(jù)開始
26、傳輸前,需要對雙方數(shù)據(jù)位位數(shù)作一致的定義,否則會導(dǎo)致數(shù)據(jù)的傳輸錯誤;數(shù)據(jù)位的發(fā)送采用低位(LSB)先發(fā)送。通常采用ASCII碼。從最低位開始傳送,靠時鐘定位。</p><p><b> 三、校驗位 </b></p><p> UART的校驗位緊挨著數(shù)據(jù)位,采用奇/偶位校驗方式,數(shù)據(jù)位加上這一位后,使得“1”的位數(shù)應(yīng)為偶數(shù)(偶校驗)或奇數(shù)(奇校驗),以此來校驗資料傳
27、送的正確性。在實際的應(yīng)用中,校驗位可以是奇校驗或者偶校驗,也可以不包括校驗位。結(jié)束位也不一定是1位,還可以是1.5或者是2。可有可無,是為了驗證數(shù)據(jù)傳輸?shù)陌踩远O(shè)置的,在收/發(fā)雙方進行數(shù)據(jù)傳輸前要預(yù)設(shè)好是否需要校驗位,如果需要則是奇校驗還是偶校驗。如圖2-1的“3.”所示。</p><p> 奇/偶校驗是對數(shù)據(jù)進行逐位同或/異或運算。如公式(1)和公式(2)所示。</p><p>
28、DEVEN = D7⊕D6⊕D5⊕D4⊕D3⊕D2⊕D1⊕D0 公式(1) </p><p> DODD = ~DEVEN 公式(2) </p><p> 如對8位數(shù)據(jù)0x55(01010101b)作偶校驗操作,得到的結(jié)果為“0”;作奇校驗得到的結(jié)果為“1”。簡單而言,偶校驗增加一位“0”或“1”,使數(shù)據(jù)位加上校驗位后“1”的個數(shù)為偶數(shù);而奇校驗則是使“1”的個數(shù)為奇數(shù)。</p&
29、gt;<p> 如圖 3-2所示為奇偶校驗RTL(寄存器傳輸級)示意圖。使用移位寄存器進行逐位操作。當(dāng)“LOAD”為邏輯“1”時,加載移位寄存器的數(shù)據(jù)和初始化校驗結(jié)果寄存器為邏輯“0”;之后在“CLK”的每個上升沿進行逐位“異或”運算。</p><p> 圖3-2 奇偶校驗RTL示意圖</p><p><b> 四、停止位 </b></p&g
30、t;<p> UART的幀以停止位作為停止標(biāo)志,是在數(shù)據(jù)位(沒有校驗位)和校驗位(有校驗位)之后發(fā)送1~2位的邏輯“1”。停止為可以為1位、1.5位和2位。當(dāng)發(fā)送完停止位之后,UART總線進入空閑。</p><p><b> 五、空閑位</b></p><p> 空閑指UART總線上沒有數(shù)據(jù)進行傳輸,表現(xiàn)為發(fā)送方輸出邏輯“1”,在空閑時,接收方時刻
31、監(jiān)視UART總線上電平變化,當(dāng)發(fā)現(xiàn)起始化,則進入數(shù)據(jù)接收狀態(tài),直至接收完一幀數(shù)據(jù),如果最后沒有檢測到停止位,則標(biāo)志幀錯誤。</p><p> 六、波特率(Baudrate) </p><p> 波特率是衡量資料傳送速率的指針,由于UART沒有同步時鐘線,收/發(fā)雙方如果需要進行正確的數(shù)據(jù)傳輸,則要在收/發(fā)雙方定義一致的位時鐘,位時鐘可以理解為UART總線一個位所占用的時間,即“波特率”。
32、在定義上,收/發(fā)雙方的波特率可以是隨意的,只需要保持一致,如雙方都是1000bps,但是,這不能兼容現(xiàn)有常用的設(shè)備,兼容性差。所以在工程應(yīng)用中,常用一些特定的波特率真,如4800ps、9600bps或115200bps等。</p><p><b> 3.2 示例</b></p><p> 因為UART的幀格式是可變,以下以幾個示例,形象地描述UART的不同設(shè)置下的
33、幀格式。</p><p><b> 一、常用幀格式 </b></p><p> 如圖3-3所示為8位數(shù)據(jù)位、無校驗位、1位停止位的幀格式示意圖,一幀共有10位。發(fā)送的數(shù)據(jù)為0xA5。</p><p> 圖3-3 常用幀格式</p><p><b> 二、偶校驗 </b></p>
34、<p> 如圖3-4所示為8位數(shù)據(jù)位、偶校驗、1位停止位的幀格式示意圖。每幀共有11位。發(fā)送的數(shù)據(jù)為0xA5,則偶校驗結(jié)果為“0”。當(dāng)加個校驗位后,可以看出,“1”的個數(shù)為偶數(shù)。</p><p> 圖3-4 帶偶校驗幀格式</p><p><b> 三、奇校驗 </b></p><p> 如圖3-5所示為8位數(shù)據(jù)位、奇校驗、
35、1位停止位的幀格式示意圖。每幀共有11位。發(fā)送的數(shù)據(jù)為0xA5,則奇校驗結(jié)果為“1”。當(dāng)加個校驗位后,可以看出,“1”的個數(shù)為奇數(shù)。</p><p> 圖3-5 帶奇校驗幀格式 </p><p><b> 3.3 物理接口</b></p><p> UART的物理接口可以是RS-232、RS-485和IrDA紅外線等。其中RS-232是
36、最為大家容易接觸的,在2006年之前是大部分PC機的標(biāo)準(zhǔn)接口,早期電話線上網(wǎng)就是利用RS-232連接數(shù)PC機和Modem。</p><p> 一、RS-232連接器</p><p> RS-232的連接器常用的是DB-9,其連接器示意圖如圖3-6所示,為九針連接器。對于常用的簡單應(yīng)用,使用到的有三根線:RxD、TxD和GND。</p><p> 圖3-6 DB
37、-9連接器示意圖</p><p> 實物圖如圖 3-7所示。</p><p> 圖3-7 DB-9實物圖</p><p> 二、RS-232電氣特性</p><p> RS-232規(guī)定說明了RS-323C標(biāo)準(zhǔn)對邏輯電平的定義。對于數(shù)據(jù)(信息碼):邏輯“1”(傳號)的電平低于-3V,邏輯“0”(空號)的電平高于+3V;對于控制信號;接通
38、狀態(tài)(ON)即信號有效的電平高于+3V,斷開狀態(tài)(OFF)即信號無效的電平低于-3V,也就是當(dāng)傳輸電平的絕對值大于3V時,電路可以有效地檢查出來,介于-3~+3V之間的電壓無意義,低于-15V或高于+15V的電壓也認為無意義,因此,實際工作時,應(yīng)保證電平在±(3~15)V之間。</p><p> 在TxD和RxD上: </p><p> 邏輯“1”為-3
39、V~-15V; </p><p> 邏輯“0”為+3~+15V。 </p><p> 在RTS、CTS、DSR、DTR和DCD等控制線上: </p><p> 信號有效(接通,ON狀態(tài),正電壓)= +3V~+15V ; </p><p> 信號無效(斷開,OFF狀態(tài),負
40、電壓) = -3V~-15V 。</p><p> 三、RS-232電平轉(zhuǎn)換電路</p><p> 由于RS-232的電氣特性和MCU等輸出的電氣特性不一致,所以對于TTL電平的MCU,使用RS-232連接器(如和PC機通信),需要使用電平轉(zhuǎn)換電路,通常使用集成電路(IC)完成電平轉(zhuǎn)換,常用的IC有MAX232等,當(dāng)然還有其它公司生產(chǎn)的IC,如SP232等,常以232作為標(biāo)識。<
41、/p><p> 如圖 3-8所示,是使用MAX232作為轉(zhuǎn)換IC的電路圖。</p><p> 圖3-8 電平轉(zhuǎn)換電路</p><p><b> 四、實際應(yīng)用 </b></p><p> RS-232 </p><p> RS-232在實際應(yīng)用一般用于點對點的數(shù)據(jù)傳輸,當(dāng)
42、然在硬件和軟件上加上一些手段,可以用于多機通信,但應(yīng)用不多。在通信速率低于20kb/s時,RS-232C所直接連接的最大物理距離為15m。</p><p> RS-485 </p><p> RS-485在工業(yè)應(yīng)用現(xiàn)場應(yīng)用比較廣泛,常使用單工通信組成一主多從的通信網(wǎng)絡(luò),使用雙絞線連接多臺設(shè)備,使用差分信號傳輸數(shù)據(jù),所以抗共模干擾能力比RS-232強,共通信距離可以
43、超過1Km。</p><p> 第四章 UART接口控制器的設(shè)計與實現(xiàn)</p><p> 4.1 UART接口控制器核(Core)的設(shè)計與實現(xiàn)</p><p> UART采用模塊化、層次化的設(shè)計思想,全部設(shè)計都采用Verilog HDL來實現(xiàn),其組成框圖如圖4-1所示。整個UART由串行數(shù)據(jù)發(fā)送模塊、串行數(shù)據(jù)接收模塊、接收和發(fā)送FIFO、總線接口邏輯、寄存器
44、和控制邏輯構(gòu)成。串行發(fā)送模塊的接收完成并/串及串/并的轉(zhuǎn)換;發(fā)送和接收FIFO用于緩存發(fā)送和接收的數(shù)據(jù);總線邏輯用于連接UART IP內(nèi)部總線和LPC模塊接口;寄存器和控制邏輯實現(xiàn)UART內(nèi)部所有數(shù)據(jù)的收發(fā)、控制和狀態(tài)寄存器、內(nèi)部中斷的控制及波特率信號的產(chǎn)生等??偩€接口單元主要完成寄存器訪問。因為總線是由LPC總線模塊產(chǎn)生。在這里需要為LPC總線模塊產(chǎn)生lpc ack信號。因為內(nèi)部寄存器操作相當(dāng)快,我們可以讓lpc ack在讀寫信號有效
45、后下一時鐘周期就有效,這樣可以簡化設(shè)計。在UART中用到兩個FIFO,一個發(fā)送FIFO,一個接收FIFO,均為16個字節(jié)深度,8位寬。</p><p> 圖4-1 UART的模塊功能框圖</p><p> 異步傳輸方式指收發(fā)兩端各自有相互獨立的定位時鐘,收方利用數(shù)據(jù)本身來進行同步的傳輸方式。數(shù)據(jù)流按照一定的幀格式串行發(fā)送,一個完整的數(shù)據(jù)幀由起始位、數(shù)據(jù)位、校驗位、結(jié)束位構(gòu)成,完成一個字
46、節(jié)(8位)數(shù)據(jù)的傳輸。</p><p> 圖4-2 UART頂層框圖</p><p> 設(shè)計采用經(jīng)典的自上以下的分層次結(jié)構(gòu)</p><p> 由圖4-2 UART的頂層框圖獲知,本設(shè)計的UART分為以下三個模塊(module):</p><p> 一、波特率發(fā)生器divider </p><p> 這個模塊
47、用于為UART的收/發(fā)器提供時鐘,這個時鐘為UART的波特率的16倍頻,即如果波特率要求為9600bps時,該模塊輸出的時鐘為9600Hz×16=153600Hz。輸出時鐘需要可配置(UBRRH、UBRRL)。波特率的產(chǎn)生由一個16位的計數(shù)器來產(chǎn)生,計數(shù)器的初值由波特率設(shè)置寄存器的值來決定,當(dāng)計數(shù)器計數(shù)到0時產(chǎn)生一個enable信號,該信號的產(chǎn)生頻率為波特率的16倍。enable信號被用來控制接收和發(fā)送模塊狀態(tài)機的運行。從而達
48、到控制發(fā)流數(shù)據(jù)位時間的目的。波特率發(fā)生器實現(xiàn)波特率的變換。利用外部時鐘信號產(chǎn)生一個所需波特率l6倍的波特率時鐘,用來控制UART的接收與發(fā)送。接收模塊是用于接收串行信號,并將其轉(zhuǎn)化為并行數(shù)據(jù);而發(fā)送模塊則將準(zhǔn)備輸出的并行數(shù)據(jù)按照UART的幀格式轉(zhuǎn)化為串行數(shù)據(jù)輸出。</p><p> 波特率發(fā)生器實際上是一個分頻器。主要是產(chǎn)生和.RS-232通信所采用的波特率同步的時鐘。由于串行數(shù)據(jù)幀與接收數(shù)據(jù)時鐘是異步的,所以
49、在UART的接收端在什么時刻將數(shù)據(jù)移入寄存器.怎樣選擇可靠的采樣點是非常關(guān)鍵的。一般采用高速時鐘對串行數(shù)據(jù)采樣是非常有效的方法。在實際設(shè)計中,一般最大選擇16倍于波特率的時鐘頻率。實現(xiàn)波特率時鐘的基本思路就是設(shè)計一個計數(shù)器,該計數(shù)器工作在速度很高的系統(tǒng)時鐘下,通過總線寫入不同的數(shù)值到波特率發(fā)生器保持寄存器中,然后用計數(shù)器的方式生成所需要的各種波特率就能得到所需的波特率時鐘.</p><p><b>
50、,</b></p><p> 圖4-3 波特率發(fā)生器模塊圖</p><p> 圖4-4 波特率發(fā)生器電路圖</p><p><b> 波特率發(fā)生器代碼</b></p><p><b> 二、接收器rxd </b></p><p> 接收模塊是整個UART
51、的設(shè)計的重點,其主要功能是檢測數(shù)據(jù)的起始位,并對接收的數(shù)據(jù)進行串并轉(zhuǎn)換,并將接收好的數(shù)據(jù)儲存等待微機處理。由于串行數(shù)據(jù)幀與接收數(shù)據(jù)時鐘是異步的,接收功能實現(xiàn)的關(guān)鍵是接收器與每個接收字符同步。要保證異步通信的雙方準(zhǔn)確無誤地交換信息,必須有效控制采集通信線路上的電平信號的時機。由異步串行通信的特點可知,接收同步是通過低電平起始位實現(xiàn)的。而為了保證采樣的正確性,采樣在數(shù)據(jù)位的中間進行,并且接收單元采樣數(shù)據(jù)的頻率與發(fā)送單元發(fā)送數(shù)據(jù)的頻率相同,是
52、波特率時鐘周期的l6倍,這樣可以有效地降低由于時鐘不匹配而導(dǎo)致的誤采樣。接收模塊的設(shè)計主要由狀態(tài)機實現(xiàn)其核心功能,采用獨熱編碼方式,雖然獨熱編碼多用了兩個觸發(fā)器,但所用組合電路可節(jié)省一些.使電路的速度和可靠性有顯著提高161。控制接收器的起始/停止位檢測,接收數(shù)據(jù)的計數(shù),移位寄存的功能。</p><p> 接收器時刻監(jiān)視UART總線的RXD線的電平,當(dāng)檢測到起始位,接收器啟動接收狀態(tài)機,根據(jù)寄存器(UCSRB、
53、UCSRC)的設(shè)定,解析RXD線的電平,當(dāng)完成一個字節(jié)接收,輸出接收到的數(shù)據(jù)和線狀態(tài)。</p><p> 接收器的設(shè)計主要是圍繞“有限狀態(tài)機”而進行。 </p><p> 圖4-5 接收器模塊圖</p><p> 圖4-6 接收器模塊電路圖 </p><p><b> 接收器部分代碼
54、</b></p><p> 串行數(shù)據(jù)接收器用于檢測串行數(shù)據(jù)的開始位,并在特定的時刻將串行總線上的串行數(shù)據(jù)進行采樣,同時對數(shù)據(jù)流的幀格式進行檢查,最后將轉(zhuǎn)換的并行數(shù)據(jù)輸出。</p><p> 因為輸入的串行數(shù)據(jù)信號與內(nèi)部時鐘是異步的,因此,串行信號實際是一個跨時鐘域的信號,為了保證信號被可靠的采樣并避免亞穩(wěn)態(tài)情況,我們采用了比較穩(wěn)妥的處理方法,那就是對輸入的外部串行數(shù)據(jù)信號進
55、行了兩次采樣。</p><p> 采用以下verilog描述可以實現(xiàn)對輸入信號的兩次采樣。</p><p> always@(posedge clk)</p><p><b> begin</b></p><p> sig_stagel<:=siga;</p><p> sig_o
56、ut <:sig_stagel;</p><p><b> end</b></p><p> 同串行發(fā)送模塊一樣,我們采用有限狀態(tài)機來描述整個串行數(shù)據(jù)的接收過程。</p><p> 按照接收串行數(shù)據(jù)的順序,整個過程分為空閑狀態(tài)(idle)、接收開始位狀態(tài)(rec—start)、接收準(zhǔn)備狀態(tài)(rec--prepare)、接收數(shù)據(jù)狀態(tài)(
57、rec—bit)、接收數(shù)據(jù)完畢狀態(tài)(rec—end)、接收核驗位狀(rec_parity)、校驗位計算狀態(tài)(calc_parity)、校驗位檢查狀態(tài)(check_parity)、等待(wait)、接收停止位狀態(tài)(rec_stop)、保存數(shù)據(jù)狀態(tài)(push)。整個狀態(tài)轉(zhuǎn)移見下圖。</p><p> 圖4-7 串行數(shù)據(jù)接收狀態(tài)轉(zhuǎn)移</p><p> 外部復(fù)位使?fàn)顟B(tài)從idle開始。</
58、p><p> 空閑狀態(tài)(idle):在此狀態(tài),不斷檢測UART使能和串行輸入信號的狀態(tài)。</p><p> 如果串行輸入信號出現(xiàn)由高到低的電平變化并且UART使能有效,則將采樣計數(shù)器置為14,并進入下一狀態(tài)(rex _start)。</p><p> 接收開始位狀態(tài)(rex_start):在此狀態(tài),狀態(tài)機等待7個時鐘周期(也就是半個波特率的時間),然后重新對串行輸
59、入信號進行采樣,如果仍為低,則認為收到的開始位有效,馬上進入接收準(zhǔn)備狀態(tài)(rex) ;否則認為數(shù)據(jù)總線上先前檢測到的低電平為干擾,開始位無效,重新返回到空閑狀態(tài)。</p><p> 接收準(zhǔn)備狀態(tài)(rex_prepare):在此狀態(tài)中,根據(jù)LCR寄存器中的值算出即將接收的數(shù)據(jù)幀中數(shù)據(jù)位的個數(shù),然后等待采樣計數(shù)器被減至0,隨即轉(zhuǎn)入接收數(shù)據(jù)狀態(tài)(rex_bit),同時將采樣計數(shù)器再次置為14。</p>
60、<p> 接收數(shù)據(jù)狀態(tài)(rec_bit):當(dāng)采樣計數(shù)器計到7時,接收串行數(shù)據(jù)線上的數(shù)據(jù)位,并放入移位寄存器中,并將數(shù)據(jù)位個數(shù)計數(shù)器減1。當(dāng)采樣計數(shù)器計到0時,立刻轉(zhuǎn)入接收數(shù)據(jù)完畢狀態(tài)(rex_end)。</p><p> 接收數(shù)據(jù)完畢狀態(tài)(rex_end):在此狀態(tài)中,如果判斷到數(shù)據(jù)位數(shù)計數(shù)器已經(jīng)為0,表明數(shù)據(jù)字已經(jīng)接收完畢,這時要判斷幀中是否有校驗位,如果沒有校驗位,那么接下來將會是停止位的接收(
61、rex _stop);如果有核驗位的話,下一狀態(tài)將會是接收核驗位狀態(tài)(rex parity)。而如果發(fā)現(xiàn)數(shù)據(jù)位還沒有接收完時,將會回到接收數(shù)據(jù)狀態(tài)(rex bit)繼續(xù)進行數(shù)據(jù)位的獲取。</p><p> 接收校驗位狀態(tài)(rex_parity):在采樣計數(shù)器計到7時開始對校驗位進行獲取。隨后進入校驗位計算狀態(tài)(calc_parity)。</p><p> 校驗位計算狀態(tài)(calc):在
62、該狀態(tài),將根據(jù)接收的數(shù)及檢驗位一起parity)</p><p> 進行檢驗各計算。隨后進入校驗位檢查狀態(tài)(check_parity)。</p><p> 校驗位檢查狀態(tài)(check_parity):根據(jù)寄存器的核驗位設(shè)置及接收數(shù)據(jù)的校</p><p> 驗和來判斷是否出現(xiàn)校驗錯。隨后進入等待(wait)狀態(tài)。</p><p> 等待
63、(wait):等待采樣計數(shù)器被減到0。此時可以進入接收停止位狀態(tài)(rec_stop)。</p><p> 接收停止位狀態(tài)(rex_stop):仍然是在第7個采樣時鐘位置,對串行數(shù)據(jù)采樣獲得停止位,如果發(fā)現(xiàn)串行輸入數(shù)據(jù)為0,那么停止位不正常,將把frame error信號置為有效。在采樣時鐘計為0時進入保存數(shù)據(jù)狀態(tài)(push)。</p><p> 保存數(shù)據(jù)狀態(tài)(push):在此狀態(tài)中,將
64、 push信號置為有效,同時將接收到的數(shù)據(jù)及狀態(tài)位壓入FIFO中。不過如果發(fā)現(xiàn)檢測到是break狀態(tài),那么壓入的數(shù)據(jù)將會是0。狀態(tài)然后將再次回到空閑(idle)狀態(tài)。完成一次數(shù)據(jù)幀的接收。</p><p><b> 三、發(fā)送器txd </b></p><p> 發(fā)送模塊的設(shè)計相對簡單。其功能是將要發(fā)送的并行數(shù)據(jù)轉(zhuǎn)換成串行數(shù)據(jù).并且在輸出的串行數(shù)據(jù)流中加入起始位和停
65、止位。發(fā)送器首先將要發(fā)送的8位數(shù)據(jù)寄存,并在最低位后添加起始‘O’.在最高位前添加停止位‘l’,組成10位要發(fā)送的數(shù)據(jù).然后根據(jù)UART內(nèi)核模塊的計數(shù)值將相應(yīng)的數(shù)據(jù)送人移位寄存器輸入端。UART內(nèi)核模塊輸出的計數(shù)值是從0依次計到9。即先將要發(fā)送數(shù)據(jù)的最低位送人移位寄存器。</p><p> 發(fā)送器是監(jiān)視EBI總線,當(dāng)檢測需要發(fā)送一個字節(jié)時,發(fā)送器啟動發(fā)送狀態(tài)機,同樣時,發(fā)送器會根據(jù)寄存器(UCSRB、UCSRC
66、)的設(shè)定,逐位往UART總線的TXD線發(fā)送數(shù)據(jù)。當(dāng)發(fā)送完成一個字節(jié),發(fā)送器輸出發(fā)送狀態(tài)。和接收器相似地,發(fā)送器的設(shè)計也是圍繞“有限狀態(tài)機”而進行。</p><p> 圖4-8 發(fā)送模塊圖</p><p> 圖4-9 發(fā)送模塊電路圖</p><p><b> 發(fā)送器部分代碼</b></p><p> 串行數(shù)據(jù)發(fā)送模
67、塊將數(shù)據(jù)由并行數(shù)據(jù)按照一定的數(shù)據(jù)格式轉(zhuǎn)換為串行數(shù)據(jù)流,并從串行總線輸出。該部分設(shè)計采用有限狀態(tài)機實現(xiàn),分為空閑狀態(tài)(idle)、取數(shù)據(jù)(pop_byte)、發(fā)送開始位(send_start)、發(fā)送數(shù)據(jù)(Send_byte)、發(fā)送核驗位(Send_parity)、發(fā)送停止位(Send_stop)這六個狀態(tài)。</p><p> 圖4-10 發(fā)送狀態(tài)遷移圖</p><p><b>
68、 串行發(fā)送狀態(tài)轉(zhuǎn)移</b></p><p> 空閑狀態(tài)(idle):當(dāng)所有數(shù)據(jù)(包括FIFO)都發(fā)送完畢后,狀態(tài)進入該狀態(tài)。在此狀態(tài)中,一直檢查發(fā)送FIFO中的數(shù)據(jù)個數(shù),一旦FIFO中有數(shù)據(jù)后,馬上進入下一狀態(tài)pop 。</p><p> 取數(shù)據(jù)(pop_byte):在此狀態(tài)中,首先將發(fā)送FIFO的pop信號有效從FIFO中取出數(shù)據(jù),同時根據(jù)LCR[1:0]的值來得到發(fā)送的
69、數(shù)據(jù)位數(shù)。分別算出數(shù)據(jù)的奇偶校驗值,然后轉(zhuǎn)入下一狀態(tài)(Send_start)。</p><p> 發(fā)送開始位(send_start):輸入0并保持16個elk。</p><p> 發(fā)送數(shù)據(jù)(Send ):將數(shù)據(jù)每隔16個cll逐位發(fā)送到。發(fā)送過程中byte)TX還將根據(jù)LCR寄存器的值來得到將要發(fā)送的校驗位。如果設(shè)置為不發(fā)送校驗位,狀態(tài)直接跳轉(zhuǎn)到發(fā)送停止位(send_stop)。<
70、;/p><p> 發(fā)送核驗位(Send_parity) :輸出校驗位并保持16個clk。</p><p> 發(fā)送停止位(Send_stop):根據(jù)LCR的值得到發(fā)送停止位的長度,輸出1。該狀態(tài)執(zhí)行完成后,跳轉(zhuǎn)到空閑狀態(tài)開始下一個數(shù)據(jù)字符的發(fā)送。</p><p> 最后要說明的是,當(dāng)LCR寄存器的break信號被置為有效后,所有的數(shù)據(jù)不應(yīng)該被輸出。</p>
71、;<p> 4.2 UART頂層設(shè)計</p><p> UART的頂層設(shè)計是使用和整合以上三個模塊,以寄存器的方式接到EBI,控制收/發(fā)器模塊。</p><p> 圖4-11 UART頂層設(shè)計框圖</p><p> 圖4-12 UART電路圖</p><p> 頂層主要是完成寄存器的實現(xiàn),使FPGA配置的UART可以以
72、外設(shè)方式接受單片機的監(jiān)控。 </p><p><b> 一、奇偶校驗位設(shè)計</b></p><p> 如前面的文字可以了解到,奇/偶校驗是對數(shù)據(jù)進行逐位同或/異或運算??梢愿爬ǔ扇绻剑?)和公式(2)所示。</p><p> DEVEN = D7⊕D6⊕D5⊕D4⊕D3⊕D2⊕D1⊕D0 公式(1) </p><p&
73、gt; DODD = ~DEVEN 公式(2) </p><p> 對于串行UART,數(shù)據(jù)是逐位傳輸,奇偶檢驗顯得很簡單,如圖4-13所示為串行數(shù)據(jù)奇偶校驗示意圖,可以看出,只需要一個異或門和一個D觸發(fā)器,D觸發(fā)器用于寄存當(dāng)前異結(jié)果,異或門監(jiān)視串行數(shù)據(jù),檢測到下一個串行數(shù)據(jù)到來時,把這位的串行數(shù)據(jù)和D觸發(fā)器寄存的結(jié)果作異或運算,D觸發(fā)器再把這個異或結(jié)果寄存起來。</p><p> 圖
74、4-13 串行數(shù)據(jù)奇偶校驗</p><p> UART收/發(fā)器分別包含一個奇偶校驗,發(fā)送器的奇偶校驗用于對將要發(fā)送的數(shù)據(jù)產(chǎn)生檢驗值,發(fā)送到TXD線上;接收器的奇偶校驗用于對接收的數(shù)據(jù)產(chǎn)生校驗值,再和從RXD線上接收到的校驗值比較,產(chǎn)生校驗結(jié)果。</p><p> 代碼實現(xiàn)請見源低碼。 </p><p><b> 二、有限狀態(tài)機設(shè)計</b>
75、</p><p> 有限狀態(tài)機--Finite State Machine(FSM)的設(shè)計在FPGA設(shè)計中很經(jīng)常用到,在本設(shè)計狀態(tài)機也是采用常用的三步式結(jié)構(gòu)――更新狀態(tài)機當(dāng)前狀態(tài)、判斷狀態(tài)機下一個狀態(tài)和根據(jù)狀態(tài)機當(dāng)前狀態(tài)決定輸出。</p><p> 如程序清單 2.3(見附錄)_為FMS三步式結(jié)構(gòu)偽代碼,本設(shè)計UART的接收器和發(fā)送器的狀態(tài)機是按照這種代碼結(jié)構(gòu)編寫。</p>
76、<p> 首先,先定義狀態(tài)機的狀態(tài)值和編碼方式(如Gray、One-Hot等編碼),按規(guī)范編寫的狀態(tài)機可以被綜合器發(fā)現(xiàn),可以在綜合器選項中選擇狀態(tài)機的編碼方式,所以代碼中狀態(tài)機的狀態(tài)值設(shè)定不是太關(guān)鍵,綜合器是會自動分配的.</p><p><b> 狀態(tài)機部分代碼</b></p><p> 三、UART接收器設(shè)計</p><p&
77、gt; UART接收器的框圖如圖4-14所示。由框圖看出,UART接收器的設(shè)計主要是圍繞“接收狀態(tài)機”進行。RXD線需經(jīng)濾波器處理再進入狀態(tài)機處理,同步時鐘是有用于使UART接收器的波特率時鐘和發(fā)送器同步,波特率計數(shù)器產(chǎn)生波特率,控制狀態(tài)機的數(shù)據(jù)接收。</p><p> 整個接收器的工作由RXD線上的有效起始位啟動。</p><p> 圖4-14 UART接收器框圖</p>
78、;<p> ?。?)總線電平濾波采樣 </p><p> 由于使用環(huán)境的干擾等,RXD線可能出現(xiàn)毛刺,所示需要RXD的輸入需經(jīng)濾波處理,處理方法是在一位數(shù)據(jù)中間取三個點的電平值,少于2個點為電平“1”,則把該位判為電平“0”,否則判為電平“1”,這種方法稱為“多數(shù)表決法”。</p><p> 如圖 4-15所求為這種方法的原理和實現(xiàn)示意圖,表 4.1所示為對應(yīng)的真值表。
79、</p><p> 圖4-15 RXD濾波(多數(shù)表決)</p><p> 表4-1 RXD濾波真值表</p><p> 對RXD線上的濾波適用于起始位的檢測、數(shù)據(jù)位接收、校驗位接收和停止位的判別。</p><p><b> (2)同步時鐘 </b></p><p> 由于UART的收/發(fā)
80、兩個設(shè)備的時鐘可以存在差異,如果接收器在接收時和發(fā)送器的時鐘不同步,增加了傳輸錯誤的機率,所以,接收器需要在檢測到起始位的起始邊沿時,同步自身的時鐘,這樣將減小因雙方時鐘上的差異而導(dǎo)致數(shù)據(jù)傳輸錯誤的機率。</p><p> 該功能的實現(xiàn)是在接收器空閑時,當(dāng)檢測到RXD線的電平從高到低的變化時,復(fù)位接收器的濾特率計數(shù)器,即濾特率計數(shù)器在檢測到以上條件時才開始計數(shù)。</p><p><
81、b> (3)停止位處理 </b></p><p> 停止位是發(fā)送器明確告訴接收器一幀的結(jié)束,發(fā)送器發(fā)送完停止位后可以立即發(fā)送下一幀數(shù)據(jù)的起始位。</p><p> 如上小節(jié)所述,檢測一位的電平是取中間三點電平作多數(shù)表決運算,這個法規(guī)同樣對停止位的接收有效。如果多數(shù)表決為“0”電平,則置位“幀錯誤”標(biāo)志位。</p><p> 但有別于其它位的
82、接收,如圖4-16所示,完成停止位的接收不是在一個波特位結(jié)束處,而是在取完三點電平作多數(shù)表決運算后立取結(jié)束停止位的接收,之后接收器馬上重新監(jiān)視RXD線電平的下降沿,開始檢測下一幀的起始位。</p><p> 圖4-16 接收器停止位處理</p><p> 停止位處理可以降低UART收/發(fā)兩個設(shè)備因時鐘的不一致而導(dǎo)致的傳輸失敗率。</p><p> ?。?)奇偶校
83、驗處理 </p><p> 奇偶校驗是用于標(biāo)記狀態(tài)寄存器的“校驗錯誤”標(biāo)志位。如4.2.1小節(jié)所述的奇偶校驗設(shè)計,無論是否使能奇偶校驗,接收器每接收到一個數(shù)據(jù)位就運算一次校驗,完成數(shù)據(jù)位的接收后得到剛接收到數(shù)據(jù)的校驗值,如果禁止了奇偶校驗,這個校驗值被放棄;如果使能了校驗,這個校驗值會和接發(fā)到的校驗位作比較,根據(jù)比較結(jié)果標(biāo)志相關(guān)的狀態(tài)位。</p><p> (5)接收器狀態(tài)機 <
84、/p><p> 圖4-17所示為接收器狀態(tài)機的狀態(tài)圖,狀態(tài)機的設(shè)計在4.2.2 小節(jié)已有所述,本模塊的狀態(tài)機是按照其結(jié)構(gòu)編寫。</p><p> 狀態(tài)機在空閑狀態(tài)時,RXD為高電平時,由狀態(tài)圖看出,空閑狀態(tài)下,RXD的下降沿將啟動狀態(tài)機,這個下降沿是UART通信協(xié)議的起始位。</p><p> 使用狀態(tài)機處理接收,可以使設(shè)計思路清晰,有利于設(shè)計的維護和升級。 &l
85、t;/p><p> 圖4-17 接收器狀態(tài)機</p><p><b> (6)模塊接口 </b></p><p> 接收器模塊的接口定義如程序清單 4.2所示</p><p> 四、UART發(fā)送器設(shè)計</p><p> 發(fā)送器的設(shè)計相對接收器簡單很多,因為發(fā)送器只需根據(jù)控制輸入,往TXD逐位
86、輸出數(shù)據(jù),在這里省去了發(fā)送器的設(shè)計過程,請自行參考源代碼,代碼設(shè)計和接收器相似。</p><p> 如程序清單 2.5所示為發(fā)送器模塊接口。</p><p><b> 第五章 測試驗證</b></p><p> 5.1 基于quartus II的功能仿真測試</p><p><b> 一、發(fā)送數(shù)據(jù)測
87、試</b></p><p> (一)往數(shù)據(jù)寄存器(UDR)寫輸入數(shù)據(jù)0xA5</p><p> 根據(jù)接口設(shè)計,數(shù)據(jù)寄存器UDR的內(nèi)部地址是0,故操作時序為:內(nèi)部寄存器地址address = 0;寫請求置高,即write_req = 1,數(shù)據(jù)線Write_data = A5,如下圖所示。</p><p><b> 圖5-1</b>
88、;</p><p> ?。ǘ┌l(fā)送數(shù)據(jù)線TX電平情況</p><p> 根據(jù)測試,當(dāng)往數(shù)據(jù)寄存器定入數(shù)據(jù)后,如果控制器處于空閑狀態(tài),將立即發(fā)送該數(shù)據(jù)。數(shù)據(jù)是逐bit發(fā)送的,低位先發(fā)送(LSB),前一步中寫入的數(shù)據(jù)是0xA5=0b10100101,故發(fā)送時比特流應(yīng)為0b10100101,加上起始位(低電平)和停止位(高電平),共10位,最終比特流程為0b0101001011。下圖為寫入數(shù)據(jù)
89、后的發(fā)送數(shù)據(jù)線txd_xo的波形仿真截圖,從圖中可以看到,UART控制器數(shù)據(jù)發(fā)送功能正確。</p><p><b> 圖5-2</b></p><p><b> 二、接收數(shù)據(jù)測試</b></p><p> ?。?)數(shù)據(jù)線RX接收比特流0b0101011111</p><p> 在仿真波形文件上
90、編輯數(shù)據(jù)線rxd_xi的電平值,包括1個起始位,8個數(shù)據(jù)位和1個停止位,如下圖所示。</p><p><b> 圖5-3</b></p><p> ?。?)讀取數(shù)據(jù)寄存器(UDR)</p><p> 當(dāng)數(shù)據(jù)寄存器UDR接收到一幀數(shù)據(jù)后,中斷線int_o將置高,以通知微控制器中斷服務(wù)程序讀取數(shù)據(jù)寄存器中的數(shù)據(jù)。UDR內(nèi)部地址為0,故讀取時序為
91、:內(nèi)部寄存器地址address = 0;寫請求置高,即Read_req = 1。結(jié)果數(shù)據(jù)線read_data上給出了數(shù)據(jù)0xF5,如下圖所示。</p><p><b> 圖5-4</b></p><p> 分析,數(shù)據(jù)線rxd_xi上接收到的有效數(shù)據(jù)比特流為0b10101111,該比特流是低位在前,正常位序為0b11110101,即0xF5,說明UART控制順數(shù)據(jù)接
92、收功能正確。</p><p> 5.2 基于FPGA的系統(tǒng)級測試</p><p><b> 第六章 總結(jié)</b></p><p> 隨著電子技術(shù)的日新月異,電子設(shè)備向著小型化、低功耗方向發(fā)展。本文以某手持設(shè)備接口板開發(fā)為契機,結(jié)合實際需求,通過了解和學(xué)習(xí)最新的電子技術(shù)與設(shè)計手段,提出了不同于傳統(tǒng)的采用ASIC芯片實現(xiàn)的方案,也就是采用
93、SOC來實現(xiàn)UART控制器的設(shè)計。UART是一款比較有代表的串行通信接口。文中介紹了UART通信協(xié)議及程序設(shè)計過程。SOC作為可編程器件,具有硬件電路簡潔、系統(tǒng)靈活性高的特點。這種方式實現(xiàn)的串行通信可以在保證了系統(tǒng)的功能性的同時使系統(tǒng)硬件更加簡潔,從而降低系統(tǒng)功耗和成本。</p><p> 論文采用業(yè)界流行的Verilog HDL語言,按照自頂而下的設(shè)計流程完成了UART內(nèi)部各模塊的設(shè)計和仿真。在后期,在實物開
94、發(fā)平臺上進行了的設(shè)計驗證,結(jié)果證實了該方案能夠完成擴展UART的功能,并且能夠擁有更小的體積,消耗更少的能量,非常適合手持設(shè)備的應(yīng)用。</p><p> 隨著IP核的不斷積累和成熟以及SOC芯片工藝的提高,它的設(shè)計靈活性、低功耗、高度集成性等優(yōu)勢會越來越明顯,必將成為一種主流的設(shè)計方法得到廣泛的應(yīng)用。參考文獻</p><p> [1] Nios II Processor Referen
95、ce Handbook. Altera Corporation.2006,10</p><p> [2] Nios II Software Developer’s Handbook. Altera Corporation.2006</p><p> [3] DE2 User Manual. Altera Corporation.2006</p><p> [4
96、] Quartus II Handbook v9.1.Altera Corporation.2009</p><p> [5] 魏亞防,李振華,盧雪萍.基于FPGA的UART控制器的實現(xiàn). 浙江紹興:浙江郵電職業(yè)技術(shù)學(xué)院,2011</p><p> [6] 唐建.LPC總線接口UART控制器FPGA實現(xiàn).西安:西安電子科技大學(xué),2008</p><p> [
97、7] 夏宇聞,《Verilog 數(shù)字系統(tǒng)設(shè)計》 北京:北京航空航天大學(xué)出版社,2004</p><p> [8] 潘松,王國棟《VHDL實用教程》 成都:電子科技大學(xué)出版社,2001,7</p><p> [9] 季雄,段繼海,胡媛媛,等.《基于Verilog HDL 的UART設(shè)計》[J].微計算機信息</p><p> [10]馬忠梅,祝烈煌,李善平,
98、葉楠《ARM&Linux嵌入式系統(tǒng)教程》,北京航空航天大學(xué)出版社</p><p><b> 致 謝</b></p><p> 本次畢業(yè)設(shè)計是在兩位指導(dǎo)教員--戴紫彬教授與李偉教員的悉心指導(dǎo)下完成的。導(dǎo)師嚴(yán)謹(jǐn)求是的治學(xué)態(tài)度,深厚廣博的學(xué)術(shù)功底,春風(fēng)化雨的指導(dǎo)精神,在整個設(shè)計過程中,無疑給我了莫大的幫助和鼓舞。在此,我衷心的向兩位教員表示感謝!</p&
99、gt;<p> 同時,我要感謝母校四年來對我的教育和培養(yǎng),感謝它為我提供了良好的學(xué)習(xí)和生活環(huán)境,感謝各位領(lǐng)導(dǎo)、教員在思想上、學(xué)習(xí)上、生活上對我的關(guān)懷和指導(dǎo),感謝各位同學(xué)在學(xué)習(xí)生活中給予我的關(guān)心和幫助,尤其是劉繼德、張白冰、賈志和楊昌盛同學(xué),是他們在論文撰寫及課題實施過程中給予我?guī)椭椭С?,并在設(shè)計過程多次提出了他們寶貴的意見,完善了我的論文。</p><p> 最后,再次感謝所有幫助過我的教員和
100、同學(xué)!</p><p><b> 附 錄</b></p><p><b> 狀態(tài)機設(shè)計代碼</b></p><p> 程序清單 4.1 FMS三步式結(jié)構(gòu)偽代碼/* </p><p> * 定義狀態(tài)機的狀態(tài) */ </p><p> `define STAT_WID
101、TH 3 </p><p> parameter </p><p> STAT_IDLE = 1, </p><p> STAT_ONE = 2, </p><p> STAT_TWO = 3, </p><p> STAT_THREE = 4; </p><p> reg [`ST
102、AT_WIDTH-1] rStatCur; </p><p> reg [`STAT_WIDTH-1] rStatNext; </p><p> * 更新狀態(tài)機的當(dāng)前狀態(tài) */ </p><p> always @(posedge clk or negedge rst_n) </p><p><b> begin </
103、b></p><p> if (~rst_n) begin </p><p> rStatCur <= STAT_IDLE; </p><p><b> end </b></p><p> else begin </p><p> rStatCur <= rStatNe
104、xt; </p><p><b> end </b></p><p><b> end </b></p><p> * 根據(jù)當(dāng)前狀態(tài)機的狀態(tài)和判斷條件, 決定狀態(tài)機的下一個狀態(tài), * 綜合成組合邏輯 */ </p><p> always @( </p><p>
105、rStatCur or </p><p><b> ... or </b></p><p><b> ... </b></p><p><b> ) </b></p><p><b> begin </b></p><p>
106、 case (rStatCur) </p><p> STAT_IDLR: begin </p><p><b> if (...) </b></p><p> rStatNext <= STAT_ONE; </p><p><b> else </b></p><
107、;p> rStatNext <= STAT_IDLE; </p><p><b> end </b></p><p> STAT_ONE: begin </p><p><b> ...; </b></p><p><b> ...; </b></p
108、><p><b> end </b></p><p> STAT_TWO: begin </p><p><b> ...; </b></p><p><b> ...; </b></p><p><b> end </b>&
109、lt;/p><p> STAT_THREE: begin </p><p><b> ...; </b></p><p><b> ...; </b></p><p><b> end </b></p><p> default: begin &l
110、t;/p><p> rStatNext <= STAT_IDLE; </p><p><b> end </b></p><p><b> endcase </b></p><p><b> end </b></p><p> * 根據(jù)當(dāng)前狀
111、態(tài)機的狀態(tài), 決定輸出 */ </p><p> always @(posedge clk or negedge rst_n) </p><p><b> begin </b></p><p> if (~rst_n) begin </p><p><b> end </b></p&g
112、t;<p> else begin </p><p> case (rStatCur) </p><p> STAT_IDLR: begin </p><p><b> ...; </b></p><p><b> ...; </b></p><p>
113、<b> end </b></p><p> STAT_ONE: begin </p><p><b> ...; </b></p><p><b> ...; </b></p><p><b> end </b></p><
114、p> STAT_TWO: begin </p><p><b> ...; </b></p><p><b> ...; </b></p><p><b> end </b></p><p> STAT_THREE: begin </p><
115、p><b> ...; </b></p><p><b> ...; </b></p><p><b> end </b></p><p> default: begin </p><p><b> ...; </b></p>
116、<p><b> ...; </b></p><p><b> end </b></p><p><b> endcase </b></p><p><b> end </b></p><p><b> end </b
117、></p><p><b> 模塊接口設(shè)計代碼</b></p><p> 程序清單 4.2 接收器模塊接口</p><p> **==============================================</p><p> ** 模塊 名: rxd </p><p>
118、; ** 描述: 實現(xiàn)UART的接收功能, 可能選擇數(shù)據(jù)位, 檢查奇偶檢驗, 幀錯誤檢查功能, 實 現(xiàn)了ARV單片機的異步串口(UART) </p><p> **============================================== </p><p> module rxd ( </p><p><b> clk, <
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 基于usb接口的溫度控制器畢業(yè)設(shè)計
- 基于fpga的uart控制器設(shè)計
- 面向SOC的UART及DMA控制器IP軟核的設(shè)計.pdf
- LPC總線接口UART控制器FPGA實現(xiàn).pdf
- 基于嵌入式片上系統(tǒng)的AC97控制器IP核設(shè)計.pdf
- 畢業(yè)設(shè)計--液位系統(tǒng)的控制器設(shè)計
- 基于FPGA的UART控制器設(shè)計定稿.doc
- CAN總線控制器的接口IP核設(shè)計與實現(xiàn).pdf
- 畢業(yè)設(shè)計---汽車控制器的設(shè)計
- 畢業(yè)設(shè)計----水位控制器設(shè)計
- usb2.0主機控制器片上系統(tǒng)設(shè)計的研究
- 溫度控制器畢業(yè)設(shè)計
- 畢業(yè)論文-基于fpga的uart控制器設(shè)計【精校排版】
- pci接口控制器的設(shè)計
- abs控制器畢業(yè)設(shè)計
- pid控制器畢業(yè)設(shè)計
- 溫度控制器畢業(yè)設(shè)計
- 基于FPGA的UART控制器設(shè)計論文初稿.doc
- 全速USB設(shè)備控制器接口IP核的設(shè)計與實現(xiàn).pdf
- 畢業(yè)設(shè)計--微波爐控制器系統(tǒng)
評論
0/150
提交評論