eda課程設計--rs-232485通信接口設計_第1頁
已閱讀1頁,還剩23頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、<p>  E D A 課 程</p><p><b>  設</b></p><p><b>  計</b></p><p><b>  報</b></p><p><b>  告</b></p><p>  設計題

2、目:RS-232/485通信接口設計</p><p>  學 院:電子與信息工程學院</p><p>  班 級:電子科學與技術082班</p><p><b>  姓 名: </b></p><p><b>  學 號: </b></p><p>&

3、lt;b>  指導教師: </b></p><p><b>  成 績:</b></p><p>  2011年07月14日</p><p><b>  目錄</b></p><p>  0 摘要 .......................................

4、....2</p><p>  1 EDA及VHDL簡介 .................................4</p><p>  1.1 EDA技術 ....................................4</p><p>  1.1.1 EDA技術的概念 .........................4</p>

5、<p>  1.1.2 EDA技術的特點 .........................4</p><p>  1.2 硬件描述語言(VHDL)........................5</p><p>  1.2.1 VHDL簡介 ..............................5</p><p>  1.2.2 VHDL語言的

6、特點 ........................5</p><p>  2 設計目的 .......................................7</p><p>  3 RS-232簡介 .....................................7</p><p>  3.1 RS-232的歷史和作用 ..........

7、..............7</p><p>  3.2 RS-232接口的電氣特征 ......................7</p><p>  3.3 RS-232接口的物理結構 ......................8</p><p>  3.4 RS-232傳輸電纜長度 ........................8</p>

8、<p>  3.5 RS-232C 的接口信號 .........................8</p><p>  3.6 RS-232端口缺點 ............................10</p><p>  4 設計原理 ......................................11</p><p>  5 通信

9、功能實現(xiàn)步驟 ..............................13</p><p>  6 仿真結果 ......................................14</p><p>  7 總結 ..........................................15</p><p><b>  8 附錄(程序

10、)</b></p><p><b>  0 摘要</b></p><p>  20世紀是IC迅速發(fā)展的時代。計算機等信息產業(yè)的飛速發(fā)展推動了集成電路(Integrated Circuit—IC)產業(yè)。大多數(shù)超大規(guī)模集成電路(Very Large Scale IC—VLSI)在日常生活中有著廣泛的應用.而越來越多的汽車控制系統(tǒng)也走向了電子化。為了實現(xiàn)基于VH

11、DL 的通信接口電路,采用Quartus II 開發(fā)平臺進行邏輯綜合和時序仿真,由時序仿真圖可以看出設計的電路獲得了預期的結果。實驗結果表明,該系統(tǒng)沒有傳統(tǒng)設計中的接線問題,硬件功能可以像軟件一樣通過編程來修改,可靠性高、體積小,極大地提高了電子系統(tǒng)設計的靈活性和通用性。</p><p>  【關鍵詞】FPGA;VHDL;通信接口;Quartus II</p><p><b> 

12、 Abstract</b></p><p>  The 20th century is the era of rapid development of the IC . the blooming development of Computer Science has led to the growth of integrated circuit (IC) devices. Most of the Ve

13、ry Large Scale IC (VLSI) applications are using every day . More and more auto-control and an increasing number of vehicle control system to the electronic filing system to the electronic.The Quartus II development platf

14、orm are proposed to realize the VHDL-based car taillights control communication interface, after logic</p><p>  【Key words】FPGA;VHDL;communication interface; QuartusII</p><p>  1 EDA及VHDL簡介</

15、p><p><b>  EDA技術</b></p><p>  1.1.1 EDA技術的概念</p><p>  EDA是電子設計自動化(Electronic Design Automation)的縮寫,在20世紀90年代初從計算機輔助設計(CAD)、計算機輔助制造(CAM)、計算機輔助測試(CAT)和計算機輔助工程(CAE)的概念發(fā)展而來的。ED

16、A技術就是以計算機為工具,設計者在EDA軟件平臺上,用硬件描述語言HDL完成設計文件,然后由計算機自動地完成邏輯編譯、化簡、分割、綜合、優(yōu)化、布局、布線和仿真,直至對于特定目標芯片的適配編譯、邏輯映射和編程下載等工作。</p><p>  1.1.2 EDA技術的特點</p><p>  典型的EDA設計流程如下:</p><p>  1、文本/原理圖編輯與修改。首

