與單片機(jī)實(shí)現(xiàn)串行通信_(tái)第1頁(yè)
與單片機(jī)實(shí)現(xiàn)串行通信_(tái)第2頁(yè)
與單片機(jī)實(shí)現(xiàn)串行通信_(tái)第3頁(yè)
與單片機(jī)實(shí)現(xiàn)串行通信_(tái)第4頁(yè)
與單片機(jī)實(shí)現(xiàn)串行通信_(tái)第5頁(yè)
免費(fèi)預(yù)覽已結(jié)束,剩余9頁(yè)可下載查看

下載本文檔

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

文檔簡(jiǎn)介

1、題目名稱:FPGA與單片機(jī)實(shí)現(xiàn)串行通信目錄1設(shè)計(jì)任務(wù)及內(nèi)容12設(shè)計(jì)方案13系統(tǒng)硬件設(shè)計(jì)13.1單片機(jī)串行通信設(shè)計(jì)23.2 FPGA串行通信34系統(tǒng)軟件設(shè)計(jì)54.1 FPGA單元設(shè)計(jì) 54.2串行通信 MAX3232 65.系統(tǒng)調(diào)試106課程設(shè)計(jì)總結(jié)10附錄:111設(shè)計(jì)任務(wù)及內(nèi)容要求實(shí)現(xiàn)FPGA與單片的串行通信,熟悉單片機(jī)和VHDL語(yǔ)言的編寫,在設(shè)計(jì) 過程中對(duì)單片機(jī)與FPGA有進(jìn)一步理解,能夠?qū)崿F(xiàn)串行通信。2設(shè)計(jì)方案整個(gè)設(shè)計(jì)采用模塊化的設(shè)計(jì)思想,可分為四個(gè)模塊:FPG數(shù)據(jù)發(fā)送模塊,F(xiàn)PGA 波特率發(fā)生控制模塊,F(xiàn)PG總體接口模塊以及單片機(jī)數(shù)據(jù)接收模塊。 在通信過程 中完全遵守RS23協(xié)議,并利用

2、VHD語(yǔ)言實(shí)現(xiàn)FPGAf單片機(jī)的串口異步通信電 路。本設(shè)計(jì)采用II位幀格式異步通信方式,一位起始位、一位停止位、一位奇偶 校驗(yàn)位、8位數(shù)據(jù)位,基于有限狀態(tài)機(jī)原理進(jìn)行 FPG設(shè)計(jì)。設(shè)計(jì)方案框圖如下:FPGA3系統(tǒng)硬件設(shè)計(jì)從機(jī)圖2工作模式3.1單片機(jī)串行通信設(shè)計(jì)單片機(jī)與FPG串行通信可采用單片機(jī)的SPI(串行外設(shè)接口)方式。相對(duì)于 UARTSPI 更簡(jiǎn)單,速度更快。SPI 共四條線。MOSI(Master Out Slave In). MISO SCK(Serial Clock) , SS(Slave Select)。圖 1為SPI T作時(shí)序。當(dāng)單片機(jī)向 FPGA 傳輸命令或數(shù)據(jù)時(shí),應(yīng)用SPI的四

3、種模式中的SPIO模式。當(dāng)片選SS拉低。然后在 每個(gè)時(shí)鐘(SCK)上升沿送出數(shù)據(jù)。將片選信號(hào)SS與移位寄存器使能端(En)相接, MOS與移位寄存器數(shù)據(jù)輸入端(SI)相接,SCI同時(shí)為移位寄存器提供時(shí)鐘信號(hào)。 在SS信號(hào)為低電平時(shí),移位寄存器開始工作,在每個(gè)時(shí)鐘上升沿將接收到的數(shù)據(jù) 左移一位,等全部接受完畢,將SS置一 I”,移位寄存器工作完畢,同時(shí)為觸發(fā) 器提供時(shí)鐘,使移位寄存器接收到的數(shù)據(jù)并行輸出。當(dāng)單片機(jī)從FPG讀取數(shù)據(jù)時(shí),向FPG發(fā)送讀使能信號(hào)RE(可用任意空閑I /0 口)。在每個(gè)時(shí)鐘(SCK)上升沿.FPG送出一位串行數(shù)據(jù),單片機(jī)通過MISO取數(shù) 據(jù)。借助VHD硬件描述語(yǔ)言和EDA

