RS-232串口通信設計_第1頁
RS-232串口通信設計_第2頁
RS-232串口通信設計_第3頁
RS-232串口通信設計_第4頁
RS-232串口通信設計_第5頁
已閱讀5頁,還剩22頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、RS-232串口通信設計課程設計任務書CPLD/FPGA課程設計報告題 目: RS-232 串口通信設計院(系):信息科學與工程學院專業(yè)班級:通信工程11學生姓名:詹文魁學 號:指導教師:吳莉老師2014年06月09日至2014年6月20 日華中科技大學武昌分校制一、設計(調查報告/論文)題目RS-232串口通信設計二、設計(調查報告/論文)主要內容下述設計內容需由學生個人獨立完成:1 理解電路原理圖與工作過程;2 .掌握RS-232電氣特性;3 掌握RS-232通信原理及串口通信數據格式,并編程完成串行數據的發(fā)送、接收和顯示;4 能正確處理編程與調試過程中所遇到的問題。三、原始資料1. 通信

2、與電子系統(tǒng)實驗指導書;2. CPLD/FPGA 實驗箱。四、要求的設計(調查/論文)成果1 程序結構合理,語言簡潔,格式規(guī)范,注釋詳細;2. 掌握RS-232的工作機制與原理;3. 格式為:1位起始位,8位數據位,1位停止位,無奇偶校驗位,波特率設定為 300Baud。能 與計算機正常通信;4. 按要求完成課程設計報告,格式符合學校規(guī)范標準,字數不少于2000字。五、進程安排第1天選題,課題講解;第2-3天 課題分析,完成設計方案;第4-6天軟件編程;第7-8天 軟件調試,故障排查;第9天結果驗收,評分;第10天撰寫課設報告。六、主要參考資料1 陳曦.通信與電子系統(tǒng)實驗指導書,武漢:華中科技大

3、學武昌分校.2 譚會生.EDA技術及應用,西安:西安電子科技大學出版社,2010.3 潘松,黃繼業(yè).EDA技術與VHDL北京:清華大學出版社,2009.指導教師(簽名):20 年 月 日1. 課程設計的目的42. 課程設計題目描述和要求 43. 課程設計報告內容 43.1課題設計方案及基本原理 43.2軟件設計73.3問題144. 總結155. 參考資料16附錄程序清單171. 課程設計的目的:(1)學習RS-232串口通信數據結構,并編程完成串行數據的接收和顯示。(2)掌握RS-232的工作機制與原理。(3)熟練掌握Quartus2軟件的使用。(4)了解 CPLD/FPG/實驗箱。2. 課程

4、設計題目描述和要求:(1)課程設計題目:基于FPGA的串口通信程序設計。(2)課程設計要求:下述設計內容需由學生個人獨立完成:1 理解電路原理圖與工作過程;2 .掌握RS-232電氣特性;3 .掌握RS-232通信原理及串口通信數據格式,并編程完成串行數據的接收和顯示;4 .能正確處理編程與調試過程中所遇到的問題 ;5.在FPGA中構造一個異步串行通信控制模塊,完成PC機發(fā)送的接收,并設計顯示模塊,完成接收數據的顯示(3)要求的設計成果:1 .程序結構合理,語言簡潔,格式規(guī)范,注釋詳細;2. 掌握RS-232的工作機制與原理;3. 格式為:1位起始位,8位數據位,1位停止位,無奇偶校驗位,波特

5、率設定 為300Bauc。能與計算機正常通信;4. 按要求完成課程設計報告,格式符合學校規(guī)范標準,字數不少于2000字。3. 課程設計報告內容:3.1課程設計方案及基本原理:設計方案:利用實驗箱上的MAX232芯片控制通過適當分頻(分頻的目的是為了達到要求的波 特率,控制數據傳輸速率)的串行輸入信號,并將其轉換為并行信號并通過實驗箱上的 數碼管的后兩位顯示從計算機中傳輸出來的16進制數。例如在計算機端輸入(FF)則會在試驗箱上看到(000000FF)的顯示圖示?;驹恚篟S-323C標準是美國EIA(電子工業(yè)聯合會)與BELL等公司一起開發(fā)的1969年公 布的通信協議。它適合于數據傳輸速率在