17、先利用EDA工具的文本或圖形編輯器將設計者的設計意圖用文本或圖形方式表達出來。   2、編譯。完成設計描述后即可通過編譯器進行排錯編譯,變成特定的文本格式,為下一步的綜合做準備。   3、 綜合。將軟件設計與硬件的可實現(xiàn)性掛鉤,是將軟件轉化為硬件電路的關鍵步驟。</p><p>  4、 行為仿真和功能仿真。利用產生的網表文件進行功能仿真,以便了解設計描述與設計意圖的一致性。  5、適配。利用FPGA/CP

18、LD布局布線適配器將綜合后的網表文件針對某一具體的目標器件進行邏輯映射操作,其中包括底層器件配置、邏輯分割、邏輯優(yōu)化、布局布線。適配報告指明了芯片內資源的分配與利用、引腳鎖定、設計的布爾方程描述情況。   6、 功能仿真和時序仿真。</p><p>  7、 下載。如果以上的所有過程都沒有發(fā)現(xiàn)問題,就可以將適配器產生的下載文件通過FPGA/CPLD下載電纜載入目標芯片中。</p><p>

19、;  8、 硬件仿真與測試。</p><p>  硬件描述語言(VHDL)</p><p><b>  VHDL簡介</b></p><p>  VHDL(Very-High-Speed Integrated Circuit Hardware Description Language)主要用于描述數(shù)字系統(tǒng)的結構,行為,功能和接口。除了含有許多具

20、有硬件特征的語句外,VHDL的語言形式和描述風格與句法是十分類似于一般的計算機高級語言。VHDL的程序結構特點是將一項工程設計,或稱設計實體(可以是一個元件,一個電路模塊或一個系統(tǒng))分成外部(或稱可是部分,及端口)和內部(或稱不可視部分),既涉及實體的內部功能和算法完成部分。在對一個設計實體定義了外部界面后,一旦其內部開發(fā)完成后,其他的設計就可以直接調用這個實體。這種將設計實體分成內外部分的概念是VHDL系統(tǒng)設計的基本點。</p&

21、gt;<p><b>  VHDL語言的特點</b></p><p>  1.用VHDL代碼而不是用原理圖進行設計,意味著整個電路板的模型及性能可用計算機模擬進行驗證。</p><p>  2.VHDL元件的設計與工藝無關,與工藝獨立,方便工藝轉換。</p><p>  3.VHDL支持各種設計方法,自頂向下、自底向上或者混合的都

22、可以。</p><p>  4.可以進行從系統(tǒng)級到邏輯級的描述,即混合描述。</p><p>  5.VHDL區(qū)別于其他的HDL,已形成標準,其代碼在不同的系統(tǒng)中可交換建模。</p><p>  隨著電子技術的發(fā)展,現(xiàn)場可編程門陣列 FPGA和復雜可編程邏輯器件CPLD的出現(xiàn),使得電子系統(tǒng)的設計者利用與器件相應的電子CAD軟件,在實驗室里就可以設計自己的專用集成電路

23、ASIC器件。這種可編程ASIC不僅使設計的產品達到小型化、集成化和高可靠性,而且器件具有用戶可編程特性,大大縮短了設計周期,減少了設計費用,降低了設計風險。目前數(shù)字系統(tǒng)的設計可以直接面向用戶需求,根據(jù)系統(tǒng)的行為和功能要求,自上至下地逐層完成相應的描述﹑綜合﹑優(yōu)化﹑仿真與驗證,直到生成器件,實現(xiàn)電子設計自動化。其中電子設計自動化(EDA)的關鍵技術之一就是可以用硬件描述語言(HDL)來描述硬件電路。 VHDL是用來描述從抽象到具體級別硬

