異步串行接口電路與通信系統(tǒng)設(shè)計報告_第1頁
異步串行接口電路與通信系統(tǒng)設(shè)計報告_第2頁
異步串行接口電路與通信系統(tǒng)設(shè)計報告_第3頁
異步串行接口電路與通信系統(tǒng)設(shè)計報告_第4頁
異步串行接口電路與通信系統(tǒng)設(shè)計報告_第5頁
已閱讀5頁,還剩32頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、. . . . 2009級可編程邏輯課程設(shè)計課程名稱: 可編程邏輯設(shè)計實驗題目:異步串行接口電路與通信系統(tǒng)設(shè)計學生: YC、SXL、ZY、YLJ、WJ開課學院: Bio學院開課時間: 2011至2012學年第二學期29 / 37大學本科學生課程設(shè)計指導教師評定成績表學 院be學院指導教師Zxm. Wxp.年級2009級專 業(yè)BME學生YC、SXL、ZY、YLJ、WJ課程設(shè)計題目異步串行接口電路與通信系統(tǒng)設(shè)計指導教師評語課程設(shè)計成績指導教師簽名: 年 月 日大學本科學生課程設(shè)計任務書課程設(shè)計題目異步串行接口電路與通信系統(tǒng)設(shè)計學院BE學院專業(yè)BME年級、班09 BME 01、02班設(shè)計要求:設(shè)計一

2、個能進行異步全雙工串行通信的模塊,該模塊以固定的串行數(shù)據(jù)傳送格式收發(fā)數(shù)據(jù)。 1) 每幀數(shù)據(jù)供10 位,其中 1位啟動位,8位數(shù)據(jù)位,1位停止位 。2) 波特率為:9600。3) 收發(fā)誤碼率1% 。4) 實現(xiàn)與PC機的通信,PC機端采用串口調(diào)試助手。在 PC 機端,用串口調(diào)試助手發(fā)送和顯示數(shù)據(jù);在 FPGA 端,發(fā)送的數(shù)據(jù)來自于自建ROM存儲的數(shù)據(jù),數(shù)據(jù)量為200,接受數(shù)據(jù)由串口調(diào)試助手發(fā)送,并由數(shù)碼管顯示接受數(shù)據(jù)值。學生應完成的工作:(1) 程序的編寫,完成功能的仿真;(2) 利用SIGNALTAP完成在線的仿真與調(diào)試,使達到設(shè)計要求。(3) 實驗報告的書寫。參考資料:1 松,黃繼業(yè) EDA技

3、術(shù)使用教程 科學 2006.62 何偉 現(xiàn)代數(shù)字系統(tǒng)實驗與設(shè)計 大學 2005.93 素梅 基于FPGA的ROM設(shè)計問題 期刊論文-信息技術(shù) 2010(3):87-934 進海,志博,馬力 基于RS- 232 異步串行通信接口通用通信協(xié)議的設(shè)計與實現(xiàn) 期刊論文-現(xiàn)代電子技術(shù) 1998(7):8-105 蘭石,郭建英,王長清 異步串行通信接口電路的VHDL語言設(shè)計 師高等??茖W校學報 2003.9(5):30-32課程設(shè)計工作計劃:6月25日6月26日:資料的查詢;6月27日6月29日: 程序的書寫;6月30日7月2 日 :程序的調(diào)試,達到最終的目的;7月3 日 7月5日 :報告的書寫。任務下達

4、日期 2012 年 6 月 25 日 完成日期 2012 年 7 月 6 日指導教師(簽名) 學生(簽名)說明:1、學院、專業(yè)、年級均填全稱。 2、本表除簽名外均可采用計算機打印。本表不夠,可另附頁,但應在頁腳添加頁碼。摘要通用串口是遠程通信接口,在數(shù)字系統(tǒng)使用很普遍,是一個很重要的部件。本論文使用VHDL語言描述硬件功能,并適當借助Verilog HDL語言,利用QuartusII9.0在 FPGA 芯片上的綜合描述,采用模塊化設(shè)計方法設(shè)計UART(通用異步收發(fā)器)的各個模塊。其中包括波特率發(fā)生器,程序控制器,UART數(shù)據(jù)接收器和UART數(shù)據(jù)發(fā)送器,本文采用的外部時鐘為50MHZ,波特率為9

5、600。在QuartusII 9.0環(huán)境下進行設(shè)計、編譯和仿真。最后的程序編譯仿真結(jié)果與硬件測試結(jié)果表明系統(tǒng)設(shè)計完全正確。關(guān)鍵字:VHDL; Verilog HDL;UART; 幀格式; FPGA;異步通信AbstractIn this paper, the use of hardware description languages VHDL function, the Verilog HDL language ,the use of Alteras FPGA chips, the design of modular design method of UART (Universal Async

6、hronous Receiver Transmitter) of each module, including Porter, generators, process controllers, UART receiver data and the UART transmitter data. QuartusII 9.0 and Modelsim6.0 in environment design, compilation, simulation and downloading. Finally, simulation results show that the procedures for co