6、 020000b/s范圍內的通信。這個標準對串行 通信接口的有關問題,如信號線功能、電器特性都作了明確規(guī)定。EIA-RS-232C中+3V+15V之間的電平為 0, -3V-15V的電平為 1 與TTL以高 低電平表示邏輯狀態(tài)的規(guī)定不同。因此,為了能夠同計算機接口或終端的 TTL器件連接, 必須在EIA-RS-232C與TTL電路之間進行電平和邏輯關系的變換。 實現這種變換的方法 可用分立元件,也可用集成電路芯片。目前較為廣泛地使用集成電路轉換器件,如MC1488 SN75150芯片可完成TTL電平到EIA電平的轉換,而 MC1489 SN75154可實現 EIA電平到TTL電平的轉換。MAX

7、232E片可完成TTL EIA雙向電平轉換。1. 串口通信:(1)什么是串口通信:串口是計算機上一種非常通用設備通信的協議。大多數計算機包含兩個基于RS232 的串口。串口同時也是儀器儀表設備通用的通信協議;很多GPIB兼容的設備也帶有RS-232 口。同時,串口通信協議也可以用于獲取遠程采集設備的數據。串行接口( Serial port )又稱“串口”,主要用于串行式逐位數據傳輸。常見的有一 般電腦應用的RS-232(使用25針或9針連接器)和工業(yè)電腦應用的半雙 RS-485 與全雙工RS-422。(2)串口接口規(guī)格:串行接口按電氣標準及協議來分,包括 RS-232-C、RS-422、RS4

8、85 USB等。RS-232-C、RS-422與RS-485標準只對接口的電氣特性做出規(guī)定,不涉及接插件、電纜或協議。USB是近幾年發(fā)展起來的新型接口標準,主要應用于高速數據傳輸 領域。(3)串口通信原理:串口通信的概念非常簡單,串口按位(bit )發(fā)送和接收字節(jié)。盡管比按字節(jié)(byte) 的并行通信慢,但是串口可以在使用一根線發(fā)送數據的同時用另一根線接收數據。 它很簡單并且能夠實現遠距離通信。比如 IEEE488定義并行通行狀態(tài)時,規(guī)定設 備線總長不得超過20米,并且任意兩個設備間的長度不得超過 2米;而對于串口 而言,長度可達1200米。典型地,串口用于ASCII碼字符的傳輸。通信使用3根

9、 線完成:(1)地線,(2)發(fā)送,(3)接收。由于串口通信是異步的,端口能夠在 一根線上發(fā)送數據同時在另一根線上接收數據。其他線用于握手,但是不是必須 的。2. RS232 芯片(1)電氣特性:EIA-RS-232C 對電器特性、邏輯電平和各種信號線功能都作了規(guī)定。在 TxD和 RxD上:邏輯 1(MARK)=-3V-15V邏輯 0(SPACE)=+4+ 15V在RTS CTS DSR DTR和DCD等控制線上:信號有效(接通,ON狀態(tài),正電壓)=+3V+15V信號無效(斷開,OFF犬態(tài),負電壓)=-3 V-15(2)RS232接 口定義:館號1CD2RXD接收3TXD發(fā)送4OTR數粥終端準備

10、好5GND信號地6OSR趙信垃備準備好7RTS請求發(fā)送$CTS允許發(fā)送9R)(3)RS232總線電平轉換:RS232il!平和TTLLZ間需娶轉換,常用轉換芯片為MAX232 .MAX2322 33)、SP3232 3 3V)等.F:i3 :%磁:dC.UTLcwfTLatTinKtbftIM*妣(4)RS232數據傳輸格式:串行通信中,線路空閑時,線路的 TTL電平總是高,經反向RS232的電平總是低。 一個數據的開始RS232線路為高電平,結束時RS232為低電平。數據總是從低位向高位 一位一位的傳輸。示波器讀數時,左邊是數據的低位。例如,對于16進制數據55H和aaH,當采用8位數據位、

11、1位停位傳輸時位停止位傳輸時:55H=01010101B高低位倒 序后為10101010B加入一個起始位0, 一個停止位1,55H的數據格式為0101010101 aaH=10101010B高低位倒序后為 01010101B加入一個起始位 0,一個停止位1,aaH 的數據格式為:0010101011(5)RS232通信過程:I :開始通信時,信號線為空閑(邏輯),當檢測到由到的跳變時,開始對“接收 時鐘”計數。II:當計到8個時鐘時,對輸入信號進行檢測,若仍為低電平,則確認這是“起始位”,而不是干擾信號。III:接收端檢測到起始位后,隔16個接收時鐘,對輸入信號檢測一次,把對應的值作為D0位數

