RS-232串口通信設(shè)計(jì)_第1頁(yè)
RS-232串口通信設(shè)計(jì)_第2頁(yè)
RS-232串口通信設(shè)計(jì)_第3頁(yè)
RS-232串口通信設(shè)計(jì)_第4頁(yè)
RS-232串口通信設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩18頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

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

2、的問(wèn)題。三、原始資料1. 通信與電子系統(tǒng)實(shí)驗(yàn)指導(dǎo)書(shū);2. CPLD/FPGA實(shí)驗(yàn)箱。四、要求的設(shè)計(jì)(調(diào)查/論文)成果1程序結(jié)構(gòu)合理,語(yǔ)言簡(jiǎn)潔,格式規(guī)范,注釋詳細(xì);2. 掌握RS-232的工作機(jī)制與原理;3. 格式為:1位起始位,8位數(shù)據(jù)位,1位停止位,無(wú)奇偶校驗(yàn)位,波特率設(shè)定為300Baud。能與計(jì)算機(jī)正常通信;4. 按要求完成課程設(shè)計(jì)報(bào)告,格式符合學(xué)校規(guī)范標(biāo)準(zhǔn),字?jǐn)?shù)不少于2000字。五、進(jìn)程安排第1天 選題,課題講解;第2-3天 課題分析,完成設(shè)計(jì)方案;第4-6天 軟件編程;第7-8天 軟件調(diào)試,故障排查;第9天 結(jié)果驗(yàn)收,評(píng)分;第10天 撰寫(xiě)課設(shè)報(bào)告。六、主要參考資料1 陳曦. 通信與電子

3、系統(tǒng)實(shí)驗(yàn)指導(dǎo)書(shū),武漢:華中科技大學(xué)武昌分校.2 譚會(huì)生.EDA技術(shù)及應(yīng)用,西安:西安電子科技大學(xué)出版社,2010.3 潘松,黃繼業(yè).EDA技術(shù)與VHDL,北京:清華大學(xué)出版社,2009.指導(dǎo)教師(簽名):20 年 月 日目 錄1. 課程設(shè)計(jì)的目的42. 課程設(shè)計(jì)題目描述和要求43. 課程設(shè)計(jì)報(bào)告內(nèi)容43.1 課題設(shè)計(jì)方案及基本原理43.2 軟件設(shè)計(jì)73.3 問(wèn)題144. 總結(jié)155. 參考資料16附錄 程序清單171. 課程設(shè)計(jì)的目的:(1) 學(xué)習(xí)RS-232串口通信數(shù)據(jù)結(jié)構(gòu),并編程完成串行數(shù)據(jù)的接收和顯示。(2) 掌握RS-232的工作機(jī)制與原理。(3) 熟練掌握Quartus2軟件的使用。

4、(4) 了解CPLD/FPGA實(shí)驗(yàn)箱。2.課程設(shè)計(jì)題目描述和要求:(1)課程設(shè)計(jì)題目:基于FPGA的串口通信程序設(shè)計(jì)。(2)課程設(shè)計(jì)要求: 下述設(shè)計(jì)內(nèi)容需由學(xué)生個(gè)人獨(dú)立完成: 1理解電路原理圖與工作過(guò)程; 2掌握RS-232電氣特性; 3掌握RS-232通信原理及串口通信數(shù)據(jù)格式,并編程完成串行數(shù)據(jù)的接收和 顯示; 4能正確處理編程與調(diào)試過(guò)程中所遇到的問(wèn)題; 5. 在FPGA中構(gòu)造一個(gè)異步串行通信控制模塊,完成PC機(jī)發(fā)送的接收,并設(shè)計(jì) 顯示模塊,完成接收數(shù)據(jù)的顯示(3)要求的設(shè)計(jì)成果: 1程序結(jié)構(gòu)合理,語(yǔ)言簡(jiǎn)潔,格式規(guī)范,注釋詳細(xì); 2. 掌握RS-232的工作機(jī)制與原理; 3. 格式為:1位