4、ff發(fā)工具可方便的實(shí)現(xiàn)該系統(tǒng)。如下圖所示:P0.142P0.241POJ40P0 439P0.5羽P0.«J7P0.7羽KO24P3.1P2.22627 一P2.428P2.5対P27JIVD叩44R18.jI?:UP蟲牯32ALE3iMCU'ZKZI10POO43o 1 3 4 3 6 7 O.QO'.O.GO.O.G pppppppp0 12 3 4 5 6 7 工工工d2.!2_工 p p p p p p _p pIMO1M.1D<T2IMJXT.4L2XTAL1勺<®>LEPR£-WGPLCX3ph4pi?"3&

5、quot;Pl 3CPl .4F5&Pl 69Pl 711pa.oPM14P3.21SP3316P?.417P3.51£W酋15"Pj.723P4.Q54P4.1P4.2TxDPJlE<TDP3 2 r<flps_3TOP3.4 7:P5 5P:.O21Q I宀亠J4豈亠舌7 1A- B M * T* i 1 -TL» d-p-pppfpp2011.05!IZZI1C34圖一:?jiǎn)纹瑱C(jī)電路3.2 FPGA串行通信由于FPG具有豐富的引腳資源,且EP1C3T100C8的核電壓是3.3 V, STC89LE52 的輸出電壓也是3. 3 V,所以任選3

