国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于Artix?7FPGA的異步高速串行通信IP設(shè)計

2018-10-12 05:48王蕾韓立峰
現(xiàn)代電子技術(shù) 2018年19期
關(guān)鍵詞:狀態(tài)機寄存器中斷

王蕾 韓立峰

摘 要: 設(shè)計一種基于Artix?7 FPGA的異步高速串行通信IP核,包含協(xié)議解析和抗干擾設(shè)計、跨時鐘域緩沖區(qū)設(shè)計、用戶接口和物理層接口設(shè)計,實現(xiàn)最小硬件系統(tǒng)。該IP核可結(jié)合高速串口驅(qū)動芯片簡單對接至主流處理器,如DSP,ARM,PowerPC等,以擴展處理器的異步串行通信接口數(shù)量和通信速率。其中,通信速率最高可至30 Mb/s,擴展數(shù)量視FPGA內(nèi)部資源而定,理論上無上限。在機載和地面設(shè)備中可廣泛應(yīng)用。

關(guān)鍵詞: 高速率通信; 異步串行通信; DSP; ARM; Artix?7; 處理器

中圖分類號: TN919.6?34 文獻標識碼: A 文章編號: 1004?373X(2018)19?0006?05

Abstract: An asynchronous high?speed serial communication IP core based on Artix?7 FPGA was designed, for which the protocol analysis, anti?jamming capability, clock crossing domain buffer, user interface and physical layer interface are designed to realize the minimum hardware system. The IP core combined with high?speed serial driving chip can simply connect to the mainstream processors such as DSP, ARM and PowerPC to increase the extension quantity of asynchronous serial communication interface and improve the communication rate. The maximum communication rate can reach up to 30 Mb/s, and the extension quantity is determined by the internal resource of FPGA and has no upper limit theoretically. This IP core can be widely used in airborne and ground equipments.

Keywords: high?speed communication; asynchronous serial communication; DSP; ARM; Artix?7; processor

0 引 言

通用異步收發(fā)器(Universal Asynchronous Receiver/Transmitter,UART)包括RS 232,RS 499,RS 423,RS 422和RS 485等總線標準規(guī)范。UART協(xié)議作為一種串行通信協(xié)議,廣泛應(yīng)用于通信、語音、圖像、儀器儀表、軍事域等各種場合,具有電路結(jié)構(gòu)可靠、通信接口簡單、傳輸距離遠等特點。隨著硬件處理能力的提升和通信技術(shù)的快速發(fā)展,無線信道上的數(shù)據(jù)速率和帶寬也穩(wěn)步提升。簡單的UART協(xié)議在集成度較高的處理器標配外設(shè)平臺上通信速率較低,不能滿足高速率數(shù)據(jù)接口和多源接入的要求。

本文設(shè)計的異步高速串行通信IP繼承UART傳統(tǒng)優(yōu)點并進行改進設(shè)計?;赬ilinx公司的Artix?7 FPGA芯片進行實現(xiàn),并成功應(yīng)用于某型地空通信電臺數(shù)據(jù)輸入輸出接口。按照RS 422電平標準通過硬件平臺測試后,通信距離可達10 m,通信速率可達30 Mb/s。異步高速串行通信IP具有高可靠通信速率、容量可擴展的數(shù)據(jù)緩沖區(qū)、便于多目例化實現(xiàn)等優(yōu)點,在軍事裝備領(lǐng)域具有廣泛的應(yīng)用前景。

1 軟件協(xié)議