12、據。若為邏輯1,作為數據位1;若為邏輯0,作為數據位0。IV:再隔16個接收時鐘,對輸入信號檢測一次,把對應的值作為D1位數據。.,直到全部數據位都輸入。V:檢測校驗位P (如果有的話)。VI:接收到規(guī)定的數據位個數和校驗位后,通信接口電路希望收到停止位 S(邏輯1),若此時未收到邏輯說明出現了錯誤在狀態(tài)寄存器中置“幀錯誤”標志若沒 若此時未收到邏輯1,說明出現了錯誤,在狀態(tài)寄存器中置“幀錯誤”標志。若 沒有錯誤,對全部數據位進行奇偶校驗,無校驗錯時,把數據位從移位寄存器 中送數據輸入寄存器。若校驗錯,在狀態(tài)寄存器中置奇偶錯標志。VII :本幀信息全部接收完把線路上出現的高電平作為空閑位。VI

13、II :當信號再次變?yōu)榈蜁r,開始進入下一幀的檢測。3.2軟件設計(1) Quartus頂層設計曲X艮司dMfi ;|4IMCG 1H12J3YtIMCT廿4aiy+HYW4蒞-如上圖所示,整個頂層設計可以分為 4個部分,(1)鎖相環(huán);作用是將輸入的系統(tǒng) 時鐘信號(系統(tǒng)時鐘50MHZ轉換為12MHZ勺sysclk時鐘,在進入RS232前先進行第一次 分頻彌補RS232自身分頻不足的特點。(2)核心模塊RS232作用是將計算機輸入的串行 數據轉換為并行數據便于給后方的顯示模塊處理。(3)分頻模塊;作用是給顯示模塊提 供所需的時鐘,由于顯示模塊的本質是一個個顯示,所以為了能同時顯示故將輸入頻率 調至

14、1KHz以上讓人眼無法一個個識別形成同時顯示的效果。(4)顯示模塊;作用是將輸入的并行信號(8位)分成4位一組,即兩組進行處理后在試驗箱的數碼管上顯示。 (1-1)模塊一分析:pHmclkOcikRatioPh(og)Td陽DCco12/250 000.0050.00inelkO frequency 50.000 MHz Operat i on f.lode N orm alinstninst5Cyclone i從上圖可以看出:1.i nclk=50MHz 2.DC=50% 3.Ratio=12/25,從而可以得出outclk=50MHz*12/25=24MHz,再通過D觸發(fā)器2分頻后得到12

15、MHZ的輸出系統(tǒng)時鐘來彌 補RS232模塊分頻不足的缺點。(1-2)模塊二分析:15232sysclkdisp7,.O 叩一 0I.4fadrxdBrniB:inst3|ra .j h :ld4a上圖所示的為 RS232集成模塊,經 VHDL編譯生成的模塊文件。輸入為 sysclk=12MHz , rxd= 計算機輸入的串行數據串,disp為8位的并行數據段。程序1:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_ un sig ned.all;en tity rs232 isport(sysclk: in std_log

16、ic;rxd:in std_logic;disp:out std_logic_vector(7 dow nto 0);end rs232;分析:定義實體。輸入信號,輸入時鐘信號為邏輯信號,輸出信號disp為8位矢量信號,低位為 0高位為7。architecture behv of rs232 issig nal b: std_logic_vector(9 dow nto 0);sig nal r: std_logic_vector(3 dow nto 0);sig nal j: std_logic_vector(15 dow nto 0);sig nal frxd,gt,gtclr,cclk,

17、gate: std_logic;begingate=gt and cclk;disp(7 downto 0)=b(8 downto 1);將串行數據段的 1-8位數據位從 b中取出至于 disp中。frxd=not rxd;分析:定義機構體。先定義可信號 b,r,j。其中的b作為數據轉移的臨時載體。R,j分別作為后續(xù)程序的計數單元,其中需要注意的是j的位數控制,因為當需要控制波特率的時候,由于輸入的sysclk是固定的12MHz的系統(tǒng)時鐘信號無法改變,故能改變的只有 RS232中的分頻系 數,但由于分頻的系數的改變,于是j作為計數信號其值也將隨之改變。s1:process(sysclk,gt)

18、beginif gt=0 then j0);elsif sysclkeve nt and sysclk=1 the nif j=1001110001000000 then j0);else j=j+1;end if;end if;end process;分析:si的段碼作用是用來計數,所記數為RS232的分頻系數,上述代碼中的10011100010為40000,通過計算12M/1250=9600,故可以得知波特率為9600b/s。通過改變j的值可以很方便的來設置所需要的波特率。s2:process(j)beginif j=111001 then cclk=1;else cclk=0;end i

