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
賺錢方法
捕魚
主站蜘蛛池模板: 亚洲日韩精品无码专区97| 色综合久久久久8天国| 国产成人亚洲精品蜜芽影院| 国产色图在线观看| 99在线视频精品| 欧洲熟妇精品视频| 亚洲中文字幕在线精品一区| 欧美国产综合视频| 9999在线视频| 欧美成人精品在线| 欧美在线一二区| 99爱视频精品免视看| 国产精品女主播| 国内嫩模私拍精品视频| 亚洲AV免费一区二区三区| 久久婷婷六月| 成年人视频一区二区| 在线看片中文字幕| 在线精品视频成人网| 呦女亚洲一区精品| 日韩欧美中文在线| 91成人在线免费视频| 国产精品一区在线观看你懂的| 美女一区二区在线观看| 色综合久久88| 亚洲精品午夜无码电影网| 无码专区在线观看| 国产高清国内精品福利| 色偷偷综合网| 中文字幕 日韩 欧美| 欧美性色综合网| 欧洲极品无码一区二区三区| 99久久精彩视频| 亚洲高清中文字幕在线看不卡| 无码一区18禁| 青草91视频免费观看| 国产AV毛片| 亚洲欧洲免费视频| 又黄又爽视频好爽视频| 国产精品美女免费视频大全 | 青青草原国产一区二区| 秋霞午夜国产精品成人片| 亚洲福利视频一区二区| 国产嫩草在线观看| 国产一区自拍视频| 精品91自产拍在线| 5388国产亚洲欧美在线观看| 国产产在线精品亚洲aavv| 日韩无码黄色| 久久96热在精品国产高清| 亚洲色图综合在线| 一本大道AV人久久综合| 国产小视频在线高清播放| 日韩大片免费观看视频播放| 在线免费观看AV| 国产丝袜丝视频在线观看| 六月婷婷激情综合| 日韩欧美国产区| 一级一毛片a级毛片| 亚洲精品视频在线观看视频| 国产交换配偶在线视频| 日韩天堂视频| 狠狠色香婷婷久久亚洲精品| 美臀人妻中出中文字幕在线| 国产成人亚洲精品色欲AV| 亚洲免费成人网| 四虎在线高清无码| 久久久久亚洲AV成人人电影软件| 亚洲天堂区| 国产亚洲一区二区三区在线| 国产Av无码精品色午夜| 国产精品视屏| 国产在线视频自拍| 亚洲天堂首页| 国产成人一二三| 久久香蕉国产线看精品| 五月天在线网站| 国产在线无码一区二区三区| 国产精品美女自慰喷水| 欧美午夜在线观看| 久久中文电影| 免费毛片全部不收费的|