開放式系統(tǒng)互連參考模型(OSI)描述了計算機網(wǎng)絡(luò)通信的基本框架,其采用分層的結(jié)構(gòu)體系,模型如圖1所示。它作為一個概念性框架規(guī)定了各層次位置和提供的服務(wù),協(xié)調(diào)和組織各層協(xié)議的制定和執(zhí)行,滿足開放系統(tǒng)環(huán)境互聯(lián)和應(yīng)用可移植性[1]。通信協(xié)議設(shè)計時可參考OSI模型,根據(jù)系統(tǒng)信息交換問題分解到一系列可控的軟硬件模塊層中,各層進行獨立修改和功能擴充。本文設(shè)計的異步高速串行通信IP根據(jù)應(yīng)用場景,需要應(yīng)用物理層和數(shù)據(jù)鏈路層協(xié)同通信,物理層利用硬件傳輸介質(zhì)為數(shù)據(jù)鏈路層提供物理連接。數(shù)據(jù)鏈路層負責將數(shù)據(jù)分幀,處理流控制。

1.1 物理層設(shè)計

異步高速串行通信IP采用UART起止式異步協(xié)議。基本的UART通信需要4條信號線: 接收端RXD±和發(fā)送端TXD±。UART數(shù)據(jù)發(fā)送和接收的幀格式: 第一位為起始位,置“0”,表示通信開始; 最后一位為停止位,置“1”,表示通信結(jié)束。每一個字符的前面都有一位起始位:低電平,邏輯值“0”。字符本身由8 bit數(shù)據(jù)位組成,字符后面是一位校驗位,最后一位是停止位高電平,邏輯值“1”。停止位和空閑位都規(guī)定為高電平,這樣就保證起始位開始處一定有一個下降沿。傳輸時,數(shù)據(jù)的低位在前,高位在后。字符之間沒有固定的時間間隔要求[2]。其格式如圖2所示。協(xié)議分析:異步通信按字符傳輸,每傳輸一個字符,就用起始位通知收方,以此來重新核對收發(fā)雙方同步,從而避免由于接收設(shè)備和發(fā)送設(shè)備之間的時鐘頻率偏差累積而導(dǎo)致的錯位,加之字符間的空閑位也為這種偏差提供一種緩沖,所以起止式異步協(xié)議具有較高的傳輸可靠性[3]。

1.2 數(shù)據(jù)鏈路層設(shè)計

本文設(shè)計的異步高速串行通信IP采用中斷源與外部處理器進行通信;內(nèi)部設(shè)計寄存器用作狀態(tài)和數(shù)據(jù)存儲;數(shù)據(jù)收發(fā)時使用異步FIFO,保證外部處理器和Artix?7 FPGA之間實現(xiàn)跨時鐘域正常通信,具體數(shù)據(jù)鏈路層設(shè)計如圖3所示。

其中,中斷源設(shè)計如下:

處理器收超時輪詢中斷:在多串口多中斷情況下處理器內(nèi)部對每個中斷源輪詢查找,按優(yōu)先級別控制執(zhí)行中斷執(zhí)行源;處理器收有效中斷:通知處理器接收數(shù)據(jù);處理器接收異常中斷:對中斷異常情況處理,保證系統(tǒng)接收穩(wěn)健性;處理器發(fā)送完成中斷:通知處理器整包解析發(fā)送完成,可進入下一次發(fā)送狀態(tài)。

寄存器設(shè)計如下:

UART發(fā)寄存器:存儲需要串并轉(zhuǎn)換的字節(jié)數(shù)據(jù);UART收寄存器:存儲需要并串轉(zhuǎn)換的字節(jié)數(shù)據(jù);UART狀態(tài)寄存器:將異步FIFO狀態(tài)的輸出按位組合為狀態(tài)寄存器發(fā)送至處理器進行狀態(tài)判斷;中斷寄存器:高低電平轉(zhuǎn)換控制具體串口中斷發(fā)生;處理器接收門限寄存器:異步FIFO可讀門限值,保證數(shù)據(jù)轉(zhuǎn)換完整,可正確地按序讀取,提高系統(tǒng)運行時間[4]。

FIFO存儲深度設(shè)計:FIFO存儲深度根據(jù)系統(tǒng)需求設(shè)定,深度大會占用不必要的FPGA資源,深度小不能提供大容量的數(shù)據(jù)轉(zhuǎn)存[5]。