24、件的工業(yè)標準語言,它是由美國國防部在80年代開發(fā)的HDL,現(xiàn)在已成為IEEE承認的標準硬件描述語言。VHDL支持硬件的設計、驗證、綜合和測試,以及硬件設計數(shù)據(jù)的交換、維護、修改和硬件的實現(xiàn),具有描述能力強、生命周期長、支持大規(guī)模設計的分解和已有設計的再利用等優(yōu)點。利用VHDL這些優(yōu)點和先進的EDA工具,根據(jù)具體的實際要求,我們可以自己來設計通信接口電路。</p><p><b>  2設計目的</

25、b></p><p>  1 掌握QuartusⅡ的基本操作及使用方法</p><p>  2 熟練在QuartusⅡ環(huán)境下編寫,調試,仿真,下載程序代碼</p><p>  3 了解RS-232在通信中的作用</p><p>  4 鍛煉理論知識運用于實踐的能力</p><p>  3 RS-232簡介<

26、/p><p>  3.1 RS-232的歷史和作用</p><p>  在串行通訊時,要求通訊雙方都采用一個標準接口,使不同的設備可以方便地連接起來進行通訊。RS-232-C接口(又稱EIARS-232-C)是目前最常用的一種串行通訊接口。(“RS-232-C”中的“-C”只不過</p><p>  表示RS-232的版本,所以與“RS-232”簡稱是一樣的)</

27、p><p>  它是在1970年由美國電子工業(yè)協(xié)會(EIA)聯(lián)合貝爾系統(tǒng)、調制解調器廠家及計算機終端生產廠家共同制定的用于串行通訊的標準。它的全名是“數(shù)據(jù)終端設備(DTE)和數(shù)據(jù)通訊設備(DCE)之間串行二進制數(shù)據(jù)交換接口技術標準”該標準規(guī)定采用一個25個腳的DB-25連接器,對連接器的每個引腳的信號內容加以規(guī)定,還對各種信號的電平加以規(guī)定。后來IBM的PC機將RS232簡化成了DB-9連接器,從而成為事實標準。而工

28、業(yè)控制的RS-232口一般只使用RXD、TXD、GND</p><p><b>  三條線。</b></p><p>  3.2 RS-232接口的電氣特征</p><p>  在RS-232-C中任何一條信號線的電壓均為負邏輯關系。即:邏輯“1”為-3到-15V;邏輯“0”為+3到+15V。(RS-232-C最常用的9</p>

29、<p>  條引線的信號內容如下所示)</p><p>  DB-9123456789;DB-2583220764522</p><p>  定義DCD RXD TXD DTR GND DSR RTD CTS RI</p><p>  3.3 RS-232接口的物理結構</p><p>  RS-232-C接口連接器一般使用型號為D

30、B-9插頭座,通常插頭在DCE端,插座在DTE端。PC機的RS-232口為9芯針插座。一些設備與PC機連接的RS-232接口,因為不使用對方的傳送控制信號,只需要三條接口線,即“發(fā)送數(shù)據(jù)TXD”、“接收數(shù)據(jù)RXD”和“信號地GND”。</p><p>  RS-232傳輸線采用屏蔽雙絞線。</p><p>  3.4 RS-232傳輸電纜長度</p><p>  由

31、RS-232-C標準規(guī)定在碼元畸變小于4%的情況下,傳輸電纜長度應為50英尺,其實這個4%的碼元畸變是很保守的,在實際應用中,約有99%的用戶是按碼元畸變10%-20%的范圍工作的,所以實際使用中最大距離會遠超過50英尺,美國DEC公司曾規(guī)定容許畸變?yōu)?0%而得出下面實驗結果。其中1號電纜為屏蔽電纜,型號為DECP.NO.9107723內有三對雙絞線,每對有22#AWG組成,其外覆以屏蔽線。2號電纜為不帶屏蔽的電纜。型號為DECP.NO

32、.9105856-04</p><p>  是22#AWG的四芯電纜。</p><p>  3.5 RS-232C 的接口信號:</p><p>  RS-232C 的功能特性定義了25芯標準連接器中的20根信號線,其中2條地線、4條數(shù)據(jù)線、11條控制線、3條定時信號線,剩下的</p><p>  5根線作備用或未定義。常用的只有10根,它們

