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