




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、鄭州輕工業(yè)學(xué)院課程設(shè)計(jì)說(shuō)明書題目: 基于FPGA的UART設(shè)計(jì) 姓 名: 王鵬飛 院 (系): 電子信息工程學(xué)院 專業(yè)班級(jí): 電子信息工程13-01 學(xué) 號(hào): 541301030135 指導(dǎo)教師: 杜海明 成 績(jī): 時(shí)間:2016年6月21日至 2016年6月28日I / 18鄭州輕工業(yè)學(xué)院課 程 設(shè) 計(jì) 任 務(wù) 書題目基于FPGA的UART設(shè)計(jì)專業(yè)、班級(jí)電子信息工程13-01學(xué)號(hào) 35 姓名 王鵬飛 主要內(nèi)容、基本要求、主要參考資料等:主要內(nèi)容:要求學(xué)生使用硬件描述語(yǔ)言描述硬件功能,利用FPGA并采用模塊化設(shè)計(jì)方法設(shè)計(jì)UART(通用異步收發(fā)器)的各個(gè)模塊。其中包括波特發(fā)生器,程序控制器,UA
2、RT數(shù)據(jù)接收器和UART數(shù)據(jù)發(fā)送器,本文采用的外部時(shí)鐘為48MHZ,波特率為9600。在軟件上進(jìn)行設(shè)計(jì)、編譯和仿真?;疽螅?、 掌握FPGA 的程序設(shè)計(jì)方法。 2、掌握硬件描述語(yǔ)言語(yǔ)法。 3、程序設(shè)計(jì)完成后要求在軟件中實(shí)現(xiàn)功能仿真。主要參考資料:1、夏宇聞. Verilog 數(shù)字系統(tǒng)設(shè)計(jì)教程M.北京:北京航空航天大學(xué)出版社,20032、潘松,王國(guó)棟.VHDL實(shí)用教程M.成都:電子科技大學(xué)出版社,2003.完 成 期 限:2016.6.212016.6.28指導(dǎo)教師簽名: 課程負(fù)責(zé)人簽名: 2016年 6月 18日基于FPGA的UART設(shè)計(jì)摘要UART作為RS232協(xié)議的控制接口得到了廣泛的
3、應(yīng)用,將UART的功能集成到FPGA芯片中,可使整個(gè)系統(tǒng)更為靈活、緊湊,減小整個(gè)電路的體積,提高系統(tǒng)的可靠性和穩(wěn)定性。提出了一種基于FPGA的UART的實(shí)現(xiàn)方法,具體描述了發(fā)送、接收等模塊的設(shè)計(jì),恰當(dāng)使用了有限狀態(tài)機(jī),實(shí)現(xiàn)了FPGA上的UART的設(shè)計(jì),給出仿真結(jié)果。關(guān)鍵詞 FPGA UART 模塊化 有限狀態(tài)機(jī)目 錄1 FPGA與UART簡(jiǎn)介11.1 FPGA介紹11.2 UART簡(jiǎn)介12 UART工作原理及功能設(shè)計(jì)32.1UART工作原理32.2UART功能設(shè)計(jì)32.2.1 波特率發(fā)生器設(shè)計(jì)42.2.2 發(fā)送器設(shè)計(jì)52.2.3 接收器設(shè)計(jì)53.仿真84 總結(jié)9參考文獻(xiàn)101 FPGA與UAR
4、T簡(jiǎn)介1.1 FPGA介紹FPGA(Field-Programmable Gate Array),即現(xiàn)場(chǎng)可編程門陣列,它是在PAL、GAL、CPLD等可編程器件的基礎(chǔ)上進(jìn)一步發(fā)展的產(chǎn)物。它是作為專用集成電路(ASIC)領(lǐng)域中的一種半定制電路而出現(xiàn)的,既解決了定制電路的不足,又克服了原有可編程器件門電路數(shù)有限的缺點(diǎn)。FPGA主要特點(diǎn):1)采用FPGA設(shè)計(jì)ASIC電路(專用集成電路),用戶不需要投片生產(chǎn),就能得到合用的芯片。2)FPGA可做其它全定制或半定制ASIC電路的中試樣片。3)FPGA內(nèi)部有豐富的觸發(fā)器和I/O引腳。4)FPGA是ASIC電路中設(shè)計(jì)周期最短、開(kāi)發(fā)費(fèi)用最低、風(fēng)險(xiǎn)最小的器件之一
5、。5) FPGA采用高速CMOS工藝,功耗低,可以與CMOS、TTL電平兼容。可以說(shuō),F(xiàn)PGA芯片是小批量系統(tǒng)提高系統(tǒng)集成度、可靠性的最佳選擇之一。FPGA是由存放在片內(nèi)RAM中的程序來(lái)設(shè)置其工作狀態(tài)的,因此,工作時(shí)需要對(duì)片內(nèi)的RAM進(jìn)行編程。用戶可以根據(jù)不同的配置模式,采用不同的編程方式。加電時(shí),F(xiàn)PGA芯片將EPROM中數(shù)據(jù)讀入片內(nèi)編程RAM中,配置完成后,F(xiàn)PGA進(jìn)入工作狀態(tài)。掉電后,F(xiàn)PGA恢復(fù)成白片,內(nèi)部邏輯關(guān)系消失,因此,F(xiàn)PGA能夠反復(fù)使用。FPGA的編程無(wú)須專用的FPGA編程器,只須用通用的EPROM、PROM編程器即可。當(dāng)需要修改FPGA功能時(shí),只需換一片EPROM即可。這樣
6、,同一片F(xiàn)PGA,不同的編程數(shù)據(jù),可以產(chǎn)生不同的電路功能。因此,F(xiàn)PGA的使用非常靈活。1.2 UART簡(jiǎn)介通用異步收發(fā)器(UART)是一種短距離串行通信接口,主要用于計(jì)算機(jī)、微處理器與小型通信網(wǎng)絡(luò)之間的短距離通信。目前通信接口技術(shù)已發(fā)展成為硬件和軟件相結(jié)合的綜合性技術(shù),在嵌入式系統(tǒng)設(shè)計(jì)中,異步串行通信接口已成為必不可少的一部分。隨著FPGA技術(shù)和嵌入式系統(tǒng)的發(fā)展,在單芯片上可以實(shí)現(xiàn)多種功能,雖然目前許多器件已經(jīng)把UART集成在內(nèi),但是要求用單一芯片實(shí)現(xiàn)處理器和控制器等復(fù)雜功能,同時(shí)需要串行通信場(chǎng)合,采用高密度、大容量FPGA器件來(lái)設(shè)計(jì)UART具有很高的實(shí)用價(jià)值。計(jì)算機(jī)內(nèi)部采用并行數(shù)據(jù),不能直
7、接把數(shù)據(jù)發(fā)到Modem,必須經(jīng)過(guò)UART整理才能進(jìn)行異步傳輸,其過(guò)程為:CPU先把準(zhǔn)備寫入串行設(shè)備的數(shù)據(jù)放到UART的寄存器(臨時(shí)內(nèi)存塊)中,再通過(guò)FIFO(First Input First Output,先入先出隊(duì)列)傳送到串行設(shè)備,若是沒(méi)有FIFO,信息將變得雜亂無(wú)章,不可能傳送到Modem。它是用于控制計(jì)算機(jī)與串行設(shè)備的芯片。有一點(diǎn)要注意的是,它提供了RS-232C數(shù)據(jù)終端設(shè)備接口,這樣計(jì)算機(jī)就可以和調(diào)制解調(diào)器或其它使用RS-232C接口的串行設(shè)備通信了。作為接口的一部分,UART還提供以下功能:將由計(jì)算機(jī)內(nèi)部傳送過(guò)來(lái)的并行數(shù)據(jù)轉(zhuǎn)換為輸出的串行數(shù)據(jù)流。將計(jì)算機(jī)外部來(lái)的串行數(shù)據(jù)轉(zhuǎn)換為字節(jié)
8、,供計(jì)算機(jī)內(nèi)部并行數(shù)據(jù)的器件使用。在輸出的串行數(shù)據(jù)流中加入奇偶校驗(yàn)位,并對(duì)從外部接收的數(shù)據(jù)流進(jìn)行奇偶校驗(yàn)。在輸出數(shù)據(jù)流中加入啟停標(biāo)記,并從接收數(shù)據(jù)流中刪除啟停標(biāo)記。處理由鍵盤或鼠標(biāo)發(fā)出的中斷信號(hào)(鍵盤和鼠標(biāo)也是串行設(shè)備)。可以處理計(jì)算機(jī)與外部串行設(shè)備的同步管理問(wèn)題。有一些比較高檔的UART還提供輸入輸出數(shù)據(jù)的緩沖區(qū),比較新的UART是16550,它可以在計(jì)算機(jī)需要處理數(shù)據(jù)前在其緩沖區(qū)內(nèi)存儲(chǔ)16字節(jié)數(shù)據(jù),而通常的UART是8250。如果您購(gòu)買一個(gè)內(nèi)置的調(diào)制解調(diào)器,此調(diào)制解調(diào)器內(nèi)部通常就會(huì)有16550 UART。2 UART工作原理及功能設(shè)計(jì)2.1 UART工作原理UART是一種串行數(shù)據(jù)總線,用于
9、異步通信,并且雙向通信,可實(shí)現(xiàn)全雙工發(fā)送和接收。基本的UART只需要兩條信號(hào)線(TXD,RXD)和一條地線就可以完成數(shù)據(jù)的互相通信,接收和發(fā)送互不干擾,這樣就大大節(jié)省了傳輸費(fèi)用。由于UART是異步通信,所以需要對(duì)數(shù)據(jù)進(jìn)行同步。UART發(fā)送/接收數(shù)據(jù)的傳輸格式如圖1所示,一個(gè)字符單位由開(kāi)始位、數(shù)據(jù)位、校驗(yàn)位、停止位組成(其中校驗(yàn)位可供選)。發(fā)送或接收一個(gè)完整的字節(jié)信息,首先是一個(gè)作為起始位的邏輯“o”位,接著是8個(gè)數(shù)據(jù)位,然后是停止位邏輯“1”位,數(shù)據(jù)線空閑時(shí)為高或“1”狀態(tài)。在字符的8位數(shù)據(jù)部分,先發(fā)送數(shù)據(jù)的最低位,最后發(fā)送最高位。每位持續(xù)時(shí)間是固定的,由發(fā)送器本地時(shí)鐘控制,每秒發(fā)送的數(shù)據(jù)位個(gè)
10、數(shù),即為“波特率”。起始位和停止位起著很重要的作用。顯然,它們標(biāo)志每個(gè)字符的開(kāi)始和結(jié)束,但更重要的是他們使接收器能把他的局部時(shí)鐘與每個(gè)新開(kāi)始接收的字符再同步。異步通信沒(méi)有可參照的時(shí)鐘信號(hào),發(fā)送器隨時(shí)都可能發(fā)送數(shù)據(jù),任何時(shí)刻串行數(shù)據(jù)到來(lái)時(shí),接收器必須準(zhǔn)確地發(fā)現(xiàn)起始位下降沿的出現(xiàn)時(shí)間,從而正確地采樣緊接著的io或者m位(包括開(kāi)始位、數(shù)據(jù)位和停止位),接收器的時(shí)鐘和發(fā)送器的時(shí)鐘不是同一個(gè),因此,接收器所確定的采樣點(diǎn)的間隔和發(fā)送器所確定的位間隔時(shí)間不同,這點(diǎn)要特別注意。2.2 UART功能設(shè)計(jì)異步通信的一幀傳輸經(jīng)歷以下步驟:1)空閑狀態(tài)。發(fā)送方連續(xù)發(fā)送信號(hào),處于信息“1”狀態(tài)。2)開(kāi)始傳輸。發(fā)送方在任
11、何時(shí)刻將傳號(hào)變成空號(hào),即“1”跳變到“0”,并持續(xù)1位時(shí)間表明發(fā)送方開(kāi)始傳輸數(shù)據(jù)。而同時(shí),接收方收到空號(hào)后,開(kāi)始與發(fā)送方同步,并期望收到隨后的數(shù)據(jù)。3)奇偶傳輸。數(shù)據(jù)傳輸之后是可供選擇的奇偶位發(fā)送或接收。4)停止傳輸。最后是發(fā)送或接收的停止位,其狀態(tài)恒為“1”。設(shè)計(jì)的基本原則是保留最主要的功能,基于FPGA的UART系統(tǒng)由波特率時(shí)鐘發(fā)生器、接收器和發(fā)送器3個(gè)子模塊組成,如圖2所示。圖2 UART功能框圖2.2.1 波特率發(fā)生器設(shè)計(jì)波特率發(fā)生器實(shí)質(zhì)是設(shè)計(jì)一個(gè)分頻器,用于產(chǎn)生和RS232通信同步的時(shí)鐘。在系統(tǒng)中用一個(gè)計(jì)數(shù)器來(lái)完成這個(gè)功能,分頻系數(shù)N決定了波特率的數(shù)值。該計(jì)數(shù)器一般工作在一個(gè)頻率較高
12、的系統(tǒng)時(shí)鐘下,當(dāng)計(jì)數(shù)到N/2時(shí)將輸出置為高電平,再計(jì)數(shù)到N/2的數(shù)值后將輸出置為低電平,如此反復(fù)即可得到占空比50%的波特率時(shí)鐘,具體的波特率依賴于所使用的系統(tǒng)時(shí)鐘頻率和N的大小。如系統(tǒng)時(shí)鐘頻率是6.4 MHz,要求波特率是9 600,則16倍波特率時(shí)鐘的周期約等于42個(gè)系統(tǒng)時(shí)鐘周期,則計(jì)數(shù)器取42/2=21時(shí),當(dāng)計(jì)數(shù)溢出時(shí)輸出電平取反就可以得到16倍約定波特率的時(shí)鐘。使用VHDL來(lái)描述波特率發(fā)生器的完整代碼如下:Process(rst,clk6_4M)if rst=0 then count<=0;bclkr<=0;elsif rising_edge(clk6_4M) thenif
13、 (count=20)count<=0;bclkr<=not bclkr;elsecount<=count+1;end if;end if;end process;2.2.2 發(fā)送器設(shè)計(jì)UART發(fā)送器的設(shè)計(jì)較容易,只要每隔一個(gè)發(fā)送周期按照數(shù)據(jù)幀格式及要求的速率輸出數(shù)據(jù)即可。沒(méi)有數(shù)據(jù)要發(fā)送時(shí),發(fā)送數(shù)據(jù)寄存器為空,發(fā)送器處于空閑狀態(tài);當(dāng)檢測(cè)到發(fā)送數(shù)據(jù)寄存器滿信號(hào)后,發(fā)送器及發(fā)送起始位,同時(shí)8個(gè)數(shù)據(jù)位被并行裝入發(fā)送移位寄存器停止位緊接著數(shù)據(jù)位指示一幀數(shù)據(jù)結(jié)束。只有發(fā)送數(shù)據(jù)寄存器為空時(shí),RAM中的待發(fā)數(shù)據(jù)才能被裝入、程序中使用計(jì)數(shù)器要保證各位周期定時(shí)正確。2.2.3 接收器設(shè)計(jì) 接收
14、器的工作過(guò)程如下,串行數(shù)據(jù)幀和接收時(shí)鐘是異步的,發(fā)送來(lái)的數(shù)據(jù)由邏輯1變?yōu)檫壿?可以視為一個(gè)數(shù)據(jù)幀的開(kāi)始。接收器先要捕捉起始位,然而,通信線上的噪音也極有可能使傳號(hào)“1”跳變到空號(hào)“0”。所以接收器以16倍的波特率對(duì)這種跳變進(jìn)行檢測(cè),確定rxd輸入由1到0,邏輯0要8個(gè)bclkr(16倍的波特率時(shí)鐘)周期,才是正常的起始位,而不是噪音引起的,其中若有一次采樣得到的為高電平則認(rèn)為起始信號(hào)無(wú)效,返回初始狀態(tài)重新等待起始信號(hào)的到來(lái)。 采到正確的起始位后,就開(kāi)始接收數(shù)據(jù),最可靠的接收應(yīng)該是接收時(shí)鐘的出現(xiàn)時(shí)刻正好對(duì)著數(shù)據(jù)位的中央。由于在起始位檢測(cè)時(shí),己使時(shí)鐘對(duì)準(zhǔn)了位中央,用16倍波特率的時(shí)鐘作為接收時(shí)鐘,
15、就是為了確保在位寬的中心時(shí)間對(duì)接收的位序列進(jìn)行可靠采樣,當(dāng)采樣計(jì)數(shù)器計(jì)數(shù)結(jié)束后所有數(shù)據(jù)位都己經(jīng)輸入完成。最后對(duì)停止位的高電平進(jìn)行檢測(cè),若正確檢測(cè)到高電平,說(shuō)明本幀的各位正確接收完畢,否則出錯(cuò)。最后將正確的數(shù)據(jù)轉(zhuǎn)存到數(shù)據(jù)寄存器中,輸出數(shù)據(jù)。還要輸出一個(gè)數(shù)據(jù)接收標(biāo)志信號(hào)標(biāo)志數(shù)據(jù)接收完。利用有限狀態(tài)機(jī)實(shí)現(xiàn),完整代碼如下:Process(bclkr,reset,rxd_sync)Variable count :std_logic_vector(3 downto 0); -定義中間變量Variable rcnt :integer:=0;Variable rbufs :std_logic_vector(7
16、 downto 0);BeginIf reset=0 thenState<=r_start;Count:=”0000”;elsif rising_edge(bclkr) thencase state iswhen r_start=>if rxd_sync=0 thenstate<=r_center;r_ready<=0;rcnt:=0;elsestate<=r_start;r_ready<=0;end if;when r_center=>if rxd_sync=0 thenif count>=”0100” thenstate<=r_wait
17、;count:=”0000”;elsecount:=count+1;state<=r_center;end if;elsestate<=r_start;end if;when r_wait=>if count>=”1110” thencount:=”0000”;if rcnt=framlenr thenstate<=r_stop;elsestate<=r_sample;end if;elsecount:=count+1;state<=r_wait;end if;when r_sample=>rbufs(rcnt):=rxd_sync;rcnt:=
18、rcnt+1;state<=r_wait;when r_stop=>r_ready<=1;rbuf<=rbufs;state<=r_start;when others=>state<=r_start;end case;end if;end process;3.仿真本設(shè)計(jì)在Altera Cyclone系列的芯片上進(jìn)行了驗(yàn)證,對(duì)發(fā)送模塊和接收模塊的仿真結(jié)果分別如圖3、圖4所示。發(fā)送的數(shù)據(jù)能嚴(yán)格按照串行通信協(xié)議進(jìn)行傳輸;接收的數(shù)據(jù)也完全正確。用FPGA設(shè)計(jì)UART,可以用片上很少的邏輯單元實(shí)現(xiàn)UART的基本功能。與傳統(tǒng)設(shè)計(jì)相比,能有效減少系統(tǒng)的PCB面積,降低系統(tǒng)的功耗,提高設(shè)計(jì)的穩(wěn)定性和可靠性,充分利用FPGA的剩余資源、并可方便地進(jìn)行系統(tǒng)升級(jí)和移植。圖3 發(fā)送模塊仿真圖4 接收模塊仿真4 總結(jié)該設(shè)計(jì)具有很大的靈活性,通過(guò)調(diào)整波特率發(fā)生器的分頻參數(shù),就可以使其工作
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 公司對(duì)外借款管理制度
- 公司法務(wù)文件管理制度
- 浪潮項(xiàng)目消防管道安裝技術(shù)交底
- 江蘇開(kāi)放大學(xué)2025年春財(cái)務(wù)報(bào)表分析第三次模擬練習(xí)題
- 河南省安陽(yáng)市2024~2025學(xué)年 高二下冊(cè)3月月考數(shù)學(xué)試卷附解析
- 海南省部分中學(xué)2024~2025學(xué)年 高二下冊(cè)期中模擬考試數(shù)學(xué)試卷附解析
- 安徽省淮南等校聯(lián)考2023?2024學(xué)年高一下冊(cè)期末考試數(shù)學(xué)試卷附解析
- 2025屆四川省廣元市九年級(jí)第二次學(xué)業(yè)水平測(cè)試監(jiān)測(cè)數(shù)學(xué)試卷含答案
- 2025屆廣東省湛江市赤坎區(qū)等2地中考二模數(shù)學(xué)試卷
- 離子交換技術(shù)在重金屬工業(yè)廢水資源化利用中的應(yīng)用研究-洞察闡釋
- 市政道路施工的安全措施與管理
- 民法司法考試題及答案
- 2025年河北省專技人員繼續(xù)教育公需課(新課程答案七)
- 河南省修武縣西村鄉(xiāng)初中2024-2025學(xué)年九下5月語(yǔ)文中考模擬試題(含答案)
- 體育設(shè)施工程施工組織設(shè)計(jì)
- 江西省南昌市2025屆高三下學(xué)期二模生物試題 含解析
- 醫(yī)務(wù)人員職業(yè)暴露防護(hù)與處置流程
- 基于邊緣計(jì)算的天文觀測(cè)資源動(dòng)態(tài)分配-洞察闡釋
- 人工智能技術(shù)在市場(chǎng)營(yíng)銷咨詢中的應(yīng)用研究-洞察闡釋
- 2025屆蘇錫常鎮(zhèn)四市高考生物二模試卷含解析
- (二模)青島市2025年高三年級(jí)第二次適應(yīng)性檢測(cè)歷史試卷(含標(biāo)準(zhǔn)答案)
評(píng)論
0/150
提交評(píng)論