通用異步收發(fā)器設(shè)計(jì)課程設(shè)計(jì)報(bào)告_第1頁
已閱讀1頁,還剩11頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論