5、起始位,8位數(shù)據(jù)位,1位停止位,無(wú)奇偶校驗(yàn)位,波特率設(shè)定 為300Baud。能與計(jì)算機(jī)正常通信; 4. 按要求完成課程設(shè)計(jì)報(bào)告,格式符合學(xué)校規(guī)范標(biāo)準(zhǔn),字?jǐn)?shù)不少于2000字。3. 課程設(shè)計(jì)報(bào)告內(nèi)容: 3.1課程設(shè)計(jì)方案及基本原理:設(shè)計(jì)方案: 利用實(shí)驗(yàn)箱上的MAX232芯片控制通過(guò)適當(dāng)分頻(分頻的目的是為了達(dá)到要求的波特率,控制數(shù)據(jù)傳輸速率)的串行輸入信號(hào),并將其轉(zhuǎn)換為并行信號(hào)并通過(guò)實(shí)驗(yàn)箱上的數(shù)碼管的后兩位顯示從計(jì)算機(jī)中傳輸出來(lái)的16進(jìn)制數(shù)。例如在計(jì)算機(jī)端輸入(FF)則會(huì)在試驗(yàn)箱上看到(FF)的顯示圖示?;驹恚?RS-323C標(biāo)準(zhǔn)是美國(guó)EIA(電子工業(yè)聯(lián)合會(huì))與BELL等公司一起開(kāi)發(fā)的1969

6、年公布的通信協(xié)議。它適合于數(shù)據(jù)傳輸速率在020000b/s范圍內(nèi)的通信。這個(gè)標(biāo)準(zhǔn)對(duì)串行通信接口的有關(guān)問(wèn)題,如信號(hào)線功能、電器特性都作了明確規(guī)定。EIA-RS-232C中+3V+15V之間的電平為0,-3V-15V的電平為1;與TTL以高低電平表示邏輯狀態(tài)的規(guī)定不同。因此,為了能夠同計(jì)算機(jī)接口或終端的TTL器件連接,必須在EIA-RS-232C與TTL電路之間進(jìn)行電平和邏輯關(guān)系的變換。實(shí)現(xiàn)這種變換的方法可用分立元件,也可用集成電路芯片。目前較為廣泛地使用集成電路轉(zhuǎn)換器件,如MC1488、SN75150芯片可完成TTL電平到EIA電平的轉(zhuǎn)換,而MC1489、SN75154可實(shí)現(xiàn)EIA電平到TTL電

7、平的轉(zhuǎn)換。MAX232芯片可完成TTLEIA雙向電平轉(zhuǎn)換。1. 串口通信:(1)什么是串口通信: 串口是計(jì)算機(jī)上一種非常通用設(shè)備通信的協(xié)議。大多數(shù)計(jì)算機(jī)包含兩個(gè)基于RS232 的串口。串口同時(shí)也是儀器儀表設(shè)備通用的通信協(xié)議;很多GPIB兼容的設(shè)備也帶 有RS-232口。同時(shí),串口通信協(xié)議也可以用于獲取遠(yuǎn)程采集設(shè)備的數(shù)據(jù)。 串行 接口(Serial port)又稱“串口”,主要用于串行式逐位數(shù)據(jù)傳輸。常見(jiàn)的有一 般電腦應(yīng)用的RS-232(使用 25 針或 9 針連接器)和工業(yè)電腦應(yīng)用的半雙RS-485 與全雙工RS-422。(2) 串口接口規(guī)格: 串行接口按電氣標(biāo)準(zhǔn)及協(xié)議來(lái)分,包括RS-232-

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

9、碼字符的傳輸。通信使用3根 線完成:(1)地線,(2)發(fā)送,(3)接收。由于串口通信是異步的,端口能夠在 一根線上發(fā)送數(shù)據(jù)同時(shí)在另一根線上接收數(shù)據(jù)。其他線用于握手,但是不是必須 的。 2.RS232芯片(1)電氣特性: EIA-RS-232C對(duì)電器特性、邏輯電平和各種信號(hào)線功能都作了規(guī)定。 在TxD和RxD上:邏輯1(MARK)=-3V-15V 邏輯0(SPACE)=+315V 在RTS、CTS、DSR、DTR和DCD等控制線上: 信號(hào)有效(接通,ON狀態(tài),正電壓)+3V+15V 信號(hào)無(wú)效(斷開(kāi),OFF狀態(tài),負(fù)電壓)=-3V-15(2)RS232接口定義:(3) RS232總線電平轉(zhuǎn)換:(4)