33、是:</p><p> ?。?)聯(lián)絡控制信號線:</p><p>  數(shù)據(jù)發(fā)送準備好(Data set ready-DSR)——有效時(ON)狀態(tài),</p><p>  表明MODEM處于可以使用的狀態(tài)。 </p><p>  數(shù)據(jù)終端準備好(Data terminal ready-DTR)——有效時(ON)</p><p

34、>  狀態(tài),表明數(shù)據(jù)終端可以使用。 </p><p>  這兩個信號有時連到電源上,一上電就立即有效。這兩個設備狀態(tài)信號有效,只表示設備本身可用,并不說明通信鏈路可以開始進行</p><p>  通信了,能否開始進行通信要由下面的控制信號決定。</p><p>  請求發(fā)送(Request to send-RTS)——用來表示DTE請求DCE發(fā)送數(shù)據(jù),即當終端

35、要發(fā)送數(shù)據(jù)時,使該信號有效(ON狀態(tài)),向MODEM</p><p>  請求發(fā)送。它用來控制MODEM是否要進入發(fā)送狀態(tài)。</p><p>  允許發(fā)送(Clear to send-CTS)——用來表示DCE準備好接收DTE發(fā)來的數(shù)據(jù),是對請求發(fā)送信號RTS的響應信號。當MODEM已準備好接收終端傳來的數(shù)據(jù),并向前發(fā)送時,使該信號有效,通知終端</p><p> 

36、 開始沿發(fā)送數(shù)據(jù)線TxD發(fā)送數(shù)據(jù)。</p><p>  這對RTS/CTS請求應答聯(lián)絡信號是用于半雙工MODEM系統(tǒng)中發(fā)送方式和接收方式之間的切換。在全雙工系統(tǒng)中,因配置雙向通道,</p><p>  故不需要RTS/CTS聯(lián)絡信號,使其變高。</p><p>  接收線信號檢出(Received Line detection-RLSD)——用來表示DCE已接通通信

37、鏈路,告知DTE準備接收數(shù)據(jù)。當本地的MODEM收到由通信鏈路另一端(遠地)的MODEM送來的載波信號時,使RLSD信號有效,通知終端準備接收,并且由MODEM將接收下來的載波信號解調成數(shù)字兩數(shù)據(jù)后,沿接收數(shù)據(jù)線RxD送到終端。此線也叫做數(shù)據(jù)</p><p>  載波檢出(Data Carrier dectection-DCD)線。</p><p>  振鈴指示(Ringing-RI)——

38、當MODEM收到交換臺送來的振呼</p><p>  叫信號時,使該信號有效(ON狀態(tài)),通知終端,已被呼叫。 </p><p> ?。?)數(shù)據(jù)發(fā)送與接收線: </p><p>  發(fā)送數(shù)據(jù)(Transmitted data-TxD)——通過TxD終端將串行據(jù)</p><p>  發(fā)送到MODEM,(DTE→DCE)。 </p>

39、<p>  接收數(shù)據(jù)(Received data-RxD)——通過RxD線終端接收MODEM</p><p>  發(fā)來的串行數(shù)據(jù),(DCE→DTE)。 </p><p> ?。?)地線 : GND、Sig.GND——保護地和信號地,無方向。 </p><p>  上述控制信號線何時有效,何時無效的順序表示了接口信號的傳送過程。例如,只有當DSR和DTR都

40、處于有效(ON)狀態(tài)時,才能在DTE和DCE之間進行傳送操作。若DTE要發(fā)送數(shù)據(jù),則預先將DTR線置成有效(ON)狀態(tài),等CTS線上收到有效(ON)狀態(tài)的回答后,才能在TxD線上發(fā)送串行數(shù)據(jù)。這種順序的規(guī)定對半雙工的通信線路特別有用,因為半雙工的通信才能確定DCE已由接收方向改為發(fā)送方向,這</p><p>  時線路才能開始發(fā)送。</p><p>  3.6 RS-232端口缺點<

