999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

一種新型的FPGA實現RS422串口通信方法

2017-03-27 05:57:36梁曉鵬李軍武
計算機測量與控制 2017年3期
關鍵詞:方法

劉 杰,臧 煒,梁曉鵬,李軍武

(1.貴州航天凱山石油儀器有限公司,貴陽 550000; 2.中國石油渤海裝備公司第一機械廠,河北 青縣 062650; 3.長慶油田第六采油廠,陜西 榆林 718600; 4.長慶油田第七采油廠,甘肅 環縣 745700)

一種新型的FPGA實現RS422串口通信方法

劉 杰1,臧 煒2,梁曉鵬3,李軍武4

(1.貴州航天凱山石油儀器有限公司,貴陽 550000; 2.中國石油渤海裝備公司第一機械廠,河北 青縣 062650; 3.長慶油田第六采油廠,陜西 榆林 718600; 4.長慶油田第七采油廠,甘肅 環縣 745700)

在FPGA實現RS422串口通信的常用方法中經常遇到諸多問題,如FIFO深度讀取不正確、FIFO寫數據端口與讀數據端口時序競爭、多個模塊間信號延時導致FPGA亞穩態等問題,因此設計了一種新型的RS422串口通信實現方法;該方法通過利用寄存器數組作為循環緩存代替FIFO,利用計數器代替傳統的波特率產生模塊,把常用方法中的多個模塊整合成一個模塊,只采用一個主時鐘,所有寄存器的時鐘輸入端共享一個時鐘,對FPGA邏輯與時序進行了有效約束,避免了FPGA中亞穩態產生;試驗結果表明該方法實現的RS422串口通信高速、可靠、穩定,并且利用FPGA實現RS422串口通信,可使整個系統更為靈活、緊湊,減小整個電路的體積,提高系統的可靠性和穩定性。

RS422;FPGA;DSP;Verilog HDL

0 引言

目前,嵌入式電子系統設計多采用DSP+FPGA架構,因為其兼顧了DSP和FPGA的優點。DSP的優點是能夠實現復雜的算法結構,運算速度高、尋址方式靈活等,適合于運算能力和存儲容量有較高要求的應用場合[1]。FPGA的優點是基于可編程邏輯器件進行數字邏輯設計,性能穩定、易于維護、性價比高、產品體積小、信號間干擾小、研制周期短等,并發處理能力強,可以作為DSP的各種外圍電路的控制器。因此,采用DSP和FPGA數字信號處理系統可以把兩者的優點結合起來,兼顧速度和靈活性,優勢互補,符合當前軟硬件融合協調工作的趨勢。

RS422 串口通信在航空航天及工業控制領域有著廣泛的應用,其特點是點對點通信、傳輸距離長、抗干擾能力強、傳輸速率高等方面。利用FPGA實現RS422串口通信,可使整個系統更為靈活、緊湊,減小整個電路的體積,提高系統的可靠性和穩定性。

本文首先介紹了一種FPGA實現RS422串口通信的常用方法,然后設計并實現了一種改進方法,在改進方法中采用寄存器數組作為循環緩存代替FIFO,利用計數器代替波特率產生模塊,把常用方法中的四個模塊進行整合,采用同步時鐘代替異步時鐘,對FPGA邏輯與時序進行了有效約束,避免了FPGA中亞穩態產生,提高了RS422串口通信的可靠性、穩定性。

1 RS422串口通信常用實現方法

RS422串口通信的幀格式如圖1所示。

圖1 RS422串口通信幀格式

一幀數據包括起始位、數據位、校驗位和停止位。線路空閑時,傳輸線路保持高電平。當發送數據時,發送節點要先發一個低電平的起始位,表示一幀數據的開始,然后發送有效數據位,通常為8個比特,然后發送奇偶校驗位,最后發送停止位,停止位為高電平,表示一幀數據發送結束。

串口通信結構框圖如圖2所示。

圖2 串口通信結構框圖