6、064A四個(gè)I /O與單片機(jī)4個(gè)I /O口連接即可, 若連接在單片機(jī)的Po口時(shí)需要加上拉電阻。在這里將 SS(CS)、SCK SDI、SDO分 別如圖所示連接。:-乂:Q-二二二 HACLO-匚WO1-二二二.-A - - 2 - -呂 go_(djg 工 UM1JIAa2-二-二亠=1602亠 Ego_Luwi.-: rxlcnx二FH<O1o-IOI loTioT ICE-IU5IUT7 IU-T rTIZT7 TUTT ionloIOIOIOIOIOIOIOgIOIOIOIOot三二三.s2-.- E>dl2 負(fù)專A.ol -£$od-r-H-t Jd 口 .otJ

7、lnrxJ- di:色 g 01rOIOCP & -£.二-二S& &苻9801-口-gC-1筈lzg«NE 口 Q30% 擔(dān) A ”01HKTCHGfxH盤一3 5 !圖二:FPG電路4系統(tǒng)軟件設(shè)計(jì)4.1 FPGA單元設(shè)計(jì)FPG的設(shè)計(jì)是通信網(wǎng)絡(luò)的核心部分。依據(jù)功能要求,F(xiàn)PG內(nèi)部劃分成四大功 能模塊:SRA控制器、發(fā)送數(shù)據(jù)緩沖模塊、16個(gè)UAR模塊、接收數(shù)據(jù)緩沖模塊。 發(fā)送數(shù)據(jù)緩沖模塊劃分成16個(gè)RA區(qū),每個(gè)RA區(qū)分別連接1個(gè)UART當(dāng)發(fā)送緩沖 模塊接收到主單片機(jī)下發(fā)的控制數(shù)據(jù)后, 啟動(dòng)UAR將數(shù)據(jù)發(fā)送至從單片機(jī)。接收 緩沖區(qū)同樣分為16個(gè) RA區(qū)

8、,發(fā)送控制數(shù)據(jù)后,UAR周期性地向從單片機(jī)發(fā)送狀 態(tài)查詢命令,從單片機(jī)將最新狀態(tài)發(fā)送至UAR模塊,UAR模塊將數(shù)據(jù)存入接收緩 沖模塊相應(yīng)的RA區(qū)。如圖3所示。SR.AM發(fā)送丿 接收iS沖 模塊16個(gè) UART模塊匪J卜5內(nèi)訂曲綽按入世用fpg內(nèi)部共有16對(duì)讀/寫和數(shù)據(jù)總線,分別連 接UAR和相應(yīng)的發(fā)送緩沖區(qū)RA及接收緩沖區(qū)RAMFPG內(nèi)部模塊采用圖3 FPG內(nèi)部功能模塊示意圖自頂向下的設(shè)計(jì)方法,將復(fù)雜系統(tǒng)劃分為簡(jiǎn)單系統(tǒng),然后通過邏輯和接口設(shè)計(jì)實(shí)現(xiàn)各個(gè)模塊功能。SRA控制器用 于FPG和C8O51FO20勺接口,負(fù)責(zé)內(nèi)部RA啲讀寫控制。UAR負(fù)責(zé)接收從單片機(jī) 上傳的串行信號(hào),將其并行化后存入接收

9、數(shù)據(jù)緩沖 RAM另外也負(fù)責(zé)將發(fā)送緩沖 RAI中的數(shù)據(jù)轉(zhuǎn)換成符合RS23協(xié)議規(guī)范的串行信號(hào)發(fā)送給從單片機(jī)。FPG內(nèi)部系統(tǒng)采用同步有限狀態(tài)機(jī)(FSM)的設(shè)計(jì)方法實(shí)現(xiàn),F(xiàn)S碩責(zé)調(diào)配各功 能模塊之間的協(xié)作。狀態(tài)機(jī)米用獨(dú)熱(one hot)編碼,使電路的可靠性和速度有 顯著的提高。系統(tǒng)狀態(tài)轉(zhuǎn)移圖如圖4所示。N地址?命令井開發(fā)送 兄牛蠶卉向命令 屮斷關(guān)團(tuán)接段到 正確JR據(jù)?'發(fā)送裂、 沖區(qū)RAM 按收鰲據(jù)j計(jì)時(shí)50m5搖收繩神JxRAM計(jì)時(shí)200 ms計(jì)時(shí) 30nw接收:緩沖區(qū) IAM<- "FF圖4有限址態(tài)機(jī)狀態(tài)轉(zhuǎn)移圖4.2串行通信 MAX3232主單片機(jī)和上位機(jī)的通信速率及 F

10、PGA和從單片機(jī)的通信速率均設(shè)置為 38. 4 Kbps,可以更精確的控制主單片機(jī)與各個(gè)從單片機(jī)之間的通信時(shí)間。 通信指令由 報(bào)頭、設(shè)備類型、設(shè)備號(hào)、命令號(hào)、命令數(shù)據(jù)、校驗(yàn)等字段組成。報(bào)頭用于通知單片機(jī)開始串行通信。設(shè)備類型和設(shè)備號(hào)用于將指令正確傳達(dá)到相 應(yīng)的設(shè)備,命令號(hào)用于通知單片機(jī)指令,命令數(shù)據(jù)用于通知單片機(jī)具體的功能, 校驗(yàn)則采用CRC校驗(yàn)以保證通信的準(zhǔn)確性。寫入控制命令號(hào)為 00H讀取命令號(hào)為01H,讀取指令命令數(shù)據(jù)為0字節(jié)。通信指令的幀格式如下:報(bào)頭1字*1 ? &1 TV1字VN字V1卞W果接收正確,返回00H,若錯(cuò)誤則返回01Ho返回幀格式為:設(shè)備類野設(shè)備號(hào)命令號(hào)1字描1

11、字&1字打1字節(jié)丨字冇p報(bào)頭:設(shè)備號(hào)1宇節(jié)】字菸】t 1V接收后單片機(jī)返同幀格式為:郵頭1設(shè)備類型命令號(hào)設(shè)備狀憲i字|字借1字節(jié)1字節(jié)¥字卄】了卩系統(tǒng)發(fā)送、接受程序流程圖如下:FPGA發(fā)送數(shù)據(jù)結(jié)束仿真圖如下: Va<ue: IFlame:300.0ns500.0nsstartresetH 33553365400.0ns圖中Din寫入值為3355H波特率為2400Hz Start信號(hào)始終置邏輯1,即 隨時(shí)都能發(fā)送數(shù)據(jù)。Reset信號(hào)邏輯1時(shí)復(fù)位,邏輯0時(shí)電路開始工作。THR是 數(shù)據(jù)寄存器,文件頭、數(shù)據(jù)長(zhǎng)度以及數(shù)據(jù)位都先寄存到 THR中,Len是數(shù)據(jù)長(zhǎng)度, TSR是低8位數(shù)

12、據(jù)幀寄存器,TSR1是高8位數(shù)據(jù)幀寄存器。數(shù)據(jù)長(zhǎng)度 Len定為 02H,發(fā)送時(shí)先發(fā)送低8位55H,后發(fā)送高8位33H, 共發(fā)送兩遍。發(fā)送的數(shù)據(jù) 格式說明:當(dāng)發(fā)送55H時(shí),其二進(jìn)制為01010101,則發(fā)送的數(shù)據(jù)的二進(jìn)制數(shù)為 00101010111( 1位開始位+8位數(shù)據(jù)位+1位奇校驗(yàn)位+1位停止位)。單片機(jī)部分先對(duì)FPGA發(fā)送過來的文件頭進(jìn)行確認(rèn),正確就接收文件,否則 放棄接收的數(shù)據(jù)。根據(jù)FPGA發(fā)送模塊的協(xié)議,對(duì)串口控制寄存器SCON口波特率 控制寄存器PCON勺設(shè)置即可實(shí)現(xiàn)。FPGA接收數(shù)據(jù)仿真圖:mdlrst恥A1EiwttuftoAdwre-rAr鬢4HQOHOCI串行數(shù)據(jù)幀和接收時(shí)鐘

13、是異步的,發(fā)送來的數(shù)據(jù)由邏輯1變?yōu)檫壿?可以視 為一個(gè)數(shù)據(jù)幀的開始。接收器先要捕捉起始位,確定 rxd輸入由1到0,邏輯0 要8個(gè)CLK16時(shí)鐘周期,才是正常的起始位,然后在每隔 16個(gè)CLK16時(shí)鐘周期 采樣接收數(shù)據(jù),移位輸入接收移位寄存器rsr,最后輸出數(shù)據(jù)dout。還要輸出一 個(gè)數(shù)據(jù)接收標(biāo)志信號(hào)標(biāo)志數(shù)據(jù)接收完。5.系統(tǒng)調(diào)試首先,檢查電路板上各個(gè)元器件的工作電壓正確, 電路板能正常工作;其次, 將調(diào)試的部分小程序下載到電路板上,檢測(cè) R232能正常工作;再次,將單片機(jī) 發(fā)送,F(xiàn)PGA接受的子程序下入電路板,觀察現(xiàn)象正確,將 FPGA發(fā)送,單片機(jī)接 受的子程序下入電路板,觀察現(xiàn)象;最后,將總