41、/p><p>  1、接口的信號電平值較高,易損壞接口電路的芯片,又因為與TTL電平不兼容故需使用電平轉換電路方能與TTL電路連接。</p><p>  2、傳輸速率較低,在異步傳輸時,波特率為20Kbps;因此在“南方的老樹51CPLD開發(fā)板”中,綜合程序波特率只能采用19200,也</p><p><b>  是這個原因。</b></p&

42、gt;<p>  3、接口使用一根信號線和一根信號返回線而構成共地的傳輸形</p><p>  式,這種共地傳輸容易產生共模干擾,所以抗噪聲干擾性弱。</p><p>  4、傳輸距離有限,最大傳輸距離標準值為50英尺,實際上也只能用在50米左右。(通過外接RS-232增強器可將傳輸距離擴大到</p><p><b>  1000米左右)&l

43、t;/b></p><p><b>  4設計原理</b></p><p>  串口是計算機上一種非常通用設備通信的協(xié)議(不要與通用串行總線Universal Serial Bus或者USB混淆)。大多數(shù)計算機包含兩個基于RS232的串口。串口同時也是儀器儀表設備通用的通信協(xié)議;很多GPIB兼容的設備也帶有RS-232口。同時,串口通信協(xié)議也可以</p&g

44、t;<p>  用于獲取遠程采集設備的數(shù)據(jù)。 </p><p>  串口通信的概念非常簡單,串口按位(bit)發(fā)送和接收字節(jié)。盡管比按字節(jié)(byte)的并行通信慢,但是串口可以在使用一根線發(fā)送數(shù)據(jù)的同時用另一根線接收數(shù)據(jù)。它很簡單并且能夠實現(xiàn)遠距離通信。比如IEEE488定義并行通行狀態(tài)時,規(guī)定設備線總常不得超過20米,并且任意兩個設備間的長度不得超過2米;而對于串口而言,</p>&

45、lt;p>  長度可達1200米。 </p><p>  典型地,串口用于ASCII碼字符的傳輸。通信使用3根線完成:(1)地線,(2)發(fā)送,(3)接收。由于串口通信是異步的,端口能夠在一根線上發(fā)送數(shù)據(jù)同時在另一根線上接收數(shù)據(jù)。其他線用于握手,但是不是必須的。串口通信最重要的參數(shù)是波特率、數(shù)據(jù)位、停止位和奇偶校驗。對于兩個進行通行的端口,這些參數(shù)必須匹配: </p><p>  1)

46、 波特率:這是一個衡量通信速度的參數(shù)。它表示每秒鐘傳送的bit的個數(shù)。例如300波特表示每秒鐘發(fā)送300個bit。當我們提到時鐘周期時,我們就是指波特率例如如果協(xié)議需要4800波特率,那么時鐘是4800Hz。這意味著串口通信在數(shù)據(jù)線上的采樣率為4800Hz。通常電話線的波特率為14400,28800和36600。波特率可以遠遠大于這些值,但是波特率和距離成反比。高波特率常常用于放置的很近</p><p>  的儀

47、器間的通信,典型的例子就是GPIB設備的通信。 </p><p>  2) 數(shù)據(jù)位:這是衡量通信中實際數(shù)據(jù)位的參數(shù)。當計算機發(fā)送一個信息包,實際的數(shù)據(jù)不會是8位的,標準的值是5、7和8位。如何設置取決于你想傳送的信息。比如,標準的ASCII碼是0~127(7位)。擴展的ASCII碼是0~255(8位)。如果數(shù)據(jù)使用簡單的文本(標準 ASCII碼),那么每個數(shù)據(jù)包使用7位數(shù)據(jù)。每個包是指一個字節(jié),包括開始/停止位,

48、數(shù)據(jù)位和奇偶校驗位。由于實際數(shù)據(jù)位取決于通</p><p>  信協(xié)議的選取,術語“包”指任何通信的情況。 </p><p>  3) 停止位:用于表示單個包的最后一位。典型的值為1,1.5和2位。由于數(shù)據(jù)是在傳輸線上定時的,并且每一個設備有其自己的時鐘,很可能在通信中兩臺設備間出現(xiàn)了小小的不同步。因此停止位不僅僅是表示傳輸?shù)慕Y束,并且提供計算機校正時鐘同步的機會。適用于停止位的位數(shù)越多,

