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

?

FPGA實現RS-422通信的一種改進方法

2012-12-03 02:53燕,
制導與引信 2012年3期
關鍵詞:收發(fā)器管腳差分

衡 燕, 黃 勇

(上海無線電設備研究所,上海200090)

0 引言

FPGA全稱Field Programmable Gate Array(現場可編程門陣列),是目前廣泛采用的一種可編程器件,它的應用不僅使得數字電路系統的設計非常方便,并且大大縮短了系統研制的周期,縮小了數字電路系統的體積和所用芯片的種類與數量[1]。

RS-422是一種單機發(fā)送、多機接收的雙向、平衡傳輸規(guī)范,被命名為TIA/EIA-422-A標準,全稱是“平衡電壓數字接口電路的電氣特性”RS-422標準。RS-422由 RS-232發(fā)展而來,改進了 RS-232通信距離短、速率低的缺點,RS-422定義了一種平衡通信接口,數據信號采用差分傳輸方式,傳輸速率提高到了10 Mb/s,傳輸距離延長到約1 200 m,并允許在一條平衡總線上連接最多10個接收器,即一個主設備,其余為從設備,從設備之間不能通信,所以RS-422支持點對多的雙向通信。

在現代數字信號處理系統中,為了實現RS-422通信,通常采用DSP(數字信號處理器)+FPGA+外圍芯片的電路設計。FPGA是DSP的通信樞紐,DSP若要與RS-422總線上的主設備實現通信,則FPGA將作為DSP與主設備的數據“中轉站”,實現RS-422通信數據緩存。

1 傳統實現方法

傳統的FPGA實現RS-422通信方法采用FPGA+可編程通用異步收發(fā)器+差分線路驅動器的硬件電路。FPGA通過軟件編程接收可編程通用異步收發(fā)器的并行數據或發(fā)送并行數據到可編程通用異步收發(fā)器??删幊掏ㄓ卯惒绞瞻l(fā)器用于將串行數據轉化為并行數據或將并行數據轉化成串行數據。差分線路驅動器分兩種:一種用于發(fā)送,負責接收TTL或COMS輸入電平將其轉換成差分電平發(fā)送給RS-422總線;另一種用于接收,將接收到的RS-422總線的差分電平轉換成TTL或COMS輸出電平。

本文中以實例來說明傳統方法及改進后方法的硬件和軟件實現。在實例中,FPGA采用xilinx公司的virtex系列XQR300,邏輯門數為30萬門;可編程通用異步收發(fā)器采用intersil公司的82C52,差分線路驅動器采用intersil公司的DS26c31和DS26c32。

傳統實現方法硬件采用XQR300+82C52+DS26c31+DS26c32,其硬件電路實現如圖1所示。

圖1 傳統方法的硬件電路實現圖

圖1中,XQR300要與82C52的管腳相連,控制82C52的讀寫、復位、片選與地址譯碼。82C52的串行數據輸入管腳SDI與DS26C32的輸出管腳相連,串行數據輸出管腳SDO與DS26C31的輸入管腳相連,清除發(fā)送管腳CTS與DS26C32的輸出管腳相連。82C52的時鐘來自外部,通過內部的波特率發(fā)生器產生和RS-422通信所采用的波特率同步的時鐘,這樣才能按照RS-422時序要求進行數據的收發(fā)。RXD+、RXD-為總線上主設備發(fā)來的數據,CTS+、CTS-為總線上主設備發(fā)來的清除發(fā)送指令,TXD+、TXD-為FPGA發(fā)送到主設備的數據。

采用圖1的硬件電路實現RS422通信時,在XQR300軟件編程時需要用XQR300控制82C52的復位、讀寫與地址譯碼。

XQR300的軟件接口圖,如圖2所示。

圖2 傳統方法的軟件接口圖

圖2中,dsp_rd、dsp_wr為 DSP的讀寫信號,data_from_dsp為來自DSP的8位并行數據,data_to_dsp為發(fā)送到DSP的8位并行數據,rs_sel為 RS-422通信模塊片選信號。rs422_rd、rs422_wr為FPGA輸出到82C52的讀寫信號,rs_set為FPGA輸出到82C52的復位信號,rs422_cso為FPGA輸出到82C52的片選信號,DR為82C52輸出到FPGA的數據準備好信號,TBRE為82C52輸出到FPGA的發(fā)送緩存器為空信號,RS_DATA_IN為82C52發(fā)送到FPGA的8位并行數據,RS_DATA_OUT為FPGA發(fā)送到82C52的8位并行數據。FPGA在內部開辟了一個發(fā)送FIFO和一個接收FIFO,FIFO1為接收FIFO,接收82C52的并行數據,FIFO2為發(fā)送FIFO,通過82C52發(fā)送數據到主設備。

FIFO(First In First Out)可以儲存、緩沖兩個異步時鐘之間的數據傳輸,是一種先進先出存儲器,具有兩套數據線而無地址線,可在其一端寫操作而在另一端進行讀操作,數據在其中順序移動,從而達到較高的傳輸速度和效率[3]。FIFO模塊圖如圖3所示,RD_EN、WR_EN為讀寫使能信號,CLK為時鐘,DATA為8位并行數據輸入,Q為8位并行數據輸出,EMPTY為FIFO空標志,FULL為FIFO滿標志,DATA_NUM為內部數據數,RST為復位信號。