7、mpiling data entirely correct. Key words: VHDL; VerilogHDL; UART; frame format; FPGA; Asynchronous Communication目錄一 、課題設(shè)計概述與原理 11.1設(shè)計目的11.2設(shè)計要求11.3設(shè)計容11.4設(shè)計原理11.4.1 串行通信的基本概念 1 1.4.1.1 數(shù)據(jù)傳輸方式 11.4.1.2 波特率21.4.1.3 誤碼率21.4.1.4 串行通信的基本方式21.4.2 異步串行通信標準接口21.4.3 異步通信的控制時鐘31.4.4 全雙工串行通信模塊UART 4二 、系統(tǒng)設(shè)計方案 6

8、2.1 頂層邏輯設(shè)計圖 62.2 設(shè)計說明 62.3 單元程序設(shè)計與仿真分析 7三 、單元程序設(shè)計與仿真分析 73.1系統(tǒng)時鐘50分頻 83.2 1MHz時鐘1M分頻83.3 波特率產(chǎn)生模塊93.4 地址尋址模塊電路圖 103.5 數(shù)據(jù)接收模塊 113.6 數(shù)據(jù)發(fā)送模塊電路圖 123.7 LED顯示模塊 133.8 ROM數(shù)據(jù)存儲模塊14四 、系統(tǒng)原理圖設(shè)計與仿真分析15五 、硬件實驗結(jié)果與時序分析結(jié)果 16六 、總結(jié)17七 、參考文獻19八 、附錄20附錄(分工說明)20附錄(設(shè)計程序)20 325分頻 20地址模塊 21rom模塊 21uart接收模塊22uart發(fā)送模塊 25顯示模塊 2

9、8一、 課題設(shè)計概述與原理1.1設(shè)計目的 1) 掌握串行通訊中的狀態(tài)機的工作原理和設(shè)計方法。 2) 掌握串并轉(zhuǎn)換和并串轉(zhuǎn)換的工作原理和設(shè)計方法。3) 掌握寄存器、BCD數(shù)碼管的工作原理和設(shè)計方法。4) 掌握自建ROM數(shù)據(jù)存儲的原理和方法。5) 掌握異步串行通訊電路與系統(tǒng)的設(shè)計方法。6) 掌握在EDA系統(tǒng)軟件Quartus環(huán)境下基于FPGA/CPLD的數(shù)字系統(tǒng)設(shè)計方法,掌握該環(huán)境下功能仿真、時序仿真、管腳鎖定和芯片下載的方法。1.2設(shè)計要求 設(shè)計一個能進行異步全雙工串行通信的模塊,該模塊以固定的串行數(shù)據(jù)傳送格式收發(fā)數(shù)據(jù)。要求如下: 1) 每幀數(shù)據(jù)供10 位,其中 1位啟動位,8位數(shù)據(jù)位,1位停止

10、位 。2) 波特率為:9600。3) 收發(fā)誤碼率1% 。4) 實現(xiàn)與PC機的通信,PC機端采用串口調(diào)試助手。在 PC 機端,用串口調(diào)試助手發(fā)送和顯示數(shù)據(jù);在 FPGA 端,發(fā)送的數(shù)據(jù)來自于自建ROM存儲的數(shù)據(jù),數(shù)據(jù)量為200,接受數(shù)據(jù)由串口調(diào)試助手發(fā)送,并由數(shù)碼管顯示接受數(shù)據(jù)值。1.3設(shè)計容1) 設(shè)計異步串行接口電路、分頻器、ROM、全雙工串行通信模塊和譯碼顯示電路。2) 設(shè)計系統(tǒng)頂層電路。3) 進行功能仿真和時序仿真。4) 對仿真結(jié)果進行分析,確認仿真結(jié)果達到了設(shè)計要求。5) 在EDA硬件開發(fā)系統(tǒng)上進行硬件驗證與測試,確保設(shè)計電路系統(tǒng)能正確的工作。1.4設(shè)計原理1.4.1 串行通信的基本概念