49、不同時鐘同步的容忍程度越大,但是數(shù)據(jù)傳輸率同</p><p><b>  時也越慢。 </b></p><p>  4) 奇偶校驗位:在串口通信中一種簡單的檢錯方式。有四種檢錯方式:偶、奇、高和低。當然沒有校驗位也是可以的。對于偶和奇校驗的情況,串口會設置校驗位(數(shù)據(jù)位后面的一位),用一個值確保傳輸?shù)臄?shù)據(jù)有偶個或者奇?zhèn)€邏輯高位。例如,如果數(shù)據(jù)是011,那么對于偶校驗,

50、校驗位為0,保證邏輯高的位數(shù)是偶數(shù)個。如果是奇校驗,校驗位位1,這樣就有3個邏輯高位。高位和低位不真正的檢查數(shù)據(jù),簡單置位邏輯高或者邏輯低校驗。這樣使得接收設備能夠知道一個位的狀態(tài),有機會判斷是否有噪聲干擾了通信或者是否傳輸和接</p><p><b>  收數(shù)據(jù)是否不同步。</b></p><p>  5 通信功能實現(xiàn)步驟</p><p> 

51、 單片機實現(xiàn)串口通訊一般使用UART接口或利用GPIO口模仿異步串行通訊數(shù)據(jù)格式,外加驅動芯片連接RS-232口。</p><p><b>  1. 打開串口</b></p><p><b>  2. 配置串口</b></p><p>  配置串口是通過改變設備控制塊DCB(Device Control Block)的成員

52、變量值來實現(xiàn)的</p><p><b>  3. 數(shù)據(jù)讀寫</b></p><p>  對串口進行讀寫與對文件進行讀寫所用的函數(shù)相同,具體為可采用查詢、同步、異步或事件驅動等方法對串口進行讀寫。</p><p><b>  4. 程序的編制</b></p><p>  用VHDL進行程序的編制首先要

53、對串口進行初始化,設定端口,通信速率和校驗方式,并在使用前打開串口。</p><p><b>  6仿真結果</b></p><p>  1 Quartus II調試</p><p>  打開QuartusⅡ軟件,選擇File>>New Project Wizard(新建工程向導)進入新建工程對話框>>單擊Next,設置

54、新建工程的路徑、名稱、頂層實體指定對話框(選擇好保存路徑、輸入工程名為wd_top),單擊Finish完成設置。</p><p>  建立VHDL程序文件(選擇File>>New打開新建文件對話框>>選擇VHDL File即可)。最后是輸入汽車尾燈控制電路程序代碼>>保存>>對該工程文件進行全程編譯處理。如果在編譯的過程中發(fā)現(xiàn)有錯誤,則找出并更正錯誤,直至編譯成功為

55、止。</p><p><b>  2 時序仿真與分析</b></p><p>  選擇File>>New Other Files>>Vector Waveform File;</p><p>  選擇Edit>>End Time >>設置仿真時間;</p><p>  選擇

56、View>>Utility Windows>>Node Finder(或者使用快捷鍵Alt+1),將程序涉及到的輸入輸出端口添加到時序仿真文件中,設置相應的信號并保存時序仿真文件,鼠標單擊仿真按鈕進行仿真</p><p><b>  仿真波形圖如下:</b></p><p><b>  7總結</b></p>

57、<p>  通過本次課程設計的學習,我深深的體會到設計課的重要性和目的性。本次設計課不僅僅培養(yǎng)了我們實際操作能力,也培養(yǎng)了我們靈活運用課本知識,理論聯(lián)系實際,獨立自主的進行設計的能力。它不僅僅是一個學習新知識新方法的好機會,同時也是對我所學知識的一次綜合的檢驗和復習,使我明白了自己的缺陷所在,從而查漏補缺。希望學校以后多安排一些類似的實踐環(huán)節(jié),讓同學們學以致用。</p><p>  在設計中要求我要有