10、 RS232數(shù)據(jù)傳輸格式: 串行通信中,線路空閑時(shí),線路的TTL電平總是高,經(jīng)反向RS232的電平總是低。一個(gè)數(shù)據(jù)的開(kāi)始RS232線路為高電平,結(jié)束時(shí)RS232為低電平。數(shù)據(jù)總是從低位向高位一位一位的傳輸。示波器讀數(shù)時(shí),左邊是數(shù)據(jù)的低位。例如,對(duì)于16進(jìn)制數(shù)據(jù)55H和aaH,當(dāng)采用8位數(shù)據(jù)位、1位停位傳輸時(shí)位停止位傳輸時(shí):55H=B,高低位倒序后為B,加入一個(gè)起始位0,一個(gè)停止位1,55H的數(shù)據(jù)格式為。aaH=B,高低位倒序后為B,加入一個(gè)起始位0,一個(gè)停止位1,aaH的數(shù)據(jù)格式為:(5) RS232通信過(guò)程: I:開(kāi)始通信時(shí),信號(hào)線為空閑(邏輯),當(dāng)檢測(cè)到由到的跳變時(shí),開(kāi)始對(duì)“接收 時(shí)鐘”計(jì)

11、數(shù)。 II:當(dāng)計(jì)到8個(gè)時(shí)鐘時(shí),對(duì)輸入信號(hào)進(jìn)行檢測(cè),若仍為低電平,則確認(rèn)這是“起 始位”,而不是干擾信號(hào)。 III:接收端檢測(cè)到起始位后,隔16個(gè)接收時(shí)鐘,對(duì)輸入信號(hào)檢測(cè)一次,把對(duì)應(yīng)的值 作為D0位數(shù)據(jù)。若為邏輯1, 作為數(shù)據(jù)位1;若為邏輯0,作為數(shù)據(jù)位0。 IV:再隔16個(gè)接收時(shí)鐘,對(duì)輸入信號(hào)檢測(cè)一次,把對(duì)應(yīng)的值作為D1位數(shù)據(jù)。., 直到全部數(shù)據(jù)位都輸入。 V:檢測(cè)校驗(yàn)位P(如果有的話)。 VI:接收到規(guī)定的數(shù)據(jù)位個(gè)數(shù)和校驗(yàn)位后,通信接口電路希望收到停止位S(邏輯 1),若此時(shí)未收到邏輯說(shuō)明出現(xiàn)了錯(cuò)誤在狀態(tài)寄存器中置“幀錯(cuò)誤”標(biāo)志若沒(méi) 若此時(shí)未收到邏輯1,說(shuō)明出現(xiàn)了錯(cuò)誤,在狀態(tài)寄存器中置“幀錯(cuò)

12、誤”標(biāo)志。若 沒(méi)有錯(cuò)誤,對(duì)全部數(shù)據(jù)位進(jìn)行奇偶校驗(yàn),無(wú)校驗(yàn)錯(cuò)時(shí),把數(shù)據(jù)位從移位寄存器 中送數(shù)據(jù)輸入寄存器。若校驗(yàn)錯(cuò),在狀態(tài)寄存器中置奇偶錯(cuò)標(biāo)志。 VII:本幀信息全部接收完把線路上出現(xiàn)的高電平作為空閑位。 VIII:當(dāng)信號(hào)再次變?yōu)榈蜁r(shí),開(kāi)始進(jìn)入下一幀的檢測(cè)。3.2軟件設(shè)計(jì)(1) Quartus頂層設(shè)計(jì) 如上圖所示,整個(gè)頂層設(shè)計(jì)可以分為4個(gè)部分,(1)鎖相環(huán);作用是將輸入的系統(tǒng)時(shí)鐘信號(hào)(系統(tǒng)時(shí)鐘50MHZ)轉(zhuǎn)換為12MHZ的sysclk時(shí)鐘,在進(jìn)入RS232前先進(jìn)行第一次分頻彌補(bǔ)RS232自身分頻不足的特點(diǎn)。(2)核心模塊RS232;作用是將計(jì)算機(jī)輸入的串行數(shù)據(jù)轉(zhuǎn)換為并行數(shù)據(jù)便于給后方的顯示模塊處

13、理。(3)分頻模塊;作用是給顯示模塊提供所需的時(shí)鐘,由于顯示模塊的本質(zhì)是一個(gè)個(gè)顯示,所以為了能同時(shí)顯示故將輸入頻率調(diào)至1KHz以上讓人眼無(wú)法一個(gè)個(gè)識(shí)別形成同時(shí)顯示的效果。(4)顯示模塊;作用是將輸入的并行信號(hào)(8位)分成4位一組,即兩組進(jìn)行處理后在試驗(yàn)箱的數(shù)碼管上顯示。(1-1)模塊一分析: 從上圖可以看出:1.inclk=50MHz 2.DC=50% 3.Ratio=12/25 ,從而可以得出outclk=50MHz*12/25=24MHz,再通過(guò)D觸發(fā)器2分頻后得到12MHz的輸出系統(tǒng)時(shí)鐘來(lái)彌補(bǔ)RS232模塊分頻不足的缺點(diǎn)。(1-2)模塊二分析: 上圖所示的為RS232集成模塊,經(jīng)VHDL