2 FPGA IP邏輯設(shè)計實現(xiàn)

2.1 軟件模塊

異步高速串行通信軟件架構(gòu)如圖4所示。串行通信傳輸系統(tǒng)中多目串口例化時,設(shè)置多個中斷寄存器[1~n]輸出,控制外部處理器響應(yīng)對應(yīng)串口[1~n]中斷進程。處理器收超時輪詢中斷:在中斷源多的情況下,處理器內(nèi)部對每個中斷源輪詢查找,根據(jù)中斷優(yōu)先級別高低執(zhí)行中斷進程,若等待超時即進入下個中斷源。將2個異步FIFO輸出的FULL,GROG_FULL和EMPTY,共計6個信號按位組合為狀態(tài)寄存器,傳輸給處理器進行狀態(tài)判斷執(zhí)行。

數(shù)據(jù)并串轉(zhuǎn)換流程:處理器內(nèi)部完成數(shù)據(jù)打包并寫入異步FIFO1中;處理器發(fā)送控制使能信號至P2S模塊,準備并串轉(zhuǎn)換;根據(jù)先進先出原則按字節(jié)存入UART收寄存器中,輸出至并串轉(zhuǎn)換P2S模塊;P2S模塊按比特位輸出至UART收通道,一個字節(jié)轉(zhuǎn)換完成。并串轉(zhuǎn)換結(jié)束標志位和異步FIFO1的EMPTY輸出同時作用控制讀取速率,直至完成整個FIFO1的讀取,一包數(shù)據(jù)解析完成,執(zhí)行發(fā)送完成中斷信號。

數(shù)據(jù)串并轉(zhuǎn)換流程:UART發(fā)通道輸出至S2P模塊;S2P模塊完成串并轉(zhuǎn)換按字節(jié)輸出存儲在UART發(fā)寄存器中。串并轉(zhuǎn)換結(jié)束標志位控制寫入FIFO2的速率。接收門限寄存器中門限值的設(shè)定控制處理器讀取FIFO2的讀取起始時機。異步FIFO2的HALF_FULL有效輸出,F(xiàn)PGA發(fā)出收有效中斷,通知處理器進入執(zhí)行接收狀態(tài)。處理器根據(jù)先入先出原則按字節(jié)讀取FIFO2中的數(shù)據(jù)。

2.2 高速波特率的實現(xiàn)

針對數(shù)據(jù)傳輸需求,將串口傳輸速率設(shè)為可調(diào)模式。包括三檔速率:115.2 Kb/s,1.44 Kb/s,10 Mb/s。在DSP中控制串口速率,F(xiàn)PGA中配置為相應(yīng)的DCM核進行分頻。用不同的波特率控制串口收發(fā)。串口調(diào)試終端按協(xié)議發(fā)送、接收數(shù)據(jù),實現(xiàn)通信交互[6]。

2.3 UART數(shù)據(jù)轉(zhuǎn)換

2.3.1 UART 收數(shù)據(jù)狀態(tài)機設(shè)計

UART 收狀態(tài)工作流程如圖5所示,共計4個狀態(tài)。

狀態(tài)1:空閑狀態(tài)。狀態(tài)機在收狀態(tài)前或完成后處于空閑狀態(tài)。計數(shù)器1負責計數(shù)等待;轉(zhuǎn)換結(jié)束標志(tx_done)賦0;待發(fā)送串行數(shù)據(jù)(tx_data)賦0;待轉(zhuǎn)換并行數(shù)據(jù)(tx_buf[7:0])賦0。處理器發(fā)出控制使能指令控制狀態(tài)跳轉(zhuǎn)。

狀態(tài)2:初始化狀態(tài)。tx_buf按設(shè)計的FIFO1讀取速率賦初值等待轉(zhuǎn)換。計數(shù)器2計時保護確保數(shù)據(jù)正確保存,作為狀態(tài)跳轉(zhuǎn)信號。