DSP與FPGA之間的通信方式采用DSP的EMIF方式,即地址總線、數據總線和控制總線。FPGA內部實現RS422通信功能,主要包括接收模塊、發送模塊、波特率產生模塊、DSP接口控制模塊等4個部分。RS422串口通信外設一般是指RS422收發芯片,如MAX3087,完成TLL電平和RS422差分電平之間的轉換,通常與FPGA相連時要經過數字隔離器,進行地線隔離。

串口接收模塊的功能為:FPGA首先檢測數據的起始位,然后獲得有效數據位的信息,并且對有效數據位進行奇偶校驗后,進行串/并轉換,存入串口接收FIFO中,等待DSP進行查詢讀取,當DSP讀串口接收FIFO地址時,FPGA把串口接收FIFO中的數據放到數據總線上。

串口發送模塊的功能為:首先DSP通過EMIF接口向FPGA的串口發送FIFO寫數據,FPGA把數據存入串口發送FIFO中,進行并/串轉換,將串行數據從輸出端口按照約定的波特率輸出。

波特率產生模塊的功能:一般通過FPGA內部的PLL鎖相環以及分頻模塊,獲得串口發送模塊波特率時鐘驅動串口發送模塊,獲得串口接收模塊16倍頻波特率時鐘驅動串口接收模塊。

DSP接口控制模塊具體功能為:根據DSP接口的讀信號、寫信號、片選信號以及地址信號產生相應的接收FIFO讀信號、發送FIFO寫信號、以及讀取接收FIFO深度等功能。

在常用方法中,數據緩存操作通常采用FPGA生產商免費提供的FIFO軟核,是一種采用環形存儲結構的先進先出存儲器[2]。FIFO結構如圖3所示。

圖3 異步FIFO結構圖

圖3中,FIFO的存儲介質為一個雙端口RAM,可以同時進行讀寫操作。左側為一個寫時鐘域,由寫地址邏輯產生寫控制信號和寫地址,可以把數據寫入RAM;右側為一個讀時鐘域,由讀地址邏輯產生讀控制信號和讀地址,可以讀出RAM中的數據。另外,由空/滿標志位產生邏輯對讀寫地址相互比較產生空、滿標志位以及動態刷新FIFO的深度,該模塊需要和讀時鐘域、寫時鐘域進行交互,存在跨時鐘域的問題。

綜上所述,常用方法是基于FPGA內部FIFO建立串口通信模塊,在工程應用中,經常遇到諸多問題,如FIFO深度讀取不正確、FIFO寫數據端口與讀數據端口時序競爭、多個模塊間信號延時導致FPGA亞穩態等問題。究其原因是由于FIFO軟核由廠家封裝后,對用戶開發是一個“黑盒子”,其內部設計無法被用戶優化[3]。因此在改進方法中,設計循環緩存代替了FIFO,利用計數器代替了波特率產生模塊,可以把串口發送模塊整合成一個模塊,把串口接收模塊整合成一個模塊,并且兩個模塊只采用一個主時鐘,采用同步時序電路設計的FPGA,所有寄存器的時鐘輸入端共享一個時鐘,可以有效地消除亞穩態。

2 RS422串口通信改進方法

2.1 利用寄存器數組作為循環緩存代替FIFO

定義一個寄存器數組[4]:reg[7:0] data_HC[511:0],數據寬度為8位,長度為512。

定義一個讀指針計數器:reg[8:0] REcount = 9’h000,計數范圍為[0~511]。

定義一個寫指針計數器:reg[8:0] WEcount = 9’h000,計數范圍為[0~511]。

如圖4所示,采用一個主時鐘對循環緩存data_HC進行讀、寫操作,當向循環緩存data_HC寫入數據后,寫指針WEcount加1;當從循環緩存data_HC讀出數據后,讀指針REcount加1。當讀、寫指針遞增到511后,再加1則自動為0,依次循環。循環緩存還需要建立3個關鍵的變量。

圖4 循環緩存data_HC示意圖

循環緩存的深度:wire [8:0] cnt;

循環緩存的滿標志:wire FULL;

循環緩存的空標志:wire EMPTY;

深度cnt即循環緩存data_HC中數據的個數,利用寫指針WEcount與讀指針Recount比較,當WEcount >= Recount時,cnt = WEcount -Recount。當WEcount < Recount時,cnt = WEcount +512 -Recount。利用邏輯電路表達式為:

assign cnt = (WEcount >= Recount)?( WEcount -Recount):( WEcount +512 -Recount)。

空、滿標志產生的原則是:寫滿而不溢出,讀空而不多讀。即在滿信號有效時若繼續向FIFO寫數據,應根據設計的要求對數據作保持或拋棄重發處理,空標志的產生也是如此。

當深度cnt=0時,設置空標志EMPTY=1。當深度cnt=256時,設置滿標志FULL=1。當然,滿標志FULL的深度cnt數值可以靈活設置。利用邏輯電路表達式為[3]:

assign EMPTY = (cnt === 9’d0)?1:0;

assign FULL = (cnt ===9’d256)?1:0;

當向循環緩存data_HC寫入數據時,代碼示例如下:

if(~FULL)

begin

data_HC[WEcount] <= data_in;

WEcount <= WEcount + 1;

end

當從循環緩存data_HC讀出數據時,代碼示例如下:

if(~EMPTY)

begin

data_out <= data_HC[REcount];

REcount <= Recount + 1;

end

2.2 利用計數器代替波特率產生模塊

串口發送模塊的時鐘一般和串口發送波特率一致,當發送數據時,只需要按照時鐘把循環緩存中的數據并/串轉換后,按幀格式發送。

串口接收模塊的時鐘一般是串口接收波特率的16倍頻。當接收數據時,由于接收節點和發送節點的時鐘異步,所以需要對數據位進行多次采樣,采樣次數越多,采樣點就可以越靠近數據位中點,降低采樣錯誤的概率。但是,采樣次數越多,其系統開銷就越大。因此,設計串口接收模塊的時鐘是串口接收波特率的16倍頻,每個數據位可以采樣16次,并且只取靠近中間的3個采樣點,如第7、8、9次,并且對3次的采樣點值,通過3判2進行裁決,進一步降低采樣誤碼概率。

上述方法中,需要通過FPGA的主時鐘經過PLL鎖相環和分頻模塊產生串口發送時鐘和串口接收時鐘,分別驅動串口發送模塊和串口接收模塊。利用計數器完全可以替代波特率產生模塊,其優點是只需要FPGA的主時鐘,而不進行分頻,其時鐘相位、延時都不會由于分頻而產生變化。

例如,RS422串口全雙工通信,收、發波特率都為38400bpt/s,FPGA中模塊主時鐘用14.745 6 MHz。在串口發送模塊,以14.745 6 MHz時鐘的上升沿為觸發模式進行計數,當計數到384時,進入圖5串口發送模塊狀態機,根據狀態機執行相應的動作,并且計數重新置1,主時鐘下一個上升沿來時,繼續進行計數動作。在串口接收模塊,以14.745 6 MHz時鐘的上升沿為觸發模式進行計數,當計數到24時,進入圖6串口接收模塊狀態機,根據狀態機執行相應的動作,并且計數重新置1,主時鐘下一個上升沿來時,繼續進行計數動作。

2.3 發送模塊設計

DSP向數據緩存data_HC寫數據,FPGA檢測到DSP的串口寫信號有效,并且數據緩存未滿,把DSP數據總線上的數據裝入數據緩存data_HC[WEcount],并且WEcount寫指針加1。FPGA中串口發送模塊,以主時鐘上升沿進行計數,當計數到分頻時鐘的值(BAND=主時鐘頻率/發送數據波特率)時,進行狀態機判斷和跳轉,并且計數值重新置1,過程如圖5所示。

發送模塊狀態機設計如下:狀態1檢測循環緩存data_HC是否為空,如果循環緩存data_HC非空,讀取data_HC[REcount]值(1個字節),REcount讀指針加1,跳轉到狀態2,然后依次從狀態2~狀態12跳轉,其狀態為發送起始位、數據位0~數據位7,奇偶校驗位、停止位。

圖5 發送模塊設計示意圖

2.4 接收模塊設計

FPGA中串口接收模塊,以主時鐘上升沿進行計數,當計數到分頻時鐘的值(BAND=主時鐘頻率/(接收數據波特率*16倍頻))時,進行狀態機判斷和跳轉,并且計數值重新置1,過程如圖6所示。