58、耐心和毅力,還要細心,稍有不慎,一個小小的錯誤就會導致結果的不正確,而對錯誤的檢查要求我要有足夠的耐心,通過這次設計和設計中遇到的問題,也積累了一定的經驗,對以后從事集成電路設計工作會有一定的幫助。在應用VHDL的過程中讓我真正領會到了其并行運行與其他軟件順序執(zhí)行的差別及其在電路設計上的優(yōu)越性。用VHDL硬件描述語言的形式來進行數(shù)字系統(tǒng)的設計方便靈活,利用EDA軟件進行編譯優(yōu)化仿真極大地減少了電路設計時間和可能發(fā)生的錯誤,降低了開發(fā)成本

59、,這種設計方法必將在未來的數(shù)字系統(tǒng)設計中發(fā)揮越來越重要的作用。</p><p><b>  8 附錄(程序)</b></p><p>  library IEEE;</p><p>  use IEEE.STD_LOGIC_1164.ALL;</p><p>  use IEEE.STD_LOGIC_ARITH.ALL;

60、</p><p>  use IEEE.STD_LOGIC_UNSIGNED.ALL;</p><p>  entity uart is</p><p>  generic(ff:integer:=8);</p><p>  Port (cs: out std_logic_vector(1 downto 0); </p>&

61、lt;p>  --位選數(shù)碼管和發(fā)光二極管</p><p>  clk : in std_logic; --系統(tǒng)時鐘</p><p>  reset : in std_logic;--復位信號</p><p>  set: in std_logic; --設置信號</p><p>  cn : in std_

62、logic;--數(shù)據(jù)發(fā)送使能</p><p>  rver: in std_logic; --RS232的信號接收端</p><p>  data2: out std_logic_vector(7 downto 0);</p><p><b>  --送出的8位數(shù)據(jù)</b></p><p>  txd :

63、out std_logic); --RS232的信號發(fā)送端</p><p><b>  end uart;</b></p><p>  architecture Behavioral of uart is</p><p>  type state1 is(t_indle,t_start,t_wait,t_shift,t_stop);&l

64、t;/p><p>  signal c_state:state1;</p><p>  type state2 is </p><p>  (r_start,r_center,r_wait,r_sample,r_stop);</p><p>  signal h_state: state2;</p><p>  signa

65、l data1 : std_logic_vector(8 downto 0);</p><p>  signal clk1,clk2: std_logic;</p><p>  signal rver_synt:std_logic;</p><p><b>  begin</b></p><p>  bxfsq:proc

66、ess(clk,reset) --波特率發(fā)生器</p><p>  variable clk0: std_logic;</p><p>  variable count : integer range 0 to 325;</p><p><b>  begin</b></p><p>  if re

67、set='0' then count:=0;clk0:='0';</p><p>  elsif clk'event and clk='1' then </p><p>  if count=325 then count:=0;clk0:='1';</p><p>  else count:=c

68、ount+1; clk0:='0';</p><p><b>  end if;</b></p><p><b>  end if;</b></p><p>  clk1<=clk0;</p><p>  end process;</p><p>  p

69、ulze1:process(clk,reset)</p><p>  variable clk0: std_logic;</p><p>  variable count :integer range 0 to 2500000;</p><p><b>  begin</b></p><p>  if reset=

70、9;0' then clk0:='0';count:=0;</p><p>  elsif clk'event and clk='1' then count:=count+1;</p><p>  if count=1250000 then clk0:='1';</p><p>  elsif coun

71、t=2500000 then clk0:='0'; count:=0;</p><p><b>  end if;</b></p><p><b>  end if;</b></p><p>  clk2<=clk0;</p><p>  end process;</p&

72、gt;<p>  leijia: process(clk2,reset,set) --數(shù)據(jù)累加器</p><p>  variable c: integer range 0 to 50000;</p><p>  variable data: std_logic_vector(7 downto 0);</p><p><b>  

73、begin</b></p><p>  if reset='0' then data:="00000000";</p><p>  elsif clk2'event and clk2='1' then </p><p>  if set='0' then c:=c+1;<

74、/p><p>  if c=1 then data:=data+"00000001"; </p><p><b>  end if;</b></p><p>  else c:=0; </p><p><b>  end if;</b></p><p&