14、編譯生成的模塊文件。輸入為sysclk=12MHz,rxd=計(jì)算機(jī)輸入的串行數(shù)據(jù)串,disp為8位的并行數(shù)據(jù)段。程序1:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity rs232 isport(sysclk: in std_logic; rxd: in std_logic; disp: out std_logic_vector(7 downto 0) );end rs232;分析:定義實(shí)體。輸入信號(hào),輸入時(shí)鐘信號(hào)為邏輯信號(hào),輸出信號(hào)disp為8位矢量信號(hào),低位為0 高位為7。arch

15、itecture behv of rs232 is signal b: std_logic_vector(9 downto 0); signal r: std_logic_vector(3 downto 0); signal j: std_logic_vector(15 downto 0); signal frxd,gt,gtclr,cclk,gate: std_logic;begin gate=gt and cclk; disp(7 downto 0)=b(8 downto 1); 將串行數(shù)據(jù)段的1-8位數(shù)據(jù)位從b中取出至于disp中。 frxd=not rxd;分析:定義機(jī)構(gòu)體。先定義可信

16、號(hào)b,r,j。其中的b作為數(shù)據(jù)轉(zhuǎn)移的臨時(shí)載體。R,j分別作為后 續(xù)程序的計(jì)數(shù)單元,其中需要注意的是j的位數(shù)控制,因?yàn)楫?dāng)需要控制波特率的時(shí)候,由于 輸入的sysclk是固定的12MHz的系統(tǒng)時(shí)鐘信號(hào)無(wú)法改變,故能改變的只有RS232中的分頻系 數(shù),但由于分頻的系數(shù)的改變,于是j作為計(jì)數(shù)信號(hào)其值也將隨之改變。 s1:process(sysclk,gt) begin if gt=0 then j0); elsif sysclkevent and sysclk=1 then if j=00000 then j0); else j=j+1; end if; end if;end process;分析:s

17、1的段碼作用是用來(lái)計(jì)數(shù),所記數(shù)為RS232的分頻系數(shù),上述代碼中的為40000, 通過(guò)計(jì)算12M/1250=9600,故可以得知波特率為9600b/s。通過(guò)改變j的值可以很方便的來(lái)設(shè) 置所需要的波特率。s2:process(j)begin if j= then cclk=1; else cclk=0; end if;end process;分析:s2的段碼作用是當(dāng)j計(jì)數(shù)到一定數(shù)值的時(shí)候產(chǎn)生一個(gè)脈沖,從而實(shí)現(xiàn)分頻的作用。其中j值 的設(shè)定關(guān)系到分頻的占空比,只需要j 的值在分頻系數(shù)之內(nèi)即可產(chǎn)生分頻的效果。s3:process(gate,gtclr)begin if gtclr=1 then r=0

18、000; elsif gateevent and gate=1 then r=r+1; end if;end process;s4:process(gate,r)begin if r=1010 then gtclr=not gate; else gtclr=0; end if;end process;分析:s3,s4段碼的作用是計(jì)數(shù)從0-10,即計(jì)數(shù)輸入數(shù)據(jù)段的10位,0-起始位,1-8-數(shù)據(jù)位,9- 終止位。s5:process(gate,rxd,b)begin if gateevent and gate=1 then b(9 downto 0)=rxd&b(9 downto 1); 將b的

19、后9位并上rxd 的第一位組合成新的信號(hào)b。 end if;end process;分析:s5段碼的作用是,將rxd的輸入信號(hào)通過(guò)移位寄存的方法將RXD中的數(shù)據(jù)一一取出移動(dòng)到信 號(hào)b中,然后再通過(guò)的b的移位從而將rxd中的數(shù)據(jù)段完整的轉(zhuǎn)移到信號(hào)b中保存。s6:process(frxd,gtclr)begin if gtclr=1 then gt=0; elsif frxdevent and frxd=1 then gt=1; end if; end process;end behv;分析:s6的段碼的作用是用于判斷起始位,gt做為標(biāo)志位,當(dāng)已經(jīng)確定為開(kāi)始時(shí),將 gt的值置1。(1-3)模塊三分