狀態(tài)3:UART收狀態(tài)。根據(jù)計數(shù)器3計數(shù)做并串轉(zhuǎn)換,tx_data按UART時鐘按位輸出。計數(shù)器3計時保護滿足8位比特位傳輸進入狀態(tài)跳轉(zhuǎn)。

狀態(tài)4:結(jié)束狀態(tài)。計數(shù)器4負責計數(shù)等待;完成一個并串轉(zhuǎn)換流程,狀態(tài)機復(fù)位。狀態(tài)4跳轉(zhuǎn)回狀態(tài)1,完成一次狀態(tài)機工作。

2.3.2 UART發(fā)數(shù)據(jù)狀態(tài)機設(shè)計

UART 發(fā)狀態(tài)工作流程如圖6所示,共計4個狀態(tài)。

狀態(tài)1:空閑狀態(tài)。狀態(tài)機在發(fā)狀態(tài)前或完成后處于空閑狀態(tài)。計數(shù)器1負責計數(shù)等待;轉(zhuǎn)換結(jié)束標志(rx_done)賦0;待轉(zhuǎn)換串行數(shù)據(jù)(rx_data)賦0; 待發(fā)送并行數(shù)據(jù)(rx_buf[7:0])賦0。檢測輸入比特位的電平高低跳變情況作為狀態(tài)跳轉(zhuǎn)信號。

狀態(tài)2:初始化狀態(tài)。rx_data根據(jù)UART發(fā)數(shù)據(jù)速率依次保存比特位,計數(shù)器2計時保護確保數(shù)據(jù)正確保存,作為狀態(tài)跳轉(zhuǎn)信號。

狀態(tài)3:UART發(fā)狀態(tài)。根據(jù)計數(shù)器3計數(shù)做串并轉(zhuǎn)換,rx_buf按字節(jié)輸出。計數(shù)器3計時保護滿足8位比特位轉(zhuǎn)換完成進入狀態(tài)跳轉(zhuǎn)。

狀態(tài)4:結(jié)束狀態(tài)。計數(shù)器4負責計數(shù)等待;完成一個串并轉(zhuǎn)換流程后狀態(tài)機復(fù)位。狀態(tài)4跳轉(zhuǎn)回狀態(tài)1,完成一次狀態(tài)機工作。

2.4 仿真測試結(jié)果

本文系統(tǒng)在ModelSim 10.1環(huán)境中進行驗證。模擬DSP發(fā)送數(shù)據(jù)并串轉(zhuǎn)換,仿真結(jié)果如圖7所示。當buf_tx_in 輸入為“10000001”時,data_tx_out按時鐘輸出“0,1,0,0,0,0,0,0,1,1”,done_tx在轉(zhuǎn)換結(jié)束后輸出“1”。

模擬串口發(fā)送數(shù)據(jù)串并轉(zhuǎn)換,仿真結(jié)果如圖8所示。當data_rx_in按時鐘輸入“0,1,1,0,1,1,1,0,1,1”,buf_ rx_out輸入為“0xBB”時,done_rx在轉(zhuǎn)換結(jié)束后輸出“1”。

3 硬件系統(tǒng)邏輯

3.1 硬件系統(tǒng)架構(gòu)

