王明新
(國家新聞出版廣電總局二0二二臺,新疆 喀什 844000)
隨著可編程邏輯器件技術的大力推廣,FPGA系統的實時控制變得格外重要,研究PC機與FPGA之間的通信系統已成為重要課題。通過高級數據鏈路控制協議使RS485總線作為FPGA信息系統與PC之間的連接,實現信息傳輸,是極為實用且常用的方案。FPGA是一種可進行反復編程的門陣列系統,通過硬件處理技術迅速而靈活地完成設定的工作,同時經過多路性處理對信息實時預測仿真,是一類非常實用的嵌入式系統,是專業集成電路領域中獨具代表性的半定制電路,它不僅能夠有效解決傳統定制電路存在的缺陷,同時也規避了原始編程器件電路數有限的問題。在RS485總線的連接下PC機能控制FPGA信息系統的運行,對實現系統的通信可控性有很大的作用。以下首先概述了基于RS485總線控制的FPGA的信息系統結構,然后介紹了信息系統結構中重要的模塊設計方案,最后提出了實現RS485總線與FPGA通信系統間的連接的途徑。
RS485總線的控制芯片由A通道、B通道、中斷控制單元、儲存器管理單元、工作狀態寄存器、ISA總線接口電路以及片內端口RAM等七個部分組成。其中,A通道與B通道從材料及構成上均完全相同,都主要包括負責發送和接受數據的兩個模塊部分,能夠有效保證全雙工通訊的穩定有效性。存儲器中包含一個通道管理單元,能夠保證兩通道有序共享雙端口RAM而不至于產生數據交叉,發生沖突。在完成發送或接受任務時,A通道和B通道均可中斷,中斷控制單元在這時起到了管理四個中斷源的作用,中斷控制單元按照中斷情況發生的先后順序在中斷狀態寄存器中記錄兩通道發送和接收任務的完成情況,同時提出中斷申請。而FPGA接口內的RAM模塊可以使系統的發送通道、接收通道以及CPU之間的共享端實現雙端口RAM。地址譯碼、讀寫控制及命令譯碼等邏輯線路組成的ISA總線接口電路在節省地址空間的情況下,采用CPU操作將地址指向命令模式寄存器中,最后向狀態寄存器傳輸信息。這個系統的運轉大大簡化了系統的規模以及系統接口關系,使印刷線路板空間得到大幅節省,有效降低了系統價格。
系統中采用RS485總線型網絡電路是因其串行總線標準適宜差分平衡的方式完成信號傳輸,能夠很好地抵抗外界干擾,并同時允許一對雙絞線上的發送器啟動兩個甚至兩個以上負載設備,適合數據傳輸之用。相較RS232總線來說,RS485總線有其顯著的優勢,其通信距離相對來說比較遠,一般可以達到幾百、幾千米以上,同時能夠實現多點通信,在同一范圍內能夠構建小型化的局域網,具備較強的實踐應用價值。且其信號抗干擾能力同樣優于傳統的RS232總線,傳輸穩定性極強,因此,在信息系統設計中一般采用RS485現場總線,但需要注意的是,為盡最大限度保障網絡系統傳輸的穩定性,需在RS485網絡傳輸線的初始端和末尾端應該各接一個一百二十歐的匹配電阻。
RS485是一類標準化總線控制器,在對通信要求較高的傳輸設計中,一般采用串行總線標準,選用平衡發送及差分接收的方式,有其較強的靈敏度與抗干擾能力,內部常置多達26個命令模塊,每個命令均利用FO地址模塊與,每個地址中的數據均記錄了工作模式及工作方式的相關信息。控制器之所以采用四位地址線,也正是為了減少內部空間占用,這四位地址線分別為A3-A0。在有效控制了FO端口地址的前提下,進行寫操作時,CPU向U0地址中寫入的數據是具有一定指向性,直接指向命令及模式寄存器,進行讀操作時,數據則指向狀態寄存器。當需要寫入十二或十六位寄存器時,因其數據總線為八位,所以要將數據連續兩次寫入同一端口,并按照高位字節先寫低位字節后寫的標準進行。
RS485總線控制器中,全雙工通道共有兩條,且其基本材料、結構等均完全相同,這兩條通道編號分別為A和B,其基本結構均包括一個發送模塊以及一個接受模塊,模塊的工作是同時并行進行的,這能夠保證數據傳輸的速率及精度。
接收模塊的工作依次為7EH識別、零碼剔除、并串轉換、地址識別、CRC校驗及無效幀檢測。CPU發出接受命令后,立即傳輸到總線的接收模塊,首先由標志字節識別模塊對所接受的字節進行識別檢測工作,如果在檢測過程中發現7EH標志,即允許接收,與此同時,零碼剔除模塊等準備進入工作狀態。所接收的數據流在零碼剔除模塊的刪除零位處理之后,傳輸到數據位移寄存器中,數據位移寄存器中的串并轉換系統對接收到的數據進行串并轉換工作,然后傳輸到CRC位移寄存器中完成CRC校驗,校驗完畢后,會形成遺傳整型字節,被傳輸至數據緩沖區,接下來,地址識別模塊將對這些數據進行識別。地址識別模塊根據接收數據的地址字段與本站設置值相比較,如果地址信息不符合要求,所接收數據的允許接收標志將被清除,同時完成接收模塊的復位,并執行下一輪搜索,如果地址信息符合標準,那么數據經過處理后將存入雙端口RAM中。
發送模塊的工作順序有所差別,首先開始工作的是時鐘生成子模塊,隨后寄存器接受數據及CRC信息,進行相關處理,在這之后還會進行零碼插入、控制信息生成、時鐘信息傳輸、并串轉換等一系列工作。波特率寄存器的設置情況能夠影響時鐘生成模塊分頻工作時鐘,產生的本路根據高級數據鏈路控制協議完成數據發送時鐘。控制模塊會在初始化后標志字節7EH,并鎖入數據緩存器中。在接收到CPU發出的“發送”命令時,數據緩存器中的數據將被寫入到數據位移寄存器中,同時申請存儲器管理單位提供的數據并啟動發送過程。與此同時,計數有序進行,保證數據不會出現移位,其工作原理主要是:CRC移位寄存器對發送的數據進行逐位的核對、計算,并將結果存儲在字節計數器中,當所存儲的數值達到設定值后,停止其他數據生成,將CRC計算結果附加載發送的數據信號末位,同步進行傳輸。最后,控制模塊還會在數據緩存器之中添加一個幀同步標志字節,并根據中斷允許設置決定是否發出中斷請求,完成一幀數據的發送。
系統中的數據,無論是即將要發送的部分,還是已經被接受的部分,會被暫時存放在雙端口RAM中,此RAM是RS485總線和FPGA交換數據的唯一橋梁,由上面的分析不難看出,A、B兩個通道會共享這個橋梁,但按照系統要求,兩通道所占用的空間大小顯然會有所區別,這是由發送數據或接受數據的起始地址和數據長度來決定。如果A通道和B通道同時使用存儲器進行存取數據工作很容易發生對RS485總線的回路競爭,要避免這種情況就要使用DMA控制器,進行RAM空間管理。存儲器管理單元能夠記住當前每個通道存取數據時使用的RAM地址,對兩通道對片內存儲器的存取請求進行循環查詢,合理調節數據。
在復位發生后,雙端口RAM會出現一段空閑時間,如果通道中有存儲器發出請求,那么片內的RAM控制器會進入下一個狀態,RAM地址在這一過程中,被準確傳遞至總線,隨機進行數據的讀與寫操作。接收到復位申請信號,地址計數器又會歸零。A通道和B通道可能在這一瞬間均處于全雙工狀態,波特率為10M,那么在一個字節的傳輸時間段內,A通道和B通道將各自訪問存儲器一次,共為四次。控制器對RAM的數據的存取時間在一定范圍內,每存取一個字節需要經過四個狀態,那么所花費的時間則為十分鐘,如果控制器的工作始終保持在四十兆赫,那么時間為0.1微秒,滿足我們的需求。
數據傳輸通道在完成數據傳輸任務后都會產生中斷申請,這可能先后產生4個中斷請求,于是,中斷控制單元就會對中斷源進行管理工作。中斷控制單元判斷中斷是否合理,主要是根據通道的狀態和工作模式來進行的,如果通道內的任務處于完成狀態且控制單元允許中斷發生,那么中斷申請和通道狀態將會被鎖存,中斷狀態寄存器中會產生相應的請求,這個請求中對通道和中斷類型及中斷狀態都有相對應的描述。若兩通道中同時產生中斷請求,A通道的中斷請求將先于B通道鎖存,中斷狀態儲存器在CPU讀取操作后會與相應通道的狀態儲存器同時自動復位,在中斷存儲器的中斷請求得到響應后,中斷狀態會被鎖存,另一通道的中斷請求會同這一過程一樣完成。
用標準硬件描述語言在電阻晶體管邏輯電路下,采用自上而下的方法設計,能夠保證其運行狀態。在基于RS485的PC機與FPGA通信系統的設計中,通過仿真和優化后發現其資源利用率達到百分之八十。而聯機通信測試其中斷模式和查詢模式可以證實并不會出現數據錯誤。人為造成的異常情況發生時,通信控制器會正常報告出錯誤狀態。
在實際測試中,我們主要應用VHDL語言進行編程,采用的主要軟件系統為ISE6.0,其自帶軟件模擬RAM模塊,安裝于PC段,用于進行控制信息發送。采用的目標FPGA件為Virtex XCV50。實測顯示,聯機狀態下,無論是中斷還是查詢,5萬次通訊測試下,幀準確、系統穩定率為100%,為了更進一步證實其穩定性,我們還進行了強電干擾實驗,以手電鉆置于RS485總線附近,再行5萬次通訊測試,出現且僅出現1次通訊測試,完全能滿足目前苛刻環境的要求,由此可見,基于RS485總線的PC機與FPGA通信系統有其較強的抗干擾優勢、通訊穩定性極強,能夠打破通訊環境的限制,同時實用性較強,傳輸所消耗的功率相對較小,系統芯片的穩定性十分強,能夠持續運作,具有極高的實用價值。
在電阻晶體管邏輯電路下,用標準硬件描述語言設計的高級數據鏈路控制協議為RS485總線與FPGA通信系統的功能性連接提供了有效的控制。在這個接口電路中存在獨立的雙工通道,有四千字節的雙接口RAM,通過查詢和中斷這兩種方式有效控制數據的流動,且該系統能夠自動識別7EH標志,并根據系統預先設定值識別地址位數,同時還能自動插入或刪除零碼。另外,在數據溢出或發生其他異常時,系統能自動終止并檢測錯誤,在控制端口以FO方式與CPU相接,內部的雙端口RAM通過MEM方式與CPU相接,系統內部設置有的波特率發生器并能決定數據傳輸的速率。
在基于RS485總線的PC機與FPGA通信系統的設計中,接口芯片能夠穩定在四十兆赫的狀態下工作,而其中各通道的波特率最高能夠達到十兆赫,其操作過程簡單,所消耗的功率較小且可靠性很高,具有很高的使用價值。
[1]何青,胡漢春,代剛,等.基于RS-485總線的PC機與單片機串行通訊仿真系統的設計[J].機電產品開發與創新,2011(01).
[2]胡中功,黃波,江維.基于RS485總線的PC與單片機多機通信系統設計[J].自動化與儀器儀表,2012(01).
[3]王飛,吳茂.基于RS485的PC與智能儀表通信系統設計[J].微計算機信息,2009(32).
[4]彭宏偉,邊志遠,李翠霞.基于RS-485總線的PC機與單片機串行通信系統的設計與實現[J].大地測量與地球動力學,2009(S1).
[5]耿昕.基于FPGA的通信信號處理的設計與實現[D].南京理工大學,2013.
[6]楊陽.VHF頻段高速通信系統設計及接收機FPGA實現[D].北京郵電大學,2013.
[7]孟紹良,張海柱,劉述防,等.基于FPGA的直序擴頻通信系統設計[J].哈爾濱理工大學學報,2012(06).
[8]梁仕文,鄧洪波,梁志明,等.基于FPGA的通信原理實驗平臺研制與應用[J].實驗室科學,2013(03).
[9]徐運武,周澤湘.基于FPGA LPM多功能信號發生器設計[J].電子設計工程,2011(15).