20、析:分析:從上圖可以看出其作用是作為分頻,將50MHz的輸入信號(hào)先通過(guò)PIN1MHZ模塊將50MHZ 分為1Mhz,再將1MHZ的信號(hào)輸入到下一個(gè)分頻信號(hào)中分為頻率為:1HZ,488HZ,1953HZ, 7812HZ,31250HZ,125kHZ,500kHZ的信號(hào)。程序1:PIN1hzLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY PIN1MHZ IS PORT(CLKIN:IN STD_LOGIC; CLKOUT:OUT STD_LOGIC);END PIN1MHZ;ARCH

21、ITECTURE A OF PIN1MHZ ISBEGINPROCESS(CLKIN)VARIABLE CNTTEMP:INTEGER RANGE 0 TO 49;BEGIN IF CLKIN=1 AND CLKIN EVENT THEN IF CNTTEMP=49 THEN CNTTEMP:=0; ELSE IF CNTTEMP25 THEN CLKOUT=1; ELSE CLKOUT=0; END IF; CNTTEMP:=CNTTEMP+1; END IF ; END IF;END PROCESS;END A;分析:上述程序段中可以知道,使用變量VARIABLE做為計(jì)數(shù),從0-49剛好為

22、50個(gè)數(shù), 當(dāng)小于25的時(shí)候賦值為1,其余為0,使得將50MHZ處理為1MHZ。當(dāng)取值大于或 等于50時(shí)復(fù)位為0。從而達(dá)到分頻的目的。程序2:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity cnt isport(clk:in std_logic; freq1:out std_logic; freq488:out std_logic; freq1953:out std_logic; freq7812:out std_logic; freq31250:out std_logic; fre

23、q125k:out std_logic; freq500k:out std_logic);end cnt;architecture behv of cnt is signal temp:std_logic_vector(19 downto 0);begin process(clk) begin if clk event and clk=1 then if temp= then temp=; else temp=temp+1; end if; end if;end process; freq1=temp(19); freq488=temp(10); freq1953=temp(8); freq7

24、812=temp(6); freq31250=temp(4); freq125k=temp(2); freq500k=temp(0); end behv;分析:程序2的設(shè)計(jì)思路同樣是使用計(jì)數(shù),但和程序1的計(jì)數(shù)不完全相同,數(shù)由16進(jìn) 制表示,4為2進(jìn)制組成1位16進(jìn)制,所以從第0位開(kāi)始可以計(jì)數(shù)2位,第一位 可以計(jì)數(shù)4位,第二位可以計(jì)數(shù)8位,依次可以得出計(jì)數(shù)量為2的n+1次方個(gè)數(shù), 從而達(dá)到同時(shí)計(jì)數(shù)多個(gè)的目的從而產(chǎn)生多個(gè)時(shí)鐘信號(hào)。(1-4)模塊四分析:分析:顯示模塊由兩部分組成,74138的表面作用是譯碼將輸入的sel信號(hào)翻譯出來(lái)并選中制定的數(shù) 碼管。其實(shí)質(zhì)作用是由輸入的信號(hào)(0-7計(jì)數(shù)為8的計(jì)數(shù)

25、信號(hào)輸入),來(lái)控制數(shù)碼管的片選。 而display的作用是來(lái)實(shí)現(xiàn)片選,將RS232輸出的并行信號(hào)的兩部分(每部分4位組成一個(gè) 16進(jìn)制數(shù))進(jìn)行處理來(lái)實(shí)現(xiàn)段選。分析:上圖為display模塊的細(xì)節(jié)圖。rxd中的信號(hào)分為兩組輸入,分別進(jìn)入muxer 的第0組和第1 組。其余的組全部拉低,達(dá)到出去最低兩位顯示,其余為顯示全0的目的,cnt8為0-7的計(jì) 數(shù),作用是控制muxer進(jìn)入led程序的順序,而led是為了實(shí)現(xiàn)段選,點(diǎn)亮數(shù)碼管的特定位來(lái) 顯示輸入數(shù)值。程序1.library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned

26、.all;entity cnt8 isport(clk:in std_logic; q:out std_logic_vector(2 downto 0);end cnt8;architecture behv of cnt8 issignal temp:std_logic_vector(2 downto 0);begin process(clk) begin if clk event and clk=1 then if temp=111 then temp=000; else temp=temp+1; end if; end if; end process; qdoutdoutdoutdoutd

27、outdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdout=; end case; end process;end behv;分析:程序led是完成段顯,將輸入的數(shù)值0-15翻譯成對(duì)應(yīng)的數(shù)碼管編碼。(1-5)接收模塊分析:程序rsSedn作為接受模塊,用于將232中發(fā)送的數(shù)據(jù)再次回寫(xiě)到到串口助手的接收端內(nèi)!要是程序完全正常的話發(fā)送什么就會(huì)在接收窗口接收到什么。3.3問(wèn)題:如何真正的實(shí)現(xiàn)發(fā)送和接受同步,并且發(fā)送的和接收的完全一樣?發(fā)送和接收波特率怎么弄?答:接收和顯示的已經(jīng)做出來(lái)了,但是發(fā)送的4.總結(jié):參考文獻(xiàn)1 通信與電子系統(tǒng)實(shí)驗(yàn)指導(dǎo)書(shū).武漢:華中科

28、技大學(xué)武昌分校.2 潘松.EDA技術(shù)與VHDL.北京:清華大學(xué)出版社,2009.3 朱運(yùn)利.EDA技術(shù)應(yīng)用(第二版).北京:電子工業(yè)出版社,2007.4 王行.EDA技術(shù)入門(mén)與提高.西安:西安電子科技大學(xué)出版社,2009.5 李莉.電子設(shè)計(jì)自動(dòng)化(EDA).北京:中國(guó)電力出版社,2009. 附錄 程序清單:程序1:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity rs232 isport(sysclk: in std_logic; rxd: in std_logic; disp: ou

29、t std_logic_vector(7 downto 0) );end rs232;architecture behv of rs232 is signal b: std_logic_vector(9 downto 0); signal r: std_logic_vector(3 downto 0); signal j: std_logic_vector(15 downto 0); signal frxd,gt,gtclr,cclk,gate: std_logic;begin gate=gt and cclk; disp(7 downto 0)=b(8 downto 1); frxd=not

30、 rxd;s1:process(sysclk,gt) begin if gt=0 then j0); elsif sysclkevent and sysclk=1 then if j=00000 then j0); else j=j+1; end if; end if;end process;s2:process(j)begin if j= then cclk=1; else cclk=0; end if;end process;s3:process(gate,gtclr)begin if gtclr=1 then r=0000; elsif gateevent and gate=1 then

31、 r=r+1; end if;end process;s4:process(gate,r)begin if r=1010 then gtclr=not gate; else gtclr=0; end if;end process;s5:process(gate,rxd,b)begin if gateevent and gate=1 then b(9 downto 0)=rxd&b(9 downto 1); end if;end process;s6:process(frxd,gtclr)begin if gtclr=1 then gt=0; elsif frxdevent and frxd=1

32、 then gt=1; end if; end process;end behv;程序2:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY PIN1MHZ IS PORT(CLKIN:IN STD_LOGIC; CLKOUT:OUT STD_LOGIC);END PIN1MHZ;ARCHITECTURE A OF PIN1MHZ ISBEGINPROCESS(CLKIN)VARIABLE CNTTEMP:INTEGER RANGE 0 TO 49;BEGIN IF CLKIN=1

33、AND CLKIN EVENT THEN IF CNTTEMP=49 THEN CNTTEMP:=0; ELSE IF CNTTEMP25 THEN CLKOUT=1; ELSE CLKOUT=0; END IF; CNTTEMP:=CNTTEMP+1; END IF ; END IF;END PROCESS;END A;程序3:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity cnt isport(clk:in std_logic; freq1:out std_logic; freq

34、488:out std_logic; freq1953:out std_logic; freq7812:out std_logic; freq31250:out std_logic; freq125k:out std_logic; freq500k:out std_logic);end cnt;architecture behv of cnt is signal temp:std_logic_vector(19 downto 0);begin process(clk) begin if clk event and clk=1 then if temp= then temp=; else tem

35、p=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=; end case; end process;end behv;程序5:library ieee;use ieee.std_logic_1164.all;

36、use ieee.std_logic_unsigned.all;entity cnt8 isport(clk:in std_logic; q:out std_logic_vector(2 downto 0);end cnt8;architecture behv of cnt8 issignal temp:std_logic_vector(2 downto 0);begin process(clk) begin if clk event and clk=1 then if temp=111 then temp=000; else temp=temp+1; end if; end if; end process; q=temp;end behv;程序6:li

溫馨提示

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

評(píng)論

0/150

提交評(píng)論