高速串口傳輸系統(tǒng)硬件結(jié)構(gòu)系統(tǒng)硬件架構(gòu)如圖9所示。Artix?7 FPGA使用通用輸入輸出接口與處理器的EMIFA總線接口連接,包含片選線、地址總線、數(shù)據(jù)總線、讀寫使能線等。寄存器、各種交互信息和高速通信數(shù)據(jù)都通過EMIFA總線傳輸[7]。中斷源通過通用輸入輸出接口與處理器GPIO口連接,管腳電平跳變控制中斷是否發(fā)生。處理器實現(xiàn)數(shù)據(jù)組包、解析、糾錯、指令控制等[8]。通過芯片使能線和4路數(shù)據(jù)線將Artix?7 FPGA與高速串口驅(qū)動芯片AM26LV31E,AM26LV32E連接。AM26LV31E支持4路RS 422數(shù)據(jù)發(fā)送單端轉(zhuǎn)差分,最高轉(zhuǎn)換速率為為32 MHz,4路共用一組使能控制線。AM26LV32E支持4路RS 422數(shù)據(jù)接收差分轉(zhuǎn)單端,最高轉(zhuǎn)換速率為32 MHz,4路共用一組使能控制線。系統(tǒng)使用RS 422作為平衡通信接口,經(jīng)過9針D型串行接口通過串口轉(zhuǎn)換器合并連接至PC端機,并根據(jù)需求擴展串口線路數(shù)量以實現(xiàn)10 Mb/s的傳輸速率[9]。

3.2 差分串行總線設(shè)計

RS 422差模傳輸抗干擾能力強,理論傳輸距離為1 200 m。終端匹配采用終極電阻方法,在總線電纜遠端并接電阻100 Ω匹配電纜阻抗特性[7]。本文使用的高速驅(qū)動芯片電路設(shè)計如圖10所示。AM26LV31芯片差分輸出阻抗匹配100 Ω,AM26LV32芯片差分輸入阻抗4~17 kΩ。

在實現(xiàn)高速數(shù)據(jù)高可靠性傳輸時,使用差分串行抵消通信傳輸時的外部干擾。差分總線作為一個整體,外部干擾疊加在兩條差分線上后相抵消。通信電路設(shè)計完成后進行PCB設(shè)計布圖時,差分輸入輸出應(yīng)考慮差分線走線等長。對PCB布圖中AM26LV31E第二通道差分輸出長度進行測量,如圖11所示:TO_B_CTRL1+長度為1 281.356 mils,TO_B_CTRL1-長度為1 282.93 mils,設(shè)計長度滿足走線需求。

3.3 硬件測試結(jié)果

PC端機中設(shè)有串口測試終端[10]。測試軟件使用C++語言編程,終端界面負責下達、數(shù)據(jù)收發(fā)檢測、實時狀態(tài)上報、誤碼率判斷等工作。測試時將發(fā)送波特率設(shè)定為10 Mb/s,驗證串口傳輸誤碼率,重復(fù)次數(shù)為10 000次時,誤碼率為0,驗證了該通信方法的可靠性。

4 結(jié) 語

本文設(shè)計的異步高速串行通信IP基于Xilinx公司的Artix?7實現(xiàn),具有可編程性以及面向DSP、存儲器和連接功能支持的集成式模塊的合理組合,是Xilinx公司的成熟產(chǎn)品。系統(tǒng)應(yīng)用在任務(wù)處理機硬件平臺上,經(jīng)過實際測試達到10 Mb/s通信速率,滿足實時性要求高、數(shù)據(jù)量大的數(shù)字通信系統(tǒng)通信需求,硬件擴展性強,可靠性高,調(diào)試直觀,可廣泛應(yīng)用于機載和地面設(shè)備中。

參考文獻

[1] 何亞蘭,周劉紀.基于FPGA+DSP的調(diào)頻電臺傳輸系統(tǒng)[J].單片機與嵌入式系統(tǒng)應(yīng)用,2013(10):1?4.

HE Yalan, ZHOU Liuji. FM radio transmission system based on FPGA+DSP platform [J]. Application of SCM and embedded system, 2013(10): 1?4.

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

TIAN Jia, WANG Yiping. Asynchronous serial port communication with CRC verification based on FPGA [J]. Modern electronics technique, 2016, 33(20): 5?7.

[3] 蔡艷輝,胡銳,程鵬飛,等.一種基于FPGA+DSP的北斗兼容型高精度接收機系統(tǒng)設(shè)計[J].導(dǎo)航定位學報,2013(2):1?6.