19、f;end process;分析:s2的段碼作用是當j計數到一定數值的時候產生一個脈沖,從而實現分頻的作用。其中j值的設定關系到分頻的占空比,只需要j的值在分頻系數之內即可產生分頻的效果。s3:process(gate,gtclr)beginif gtclr=1 then r=0000;elsif gateeve nt and gate=1 the nr=r+1;end if;end process;s4:process(gate,r)beginif r=1010 then gtclr=not gate;else gtclr=0;end if;end process;分析:s3,s4段碼的作用

20、是計數從0-10,即計數輸入數據段的10位,0-起始位,1-8-數據位,9-終止位。s5:process(gate,rxd,b)beginif gateeve nt and gate=1 the nb(9 downto 0)=rxd&b(9 downto 1);將b的后9位并上rxd 的第一位組合成新的信號b。end if;end process;分析:s5段碼的作用是,將rxd的輸入信號通過移位寄存的方法將RXD中的數據一一取出移動到信號b中,然后再通過的b的移位從而將rxd中的數據段完整的轉移到信號b中保存。s6:process(frxd,gtclr)beginif gtclr=1 the

21、n gt=0;elsif frxdeve nt and frxd=1 the ngt=1;end if;end process;end behv;分析:s6的段碼的作用是用于判斷起始位,gt做為標志位,當已經確定為開始時,將 gt 的值置1(1-3)模塊三分析:分析:從上圖可以看出其作用是作為分頻,將50MHz的輸入信號先通過 PIN1MHZ莫塊將50MHZ分為1Mhz,再將1MHZ的信號輸入到下一個分頻信號中分為頻率為:1HZ 488HZ, 1953HZ,7812HZ,31250H乙 125kHZ,500kHZ 的信號。程序 1: PIN1hzLIBRARY IEEE;USE IEEE.ST

22、D_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY PIN1MHZ ISPORT(CLKIN:IN STD_LOGIC;CLKOUT:OUT STD_LOGIC);END PIN1MHZ;ARCHITECTURE A OF PIN1MHZ ISBEGINPROCESS(CLKIN)VARIABLE CNTTEMP:INTEGER RANGE 0 TO 49;BEGINIF CLKIN=1 AND CLKIN EVENT THENIF CNTTEMP=49 THEN CNTTEMP:=0;ELSEIF CNTTEMP25 THEN CL

23、KOUT=1;ELSE CLKOUT=0;END IF;CNTTEMP:=CNTTEMP+1;END IF ;END IF;END PROCESS;END A;分析:上述程序段中可以知道,使用變量 VARIABLE做為計數,從0-49剛好為50個數, 當小于25的時候賦值為1,其余為0,使得將50MHZ處理為1MHZ當取值大于或 等于50時復位為0。從而達到分頻的目的。程序2:library ieee;use ieee.stdo gic_1164.all;use ieee.std_logic_ un sig ned.all;en tity ent isport(clk:in std_logic

24、;freq1:out std_logic;freq488:out std_logic;freq1953:out stdo gic;freq7812:out std_logic;freq31250:out std_logic;freq125k:out std_logic;freq500k:out std_logic);end ent;architecture behv of ent issig nal temp:stdo gic_vector(19 dow nto 0);beg inprocess(clk)beg inif clk eve nt and clk=1 the nif temp=11

25、110100001000111111 then temp=00000000000000000000; elsetempv=temp+1;end if;end if;end process;freq1=temp(19);freq488=temp(10);freq1953=temp(8);freq7812=temp(6);freq31250=temp(4);freq125k=temp(2);freq500kdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdout=0000000;end case;end process

