• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      基于FPGA的串口通信電路設(shè)計與實(shí)現(xiàn)

      2016-07-23 03:50:24黨俊博李雅俊
      電子科技 2016年7期
      關(guān)鍵詞:串口通信通信協(xié)議

      黨俊博,李 哲,李雅俊

      (1. 西安郵電大學(xué) 電子工程學(xué)院,陜西 西安 710061 ;2. 西安北方捷瑞光電科技有限公司,陜西 西安 710111)

      ?

      基于FPGA的串口通信電路設(shè)計與實(shí)現(xiàn)

      黨俊博1,李哲1,李雅俊2

      (1. 西安郵電大學(xué) 電子工程學(xué)院,陜西 西安 710061 ;2. 西安北方捷瑞光電科技有限公司,陜西 西安 710111)

      摘要針對計算機(jī)與基于FPGA控制系統(tǒng)需要進(jìn)行數(shù)據(jù)通信的需求,采用有限狀態(tài)機(jī)設(shè)計了一種串口通信電路。該電路實(shí)現(xiàn)了控制系統(tǒng)與計算機(jī)之間的通信,包括計算機(jī)發(fā)送給控制系統(tǒng)的控制命令和參數(shù);控制系統(tǒng)發(fā)送到計算機(jī)的運(yùn)行狀態(tài)信息。使用ISE軟件中的嵌入式邏輯分析儀Chipscope對通信電路進(jìn)行測試,結(jié)果表明,該電路工作穩(wěn)定可靠,能夠完成數(shù)據(jù)傳輸?shù)墓δ堋?/p>

      關(guān)鍵詞串口通信;FPGA; UART;通信協(xié)議

      串口以其通信電路簡單、可靠性高和傳輸距離遠(yuǎn)等優(yōu)點(diǎn),廣泛應(yīng)用在計算機(jī)與外設(shè)之間的通信電路中。串口通信使用通用異步收發(fā)傳輸器(UniversalAsynchronousReceiverTransmitter,UART)和電平轉(zhuǎn)換芯片進(jìn)行數(shù)據(jù)傳輸。一般FPGA芯片中沒有集成UART,為使FPGA能進(jìn)行串口通信,可有兩種選擇:一種是使用UART專用集成芯片,這種方法設(shè)計簡單,但會增加電路板的面積和成本;另一種方法是在FPGA內(nèi)部設(shè)計UART,這種方法設(shè)計靈活,可靠性高。本文提出了一種使用硬件描述語言VerilogHDL設(shè)計UART和高層協(xié)議電路的方法,實(shí)現(xiàn)了FPGA與計算機(jī)之間的數(shù)據(jù)通信。

      1串口通信協(xié)議設(shè)計

      通信協(xié)議是指通信雙方的一種約定,對數(shù)據(jù)格式、傳輸速度、校驗方式和字符定義等問題做出統(tǒng)一規(guī)定,通信雙方必須共同遵守。串口通信協(xié)議[1-3]采用分層結(jié)構(gòu),分為底層協(xié)議和高層協(xié)議。底層協(xié)議采用標(biāo)準(zhǔn)的UART傳輸協(xié)議,高層協(xié)議定義了數(shù)據(jù)包格式和校驗方式。

      1.1底層協(xié)議

      UART最重要的參數(shù)是波特率、起始位、數(shù)據(jù)位和停止位。UART數(shù)據(jù)格式以低電平為起始位,中間傳送8bit的數(shù)據(jù)位,以高電平為停止位,空閑狀態(tài)為高電平,無奇偶校驗位[4]。

      底層協(xié)議的功能是:發(fā)送數(shù)據(jù)時,將高層協(xié)議電路傳遞過來的并行數(shù)據(jù)轉(zhuǎn)換為串行數(shù)據(jù)流,并加入起始位和停止位,按照通信雙方約定的波特率,將數(shù)據(jù)流發(fā)送出去;接收數(shù)據(jù)時,去掉起始位和停止位,將串行數(shù)據(jù)流轉(zhuǎn)換成字節(jié),然后傳遞到高層協(xié)議電路中。

      1.2高層協(xié)議

      定義由FPGA發(fā)送到上位機(jī)的數(shù)據(jù)為上行數(shù)據(jù),由上位機(jī)發(fā)送到FPGA的數(shù)據(jù)為下行數(shù)據(jù)。

      (1)上行數(shù)據(jù)包。上行數(shù)據(jù)長度固定,數(shù)據(jù)包格式如表1所示。

      表1 上行數(shù)據(jù)包格式

      各字段含義定義如下:

      幀頭:作為數(shù)據(jù)包的起始標(biāo)志;

      幀序號:參數(shù)的順序號,用以將FPGA中使用的參數(shù)讀回到上位機(jī);

      參數(shù)返回:電路當(dāng)前使用的參數(shù),每個數(shù)據(jù)包中包含1Byte,多個數(shù)據(jù)包能夠解析出來一組控制參數(shù);

      狀態(tài)信息:設(shè)備的運(yùn)行狀態(tài)信息;

      校驗:采用循環(huán)冗余校驗碼(CRC)進(jìn)行校驗;

      (2)下行數(shù)據(jù)包。下行數(shù)據(jù)包格式如表2所示。

      表2 下行數(shù)據(jù)包格式

      幀頭和校驗:同上行數(shù)據(jù)包;

      參數(shù)地址:FPGA內(nèi)的數(shù)據(jù)斷電后不能保存,因此將參數(shù)數(shù)據(jù)保存到外部EEPROM中,不同的數(shù)據(jù)包使用不同的地址,參數(shù)地址作為一個數(shù)據(jù)包保存到外部EEPROM的起始地址;

      參數(shù)數(shù)據(jù):控制電路的控制參數(shù)。

      2FPGA電路設(shè)計

      串口通信電路包括時鐘產(chǎn)生模塊、發(fā)送通道和接收通道,發(fā)送通道和接收通道各自獨(dú)立工作,互不干擾。時鐘產(chǎn)生模塊為發(fā)送通道和接收通道提供時鐘信號。發(fā)送通道主要包括發(fā)送控制狀態(tài)機(jī)、數(shù)據(jù)寄存器、移位寄存器、CRC校驗?zāi)K[5-6]和UART發(fā)送模塊[7]。接收通道主要包括接收控制狀態(tài)機(jī)、控制參數(shù)寄存器、RAM、EEPROM讀寫控制器[8-9]、CRC校驗?zāi)K和UART接收模塊,整體結(jié)構(gòu)如圖1所示。

      圖1 串口通信電路結(jié)構(gòu)框圖

      2.1串口發(fā)送

      串口發(fā)送電路從功能上可分為UART發(fā)送(底層協(xié)議)和發(fā)送控制(高層協(xié)議)兩大模塊。根據(jù)需要,發(fā)送數(shù)據(jù)包采用周期發(fā)送方式,發(fā)送周期為400Hz,在發(fā)送周期信號的下降沿啟動一個數(shù)據(jù)包的發(fā)送。

      (1)UART發(fā)送模塊。UART發(fā)送模塊由發(fā)送狀態(tài)機(jī)、位計數(shù)器、數(shù)據(jù)緩存寄存器和移位寄存器組成,結(jié)構(gòu)示意圖如圖2所示。發(fā)送狀態(tài)轉(zhuǎn)移描述如下:

      IDLE:當(dāng)byte_ready信號有效后,進(jìn)入下一狀態(tài);

      DATA_LOAD:在當(dāng)前狀態(tài),load信號有效,將移位寄存器中的數(shù)據(jù)連同起始位和停止位加載到移位寄存器中,進(jìn)入數(shù)據(jù)發(fā)送狀態(tài)。

      DATA_TRANS:當(dāng)bit_count<9時,en信號使能計數(shù)器計數(shù),shift信號使移位寄存器右移,移位寄存器高位填充1,移位寄存器最低位與TxD相連,當(dāng)bit_count計數(shù)到9時,clear信號有效,bit_count清零,TxD_over信號有效一個周期,狀態(tài)機(jī)回到IDLE狀態(tài)。

      圖2 uart發(fā)送結(jié)構(gòu)示意圖

      (2)發(fā)送控制模塊。發(fā)送控制模塊主要由發(fā)送控制狀態(tài)機(jī)、移位寄存器、MUX和CRC校驗?zāi)K組成,發(fā)送控制模塊采用狀態(tài)機(jī)的方式設(shè)計,狀態(tài)轉(zhuǎn)移圖如圖3所示。

      圖3 發(fā)送控制模塊狀態(tài)機(jī)

      狀態(tài)描述如下:

      IDLE:當(dāng)400Hz時鐘信號下降沿到來時,load信號有效,將幀頭連同數(shù)據(jù)按照一定順序加載到移位寄存器中,狀態(tài)機(jī)進(jìn)入數(shù)據(jù)發(fā)送狀態(tài);

      TRANS_CTRL:在發(fā)送狀態(tài),byte_count加1,移位寄存器右移一個字節(jié),byte_ready信號置1,狀態(tài)機(jī)進(jìn)入等待狀態(tài)。當(dāng)byte_count

      WAITING:當(dāng)TxD_over信號有效后,狀態(tài)機(jī)回到發(fā)送狀態(tài)。

      2.2串口接收

      串口接收由UART接收(底層協(xié)議)和接收控制(高層協(xié)議)模塊組成,實(shí)現(xiàn)數(shù)據(jù)的串并轉(zhuǎn)換、CRC校驗以及將參數(shù)數(shù)據(jù)保存到外部EEPROM中的功能。

      (1)UART接收模塊。UART接收電路結(jié)構(gòu)示意圖如圖4所示,主要由接收狀態(tài)機(jī)、采樣計數(shù)器(sample_count)、位計數(shù)器(bit_count)、移位寄存器和數(shù)據(jù)緩存等部分組成。接收狀態(tài)機(jī)的時鐘頻率是波特率的8倍,當(dāng)連續(xù)四次采樣RxD均為低電平時,認(rèn)為是啟動信號,否則認(rèn)為是噪聲信號。此后,在接收電平的中間時刻,將電平數(shù)據(jù)放入移位寄存器中,每接收一位數(shù)據(jù),采樣計數(shù)器清零一次,位計數(shù)器加1,shift信號有效,移位寄存器右移一次。當(dāng)位計數(shù)器加到8時,位計數(shù)器清零,load信號有效,將移位寄存器內(nèi)的數(shù)據(jù)放入數(shù)據(jù)緩存區(qū),同時RxD_data_ready信號有效,請求高層電路讀取數(shù)據(jù);

      (2)接收控制模塊。接收控制模塊由接收控制狀態(tài)機(jī)、RAM、CRC校驗?zāi)K和EEPROM讀寫控制模塊組成。接收控制模塊采用狀態(tài)機(jī)的方式設(shè)計,狀態(tài)轉(zhuǎn)移圖如圖5所示。

      圖4 UART接收電路結(jié)構(gòu)示意圖

      圖5 接收控制狀態(tài)轉(zhuǎn)移圖

      INIT:上電復(fù)位后,狀態(tài)機(jī)在此狀態(tài),然后狀態(tài)機(jī)進(jìn)入讀EEPROM狀態(tài);

      IDLE:當(dāng)RxD_data_ready信號有效后,若RxD_data=0xA5時,狀態(tài)機(jī)進(jìn)入寫RAM狀態(tài);當(dāng)需要讀取其他段控制參數(shù)時,狀態(tài)機(jī)進(jìn)入讀EEPROM狀態(tài);

      WRITE_RAM:當(dāng)接收請求信號有效后,將RxD_data寫入到RAM中,同時對接收的字節(jié)數(shù)進(jìn)行計數(shù),當(dāng)byte_count=frame_byte時,狀態(tài)機(jī)進(jìn)入校驗狀態(tài);

      CRC_CHECK:當(dāng)接收請求信號有效后,接收的RxD_data即為上位機(jī)發(fā)送過來的校驗字,將其與內(nèi)部生成的CRC校驗字進(jìn)行對比,當(dāng)校驗正確后,狀態(tài)機(jī)進(jìn)入寫EEPROM狀態(tài),否則回到空閑狀態(tài);

      WRITE_EEPROM:將數(shù)據(jù)從RAM中讀出寫入到外部EEPROM中,對寫入的字節(jié)數(shù)進(jìn)行計數(shù),當(dāng)byte_count=frame_byte時,狀態(tài)機(jī)讀EEPROM狀態(tài);

      READ_EEPROM:從EEPROM中讀出剛寫入的數(shù)據(jù),并將數(shù)據(jù)分配到控制參數(shù)寄存器中,每讀一個字節(jié),byte_count加1,當(dāng)byte_count=frame_byte時,狀態(tài)機(jī)進(jìn)入空閑狀態(tài)。

      3數(shù)據(jù)傳輸測試

      隨著邏輯電路設(shè)計復(fù)雜性的不斷增加,僅依靠軟件仿真對硬件電路測試具有較大的局限性。使用ISE集成開發(fā)環(huán)境中的嵌入式邏輯分析儀Chipscope,可將測試電路和設(shè)計電路一起下載到目標(biāo)芯片中[10]。測試電路對設(shè)計電路中的數(shù)據(jù)流進(jìn)行采集,而又不影響設(shè)計電路的正常工作,測試數(shù)據(jù)通過JTAG發(fā)送到ISE軟件中以波形的形式顯示出來,這是一種高效的測試方法,能夠較好地對硬件電路進(jìn)行測試。

      FPGA選用Xilinx的XC3S2000器件[11],該器件具有豐富的邏輯資源和硬件乘法器,能滿足電路的設(shè)計需求。將測試電路和設(shè)計電路一并下載到FPGA芯片中,計算機(jī)端運(yùn)行上位機(jī)軟件和ISE軟件,然后分別對發(fā)送通道和接收通道電路進(jìn)行測試。圖6為串口發(fā)送通道信號測試波形,圖7是串口接收信號測試波形,圖8是將接收到的數(shù)據(jù)從EEPROM中讀出,然后分配到

      圖6 串口發(fā)送數(shù)據(jù)波形

      圖7 串口接收數(shù)據(jù)波形

      圖8 串口接收數(shù)據(jù)分配波形

      控制參數(shù)寄存器中的波形。測試結(jié)果表明,發(fā)送通道和接收通道功能正常。

      4結(jié)束語

      基于FPGA設(shè)計實(shí)現(xiàn)的UART和高層協(xié)議電路,可使用較少的邏輯資源實(shí)現(xiàn)串口通信的功能,能有效提高系統(tǒng)的可靠性和穩(wěn)定性,減小電路板面積,降低成本,且便于移植在其他FPGA通信電路中。串口通信協(xié)議和電路經(jīng)過嚴(yán)格的測試,目前已應(yīng)用到實(shí)際產(chǎn)品中。

      參考文獻(xiàn)

      [1]李煊,丁為.常用設(shè)備串口通信協(xié)議及其應(yīng)用[J].自動化儀表,2011,32(10):82-86.

      [2]馮子陵,俞建新.RS485總線通信協(xié)議的設(shè)計與實(shí)現(xiàn)[J].計算機(jī)工程,2012,38(20):215-218.

      [3]張偉.基于FPGA的通信接口模塊設(shè)計與實(shí)現(xiàn)[J].電子科技,2012,25(7):95-98.

      [4]楊晶.基于FPGA的UART接口協(xié)議轉(zhuǎn)換模塊設(shè)計[D].哈爾濱:哈爾濱工業(yè)大學(xué),2014.

      [5]田佳,王一平.基于FPGA的帶CRC校驗的異步串口通信[J].現(xiàn)代電子技術(shù),2010,33(20):5-7.

      [6]劉春陽.基于FPGA的串行通信實(shí)現(xiàn)與CRC校驗[D].北京:北京化工大學(xué),2006.

      [7]楊揚(yáng),葉芃,李力.基于FPGA的UART設(shè)計與實(shí)現(xiàn)[J].電子測量技術(shù),2011(7):80-82.

      [8]黃曉敏,張志杰.基于FPGA的IIC總線IP核設(shè)計[J].測試科學(xué)與儀器:英文版,2015(1):13-18.

      [9]夏宇聞.Verilog數(shù)字系統(tǒng)設(shè)計教程[M].北京:北京航空航天大學(xué)出版社,2008.

      [10]萬翔.ChipScopePro在FPGA調(diào)試中的應(yīng)用[J]. 計算機(jī)與網(wǎng)絡(luò),2005(21):58-59.

      [11]XilinxCorpration.Spartan-3FPGAfamilydatasheet[EB/OL]. (2013-06-27)[2015-08-22]http://www.xilinx.com.

      Design and Implementation of Serial Communication Circuits Based on FPGA

      DANGJunbo1,LIZhe1,LIYajun2

      (1.SchoolofElectronicEngineering,Xi’anUniversityofPostsandTelecommunications,Xi’an710061,China;

      2.NorthJieruiPhotoelectricTechnologyLtd.,Xi’an710111,China)

      AbstractA serial communication circuit is designed by finite state machine for the requirement of data communication between computer and control system based on FPGA. The circuit realizes the communication between the control system and the computer, including the control commands and parameters the computer sends to the control system and the status information the control system sends to the computer. The communication circuit is tested by the embedded logic analyzer Chipscope in the ISE software. The results show that the circuit is stable and reliable, and can complete the function of data transmission.

      Keywordsserial communication; FPGA; UART; communication protocol

      收稿日期:2015- 11- 15

      作者簡介:黨俊博(1989-),男,碩士研究生。研究方向:通信電路與系統(tǒng)。李哲(1963-),男,教授。研究方向:嵌入式系統(tǒng)和激光陀螺。

      doi:10.16180/j.cnki.issn1007-7820.2016.07.031

      中圖分類號TN79+1

      文獻(xiàn)標(biāo)識碼A

      文章編號1007-7820(2016)07-106-04

      猜你喜歡
      串口通信通信協(xié)議
      基于Z-Stack通信協(xié)議棧的紅外地溫采集電路設(shè)計
      基于Qt和Flash的嵌入式Linux軟件架構(gòu)設(shè)計
      串口通信在智能家居監(jiān)控系統(tǒng)中的應(yīng)用
      基于OpenCV的室內(nèi)照明智能控制系統(tǒng)設(shè)計與實(shí)現(xiàn)
      科技視界(2016年13期)2016-06-13 22:01:19
      基于DMX512通信協(xié)議的多路轉(zhuǎn)發(fā)器設(shè)計與研究
      基于NS-3的PLC多頻通信協(xié)議仿真平臺設(shè)計與實(shí)現(xiàn)
      電測與儀表(2016年2期)2016-04-12 00:24:52
      RSSP-I、RSSP-Ⅱ及SAHARA三種安全通信協(xié)議實(shí)現(xiàn)技術(shù)簡介
      青河县| 万全县| 上犹县| 松原市| 华宁县| 博野县| 通化市| 福州市| 晴隆县| 成安县| 永安市| 双桥区| 罗平县| 博客| 洛浦县| 手机| 阿克陶县| 杭州市| 上虞市| 莲花县| 河南省| 卫辉市| 寻乌县| 台东市| 东方市| 鄂伦春自治旗| 武定县| 刚察县| 同心县| 余庆县| 尉氏县| 沭阳县| 梨树县| 区。| 高州市| 罗甸县| 沈丘县| 江陵县| 安徽省| 安平县| 姜堰市|