版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、-. z. - - . -可修- .課程設(shè)計任務(wù)書學生:瞿子敬專業(yè)班級:通信1104 指導(dǎo)教師:適工作單位:信息工程學院題目:FPGA通用異步收發(fā)器設(shè)計課程設(shè)計目的:熟練使用VHDL語言進展電路設(shè)計;能夠運用相關(guān)軟件進展模擬分析;掌握根本的文獻檢索和文獻閱讀的方法;提高正確的撰寫論文的根本能力。課程設(shè)計容和要求容:FPGA通用異步收發(fā)器設(shè)計2.要求:使用VHDL語言完成電路設(shè)計,并在此根底上進展仿真,得到正確結(jié)果。初始條件Quartus仿真平臺時間安排方案設(shè)計,1天;軟件設(shè)計,2天;系統(tǒng)調(diào)試,1天;辯論,1天。指導(dǎo)教師簽名:年月日系主任或責任教師簽名:年月日-. z.目錄 TOC o 1-3
2、h z u HYPERLINK l _Toc390802865摘要 PAGEREF _Toc390802865 h IHYPERLINK l _Toc390802866Abstract PAGEREF _Toc390802866 h IHYPERLINK l _Toc3908028671. UART簡介 PAGEREF _Toc390802867 h 1HYPERLINK l _Toc3908028681.1 UART根本特點 PAGEREF _Toc390802868 h 1HYPERLINK l _Toc3908028691.2 FPGA URAT系統(tǒng)組成 PAGEREF _Toc3908
3、02869 h 1HYPERLINK l _Toc3908028702. 模塊設(shè)計 PAGEREF _Toc390802870 h 1HYPERLINK l _Toc3908028712.1 頂層模塊 PAGEREF _Toc390802871 h 1HYPERLINK l _Toc3908028722.1 波特率發(fā)生器 PAGEREF _Toc390802872 h 1HYPERLINK l _Toc3908028732.3 UART接收器 PAGEREF _Toc390802873 h 1HYPERLINK l _Toc3908028742.3.1 接收器簡介 PAGEREF _Toc39
4、0802874 h 1HYPERLINK l _Toc3908028752.3.2 UART接收器的接收狀態(tài)機 PAGEREF _Toc390802875 h 1HYPERLINK l _Toc3908028762.4 URAT發(fā)送器 PAGEREF _Toc390802876 h 1HYPERLINK l _Toc3908028772.4.1 發(fā)送器簡介 PAGEREF _Toc390802877 h 1HYPERLINK l _Toc3908028782.4.2 發(fā)送狀態(tài)機 PAGEREF _Toc390802878 h 1HYPERLINK l _Toc3908028793. 程序設(shè)計與
5、仿真 PAGEREF _Toc390802879 h 1HYPERLINK l _Toc3908028803.1 頂層程序 PAGEREF _Toc390802880 h 1HYPERLINK l _Toc3908028813.2 波特率發(fā)生器程序 PAGEREF _Toc390802881 h 1HYPERLINK l _Toc3908028823.3 UART發(fā)送器程序 PAGEREF _Toc390802882 h 1HYPERLINK l _Toc3908028833.4 UART接收器程序 PAGEREF _Toc390802883 h 1HYPERLINK l _Toc390802
6、8844. 心得體會 PAGEREF _Toc390802884 h 1HYPERLINK l _Toc3908028855. 參考文獻 PAGEREF _Toc390802885 h 1-. z.摘要UARTUniversal Asynchronous Receiver Transmitter通用異步收發(fā)器是一種應(yīng)用廣泛的短距離串行傳輸接口。常常用于短距離、低速、低本錢的通訊中。8250、8251、NS16450等芯片都是常見的UART器件。根本的UART通信只需要兩條信號線R*D、T*D就可以完成數(shù)據(jù)的相互通信,接收與發(fā)送是全雙工形式。T*D是UART發(fā)送端,為輸出;R*D是UART接收端
7、,為輸入。關(guān)鍵詞:UART,F(xiàn)PGA,VHDL,電路通信AbstractUART (Universal Asynchronous Receiver Transmitter) is a kind of widely used short serial transmission interface. Often used in short distance, low speed, low cost of munications. 8250, 8251, NS16450, etc are mon UART chip devices.Basic UART munication only need tw
8、o signal lines (R*D, T*D) can plete data munication, sending and receiving is full duple* form. T*D is UART transmitter for output; R*D is UART receiver for input.Keywords:UART,FPGA,VHDL,Circuit munication-. z.1. UART簡介1.1 UART根本特點1在信號線上共有兩種狀態(tài),可分別用邏輯1高電平和邏輯0低電平來區(qū)分。在發(fā)送器空閑時,數(shù)據(jù)線應(yīng)該保持在邏輯高電平狀態(tài)。2起始位Start B
9、it:發(fā)送器是通過發(fā)送起始位而開場一個字符傳送,起始位使數(shù)據(jù)線處于邏輯0狀態(tài),提示承受器數(shù)據(jù)傳輸即將開場。3數(shù)據(jù)位Data Bits:起始位之后就是傳送數(shù)據(jù)位。數(shù)據(jù)位一般為8位一個字節(jié)的數(shù)據(jù)也有6位、7位的情況,低位LSB在前,高位MSB在后。4校驗位parity Bit:可以認為是一個特殊的數(shù)據(jù)位。校驗位一般用來判斷接收的數(shù)據(jù)位有無錯誤,一般是奇偶校驗。在使用中,該位常常取消。5停頓位:停頓位在最后,用以標志一個字符傳送的完畢,它對應(yīng)于邏輯1狀態(tài)。6位時間:即每個位的時間寬度。起始位、數(shù)據(jù)位、校驗位的位寬度是一致的,停頓位有0.5位、1位、1.5位格式,一般為1位。7幀:從起始位開場到停頓位
10、完畢的時間間隔稱之為一幀。8波特率:UART的傳送速率,用于說明數(shù)據(jù)傳送的快慢。在串行通信中,數(shù)據(jù)是按位進展傳送的,因此傳送速率用每秒鐘傳送數(shù)據(jù)位的數(shù)目來表示,稱之為波特率。如波特率9600=9600bps位/秒。UART的數(shù)據(jù)幀格式為:1.2 FPGA URAT系統(tǒng)組成FPGA UART由三個子模塊組成:1波特率發(fā)生器;2接收模塊;3發(fā)送模塊;模塊分布如下圖:圖1.1 UART模塊模塊設(shè)計模塊設(shè)計分為頂層模塊、波特率發(fā)生器、UART接收器、UART發(fā)送器四局部。2.1 頂層模塊異步收發(fā)器的頂層模塊由波特率發(fā)生器、UART接收器和UART發(fā)送器構(gòu)成。UART發(fā)送器的用途是將準備輸出的并行數(shù)據(jù)按
11、照根本UART幀格式轉(zhuǎn)為T*D信號串行輸出。UART接收器接收R*D串行信號,并將其轉(zhuǎn)化為并行數(shù)據(jù)。波特率發(fā)生器就是專門產(chǎn)生一個遠遠高于波特率的本地時鐘信號對輸入R*D不斷采樣,使接收器與發(fā)送器保持同步。頂層模塊電路圖:圖2.1 頂層模塊電路2.1 波特率發(fā)生器波特率發(fā)生器實際上就是一個分頻器??梢愿鶕?jù)給定的系統(tǒng)時鐘頻率晶振時鐘和要求的波特率算出波特率分頻因子,算出的波特率分頻因子作為分頻器的分頻數(shù)。波特率分頻因子可以根據(jù)不同的應(yīng)用需要更改。2.3 UART接收器2.3.1 接收器簡介由于串行數(shù)據(jù)幀和接收時鐘是異步的,由邏輯1轉(zhuǎn)為邏輯0可以被視為一個數(shù)據(jù)幀的起始位。然而,為了防止毛刺影響,能夠
12、得到正確的起始位信號,必須要求接收到的起始位在波特率時鐘采樣的過程中至少有一半都是屬于邏輯0才可認定接收到的是起始位。由于部采樣時鐘bclk周期由波特率發(fā)生器產(chǎn)生是發(fā)送或接收波特率時鐘頻率的16倍,所以起始位需要至少8個連續(xù)bclk周期的邏輯0被接收到,才認為起始位接收到,接著數(shù)據(jù)位和奇偶校驗位將每隔16個bclk周期被采樣一次即每一個波特率時鐘被采樣一次。如果起始位確實是16個bclk周期長,則接下來的數(shù)據(jù)將在每個位的中點處被采樣2.3.2 UART接收器的接收狀態(tài)機圖2.2 承受狀態(tài)機狀態(tài)圖五個狀態(tài)分別為R_START等待起始位,R_CENTER求中點,R_WAIT等待采樣,R_SAMPL
13、E采樣,R_STOP停頓位接收。R_START狀態(tài):當UART接收器復(fù)位后,接收狀態(tài)機將處于這一個狀態(tài)。在此狀態(tài),狀態(tài)機一直在等待R*D的電平跳轉(zhuǎn),從邏輯1變?yōu)檫壿?,即起始位,這意味著新的一幀UART數(shù)據(jù)幀的開場,一旦起始位被確定,狀態(tài)機將轉(zhuǎn)入R_CENTER狀態(tài)。狀態(tài)圖中的R*D_SYNC信號是R*D的同步信號,因為在進展邏輯1或邏輯0判斷時,不希望檢測的信號是不穩(wěn)定的,所以不直接檢測R*D信號,而是檢測經(jīng)過同步后的R*D_SYNC信號。R_CENTE狀態(tài):對于異步串行信號,為了使每一次都檢測到正確的位信號,而且在較后的數(shù)據(jù)位檢測時累計誤差較小,顯然在每位的中點檢測是最為理想的。在本狀態(tài),
14、就是由起始位求出每位的中點,通過對bclk的個數(shù)進展計數(shù)RT16,但計數(shù)值不是想當然的1000,要考慮經(jīng)過一個狀態(tài),也即經(jīng)過了一個bclk周期,所希望得到的是在采樣時1/2位。另外,可能在R_START狀態(tài)檢測到的起始位不是真正的起始位,可能是一個偶然出現(xiàn)的干擾尖脈沖負脈沖。這種干擾脈沖的周期是很短的,所以可以認為保持邏輯0超過1/4個位時間的信號一定是起始位。R_WAIT狀態(tài):當狀態(tài)機處于這一狀態(tài),等待計滿15個bclk,在第16個bclk是進入R_SAMPLE狀態(tài)進展數(shù)據(jù)位的采樣檢測,同時也判斷是否采集的數(shù)據(jù)位長度已到達數(shù)據(jù)幀的長度FRAMELEN,如果到來,就說明停頓位降臨了。FRAME
15、LEN在設(shè)計時是可更改的使用了Generic,在本設(shè)計中默認為8,即對應(yīng)的UART工作在8位數(shù)據(jù)位、無校驗位格式。R_SAMPLE狀態(tài):即數(shù)據(jù)位采樣檢測,完成后無條件狀態(tài)機轉(zhuǎn)入R_WAIT狀態(tài),等待下次數(shù)據(jù)位的到來。R_STOP狀態(tài):無論停頓位是1還是1.5位,或是2位,狀態(tài)機在R_STOP不具體檢測R*D,只是輸出幀接收完畢信號REC_DONEclk32mhz,resetb=reset,bclk=b); -頂層映射u2:reciever port map(bclkr=b,resetr=reset,r*dr=r*d,r_ready=rec_ready, rbuf=rec_buf);u3:tra
16、nsfer port map(bclkt=b,resett=reset,*mit_cmd_p=*mit_cmd_p_in, t*dbuf=t*dbuf_in,t*d=t*d_out,t*d_done=t*d_done_out);end Behavioral;頂層程序仿真:圖3.1 頂層程序仿真3.2 波特率發(fā)生器程序-文件名:baud.vhd.-功能:將外部輸入的32MHz的信號分成頻率為153600Hz的信號。library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNS
17、IGNED.ALL;entity baud is Port (clk,resetb:in std_logic; bclk:out std_logic);end baud;architecture Behavioral of baud isbeginprocess(clk,resetb)variablet:integer;begin if resetb=1 thent:=0; bclk=208 thent:=0; bclk=1; -設(shè)置分頻系數(shù) elset:=t+1; bclk=0; end if; end if;end process;end Behavioral;波特率發(fā)生器程序仿真:圖5.
18、2 波特率發(fā)生器仿真3.3 UART發(fā)送器程序-文件名:transfer.vhd。-功能:UART發(fā)送器。-說明:系統(tǒng)由五個狀態(tài)*_idle,*_start,*_wait,*_shift,*_stop和一個進程構(gòu)成。library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;entity transfer is generic(framlent:integer:=8); Port (bclkt,resett,*mit_cmd_p:in std_logi
19、c; -定義輸入輸出信號 t*dbuf:in std_logic_vector(7 downto 0):=11001010; t*d:out std_logic; t*d_done:out std_logic);end transfer;architecture Behavioral of transfer istype states is (*_idle,*_start,*_wait,*_shift,*_stop); -定義個子狀態(tài)signal state:states:=*_idle;signal tt:integer:=0;beginprocess(bclkt,resett,*mit_c
20、md_p,t*dbuf) -主控時序、組合進程variable *t16:std_logic_vector(4 downto 0):=00000; -定義中間變量variable *bitt:integer:=0;variable t*ds:std_logic;begin if resett=1 then state=*_idle; t*d_done -狀態(tài)1,等待數(shù)據(jù)幀發(fā)送命令 if *mit_cmd_p=1 then state=*_start;t*d_done=0; else state -狀態(tài)2,發(fā)送信號至起始位 if *t16=01111 then state=*_wait; *t1
21、6:=00000; else *t16:=*t16+1; t*ds:=0; state -狀態(tài)3,等待狀態(tài) if *t16=01110 then if *bitt=framlent then state=*_stop;*bitt:=0;*t16:=00000; else state=*_shift; end if; else *t16:=*t16+1; statet*ds:=t*dbuf(*bitt); *bitt:=*bitt+1; state -狀態(tài)5,停頓位發(fā)送狀態(tài) if *t16=01111 then if *mit_cmd_p=0 then state=*_idle; *t16:=0
22、0000; else *t16:=*t16; state=*_stop; end if; t*d_done=1; else *t16:=*t16+1; t*ds:=1; statestate=*_idle; end case;end if; t*d=t*ds;end process;end Behavioral;UART發(fā)送器仿真:圖3.3 發(fā)送器仿真3.4 UART接收器程序-文件名:reciever.vhd。-功能:UART承受器。-說明:系統(tǒng)由五個狀態(tài)r_start,r_center,r_wait,r_sample,r_stop和兩個進 -程構(gòu)成library IEEE;use IEEE
23、.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;entity reciever isgeneric(framlenr:integer:=8); Port (bclkr,resetr,r*dr:in std_logic; -定義輸入輸出信號 r_ready:out std_logic; rbuf:out std_logic_vector(7 downto 0);end reciever;architecture Behavioral of reciever istype states
24、 is (r_start,r_center,r_wait,r_sample,r_stop); -定義各子狀態(tài)signal state:states:=r_start;signal r*d_sync:std_logic;beginpro1:process(r*dr)begin if r*dr=0 then r*d_sync=0; else r*d_sync=1; end if;end process;pro2:process(bclkr,resetr,r*d_sync) -主控時序、組合進程variable count:std_logic_vector(3 downto 0); -定義中間變量v
25、ariable rt:integer:=0;variable rbufs:std_logic_vector(7 downto 0);begin if resetr=1 then state -狀態(tài)1,等待起始位 if r*d_sync=0 then state=r_center; r_ready=0; rt:=0; else state=r_start; r_ready -狀態(tài)2,求出每位的中點 if r*d_sync=0 then if count=0100 then state=r_wait; count:=0000; else count:=count+1; state=r_center; end if; else state -狀態(tài)3,等待狀態(tài) if count=1110 then count:=0000; if rt=framlenr then state=r_stop; else state=r_sample; end
溫馨提示
- 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年承德護理職業(yè)學院輔導(dǎo)員招聘考試真題匯編附答案
- 2024年海南政法職業(yè)學院輔導(dǎo)員招聘考試真題匯編附答案
- 2024年淶源縣招教考試備考題庫附答案
- 2024年鄭州商貿(mào)旅游職業(yè)學院輔導(dǎo)員招聘考試真題匯編附答案
- 2025年三明學院輔導(dǎo)員考試筆試題庫附答案
- 智能汽車維修工安全培訓(xùn)競賽考核試卷含答案
- 2024年湖南農(nóng)業(yè)大學輔導(dǎo)員考試參考題庫附答案
- 2025年云南省公務(wù)員考試行測數(shù)量關(guān)系題及完整答案一套
- 2024年許昌市直機關(guān)遴選公務(wù)員筆試真題匯編附答案
- 2024年福州市特崗教師筆試真題題庫附答案
- 河南豫能控股股份有限公司及所管企業(yè)2026屆校園招聘127人考試備考題庫及答案解析
- 2026浙江寧波市鄞州人民醫(yī)院醫(yī)共體云龍分院編外人員招聘1人筆試參考題庫及答案解析
- (2025年)新疆公開遴選公務(wù)員筆試題及答案解析
- 物業(yè)管家客服培訓(xùn)課件
- 直銷公司旅游獎勵方案
- 解除勞動合同證明電子版(6篇)
- 呼吸科規(guī)培疑難病例討論
- 有關(guān)中國居民死亡態(tài)度的調(diào)查報告
- 核對稿100和200單元概述
- 醫(yī)學統(tǒng)計學(12)共143張課件
- 特種設(shè)備安全檢查臺賬
評論
0/150
提交評論