11、1.4.1.1數(shù)據(jù)傳輸方式 在串行通信中,數(shù)據(jù)在通信線路上的傳送有三種方式:單工方式 數(shù)據(jù)只能按一個固定的方向傳送。半雙工方式 數(shù)據(jù)可以分時在連個方向傳輸,但不能同時雙向傳輸。全雙工方式 數(shù)據(jù)可以同時在兩個方向上傳輸。 本設(shè)計選用的是全雙工方式。 1.4.1.2 波特率 即單位時間傳送的二進制數(shù)據(jù)的位數(shù),也稱數(shù)據(jù)位率,單位為bit/s(位/秒)。波特率是衡量串行數(shù)據(jù)傳送速度快慢的重要指標和參量。 在串行通信中,數(shù)據(jù)的接收和發(fā)送都必須要有時鐘信號對傳送的數(shù)據(jù)進行定位和同步控制。波特率與收/發(fā)時鐘頻率的關(guān)系如下:收/發(fā)時鐘頻率 = n波特率 n的取值一般為1、16、32、64等。同步通信必須滿足n

12、=1,異步通信中常采用n=16. 1.4.1.3 誤碼率 即數(shù)據(jù)經(jīng)過傳輸后發(fā)生錯誤的位數(shù)(碼元數(shù))與總傳輸位數(shù)(碼總元數(shù))之比,其與通信線路質(zhì)量、干擾大小與波特率等因素有關(guān)。 1.4.1.4 串行通信的基本方式(兩種)異步串行方式 數(shù)據(jù)流中,字符間異步,字符部各位間同步。同步串行方式 數(shù)據(jù)流中,字符間以與字符部各位間都同步。 目前PC機的串行接口基本都采用的異步通信方式,故本設(shè)計也采用此方式。1.4.2 異步串行通信標準接口 通信協(xié)議,即通信規(guī)程,指通信雙方在信息傳輸格式上的一種約定。 在數(shù)據(jù)通信中,收/發(fā)器之間傳送的是一組二進制的“0”“1”位串,而“0”“1”在不同的位置可能有不同的含義。

13、有的只用于同步,有的代表通信雙方的地址,有的是控制信息,有的是為了差錯控制而附加上的冗余位,有的則是真正的需要傳輸?shù)臄?shù)據(jù)。這些都需要在通信協(xié)議中事先進行約定,以形成收/發(fā)雙方共同遵守的格式。 逐位傳送的串行通信中,接收端必須能夠識別每個二進制位的開始和結(jié)束,即位定時;還要能識別每個字符的開始和結(jié)束,即字符定時。異步串行通信時,每個字符作為一幀獨立的信息,可隨機出現(xiàn)在數(shù)據(jù)流中,即每個字符出現(xiàn)在數(shù)據(jù)流中的相對時間是任意的。一個字符一旦出現(xiàn)后,字符中的各位便以預先固定的時鐘頻率進行傳送。為確保異步通信的正確性,必須找到一種可以使收/發(fā)雙方在隨機傳送的字符間實現(xiàn)同步的方法,即在字符格式中設(shè)置起始位和停

14、止位。如圖所示:每幀信息(即每個字符)由4部分組成: 1位起始位,規(guī)定為低電平“0”;5-8位數(shù)據(jù)位,緊跟于起始位的后面。規(guī)定從低位向高位依次傳送;0位或1位奇偶校驗位;1位,3/2位或2位停止位,規(guī)定為高電平。起始位標志著每個字符的開始,通知接收器開始裝配一個字符,以便和發(fā)送器取得同步;停止位標志著每個字符的結(jié)束。通過起始位和停止位的結(jié)合,實現(xiàn)異步字符傳輸?shù)耐?。異步通信的關(guān)鍵是接收器必須準確地發(fā)現(xiàn)每個字符開始出現(xiàn)的時刻,因此協(xié)議規(guī)定起始位和結(jié)束位必須采用相反的極性,利用前一個字符的高電平停止位到后一個字符的低電平起始位的負跳變,接收器便知道這是一個字符的開始,以此作為新字符位檢測與采樣的時

15、間基準。為保持相鄰兩個字符的轉(zhuǎn)換是一個負跳變,故通信協(xié)議規(guī)定字符與字符間出現(xiàn)的空閑狀態(tài)(冗余位)也用“1”填充。 按課程設(shè)計要求,我們的設(shè)計的傳輸格式為1位起始位,1位停止位和8位數(shù)據(jù)位,無奇偶校驗位。1.4.3 異步通信的控制時鐘 因為在異步通信中,同步只在一個字符間保持,每個字符在傳輸時都會有新的起始位和停止位,故發(fā)送時鐘和接收時鐘只需分別使用兩個頻率一樣的局部時鐘,無需使用同一個時鐘。由于收/發(fā)器使用的為各自獨立控制的時鐘,他們的頻率雖然要求要一樣,但不可能真正嚴格的一樣,它們的上下始終邊沿總會不可避免地出現(xiàn)一定程度的偏移。這種收/發(fā)時鐘的相對誤差會導致接收端的采樣錯誤,為保證數(shù)據(jù)能正確