圖6 接收模塊設計示意圖

接收模塊狀態機設計如下:狀態1檢測數據線是否有起始位,如果檢測到起始位,跳轉到狀態2,狀態2為檢測到起始位的中間位置,然后依次從狀態3~狀態11跳轉,其狀態為數據位0~數據位7,奇偶校驗位的中間位置采樣,最后跳轉到狀態12,停止位的中間位置,對數據進行奇偶校驗,以及判斷data_HC是否滿,如果未滿,把數據寫入數據緩存data_HC[WEcount],并且WEcount寫指針加1。

DSP可以讀取與FPGA約定的兩個地址,一個為數據緩存深度地址[4],如addr_data_count,另一個為數據緩存中數據地址,如addr_data。當DSP讀取數據緩存深度地址時,FPGA可以把數據緩存深度cnt鎖存后放到DSP數據線上。當DSP讀取數據緩存中數據地址時,FPGA判斷數據緩存data_HC非空后,把data_HC[REcount]鎖存后放到數據線上,并且讀指針REcount加1。

3 實驗結果與分析

在XXX組合導航系統中,FPGA硬件采用A3P1000,DSP采用TI公司的TMS320C6713B,產品包含與陀螺、上位機、轉位機構、北斗系統等進行RS422串口通信的11個接收、發送模塊。采用改進方法后,在測試過程中,常溫條件下,產品連續工作100多個小時,未出現串口通信錯誤。在高溫、低溫條件下,分別進行1小時測試,未出現任何通信異常現象,也沒有出現誤碼現象。

在常用方法中,如圖2所示,多個模塊間需要傳遞時鐘、數據、FIFO控制信號等,系統很容易產生亞穩態。亞穩態就是觸發器工作在一種不確定的狀態,這種不確定的狀態將會影響到下一級觸發器,最終導致連鎖反應,從而使整個系統功能失常。當信號在異步電路中或多個時鐘域之間傳輸時,容易產生亞穩態現象。在改進方法中,通過模塊整合,只采用一個主時鐘,所有寄存器時鐘輸入端共享一個時鐘,有效避免了系統亞穩態的產生。

4 結論

本文首先介紹了一種FPGA實現RS422串口通信的常用方法,包括波特率產生、串口發送、串口接收、FPGA的FIFO軟核等模塊,然后設計并實現了一種改進方法。在改進方法中由于設計了循環緩存代替了FIFO,利用計數器代替了波特率產生模塊,因此,可以把串口發送模塊整合成一個模塊,把串口接收模塊整合成一個模塊,并且串口發送模塊、串口接收模塊只采用一個主時鐘,采用同步時序電路設計的FPGA,所有寄存器的時鐘輸入端共享一個時鐘,可以有效地消除亞穩態,提高了RS422串口通信的可靠性、穩定性,具有較高的應用推廣價值。

[1] 三恒星科技. TMS320C6713 DSP原理與應用實例[M] .北京:電子工業出版社,2012.

[2] ProASIC 3 Flash Family FPGAs 使用手冊[Z]. 北京:ACTEL公司,2013.

[3] 夏宇聞. Verilog數字系統設計教程[M] . 北京:北京航空航天大學出版社,2013.

[4] FT-C6713J/250軍用DSP產品使用手冊[Z]. 北京:國防科學技術大學,2012.

A New Method of RS422 Serial Port Communication Based on FPGA

Liu Jie1,Zang Wei2,Liang Xiaopeng3,Li Junwu4

(1.Guizhou Aerospace Kai Shan Petroleum Instrument Co., Ltd.,Guiyang 550000, China;2.1STMachinery Works of CNPC BOHAI Equipment Manufacturing Co., Ltd., Qingxian 062650, China;3.6STOil Production Plant of Changqing Oilfield, Yulin 718600, China;4.7STOil Production Plant of Changqing Oilfield, Huanxian 745700, China)

