版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 目錄</b></p><p> 1 UART簡介3</p><p> 1.1 UART結(jié)構(gòu)3</p><p> 1.2 UART的幀格式3</p><p> 1.3 UART的基本原理3</p><p> 2 UART的設(shè)計(jì)與實(shí)現(xiàn)4</p&
2、gt;<p> 2.1 UART發(fā)送器4</p><p> 2.2 UART接收器5</p><p> 2.3數(shù)碼管動態(tài)顯示6</p><p> 2.4 波特率發(fā)生器7</p><p> 2.5 UART設(shè)計(jì)總模塊7</p><p> 3硬件電路的調(diào)試8</p>&l
3、t;p> 3.1硬件的測試8</p><p> 3.2 數(shù)碼管動態(tài)數(shù)據(jù)9</p><p> 3.3 通過按鍵實(shí)現(xiàn)數(shù)據(jù)增減10</p><p> 3.3.1 鍵盤按鍵消抖10</p><p> 3.3.2 加一減一的程序11</p><p> 3.3.3 仿真圖12</p>&
4、lt;p><b> 4 總結(jié)12</b></p><p><b> 5 參考文獻(xiàn)12</b></p><p> 摘要:UART(通用異步接收發(fā)送設(shè)備) 是一種短距離串行傳輸接口。在數(shù)字通信和控制系統(tǒng)中得到廣泛應(yīng)用。 CPLD 是大規(guī)模集成電路技術(shù)發(fā)展的產(chǎn)物,是一種半定制的集成電路。采用可編程邏輯器件 CPLD 實(shí)現(xiàn)UART 的方法
5、,將UART的核心功能集成到 CPLD 上,本設(shè)計(jì)包含UART 的發(fā)送模塊、接收模塊和波特率發(fā)生器,所有功能的實(shí)現(xiàn)全部采用VHDL 硬件描述語言來進(jìn)行描述。設(shè)計(jì)、綜合、仿真在QUARTUSII 軟件開發(fā)環(huán)境下實(shí)現(xiàn)。</p><p> 關(guān)鍵詞:UART;VHDL;CPLD</p><p><b> 1 UART簡介</b></p><p>
6、 UART(即Universal Asynchronous Receiver Transmitter 通用異步收發(fā)器)是一種應(yīng)用廣泛的短距離串行傳輸接口。UART允許在串行鏈路上進(jìn)行全雙工的通信。 UART主要有由數(shù)據(jù)總線接口、控制邏輯、波特率發(fā)生器、發(fā)送部分和接收部分等組成。功能較為簡單,但使用方便、占用資源少,可以靈活地嵌入到各種設(shè)計(jì)之中。串行外設(shè)用到的RS232-C異步串行接口,一般采用專用的集成電路即UART實(shí)現(xiàn)。
7、使用VHDL將UART的核心功能集成,從而使整個設(shè)計(jì)更加緊湊、穩(wěn)定且可靠。</p><p> 1.1 UART結(jié)構(gòu)</p><p> UART主要有由數(shù)據(jù)總線接口、控制邏輯、波特率發(fā)生器、發(fā)送部分和接收部分等組成。</p><p> 1.2 UART的幀格式</p><p> UART是異步通信方式,發(fā)送方和接收方分別有各自獨(dú)立的時鐘
8、,傳輸?shù)乃俣扔呻p方約定,使用起止式異步協(xié)議。起止式異步協(xié)議的特點(diǎn)是以每一個字符為單位進(jìn)行傳輸,字符之間沒有固定的時間間隔要求,每個字符都以起始位開始,以停止位結(jié)束。幀的格式如圖一所示,每一個字符的前面都有一位起始位(低電平,邏輯值0),字符本身有5到8比特?cái)?shù)據(jù)位組成,接著是一位校驗(yàn)位(也可以沒有校驗(yàn)位),最后是一位(或一位半、二位)停止位,停止位后面是不定長度的空閑位。停止位和空閑位都規(guī)定為高電平,這樣就保證了起始位開始處一定有一個下降
9、沿。從圖中可以看出,這種格式是靠起始位和停止位來實(shí)現(xiàn)字符的界定或同步的,故稱為起止式協(xié)議。</p><p> UART的幀格式的示意圖如圖一所示:</p><p> 圖一 基本UART幀格式</p><p> 1.3 UART的基本原理</p><p> 基本的UART通信只需要兩條信號線:RXD和TXD,TXD是UART的發(fā)送端,
10、RXD是UART的接收端,接收與發(fā)送是全雙工工作的。</p><p> 通過在串行端口上使用調(diào)制解調(diào)器,串行數(shù)據(jù)可以通過電話線進(jìn)行長距離的收發(fā)(圖二)。用于收發(fā)串行數(shù)據(jù)的串行通信接口通常稱為UART(通用異步收發(fā)機(jī))。</p><p> UART串行數(shù)據(jù)傳輸?shù)氖疽鈭D如圖二所示:</p><p> 圖二 串行數(shù)據(jù)傳輸</p><p>
11、 發(fā)送數(shù)據(jù)過程:空閑狀態(tài),線路處于高電位,當(dāng)收到發(fā)送數(shù)據(jù)指令后,拉低線路一個數(shù)據(jù)位的時間T,接著數(shù)據(jù)按低位到高位依次發(fā)送,數(shù)據(jù)發(fā)送完畢后,接著發(fā)送奇偶校驗(yàn)位和停止位(停止位為高電位),一幀數(shù)據(jù)發(fā)送結(jié)束。</p><p> 接收數(shù)據(jù)過程:空閑狀態(tài),線路處于高電位,當(dāng)檢測到線路的下降沿(線路電位由高電位變?yōu)榈碗娢唬┱f明線路有數(shù)據(jù)傳輸,按照約定的波特率從低位到高位接收數(shù)據(jù),數(shù)據(jù)接收完畢后,接著接收并比較奇偶校驗(yàn)位是否
12、正確,如果正確則通知后續(xù)設(shè)備準(zhǔn)備接收數(shù)據(jù)或存入緩存。</p><p> 2 UART的設(shè)計(jì)與實(shí)現(xiàn)</p><p> 2.1 UART發(fā)送器</p><p> 串行發(fā)送數(shù)據(jù)時每秒鐘發(fā)送的比特個數(shù)稱之為波特率,常用串行口波特率有9600、19200、115200等多種。</p><p> UART的數(shù)據(jù)幀的形式分組發(fā)送數(shù)據(jù),以8位數(shù)據(jù)位、
13、1位起始位和1位停止位的幀格式為例,每一個數(shù)據(jù)幀由10位數(shù)據(jù)構(gòu)成,首先是一個低電平起始位來標(biāo)志幀開始,隨后由低至高發(fā)送8位數(shù)據(jù),最后是1位高電平的停止位。</p><p> 在邏輯結(jié)構(gòu)上,每秒9600次的發(fā)送節(jié)拍由波特率發(fā)生器產(chǎn)生,它是一個參數(shù)化、分頻比的整數(shù)分頻器。這里使用邊沿邏輯,對于分頻時鐘的占空比并沒有要求,所以直接用模n計(jì)算器進(jìn)行分頻。9600Hz的時鐘信號驅(qū)動10bit的一位計(jì)數(shù)器,將數(shù)據(jù)總線上載入
14、的8bit數(shù)據(jù)加上起始位和停止位后由低到高依次移除。</p><p> 發(fā)送邏輯的結(jié)構(gòu)框圖如圖三所示:</p><p><b> 圖三 發(fā)送結(jié)構(gòu)框圖</b></p><p> UART發(fā)送器的發(fā)送流程圖如圖四所示:</p><p> 圖四 UART發(fā)送器的發(fā)送流程圖</p><p> 2
15、.2 UART接收器</p><p> UART是異步傳輸接口,沒有時鐘信號同步。所以接收端需要進(jìn)行過采樣來保證數(shù)據(jù)的接收,RS232標(biāo)準(zhǔn)規(guī)定的過采樣率是以發(fā)送波特率的16倍時鐘對數(shù)據(jù)進(jìn)行檢測。</p><p> UART接收邏輯通過檢測TxD上起始位的下降沿作為幀同步標(biāo)準(zhǔn),這樣就相當(dāng)于把每個位分成了16份,為了避免干擾取16份中位于中部的6、7、8三個采樣進(jìn)行判別,以它們中兩個或兩個
16、以上相同的值作為采樣結(jié)果。</p><p> 接收器結(jié)構(gòu)框圖如圖五所示:</p><p> 圖五 接收結(jié)構(gòu)框圖</p><p> 接收器的接收原理流程圖如圖六所示:</p><p> 圖六 接收器的接收原理流程圖</p><p> 2.3數(shù)碼管動態(tài)顯示</p><p> 圖八所
17、示的是共陽數(shù)碼管及其電路,其中每個數(shù)碼管的8個段: h、g、f、e、d、c、b、a(h是小數(shù)點(diǎn))都連在一起。圖九是4 位數(shù)碼掃描顯示電路,4個數(shù)碼管分別由4個選通信號k1~k4來選擇。被選通的數(shù)碼管顯示數(shù)據(jù)。例如,在某一時刻,k3為低電平,其余選通信號為高電平,這時僅k3對應(yīng)的數(shù)碼管顯示來自段信號端的數(shù)據(jù),就必須使得4個選通信號k1~k4分別被單獨(dú)選通,與此同時,在段信號輸入口加上希望在該對應(yīng)數(shù)碼管上顯示的數(shù)據(jù),于是隨著選通信號的掃變,
18、就能實(shí)現(xiàn)掃描顯示的目的。</p><p> 共陽數(shù)碼管及其電路示意圖如圖七所示:</p><p> 圖七 共陽數(shù)碼管及其電路</p><p> 4位數(shù)碼掃描電路的示意圖如圖八所示:</p><p> 圖八 4位數(shù)碼掃描電路</p><p> 2.4 波特率發(fā)生器</p><p> U
19、ART的接收和發(fā)送是按照相同的波特率進(jìn)行收發(fā)的。波特率發(fā)生器產(chǎn)生的時鐘頻率不是波特率時鐘頻率,而是波特率時鐘頻率的16倍,目的是為在接收時進(jìn)行精確地采樣,以提出異步的串行數(shù)據(jù)。</p><p> 2.5 UART設(shè)計(jì)總模塊</p><p> 將發(fā)送器和接收器模塊組裝起來,就能較容易地實(shí)現(xiàn)通用異步收發(fā)器總模塊,而且硬件實(shí)現(xiàn)不需要很多資源,尤其能較靈活地嵌入到FPGA/CPLD的開發(fā)中。&
20、lt;/p><p> UART設(shè)計(jì)流程圖如圖九所示:</p><p> 圖九 UART設(shè)計(jì)流程圖</p><p><b> 3硬件電路的調(diào)試</b></p><p><b> 3.1硬件的測試</b></p><p> 圖十為硬件的測試程序顯示圖,測試程序讓4為數(shù)碼
21、管全部亮,蜂鳴器響。通過測試,硬件正常工作。</p><p><b> 部分測試程序代碼:</b></p><p> 清單1 部分測試程序</p><p> P7<=PPPP(0);P6<=PPPP(1);P5<=PPPP(2);P4<=PPPP(3);P3<=PPPP(4);P2<=PPPP(5);P
22、1<=PPPP(6);P0<=PPPP(7);</p><p> KKKK <= K4 & K3 & K2 & K1;</p><p> C4<=CCCC(0);C3<=CCCC(1);C2<=CCCC(2);C1<=CCCC(3);</p><p> PROCESS (KKKK)</p&
23、gt;<p><b> BEGIN </b></p><p> CASE KKKK IS</p><p> WHEN "1110" => PPPP<="00000000";CCCC<="0000";MING<='1';</p><
24、;p> WHEN "1101" => PPPP<="00000000";CCCC<="1111";MING<='1';</p><p> WHEN "1011" => PPPP<="00000000";CCCC<="1111";
25、MING<='0';</p><p> WHEN "0111" => PPPP<="00000000";CCCC<="1111";MING<='1';</p><p> WHEN OTHERS => PPPP<="00000000";
26、CCCC<="1111";MING<='1';</p><p><b> END CASE;</b></p><p> END PROCESS;</p><p> 硬件的測試圖如圖十所示:</p><p> 圖十 硬件的測試圖</p><
27、p> 3.2 數(shù)碼管動態(tài)數(shù)據(jù)</p><p> 通過動態(tài)數(shù)碼管顯示程序使動態(tài)掃描數(shù)碼管實(shí)現(xiàn)動態(tài)顯示。圖十一是數(shù)碼管動態(tài)顯示結(jié)果圖。</p><p> 動態(tài)數(shù)碼管顯示程序代碼:</p><p> 清單2 動態(tài)數(shù)碼管顯示程序</p><p> P2:PROCESS(T)</p><p><b>
28、 BEGIN</b></p><p><b> CASE T IS</b></p><p> WHEN "00" => C<="0111";A<=5;</p><p> WHEN "01" => C<="1011";
29、A<=6;</p><p> WHEN "10" => C<="1101";A<=7;</p><p> WHEN "11" => C<="1110";A<=8;</p><p> WHEN OTHERS => NULL;</p
30、><p><b> END CASE;</b></p><p> END PROCESS P2;</p><p> P3:PROCESS (A)</p><p><b> BEGIN</b></p><p><b> CASE A IS</b>&l
31、t;/p><p> WHEN 1 => L<= "10011111"; --MING<='1'; --1</p><p> WHEN 2 => L<= "00100101"; --MING<='1'; --2</p><p> WHEN 3 =>
32、; L<= "00001101"; --MING<='1'; --3</p><p> WHEN 4 => L<= "10011001"; --MING<='1'; --4</p><p> WHEN 5 => L<= "01001001"; -
33、-MING<='1'; --5</p><p> WHEN 6 => L<= "01000001"; --MING<='1'; --6</p><p> WHEN 7 => L<= "00011111"; --MING<='1'; --7<
34、/p><p> WHEN 8 => L<= "00000001"; --MING<='1'; --8</p><p> WHEN 9 => L<= "00001001"; --MING<='1'; --9</p><p> WHEN 0 =>
35、L<= "00000011"; --MING<='1'; --0</p><p> WHEN OTHERS => NULL;</p><p><b> END CASE;</b></p><p> END PROCESS P3;</p><p> 動態(tài)數(shù)碼
36、管顯示如圖十一所示:</p><p> 圖十一 動態(tài)數(shù)碼管顯示</p><p> 3.3 通過按鍵實(shí)現(xiàn)數(shù)據(jù)增減</p><p> 3.3.1 鍵盤按鍵消抖</p><p> 機(jī)械式鍵盤在按下時,由于機(jī)械觸點(diǎn)的彈性與接觸特性,會產(chǎn)生瞬間的電平抖動,在實(shí)際應(yīng)用中如果不對按鍵進(jìn)行消抖處理可能會引起控制的邏輯的誤觸發(fā)。</p>
37、;<p> 在本下次設(shè)計(jì)中,采用脈沖采樣的方法,即對輸入信號進(jìn)行3次取樣,如果取樣值均是統(tǒng)一電平,則認(rèn)為有按鍵按下且處于穩(wěn)定狀態(tài),如果采樣過程中不能發(fā)現(xiàn)連續(xù)滿足3次采樣值相同時,認(rèn)為是誤觸發(fā)。</p><p> 鍵盤按鍵消抖程序部分代碼:</p><p> 清單3鍵盤按鍵消抖程序部分代碼</p><p> p2: process(clock,k
38、ey_in)</p><p><b> begin</b></p><p> if clock'event and clock='1' then</p><p> if div_clk='1'then</p><p> dout1<=key_in;</p>
39、<p> dout2<=dout1;</p><p> dout3<=dout2;</p><p><b> end if;</b></p><p><b> end if;</b></p><p> end process p2;</p><
40、p> p3: process(clock)</p><p><b> begin </b></p><p> if clock'event and clock='1'then</p><p> buff<=dout1 or dout2 or dout3;</p><p>&
41、lt;b> end if;</b></p><p> end process p3;</p><p> key_edge<=(not(dout1 or dout2 or dout3))and buff;</p><p> 3.3.2 加一減一的程序</p><p> 按鍵進(jìn)行消抖后,按UP鍵實(shí)現(xiàn)加1功能,按D
42、OWN鍵實(shí)現(xiàn)減1功能。</p><p> 加1減1部分程序代碼:</p><p> 清單4 加1減1程序代碼</p><p> p4: process(clock,key_edge,tim)</p><p><b> begin</b></p><p> if clock'eve
43、nt and clock='1' then</p><p> case key_edge is</p><p> when "0001"=> </p><p> if tim="1001" then</p><p> tim<="0000&quo
44、t;;</p><p><b> else</b></p><p> tim<=tim+1;</p><p> end if; </p><p> when "0010"=> </p><p> if tim="0000&
45、quot; then</p><p> tim<="1001";</p><p><b> else </b></p><p> tim<=tim-1;</p><p> end if; </p><p> when others=&g
46、t;null;</p><p><b> end case;</b></p><p> end if; </p><p> end process p4;</p><p><b> 3.3.3 仿真圖</b></p><p> 圖十二是用RTL Viewer仿
47、真的電路圖(用了62個宏模塊,22個引腳):</p><p> 圖十二 RTL電路圖</p><p><b> 4 總結(jié)</b></p><p> 通過本次課程設(shè)計(jì),系統(tǒng)學(xué)習(xí)了應(yīng)用EDA的VHDL語言設(shè)計(jì)、仿真與實(shí)現(xiàn)硬件的方法。在本次的設(shè)計(jì)中通過對波特率發(fā)生器、發(fā)送器和接收器模塊的設(shè)計(jì)與仿真,能實(shí)現(xiàn)通用異步收發(fā)器總模塊。</p&g
48、t;<p><b> 5 參考文獻(xiàn)</b></p><p> [1] 鄭亞民,董曉舟.VHDL與VerilogHDL比較學(xué)習(xí)及建模指導(dǎo)【M】.北京:國防工業(yè)出版社,2008.6</p><p> [2] 潘松,黃繼業(yè). EDA技術(shù)實(shí)驗(yàn)教程(第二版)【M】.北京:科學(xué)出版社,2005</p><p> [3] 江國強(qiáng). 數(shù)字
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 基于FPGA的通用異步收發(fā)器的設(shè)計(jì).pdf
- 通用異步接收發(fā)送器的設(shè)計(jì).pdf
- usb2.0收發(fā)器接口芯片設(shè)計(jì)
- 課程設(shè)計(jì)報(bào)告通用排序
- 高速VML收發(fā)器的研究與設(shè)計(jì).pdf
- 高速CMOS LVDS收發(fā)器IP核設(shè)計(jì).pdf
- 光纖收發(fā)器原理
- 高速CAN收發(fā)器的設(shè)計(jì)與研究.pdf
- 一種2.5gbpsivds收發(fā)器設(shè)計(jì)
- 通用異步接收發(fā)送器外文翻譯
- 千兆單模光纖收發(fā)器
- 基于framework的收發(fā)器開發(fā)平臺設(shè)計(jì).pdf
- 高速LVDS收發(fā)器的研究與設(shè)計(jì).pdf
- 高性能收發(fā)器的研究與設(shè)計(jì).pdf
- 畢業(yè)設(shè)計(jì)----51單片機(jī)紅外收發(fā)器設(shè)計(jì)
- 10Gbps光收發(fā)器設(shè)計(jì)與實(shí)現(xiàn).pdf
- LIN總線收發(fā)器電路的研究與設(shè)計(jì).pdf
- USB收發(fā)器宏單元數(shù)字部分的設(shè)計(jì).pdf
- LVDS高速數(shù)據(jù)收發(fā)器的研究與設(shè)計(jì).pdf
- CAN總線收發(fā)器電路的設(shè)計(jì)與研究.pdf
評論
0/150
提交評論