16、傳送,除了用起始位、停止位和空閑位提供正確的時間基準外,還可以采用接收器在碼元中心進行采樣,獲得最大收/發(fā)時鐘頻率偏差容限的方法來實現(xiàn)。為了保證在每個碼元的中心位置采樣,在準確知道起始位前沿的前提下,接收器在起始位前沿到來后,先等半個周期采樣一次,然后每過一個位周期采樣一次,直至收到停止位。為提高采樣的分辨能力和抗干擾能力,接收器應采用比波特率高的時鐘來控制采樣時間。利用經(jīng)16倍波特率的接收時鐘實現(xiàn)再同步的過程如上圖所示。利用這種經(jīng)16倍頻的接收時鐘對串行數(shù)據(jù)流進行檢測和采樣,接收器能在一個位周期的1/16時間決定出字符的開始。不僅有利于實現(xiàn)收發(fā)同步,還有利于抗干擾和提高異步串行通信的可靠性。

17、其采樣、檢測過程為:停止位或任意數(shù)目空閑位的后面,接收器在每個接收時鐘的上升沿對輸入數(shù)據(jù)流進行采樣,通過檢測是否有9個連續(xù)的低電平來確定它是否為起始位,如果是,則確認其為起始位,并且對應的是起始位中心,然后,以此為準確的時間基準,每隔16個時鐘周期采樣一次,檢測一個數(shù)據(jù)位;如果不是嚴格的9個連續(xù)的低電平,則認為這是一個干擾信號,將其刪除。1.4.4 全雙工串行通信模塊UARTUART(Universal Asynchronous Receiver & Transmitter)即通用異步收發(fā)器,是串行通信的一種協(xié)議,它規(guī)定串行通信的波特率、起始/停止位、數(shù)據(jù)位、校驗位等格式,以與各種異步握手信號

18、。也可將UATR理解為通用串行數(shù)據(jù)總線,該總線雙向通信,可以實現(xiàn)全雙工傳輸和接收。UART能提供RS-232C數(shù)據(jù)終端設(shè)備接口,使計算機可以和調(diào)制解調(diào)器或其它使用RS-232C接口的串行設(shè)備通信,包括監(jiān)控調(diào)試器和其它器件。 計算機部采用的是并行數(shù)據(jù),不能直接把數(shù)據(jù)發(fā)到Modem,必須經(jīng)過UART的整理才能進行異步傳輸,其過程為:CPU先把準備寫入串行設(shè)備的數(shù)據(jù)放到UART的寄存器中,再通過FIFO(First Input First Output,先入先出隊列)傳送到串行設(shè)備;在UART模塊中對要輸出的數(shù)據(jù)流進行加工,使消息幀格式變?yōu)閺囊粋€低起始位開始,后面是58個數(shù)據(jù)位,一個可用的奇偶校驗位

19、和一個或幾個高位停止位;接收時,接收器發(fā)現(xiàn)開始位(即0)時就判斷數(shù)據(jù)準備發(fā)送,并嘗試與發(fā)送器始終頻率同步,UART從消息幀中去掉起始位和結(jié)束位,對進來的字節(jié)進行奇偶校驗,并將數(shù)據(jù)字節(jié)從串行轉(zhuǎn)換成并行。 上圖為UART實現(xiàn)原理圖,UART核模塊的功能是控制接收、數(shù)據(jù)加載和數(shù)據(jù)發(fā)送的過程,常用狀態(tài)機來實現(xiàn)。在數(shù)據(jù)接收時,UART核模塊負責控制波特率發(fā)生器和移位寄存器,使得移位寄存器在波特率時鐘的驅(qū)動下同步地接收并且保存RS-232接收端口上的串行數(shù)據(jù);在數(shù)據(jù)發(fā)送時,UART核模塊首先依據(jù)待發(fā)送的數(shù)據(jù)和奇偶校驗位的設(shè)置產(chǎn)生完整的發(fā)送序列(包括起始位、數(shù)據(jù)位、奇偶校驗位和停止位),之后控制移位寄存器將

20、序列加載到移位寄存器的部寄存器里,最后再控制波特率發(fā)生器驅(qū)動移位寄存器將數(shù)據(jù)串行輸出。根據(jù)設(shè)計的要求,奇偶校驗模塊可以省略。 UART的接收和發(fā)送過程的原理框圖如下:二 系統(tǒng)設(shè)計方案2.1頂層邏輯設(shè)計圖2.2 UART接收模塊和發(fā)送模塊設(shè)計框圖接收模塊發(fā)送模塊UART接收模塊的功能:實時檢測線路,當線路產(chǎn)生下降沿時,即認為有數(shù)據(jù)傳輸,啟動接收數(shù)據(jù)進程進行接收,按從低位到高位接收數(shù)據(jù)。UART發(fā)送模塊的功能:空閑狀態(tài),線路處于高電平;當受到發(fā)送數(shù)據(jù)指令后,拉低線路一個數(shù)據(jù)的時間T,接著數(shù)據(jù)按低位到高位一次發(fā)送,數(shù)據(jù)發(fā)送完畢后,接著發(fā)送停止位(停止位為高電平),一幀數(shù)據(jù)發(fā)送結(jié)束。2.3設(shè)計說明整個