圖3 FIFO模塊圖

FPGA首先完成82C52的初始化,然后自主地查詢82C52的狀態(tài),在它接收Buffer有數據時將數據讀入并存儲到對應的接收FIFO中;查詢FPGA內部發(fā)送FIFO的狀態(tài),若發(fā)送FIFO有數據且82C52的發(fā)送Buffer為空,將發(fā)送FIFO的數據讀出寫入發(fā)送Buffer。在DSP選通FPGA的RS-422通信模塊時,將FIFO中的數據送入DSP或將DSP的數據寫入FIFO。

2 改進實現方法

傳統的實現方法中,可編程通用異步收發(fā)器一般引腳較多,內含許多輔助模塊和一些輔助功能,在實際使用時往往用不到這些功能,基本的通信只需要接收和發(fā)送兩條信號線,因此若采用專用芯片,將會使電路變得復雜,面積增大,從而導致成本增加,系統的穩(wěn)定性和可靠性降低。

由于FPGA的功能日益強大,開發(fā)周期短,可重復編程等優(yōu)點也越來越明顯,因此可以在芯片上集成可編程通用異步收發(fā)器的功能,從而簡化了電路,提高了可靠性、穩(wěn)定性和靈活性。因此,改進后的方法僅采用FPGA+差分線路驅動器的硬件電路。FPGA直接與差分線路驅動器實現數據交換。

因此,硬件僅采用XQR300+DS26c31+DS26c32,其硬件電路實現圖如圖4所示。

圖4 改進方法的硬件電路實現圖

從圖4可以看出,FPGA只需用兩個IO管腳接收發(fā)送數據,SDI與DS26C32的輸出管腳相連,接收主設備的422串行通信數據,SDO與DS26C31的輸入管腳相連,發(fā)送串行通信數據到主設備。

采用如上硬件電路實現RS-422通信時,在XQR300軟件編程時需在XQR300芯片上集成異步收發(fā)功能模塊,即要在XQR300內部實現數據串并轉換和并串轉換,并在XQR300上實現波特率發(fā)生器的功能。

改進的實現方法的軟件接口圖,如圖5所示。

圖5 改進方法的軟件接口圖

圖中,have_data為接收FIFO的空標志,dsp_rd、dsp_wr為 DSP的讀寫信號,data_from_dsp為來自DSP的8位并行數據,data_to_dsp為發(fā)送到DSP的8位并行數據。rxd為主設備送入的RS-422串行數據,txd為發(fā)送到主設備的串行數據。

FPGA在內部開辟了一個發(fā)送FIFO和一個接收FIFO,FIFO的結構與圖3相同,接收FIFO用于接收主設備的數據,發(fā)送FIFO用于發(fā)送數據到主設備。發(fā)數時DSP先將要發(fā)送的8位并行數據寫入發(fā)送FIFO,然后在內部時序控制下,FPGA將FIFO中的8位并行數據一位一位的發(fā)送出去。當rxd為0,表示數據起始位到達,FIFO準備接收主設備RS-422的數據,采用1個8 bit的寄存器來緩存主設備起始位后的8位數據,若奇偶校驗位正確且停止位正確,則將此數送到接收FIFO中。

DSP周期性查詢接收FIFO的非空標志have_data,空標志為“1”即有數據時,DSP將接收FIFO中的數據讀出;當DSP需要發(fā)送數據到主設備時,DSP將數據寫入對應的發(fā)送FIFO,然后在時鐘的控制下把數據發(fā)送出去。

3 結論

改進方法與傳統方法相比,硬件設計上不需要使用可編程通用異步收發(fā)器,直接通過FPGA的軟件編程實現可編程通用異步收發(fā)器的功能,減少了芯片的使用種類,減小了印制板的面積,節(jié)約了開發(fā)成本;軟件設計上軟件接口簡單,控制信號減少,降低了軟件編程復雜度和難度[2]。

[1] 賈豫東,封吉平.用FPGA實現任意波形發(fā)生器的兩種方法[J].計算機測量與控制,2004,(12):895-897.

[2] 葛紉龍,韓宇龍.嵌入式應用系統設計[M].北京:高等教育出版社,2008.

[3] 張 雪,徐曉蘇,張國龍.基于DSP和FPGA的高速串行通信系統設計[J].艦船電子工程,2009,(5):66-69.

猜你喜歡
收發(fā)器管腳差分
RLW-KdV方程的緊致有限差分格式
符合差分隱私的流數據統計直方圖發(fā)布
面向DSP+FPGA通用處理架構檢測的硬件系統設計
數列與差分
光纖收發(fā)器故障排除經驗談
一種異步FIFO的Read/Write Data Flow Through功能測試方法?
略談如何利用三極管管腳間電阻值判斷其型號及管腳
Virtex5 FPGA GTP_DUAL硬核兩個收發(fā)器獨立使用的實現
相對差分單項測距△DOR
光纖收發(fā)器常見故障原因