資源描述:
《fpga與單片機(jī)實(shí)現(xiàn)串行通信》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在應(yīng)用文檔-天天文庫。
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.2FPGA串行通信34系統(tǒng)軟件設(shè)計(jì)54.1FPGA單元設(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語言的編寫,在設(shè)計(jì)過程中對(duì)單片機(jī)與FPGA有進(jìn)一步理解,能夠?qū)崿F(xiàn)串行通信。2設(shè)計(jì)方案整個(gè)設(shè)計(jì)采用模塊化的設(shè)計(jì)思想,可分為四個(gè)模塊:FPGA數(shù)據(jù)發(fā)送模塊,F(xiàn)PGA波特率發(fā)生控制模塊,F(xiàn)PGA總體
2、接口模塊以及單片機(jī)數(shù)據(jù)接收模塊。在通信過程中完全遵守RS232協(xié)議,并利用VHDL語言實(shí)現(xiàn)FPGA與單片機(jī)的串口異步通信電路。本設(shè)計(jì)采用ll位幀格式異步通信方式,一位起始位、一位停止位、一位奇偶校驗(yàn)位、8位數(shù)據(jù)位,基于有限狀態(tài)機(jī)原理進(jìn)行FPGA設(shè)計(jì)。設(shè)計(jì)方案框圖如下:FPGA單片機(jī)發(fā)送器通信控制控制器接收器波特率發(fā)生3系統(tǒng)硬件設(shè)計(jì)3.1單片機(jī)串行通信設(shè)計(jì)單片機(jī)與FPGA串行通信可采用單片機(jī)的SPI(串行外設(shè)接口)方式。相對(duì)于UART,SPI更簡(jiǎn)單,速度更快。SPI共四條線。MOSI(MasterOutSlaveIn).MISO,SCK(SerialClock),SS
3、(SlaveSelect)。圖1為SPIT作時(shí)序。當(dāng)單片機(jī)向FPGA傳輸命令或數(shù)據(jù)時(shí),應(yīng)用SPI的四種模式中的SPIO模式。當(dāng)片選SS拉低。然后在每個(gè)時(shí)鐘(SCK)上升沿送出數(shù)據(jù)。將片選信號(hào)SS與移位寄存器使能端(En)相接,MOSI與移位寄存器數(shù)據(jù)輸入端(SI)相接,SCK同時(shí)為移位寄存器提供時(shí)鐘信號(hào)。在SS信號(hào)為低電平時(shí),移位寄存器開始工作,在每個(gè)時(shí)鐘上升沿將接收到的數(shù)據(jù)左移一位,等全部接受完畢,將SS置一l”,移位寄存器工作完畢,同時(shí)為觸發(fā)器提供時(shí)鐘,使移位寄存器接收到的數(shù)據(jù)并行輸出。當(dāng)單片機(jī)從FPGA讀取數(shù)據(jù)時(shí),向FPGA發(fā)送讀使能信號(hào)RE(可用任意空閑I/
4、0口)。在每個(gè)時(shí)鐘(SCK)上升沿.FPGA送出一位串行數(shù)據(jù),單片機(jī)通過MISO讀取數(shù)據(jù)。借助VHDL硬件描述語言和EDA開發(fā)工具可方便的實(shí)現(xiàn)該系統(tǒng)。如下圖所示:圖一:?jiǎn)纹瑱C(jī)電路3.2FPGA串行通信由于FPGA具有豐富的引腳資源,且EP1C3T100C8N的核電壓是3.3V,STC89LE52的輸出電壓也是3.3V,所以任選3064A四個(gè)I/O與單片機(jī)4個(gè)I/O口連接即可,若連接在單片機(jī)的Po口時(shí)需要加上拉電阻。在這里將SS(CS)、SCK、SDI、SDO分別如圖所示連接。圖二:FPGA電路4系統(tǒng)軟件設(shè)計(jì)4.1FPGA單元設(shè)計(jì)FPGA的設(shè)計(jì)是通信網(wǎng)絡(luò)的核心部分。依
5、據(jù)功能要求,F(xiàn)PGA內(nèi)部劃分成四大功能模塊:SRAM控制器、發(fā)送數(shù)據(jù)緩沖模塊、16個(gè)UART模塊、接收數(shù)據(jù)緩沖模塊。發(fā)送數(shù)據(jù)緩沖模塊劃分成16個(gè)RAM區(qū),每個(gè)RAM區(qū)分別連接1個(gè)UART,當(dāng)發(fā)送緩沖模塊接收到主單片機(jī)下發(fā)的控制數(shù)據(jù)后,啟動(dòng)UART將數(shù)據(jù)發(fā)送至從單片機(jī)。接收緩沖區(qū)同樣分為16個(gè)RAM區(qū),發(fā)送控制數(shù)據(jù)后,UART周期性地向從單片機(jī)發(fā)送狀態(tài)查詢命令,從單片機(jī)將最新狀態(tài)發(fā)送至UART模塊,UART模塊將數(shù)據(jù)存入接收緩沖模塊相應(yīng)的RAM區(qū)。如圖3所示?! PGA內(nèi)部共有16對(duì)讀/寫和數(shù)據(jù)總線,分別連接UART和相應(yīng)的發(fā)送緩沖區(qū)RAM及接收緩沖區(qū)RAM。FPG
6、A內(nèi)部模塊采用圖3FPGA內(nèi)部功能模塊示意圖自頂向下的設(shè)計(jì)方法,將復(fù)雜系統(tǒng)劃分為簡(jiǎn)單系統(tǒng),然后通過邏輯和接口設(shè)計(jì)實(shí)現(xiàn)各個(gè)模塊功能。SRAM控制器用于FPGA和C8051F020的接口,負(fù)責(zé)內(nèi)部RAM的讀寫控制。UART負(fù)責(zé)接收從單片機(jī)上傳的串行信號(hào),將其并行化后存入接收數(shù)據(jù)緩沖RAM;另外也負(fù)責(zé)將發(fā)送緩沖RAM中的數(shù)據(jù)轉(zhuǎn)換成符合RS232協(xié)議規(guī)范的串行信號(hào)發(fā)送給從單片機(jī)?! PGA內(nèi)部系統(tǒng)采用同步有限狀態(tài)機(jī)(FSM)的設(shè)計(jì)方法實(shí)現(xiàn),F(xiàn)SM負(fù)責(zé)調(diào)配各功能模塊之間的協(xié)作。狀態(tài)機(jī)采用獨(dú)熱(one—hot)編碼,使電路的可靠性和速度有顯著的提高。系統(tǒng)狀態(tài)轉(zhuǎn)移圖如圖4所示。
7、4.2串行通信MAX3232 主單片機(jī)和上位機(jī)的通信速率及FPGA和從單片機(jī)的通信速率均設(shè)置為38.4Kbps,可以更精確的控制主單片機(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)為OOH,讀取命令號(hào)為01H,讀取指令命令數(shù)據(jù)為0字節(jié)。通信指令的幀格式如下: 單片機(jī)接收到控制命令后,如果接收正確,返回00H,若錯(cuò)誤則