21、串行通信系統(tǒng)由8個模塊構(gòu)成: 1個50分頻器cnt50、1個1M分頻器cnt_1M、1個用于產(chǎn)生16倍波特率(9600)的模塊325分頻器clkdiv325、1個并轉(zhuǎn)串UART數(shù)據(jù)接收模塊dyzrx、1個串轉(zhuǎn)并UART數(shù)據(jù)發(fā)送模塊dyztx、1個LED顯示模塊dyz_disp、1個自建ROM模塊rom123以與它的地址尋址模塊adress1 。其中,dyzrx和dyztx為UART核心模塊。實驗室用FPGA上的晶振產(chǎn)生一個頻率為50MHz的信號,該時鐘信號通過模塊cnt50和cnt_1M,得到1Hz的時鐘信號,該時鐘信號作為adress1、rom123的控制時鐘和dyztx的wrsig(寫控制

22、)信號。同時,讓50MHz的信號通過模塊clkdiv325,得到一個16倍波特率的收發(fā)時鐘頻率,由它控制數(shù)據(jù)收發(fā)模塊dyzrx和dyztx的數(shù)據(jù)收發(fā)以與顯示模塊dyz_disp的顯示。整個通信系統(tǒng)實現(xiàn)的功能為:當時鐘上升沿到來的時候,PC機端接收來自串口調(diào)試助手的rx的數(shù)據(jù)并將其顯示,即實現(xiàn)與PC機的通信;在 FPGA 端,發(fā)送的數(shù)據(jù)來自于rx串轉(zhuǎn)并后的dataout的值,并將該值送給adress1,利用地址尋址得到ROM123對應存儲位置的數(shù)據(jù),其中ROM123的數(shù)據(jù)量為256,編程設(shè)置ROM123的地址自增啟動信號為“11”。即當小助手發(fā)送“11”的時候?qū)觓dress1模塊尋址讀數(shù),并

23、將“11”顯示在選中的數(shù)碼管上,與此同時,在滿足波特率的時鐘作用下地址模塊將自動連續(xù)發(fā)送ROM123的存儲數(shù)據(jù),發(fā)送結(jié)束之后將結(jié)束判斷數(shù)據(jù)顯示在FPGA端上。三 單元程序設(shè)計與仿真分析3.1系統(tǒng)時鐘50分頻模塊將系統(tǒng)的標準50HZ時鐘50分頻產(chǎn)生1Mhz的時鐘,為時鐘分頻的一個過度模塊,為產(chǎn)生1HZ的時鐘奠基。電路原理圖和模塊圖如下所示:其時序仿真圖如下:可見實現(xiàn)了對時鐘的50分頻的功能。3.2 1MHz時鐘1M分頻把1MHz時鐘分為1HZ,RTL電路原理圖與模塊圖如下,將上述的1MHz 的時鐘分頻為1Hz的時鐘信號。時序仿真圖如下:由于分頻的設(shè)置導致不能明顯地看到分頻的效果,但其正確性是毫無

24、疑問的。3.3 波特率產(chǎn)生模塊直接將系統(tǒng)的50MHz時鐘325分頻產(chǎn)生最接近16倍9600波特率的信號。其模塊圖和RTL原理圖如下:時序仿真圖如下:跟上一情況一樣由于分的次數(shù)太大無法看到明顯的時序圖。3.4 地址尋址模塊電路圖將接收的數(shù)據(jù)串轉(zhuǎn)并成為地址尋址信號,用以對我們自建的ROM123里面的數(shù)據(jù)進行尋址讀數(shù),adress7.0后面即接的是ROM123的adress7.0。其RTL原理圖和模塊圖如下:時序仿真圖如下:可見只要我們給與data一個“11”的啟動值,尋址模塊遍可以不停滴連續(xù)從0到255尋址繼而讀數(shù),仿真效果很理想。3.5 數(shù)據(jù)接收模塊目的在于把接收到的數(shù)據(jù)通過鎖存后轉(zhuǎn)換成可以輸給