CAI Yanhui, HU Rui, CHENG Pengfei, et al. Design of a Beidou compatible high precision receiver based on FPGA+DSP [J]. Journal of navigation and positioning, 2013(2): 1?6.

[4] 李瑩,賈彬.一種基于狀態(tài)機的串口通信協(xié)議的設(shè)計與實現(xiàn)[J].電子設(shè)計工程,2012,20(7):100?103.

LI Ying, JIA Bin. A serial port communication protocol based on state machine and its implementation [J]. Electronic design engineering, 2012, 20(7): 100?103.

[5] 李偉.基于FPGA的多串口通信設(shè)計與實現(xiàn)[J].數(shù)字技術(shù)與應(yīng)用,2015(2):174?175.

LI Wei. Design and implementation of multi?serial port communication based on FPGA [J]. Digital technology and applications, 2015(2): 174?175.

[6] 胡焱.基于FPGA+DSP 的數(shù)字中頻收發(fā)機的設(shè)計[J].現(xiàn)代電子技術(shù),2016,39(15):78?80.

HU Yan. Design of digital medium frequency transmitter based on FPGA+DSP [J]. Modern electronics technique, 2016, 39(15): 78?80.

[7] 王沖,汪寶祥.基于FPGA 的串行通訊接口設(shè)計[J].微處理機,2016,37(3):73?76.

WANG Chong, WANG Baoxiang. Design of serial communication interface based on FPGA [J]. Microprocessors, 2016, 37(3): 73?76.

[8] 王斌,張林,鄧軍,等.一種基于高速串口通信的高效數(shù)據(jù)處理方法[J].自動化技術(shù)與應(yīng)用,2016,35(6):57?60.

WANG Bin, ZHANG Lin, DENG Jun, et al. A high efficiency data processing method based on high?speed serial port communication [J]. Technology of automation and applications, 2016, 35(6): 57?60.

[9] 桂江華,邵健,潘邈.一種高可靠串行通信協(xié)議[J].電子與封裝,2016,16(2):40?43.

GUI Jianghua, SHAO Jian, PAN Miao. A high reliable serial communication protocol [J]. Electronics and packaging, 2016, 16(2): 40?43.

[10] 丁毅,趙笑龍,豐偉.基于在線調(diào)試的串口通信協(xié)議測試方法[J].航空電子技術(shù),2016,47(2):30?33.

DING Yi, ZHAO Xiaolong, FENG Wei. Test method of serial port communication protocol based on online debugging [J]. Aero?electronic technology, 2016, 47(2): 30?33.

猜你喜歡
狀態(tài)機寄存器中斷
Lite寄存器模型的設(shè)計與實現(xiàn)
基于有限狀態(tài)機的交會對接飛行任務(wù)規(guī)劃方法
跟蹤導(dǎo)練(二)(5)
千里移防,衛(wèi)勤保障不中斷
分簇結(jié)構(gòu)向量寄存器分配策略研究*
AT89C51與中斷有關(guān)的寄存器功能表解
FPGA內(nèi)嵌PowerPC的中斷響應(yīng)分析
高速數(shù)模轉(zhuǎn)換器AD9779/AD9788的應(yīng)用
FPGA設(shè)計中狀態(tài)機安全性研究
基于反熔絲FPGA的有限狀態(tài)機加固設(shè)計
丹东市| 广州市| 云林县| 长宁区| 邮箱| 许昌县| 西青区| 鄂州市| 孟津县| 福贡县| 吉水县| 岚皋县| 汾西县| 渑池县| 平果县| 鹤山市| 日喀则市| 微博| 正宁县| 富阳市| 含山县| 淮阳县| 会宁县| 湘西| 新丰县| 广东省| 东乌珠穆沁旗| 牡丹江市| 安达市| 灯塔市| 益阳市| 广平县| 开阳县| 涞源县| 溆浦县| 梁河县| 定西市| 元朗区| 龙井市| 谷城县| 中方县|