14、程序下載到電路板中,觀察現(xiàn)象 正確。6課程設(shè)計(jì)總結(jié)此次課程設(shè)計(jì),讓我們有機(jī)會(huì)把課本中學(xué)到的理論應(yīng)用到實(shí)際中去,理論聯(lián)系實(shí)際,在更好的掌握了書本中的知識(shí)的同時(shí)加強(qiáng)了動(dòng)手能力,在調(diào)試工程中遇到了許多問題,這些問題是在書中學(xué)不到的,只有通過查閱大量資料,咨詢老師 和同學(xué),我們才一步步排除電路錯(cuò)誤,在調(diào)試排錯(cuò)的同時(shí)收獲了很多單片機(jī)實(shí)際 應(yīng)用中的知識(shí)。這次實(shí)習(xí)讓我們受益匪淺,無論從知識(shí)上還是其他的各個(gè)方面。 上課的時(shí)候的學(xué)習(xí)從來沒有見過真正的單片機(jī), 只是從理論的角度去理解枯燥乏 味。但在實(shí)習(xí)中見過甚至使用了單片機(jī)及其系統(tǒng),能夠理論聯(lián)系實(shí)際的學(xué)習(xí),開闊了眼界,提高了單片機(jī)知識(shí)的理解和水平。 這幾周的實(shí)習(xí)

15、還是比較辛苦的,程 序里面的好多內(nèi)容不懂,自我感覺是單片機(jī)和 FPGA我們所學(xué)的內(nèi)容還不足以編 出這兩個(gè)程序,但是只好硬著頭皮去看去理解。但在學(xué)習(xí)過程中也充滿了樂趣, 當(dāng)看懂了程序的一些語(yǔ)句,畫出了要求的設(shè)計(jì)圖,那我喜悅那種成就感油然而生。 在這次課程設(shè)計(jì)中又讓我體會(huì)到了集體的力量, 當(dāng)遇到不會(huì)或是設(shè)計(jì)不出來的地方,我們就會(huì)向老師或者是同學(xué)請(qǐng)教。 團(tuán)結(jié)就是力量,無論在現(xiàn)在的學(xué)習(xí)中還是 在以后的工作中,團(tuán)結(jié)都是至關(guān)重要的,有了團(tuán)結(jié)會(huì)有更多的理念、更多的思維、 更多的情感。這次課設(shè)是對(duì)我的學(xué)習(xí)態(tài)度的一次檢驗(yàn)。對(duì)于這次課程設(shè)計(jì),我的第一大心得體會(huì)就是作為一名工程技術(shù)人員,要求 具備的首要素質(zhì)絕對(duì)應(yīng)該