25、譯碼電路譯碼顯示。其RTL原理圖和模塊圖如下:時序仿真圖如下:可見在時鐘和rdsig、idle有效的情況下數(shù)據(jù)能正確轉(zhuǎn)換到datadout,后面續(xù)借顯示部分的電路即可以顯示出十六進制的數(shù)值。3.6 數(shù)據(jù)發(fā)送模塊電路圖將接收到來自ROM123的數(shù)據(jù)通過該電路發(fā)送給PC機端,并在FPGA上顯示啟動位和停止位。其RTL原理圖和模塊圖如下:時序仿真圖如下:可見在時鐘到來,idle、wrsig有效的情況下,通過該電路可以將收到的數(shù)據(jù)輸出。3.7 LED顯示模塊時序仿真圖如下:可見對于給與的任意一個十六進制的數(shù)據(jù),都能正確通過譯碼電路到LED部分顯示,效果明顯。3.8 ROM數(shù)據(jù)存儲模塊通過Quartus

26、II9.0軟件,依次選擇FILENEWMemory Initialize File,從0到255一次存入256個數(shù)據(jù),保存為.mif文件用于尋址輸出數(shù)據(jù)用。在頂層圖中雙擊新建ROM模塊,設(shè)置數(shù)據(jù)寬度為8bit,256words,將.mif文件和ROM相關(guān)聯(lián),即生成如圖所示的模塊圖。四 原理圖設(shè)計與仿真分析RTL級電路圖仿真波形見上圖:由圖可見給rx一個“1”,輸出tx也為“1”, 故仿真結(jié)果正確。五 硬件實驗結(jié)果如上圖所示為硬件調(diào)試時,通過串口小助手發(fā)送啟動數(shù)據(jù)“11”時,PC端的顯示結(jié)果,即當PC端發(fā)出“11”,啟動adress1中對應指令,使地址自加1,依次每隔1秒讀出對應地址所存的256

27、個數(shù)據(jù),并顯示在串口小助手的接收窗口,與此同時,F(xiàn)PGA的LED部分顯示“11”。當256個數(shù)據(jù)完全讀出后,如果不改變手動端發(fā)送的數(shù)據(jù)“11”,則這256個數(shù)據(jù)將循環(huán)發(fā)送并顯示在串口小助手接收窗口;若改變命令值,使其為除“11”之外的有效數(shù)據(jù),則接收窗口將顯示手動輸入的那個值,并且這個值將同時顯示在FPGA端的LED上。六 總結(jié)這次課程設(shè)計對我們來說是考驗,但是有考驗才有收獲。從開始的分組,選課題,做課題,到實驗結(jié)束,其中的種種讓我們學習到了很多。拿到課題時,老師對其中的某些概念原理做了講解,可我們對其中具體的細部原理仍然不是很明白。實驗開始的時候,我們每個人都查找了關(guān)于該課題的資料,了解了課

28、題的原理,不懂得地方請教了同學和老師,清楚了實驗要實現(xiàn)的功能。經(jīng)過了查資料這一環(huán)節(jié),我們發(fā)現(xiàn)數(shù)電實驗書中有和課題類似的例子,所以我們參考了書上的程序,根據(jù)實驗要求進行了修改,嘗試去實現(xiàn)我們想要的功能。初始的電路設(shè)計方案包含了分頻模塊、地址模塊、rom模塊、SCI模塊和led顯示模塊。大概的思路是通過恰當?shù)姆诸l得到要求的波特率,使用時鐘觸發(fā),通過地址的改變使rom發(fā)送數(shù)據(jù),SCI模塊串并轉(zhuǎn)換、并串轉(zhuǎn)換(借助狀態(tài)機)后分別由串口小助手接收、led進行顯示。但是我們并沒有得到想要的結(jié)果,硬件下載后實驗板沒有顯示。我們發(fā)現(xiàn)書上提供的方案與實際的硬件條件在很多方面都不一樣,于是我們修改了顯示模塊的程序,

29、使它符合實驗室提供的實驗板。修改后,實驗板經(jīng)硬件下載能顯示初始值00,串口發(fā)送數(shù)據(jù)后仍然沒有實現(xiàn)接收功能。經(jīng)過老師的耐心講解,我們發(fā)現(xiàn)我們對波特率的理解有誤,實驗需要的是16倍波特率的信號,我們改動了分頻模塊的程序,先50分頻后再6分頻,使其接近9600波特率。但是實驗結(jié)果并不正確,串口小助手能自行將接收到的數(shù)據(jù)不斷顯示,不隨其發(fā)送的信號觸發(fā),且發(fā)送的數(shù)據(jù)單一,并不是最終希望得到的數(shù)據(jù)。詢問老師后得知,出現(xiàn)此現(xiàn)象是由于系統(tǒng)部對于起始位的識別有偏差,將錯誤的數(shù)據(jù)位定義為起始位后,將其后的數(shù)據(jù)不斷發(fā)送給串口導致的。但是我們多次檢查SCI部分的程序,并沒有發(fā)現(xiàn)問題。老師提示我們可能書本上的模塊與實際