26、;end behv;分析:程序led是完成段顯,將輸入的數值0-15翻譯成對應的數碼管編碼(1-5)接收模塊分析:程序rsSedn作為接受模塊,用于將232中發(fā)送的數據再次回寫到到串口助手的 接收端內!要是程序完全正常的話發(fā)送什么就會在接收窗口接收到什么。3.3問題:如何真正的實現發(fā)送和接受同步,并且發(fā)送的和接收的完全一樣?發(fā)送和接收波特率怎 么弄?答:接收和顯示的已經做出來了,但是發(fā)送的4. 總結:參考文獻1 通信與電子系統(tǒng)實驗指導書武漢:華中科技大學武昌分校2 潘松.EDA技術與VHDL北京:清華大學出版社,2009.3 朱運利.EDA技術應用(第二版).北京:電子工業(yè)出版社,2007.4

27、 王行.EDA技術入門與提高.西安:西安電子科技大學出版社,2009. 李莉電子設計自動化(EDA .北京:中國電力出版社,2009.附錄程序清單:程序1:library ieee;use ieee.std_logic_1164.all; use ieee.std_logic_u nsig ned.all; en tity rs232 is port(sysclk: in std_logic;rxd:in std_logic;disp:out std_logic_vector(7 dow nto 0);end rs232;architecture behv of rs232 issig nal

28、 b: std_logic_vector(9 dow nto 0);sig nal r: std_logic_vector(3 dow nto 0);sig nal j: std_logic_vector(15 dow nto 0);sig nal frxd,gt,gtclr,cclk,gate: std_logic;begingate=gt and cclk;disp(7 dow nto 0)=b(8 dow nto 1);frxdO);elsif sysclkeve nt and sysclk=1 the nif j=1001110001000000 then j0);else j=j+1

29、;end if;end if;end process;s2:process(j)beginif j=111001 then cclk=1;else cclk=0;end if;end process;s3:process(gate,gtclr)beginif gtclr=1 then r=0000;elsif gateeve nt and gate=1 the n=葉1;end if;end process;s4:process(gate,r)beginif r=1010 then gtclr=not gate;else gtclr=0;end if;end process;s5:proces

30、s(gate,rxd,b)beginif gateeve nt and gate=1 the nb(9 dow nto 0)=rxd&b(9 dow nto 1);end if;end process;s6:process(frxd,gtclr)beginif gtclr=1 then gt=0;elsif frxdeve nt and frxd=1 the ngt=1:end if;end process;end behv;程序2:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY P

31、IN1MHZ ISPORT(CLKIN:IN STD_LOGIC;CLKOUT:OUT STD_LOGIC);END PIN1MHZ;ARCHITECTURE A OF PIN1MHZ ISBEGINPROCESS(CLKIN)VARIABLE CNTTEMP:INTEGER RANGE 0 TO 49;BEGINIF CLKIN=1 AND CLKIN EVENT THENIF CNTTEMP=49 THEN CNTTEMP:=0;ELSEIF CNTTEMP25 THEN CLKOUT=1; ELSE CLKOUT=0;END IF;CNTTEMP:=CNTTEMP+1;END IF ;E

32、ND IF;END PROCESS;END A;程序3:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_u nsig ned.all;en tity ent is port(clk:in std_logic;freq1:out std_logic; freq488:out std_logic;freq1953:out stdogic;freq7812:out stdogic; freq31250:out std_logic;freq125k:out std_logic;freq500k:out std_logic); en

33、d cnt;architecture behv of cnt issig nal temp:std_logic_vector(19 dow nto 0); beginprocess(clk)beginif clk eve nt and clk=1 the nif temp=11110100001000111111 then tempv=OOOOOOOOOOOOOOOOOOOO;else tempv=temp+1;end if;end if;end process; freq1=temp(19); freq488=temp(10); freq1953=temp(8); freq7812=temp

34、 (6); freq31250=temp(4); freq125k=temp(2); freq500kdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdout=0000000;end case;end process;end behv;程序5:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_u nsig ned.all;en tity cnt8 isport(clk:in std_logic;q:out std_logic_vector(2 d

35、ow nto 0); end cn t8;architecture behv of cnt8 issig nal temp:std_logic_vector(2 dow nto 0);beginprocess(clk)beginif clk eve nt and clk=1 the nif temp=111 the ntemp=000;elsetempv=temp+1;end if;end if;end process;q=temp;end behv;程序6:library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use I

溫馨提示

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

評論

0/150

提交評論