The common method of RS422 serial port communication realized by FPGA often encounter many problems, such as FIFO depth is incorrect, the timing of writing FIFO data port and reading FIFO data port are compete, and signal delay between multiple modules leads to FPGA metastable state, so a new method of RS422 serial port communication is proposed. This method replaces the traditional FIFO by using register array as a cyclic queue, uses the counter instead of the baud rate generation module, integrate multiple modules into one module, only one master clock, all registers share one clock with the clock input, and constraints FPGA logic and timing to avoid the FPGA metastable state. The experimental results show that the method is fast, reliable and stable. It can make the whole system more flexible and compact, reduce the whole circuit volume and improve the reliability and stability of the system.

RS422;FPGA;DSP;Verilog HDL

2016-12-12;

2017-02-06。

劉 杰(1984-),女,山東單縣人,碩士研究生,工程師,主要從事電路、軟件方向的研究。

1671-4598(2017)03-0191-04

10.16526/j.cnki.11-4762/tp.2017.03.052

TP3

A

猜你喜歡
方法
中醫特有的急救方法
中老年保健(2021年9期)2021-08-24 03:52:04
高中數學教學改革的方法
河北畫報(2021年2期)2021-05-25 02:07:46
化學反應多變幻 “虛擬”方法幫大忙
變快的方法
兒童繪本(2020年5期)2020-04-07 17:46:30
學習方法
用對方法才能瘦
Coco薇(2016年2期)2016-03-22 02:42:52
最有效的簡單方法
山東青年(2016年1期)2016-02-28 14:25:23
四大方法 教你不再“坐以待病”!
Coco薇(2015年1期)2015-08-13 02:47:34
賺錢方法
捕魚
主站蜘蛛池模板: 中文字幕有乳无码| 高潮爽到爆的喷水女主播视频| 天天摸天天操免费播放小视频| 高清不卡毛片| 欧美午夜一区| 伊人精品视频免费在线| 欧美第一页在线| 综合久久久久久久综合网| 亚洲一区色| 国产一级毛片在线| 国产成人一区二区| 色视频国产| 欧美亚洲日韩中文| 亚欧美国产综合| 夜夜高潮夜夜爽国产伦精品| 国产第八页| 热久久国产| 国产一区在线视频观看| 亚洲乱伦视频| 久久一本日韩精品中文字幕屁孩| 精品欧美视频| 国产福利一区视频| 亚洲Av综合日韩精品久久久| 91在线视频福利| 五月天丁香婷婷综合久久| 色香蕉影院| 国产精品区视频中文字幕| 国产自无码视频在线观看| 亚洲综合18p| 成色7777精品在线| a亚洲天堂| 久久亚洲中文字幕精品一区| 亚洲日本韩在线观看| 欧美日韩国产一级| 色哟哟国产精品| 久久窝窝国产精品午夜看片| 亚洲国产精品成人久久综合影院| 高清精品美女在线播放| 依依成人精品无v国产| 国产成人福利在线视老湿机| 波多野结衣AV无码久久一区| 无码高潮喷水专区久久| 香蕉网久久| 99久久无色码中文字幕| 日本伊人色综合网| 国内自拍久第一页| 天堂av综合网| 99re经典视频在线| 黑人巨大精品欧美一区二区区| 中文字幕一区二区视频| 99福利视频导航| 91精品综合| 亚洲美女AV免费一区| 欧美国产视频| V一区无码内射国产| 欧美一级爱操视频| 成年av福利永久免费观看| 久久精品无码中文字幕| 亚洲美女操| 亚洲va在线观看| 中国国产高清免费AV片| 熟女日韩精品2区| 麻豆精品在线播放| 国产精品9| 国产高清又黄又嫩的免费视频网站| 人妻无码中文字幕第一区| 在线亚洲精品福利网址导航| 国产精品视频白浆免费视频| 国产菊爆视频在线观看| 三级欧美在线| 午夜高清国产拍精品| 日韩成人高清无码| 日韩一区二区在线电影| 免费一极毛片| 国产精品视频观看裸模| 亚洲国产91人成在线| 欧美天堂久久| 国产精品久久久久婷婷五月| 国产AV毛片| 日本a∨在线观看| 国产精品毛片在线直播完整版| 亚洲成av人无码综合在线观看|