30、硬件的協(xié)議不同,于是我們把SCI模塊換成uart,其中一個uart用于接收數(shù)據(jù),另一個用于發(fā)送。調(diào)試時沒有添加rom模塊,是想看更換之后的兩個uart能否接收數(shù)據(jù)并且將接收到的數(shù)據(jù)發(fā)送出來。硬件下載成功,串口小助手發(fā)送數(shù)據(jù)后能夠接收,并且led燈能把發(fā)送的數(shù)據(jù)顯示出來,但是顯示的數(shù)據(jù)與存儲的數(shù)據(jù)總有一定的差值,說明采樣并不準確。于是我們將之前的300分頻換成了325分頻,顯示正確。實驗做到這一步才發(fā)現(xiàn)實際的電路與參考書上的電路其實很不一樣,幾乎每一個模塊我們都進行了更換與修改,這也就解釋了實驗前幾天用參考書上的程序無法調(diào)試出正確結(jié)果的原因。在實驗中,具體模塊仍然要具體分析,我們應該根據(jù)實際情況

31、作出相應的改動,書本只能為我們提供思路,對實驗的過程作出引導,具體模塊的設(shè)計和程序的編寫仍然要自己不斷摸索分析才能得出。接收與顯示成功后請老師檢查,才得知我們對于實驗要求的理解也有偏差。接收以與顯示只是基本功能,我們的設(shè)計需要串口小助手給出信號后,硬件將其顯示出來,此時rom開始發(fā)送數(shù)據(jù),串口小助手將rom發(fā)送的數(shù)據(jù)全部接收到。之前的rom模塊是通過計數(shù)來改變地址,給出一個時鐘信號后只能把相應地址里存的數(shù)據(jù)發(fā)送出去,即add=cnt,并且256個數(shù)據(jù)是順序存放的。了解了最終實現(xiàn)的功能后,我們把串口輸入的數(shù)據(jù)也作為地址模塊的輸入之一,賦給其相應的“開始送數(shù)”的信號后(實驗中為11H),地址模塊才

32、開始將地址自加,將rom里面的數(shù)據(jù)全部發(fā)送。修改過后,實驗所要求的大部分功能都已實現(xiàn)。當時鐘上升沿到來的時候在PC機端接收來自串口調(diào)試助手的數(shù)據(jù),實現(xiàn)與PC機的通信;在 FPGA 端,發(fā)送的數(shù)據(jù)來自于串口小助手串轉(zhuǎn)并后的數(shù)據(jù),并將該值給地址模塊,利用地址尋址得到對應于ROM存儲的數(shù)據(jù),ROM的數(shù)據(jù)量為256。編程設(shè)置ROM的地址自增啟動信號為“11”。即當小助手發(fā)送“11”的時候?qū)觓dress1模塊尋址讀數(shù),并將“11”顯示在選中的數(shù)碼管上。由于對于波特率的理解有誤,數(shù)據(jù)的顯示很慢,一秒顯示一個,不滿足波特率的要求。且串口發(fā)送11H時,接收畫面會不斷顯示00H。終止信號未能實現(xiàn)。我們的設(shè)計

33、最終實現(xiàn)的功能并不完善。在課下我們自己對頂層圖進行了進一步的修改,將325分頻的部分直接連至地址模塊,使其實現(xiàn)波特率的要求,對地址模塊增加一個與門,使其收到串口輸入的信號后才將地址自加,使rom里的數(shù)據(jù)輸出。通過本次試驗,我們了解到,課程設(shè)計還是要靠自己勤動腦多動手多嘗試。尤其是程序的調(diào)試過程,可能會出現(xiàn)各種各樣的問題。有時程序與硬件不匹配,檢查程序并沒有錯誤,但是硬件始終沒有顯示。有時分頻不太準確,差了一點就得不到正確的結(jié)果。有時會出現(xiàn)管腳分配錯誤,導致硬件無反應。有時實驗板有損壞,數(shù)碼管一直不顯示。有時下載的串口小助手本身有一些問題,無法發(fā)送接收數(shù)據(jù)。這種種的問題都需要在實際過程中一步步調(diào)

34、試,發(fā)現(xiàn),排除。雖然我們這次的設(shè)計容并不是很復雜,但是我們覺得設(shè)計的過程相當重要,并且在這個過程中我們學到了很多,收獲了很多。通過本次實驗,讓我們更加靈活的運用VHDL編程實現(xiàn)各種功能,對于仿真和Signaltap的使用更加熟練,硬件方面也更加熟悉其結(jié)構(gòu),了解管腳,知道怎樣編寫程序能使其達到想要的效果。由于我們組的課題是異步串行接口電路的通信系統(tǒng)設(shè)計,我們對于異步串行電路的協(xié)議,如何實現(xiàn)串口的發(fā)送接收、如何在rom中存儲數(shù)據(jù)并讓其發(fā)送以與串口小助手的使用都更加熟悉了。課程設(shè)計反映的是從理論到實際應用的過程,在實驗過程中鍛煉了我們發(fā)現(xiàn)問題、分析問題、解決問題的能力,同時對我們實際操作與動手能力的