75、gt;<b>  end if;</b></p><p>  data1<='1'&data;</p><p>  end process;</p><p>  transfer:process(clk1,reset,cn,data1) --數(shù)據(jù)發(fā)送部分</p><p>  variab

76、le count1:std_logic_vector(4 downto 0);</p><p>  variable ff1: integer range 0 to 8;</p><p>  variable txds: std_logic;</p><p><b>  begin</b></p><p>  if re

77、set='0' then c_state<=t_indle;txds:='1'; </p><p>  elsif clk1'event and clk1='1' then </p><p>  case c_state is</p><p>  when t_indle=></p>

78、<p>  if cn='1' then c_state<=t_start;</p><p>  else c_state<=t_indle;</p><p><b>  end if;</b></p><p>  when t_start=> </p><p>  if

79、count1="00100" then</p><p>  c_state<=t_wait; count1:="00000"; </p><p>  else count1:=count1+1; c_state<=t_start;txds:='0';</p><p><b>  end i

80、f;</b></p><p>  when t_wait=> </p><p>  if count1="01110" then </p><p>  if ff1=ff then c_state<=t_stop; ff1:=0;</p><p>  else c_state<=t_shif

81、t;</p><p><b>  end if;</b></p><p>  count1:="00000";</p><p>  else count1:=count1+1;c_state<=t_wait;</p><p><b>  end if;</b></p&

82、gt;<p>  when t_shift=></p><p>  txds:=data1(ff1);c_state<=t_wait;ff1:=ff1+1;</p><p>  when t_stop =></p><p>  if count1="01110" then </p><p>

83、  if cn='0' then c_state<=t_indle;</p><p>  count1:="00000";</p><p>  else count1:=count1;c_state<=t_stop; </p><p>  end if; count1:="00000";</p

84、><p>  else count1:=count1+1;c_state<=t_stop;txds:='1';</p><p><b>  end if;</b></p><p>  when others=>c_state<=t_indle;</p><p>  end case;<

85、;/p><p><b>  end if;</b></p><p>  txd<=txds;</p><p>  end process;</p><p>  gz:process(clk,rver)</p><p><b>  begin</b></p>&

86、lt;p>  if clk'event and clk='1' then</p><p>  if rver='1' then rver_synt<='1';</p><p>  else rver_synt<='0';</p><p><b>  end if;&l

87、t;/b></p><p><b>  end if;</b></p><p>  end process;</p><p>  recevier:process(clk1,reset,rver_synt)--數(shù)據(jù)接收部分</p><p>  variable c1: std_logic_vector(4 dow

88、nto 0) ;</p><p>  variable c2: integer range 0 to 8;</p><p>  variable data3:std_logic_vector(7 downto 0);</p><p><b>  begin</b></p><p>  if reset='0

89、9; then h_state<=r_start;data3:="11111111"; cs<="11"; data2<="11111111";</p><p>  elsif clk1'event and clk1='1' then cs<="10";</p><

90、p>  case h_state is</p><p>  when r_start=> </p><p>  if rver_synt='0' then h_state<=r_center; </p><p>  else h_state<=r_start; </p><p><b&g

91、t;  end if;</b></p><p>  when r_center=> </p><p>  if c1="00100" then h_state<=r_wait;c1:="00000";</p><p>  else c1:=c1+1; h_state<=r_center;</

92、p><p><b>  end if;</b></p><p>  when r_wait=> </p><p>  if c1="01110" then </p><p>  if c2=ff then h_state<=r_stop; c1:="00000";c2:

93、=0;</p><p>  else h_state<=r_sample;</p><p>  end if; c1:="00000";</p><p>  else c1:=c1+1; h_state<=r_wait;</p><p><b>  end if;</b></p

94、><p>  when r_sample=></p><p>  data3(c2):=rver_synt;c2:=c2+1; h_state<=r_wait;</p><p>  when r_stop=> </p><p>  h_state<=r_start;data2<=data3(7 downto 0);&

95、lt;/p><p>  when others=> h_state<=r_start;</p><p><b>  end case;</b></p><p><b>  end if;</b></p><p>  end process;</p><p><

溫馨提示

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

評論

0/150

提交評論