16、是嚴(yán)謹(jǐn)。我們這次實(shí)習(xí)所遇到的多半問題多數(shù)都是由于 我們不夠嚴(yán)謹(jǐn)。我們認(rèn)識(shí)到,無論做什么事情,只要你足夠堅(jiān)強(qiáng),有足夠的毅力 與決心,有足夠的挑戰(zhàn)困難的勇氣,就沒有什么辦不到的。通過這次單片機(jī)實(shí)習(xí), 我不僅加深了對(duì)單片機(jī)理論的理解, 將理論很好地應(yīng)用到實(shí)際當(dāng)中去,而且我還 學(xué)會(huì)了如何去培養(yǎng)我們的創(chuàng)新精神, 從而不斷地戰(zhàn)勝自己,超越自己。創(chuàng)新可以 是在原有的基礎(chǔ)上進(jìn)行改進(jìn),使之功能不斷完善,成為真己的東西。單片機(jī)和FPGA是電子信息工程的一門重要專業(yè)課,學(xué)好單片機(jī)和 EDA就 可以憑這個(gè)技術(shù)找一個(gè)好工作。為即將畢業(yè)的我們?cè)诿嬖嚂r(shí)提供了一些實(shí)習(xí)經(jīng) 驗(yàn)。我們要在今后的學(xué)習(xí)中進(jìn)一步學(xué)習(xí)單片機(jī)知識(shí), 培養(yǎng)對(duì)

17、其的興趣,為將來工 作打好基礎(chǔ),充實(shí)度過大學(xué)生活。附錄:Library ieee;use ieee.std_logic_1164.all;use ieee.stdo gic_arith.all;use ieee.std_logic_ un sig ned.all; en tity atel2_bi n is的波特率時(shí)鐘發(fā)送的數(shù)據(jù)port( txclk: in std_logic; -2400Hz reset: in std_logic;- 復(fù)位信號(hào)din: in stdo gic_vector(15 dow nto 0);- start: in std_logic;-允許傳輸信號(hào)sout: o

18、ut std_logic - 串行輸出端口 );end atel2_b in;architecture behav of atel2_bi n is sig nal thr,le n: stdo gic_vector(15 dow nto 0); sig nal txcnt_r: stdo gic_vector(2 dow nto 0);sig nal sout1: std_logic;sig nal cou: in teger:=0;sig nal oddb:std_logic;type s is(start1,start2,shift1,shift2,odd1,odd2,stop1,sto

19、p2);sig nal state:s:=start1;beg inprocess(txclk)beg inif risin g_edge(txclk) the nif cou<3 then thr<="0000000001010101"- 發(fā)送的文件頭elsif cou=3 the nthr<="0000000000000010"-發(fā)送的文件長(zhǎng)度elsif (cou>3 and state=stop2) the n thr<=di n;-發(fā)送的數(shù)據(jù)end if; end if;end process;process(res

20、et,txclk)variable tsr,tsr1,oddb1,oddb2: std_logic_vector(7 dow nto 0);beg inif reset='1' the ntxcnt_r<=(others=>'0');sout1<='1'state<=start1;cou<=0;elsif txclk'eve nt and txclk='1' the ncase state iswhe n start1=>if start='1' thenif cou=3

21、 the nlen<=thr;end if;tsr:=thr(7 dow nto 0);oddb1:=thr(7 dow nto 0);sout1<='0'- 起始位txcnt_r<=(others=>'0');state<=shift1;elsestate<=start1;end if;whe n shift1=>oddb<=oddb1 xor oddb1 (6) xor oddb1 (5) xor oddb1 xor oddb1 (3) xor oddb1 (2) xor oddb1(1) xor oddb1(

22、0);sout1<=tsr(0);- 數(shù)據(jù)位tsr(6 dow nto 0):=tsr(7 dow nto 1);tsr:='0'txcn t_r<=txc nt_r 1;if (txc nt_r=7) the nstate<=odd1;cou<=cou 1;end if;when odd1=> -奇校驗(yàn)位if oddb='1' thensout1<='0'state<=stop1;elsesout1<='1'state<=stop1;end if;whe n stop1=&g

23、t;sout1<='1'- 停止位if cou<4 the nstate<=start1;elsestate<=start2;end if;whe n start2=>tsr1:=thr(15 dow nto 8);oddb2:=thr(15 dow nto 8);sout1<='0'- 起始位txcnt_r<=(others=>'0');state<=shift2;whe n shift2=>oddb<=oddb2 xor oddb2 (6) xor oddb2 (5) xor oddb2 xor oddb2 (3) xor oddb2 (2) xor oddb2(1) xor oddb

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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)論