35、提高提供了很大幫助。七、參考文獻1 松,黃繼業(yè) EDA技術(shù)使用教程 科學 2006.62 何偉 現(xiàn)代數(shù)字系統(tǒng)實驗與設(shè)計 大學 2005.93 素梅 基于FPGA的ROM設(shè)計問題 期刊論文-信息技術(shù) 2010(3):87-934 進海,志博,馬力 基于RS- 232 異步串行通信接口通用通信協(xié)議的設(shè)計與實現(xiàn) 期刊論文-現(xiàn)代電子技術(shù) 1998(7):8-105 蘭石,郭建英,王長清 異步串行通信接口電路的VHDL語言設(shè)計 師高等??茖W校學報 2003.9(5):30-326 Liakot Ali,Roslina Sidek,Ishak Aris,Alauddin Mohd. Ali,Bambang

36、Sunaryo Suparjo.Design of a micro - UART for SoC application J.In:Computers and Electrical Engineering 30 (2004) 257268.7 1K杰,建寧.基于FPGA的UART控制器的設(shè)計和實現(xiàn)J.微計算機信息,2005,8-2:111-113八、附錄附錄:任務分工資料查找鄒燕、顯瓏、超、顏利娟程序編輯與調(diào)試鄒燕、超、顯瓏、王靜答辯PPT制作超設(shè)計報告撰寫顯瓏、鄒燕、超、顏利娟附錄:程序325分頻:library ieee;use ieee.std_logic_1164.all;use ie

37、ee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity clkdiv325 is port( clk:in std_logic; clkout: out std_logic );end clkdiv325;architecture one of clkdiv325 is signalt:integer:=0;begin process(clk) begin if(clkevent and clk=1)then ift=324 thent=0; elset=162 then clkout=1; else clkout=0;end

38、 if; end if; end process;end one;地址模塊library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity adress1 is port(clk:in std_logic; data:in std_logic_vector(7 downto 0); adress:out std_logic_vector(7 downto 0);end adress1;architecture bav of adress1 is signalt:std_logic_vector(7 d

39、ownto 0); signalt1:std_logic:=0;begin process(clk) beginif data=00010001 thent1 if clkevent and clk=1 then ift=255 thent=00000000; elsetnull; end case; end if; end process; adress=cnt;end bav;rom模塊LIBRARY ieee;USE ieee.std_logic_1164.all;LIBRARY altera_mf;USE altera_mf.all;ENTITY rom123 ISPORT(addre

40、ss: IN STD_LOGIC_VECTOR (7 DOWNTO 0);clock: IN STD_LOGIC ;q: OUT STD_LOGIC_VECTOR (7 DOWNTO 0);END rom123;ARCHITECTURE SYN OF rom123 IS SIGNAL sub_wire0: STD_LOGIC_VECTOR (7 DOWNTO 0);COMPONENT altsyncramGENERIC (clock_enable_input_a: STRING;clock_enable_output_a: STRING;init_file: STRING;intended_d

41、evice_family: STRING;lpm_hint: STRING;lpm_type: STRING;numwords_a: NATURAL;operation_mode: STRING;outdata_aclr_a: STRING;outdata_reg_a: STRING;widthad_a: NATURAL;width_a: NATURAL;width_byteena_a: NATURAL);PORT (clock0: IN STD_LOGIC ;address_a: IN STD_LOGIC_VECTOR (7 DOWNTO 0);q_a: OUT STD_LOGIC_VECT

42、OR (7 DOWNTO 0);END COMPONENT;BEGINq BYPASS,clock_enable_output_a = BYPASS,init_file = dyz123.mif,intended_device_family = Cyclone II,lpm_hint = ENABLE_RUNTIME_MOD=NO,lpm_type = altsyncram,numwords_a = 256,operation_mode = ROM,outdata_aclr_a = NONE,outdata_reg_a = UNREGISTERED,widthad_a = 8,width_a

43、= 8,width_byteena_a = 1)PORT MAP (clock0 = clock,address_a = address,q_a = sub_wire0);END SYN;uart接收模塊library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity dyzrx is port(clk:in std_logic; rx: in std_logic; dataout:out std_logic_vector(7 downto 0); rdsig: out std_logic );end dyzrx;architecture one of dyzrx is signal dataoutreg:std_logic_vector(7 downto 0); signal rdsigreg: std_logic; signalt:std_logic_vector(7 downto 0); signal rxbuf:std_logic; signal rxfall:std_logic; signal receive:std_logic; si

溫馨提示

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

評論

0/150

提交評論