• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于FPGA的多路機載總線收發(fā)器的設計與實現(xiàn)

      2014-01-16 09:21:54梁鵬程孟凡鵬
      電子設計工程 2014年5期
      關鍵詞:波特率PC機串口

      梁鵬程,趙 平,孟凡鵬

      (西北工業(yè)大學 陜西 西安 710129)

      在航空電子綜合化系統(tǒng)中,快速、有效的數(shù)據(jù)傳輸對整個航空電子系統(tǒng)的性能有很大的影響,因此數(shù)據(jù)總線被稱為現(xiàn)代航空電子系統(tǒng)的骨架,利用FPGA技術設計集成多路ARINC429[1]和422[4]通道的通信芯片,可以有效的提高數(shù)據(jù)通信模塊的處理能力和集成度,降低成本,本文以verilog語言為基礎,通過ISE編程,modelsim仿真,仿真無誤后綜合實現(xiàn),用impact將bit文件燒寫到FPGA中,進行硬件調試,并用chipscope進行分析,為了更加方便的進行調試,以workbench為平臺建立驅動。關于429協(xié)議和422協(xié)議已經非常成熟,因此本文主要從硬件調試的角度介紹多路機載總線收發(fā)器的實現(xiàn)。

      1 FPGA邏輯設計原理

      很多情況下,我們需要一塊板子既具有429[2-3]功能又具有422數(shù)據(jù)傳輸功能,因此我們將429邏輯和422邏輯[6]建立在一個模塊下,分別給429邏輯和422邏輯分配不同的地址空間,通過不同的地址空間控制429和422協(xié)議的片選信號,同時LOCALBUS數(shù)據(jù)是雙向數(shù)據(jù),429和422數(shù)據(jù)是單向數(shù)據(jù),因此需要加一個雙向緩沖器,實現(xiàn)單向數(shù)據(jù)和雙向數(shù)據(jù)之間的轉換。協(xié)議部分已經非常成熟,在此不做贅述。

      2 原型驗證板驗證

      2.1 原型驗證板原理

      我們所用的電路板名稱為:MFD-GPM1018。設計原理如圖1:CPU控制FPGA數(shù)據(jù)的寫入和讀出,F(xiàn)PGA通過429或者422接收到的數(shù)據(jù)按照相應的協(xié)議轉換之后由cpu讀出,cpu通過Localbus提供FPGA要發(fā)送的數(shù)據(jù)并配置寄存器。

      CPU讀出來的數(shù)據(jù)通過LBC-1-AD00——07到鎖存器把地址和數(shù)據(jù)按一定的控制規(guī)則轉換為單獨的地址信號和數(shù)據(jù)信號。LBC-1-AD00——07表示某時刻是地址信號某時刻是數(shù)據(jù)信號。ROM存儲cpu運行過程中的中間數(shù)據(jù)程。H1-8445電平轉換,將429數(shù)據(jù)電平由bus總線所要求的電平轉換為FPGA需要的3.3V。ASP105885-01是連接器將429、422數(shù)據(jù)連接到GPM調試版上,進行硬件調試。MAX3362將串行數(shù)據(jù)轉換為差分的形式。M25P16-AVMN6T是FPGA的配置芯片,通過JTAG接口將bit文件加載到FPGA中這樣配置之后,下次上電之后就可以直接將bit文件load到FPGA中而不需重新加載。

      2.2 硬件調試過程

      在Workbench 開發(fā)平臺vxworks[3]操作系統(tǒng)下,首先連接串口網(wǎng)口從調試板到PC機,新建超級終端,選擇通信速率為115200,其他都為默認值,網(wǎng)口下載操作系統(tǒng)到cpu中,串口用來控制cpu,串口網(wǎng)口連接好后,連接JTAG接口,(JTAG連接線連USB下載線連到PC機),電源電壓設置為28V,然后上電,通過調試板上的電壓轉換器轉換為5V供FPGA板子使用,上電之后通過IMPACT下載.bit文件到FPGA中,這種配置類型斷電即丟失,下次上電后需要重新下載,同時打開超級終端,建立串口連接,此時vxworks操作系統(tǒng)將會自動啟動,在此操作系統(tǒng)下輸入一些命令控制cpu,常用的就是讀(d)和寫(m)命令,并且打開chipscope,來進行調試。

      圖1 硬件原理圖Fig. 1 Hardware s

      為了充分驗證邏輯功能的正確性:我們分別進行內回環(huán)測試,也就是在邏輯內部實現(xiàn)自收自發(fā),然后進行外回環(huán)測試,將板子上發(fā)送接口與接收接口連接起來,實現(xiàn)回環(huán)收發(fā),測試都無誤后進行外部測試,對429協(xié)議采用429的仿真卡進行測試,對422協(xié)議采用串口調試工具進行測試。

      2.2.1 429測試

      429 的仿真卡發(fā)送429差分數(shù)據(jù),通過FPGA接收,判斷接收到的數(shù)據(jù)是否是發(fā)送的數(shù)據(jù),以此來檢測接收邏輯的正確性。

      429 仿真卡BUStools /ARINC v3.20仿真驗證:

      1)TX setup :設置發(fā)送通道,波特率、奇偶校驗

      2)DEFINE :ADD new message添加發(fā)送通道,我們需要TXD1、TXD2,設置發(fā)送數(shù)據(jù)參數(shù):data——BIN設置32—9位數(shù)據(jù),前8位數(shù)據(jù)通過Label設置,Label是一個233數(shù)據(jù)類型,2指的是2位,比如設置為256,則為10101110,映射到發(fā)送的數(shù)據(jù)為0111 0101,即為0x75,最高位為奇偶校驗位,在發(fā)送過程中自動產生。

      圖2 通過串口調試工具測試422邏輯Fig. 2 Test 422 logic through serial debugging tool

      3)設置完成后,點擊run,停止發(fā)送的話點擊stop。

      通過超級終端讀出接收到的數(shù)據(jù)與發(fā)送的數(shù)據(jù)一致,測試正確。

      2.2.2 通過串口調試工具進行422測試

      422 的發(fā)送端口和接收端口通過232連到PC機上,PC機通過串口調試工具發(fā)送一串數(shù)據(jù),經過232轉422接收這些數(shù)據(jù),接收到的數(shù)據(jù)在超級終端中打印,檢測接收是否正確,類似的,調用驅動422發(fā)送一串數(shù)據(jù),通過232到PC機通過串口調試工具看到發(fā)送出來的數(shù)據(jù),檢測發(fā)送的數(shù)據(jù)是否正確。調試過程中比較關鍵的一點就是發(fā)送和接收端口波特率要設置一致。

      如圖2所示,波特率設置為115 200,奇校驗,數(shù)據(jù)位8位,停止位1位,422發(fā)送數(shù)據(jù),發(fā)送出來的數(shù)據(jù)經232顯示到PC機串口接收窗口中,如下圖接收框顯示數(shù)據(jù)。

      如圖2所示,通過串口調試工具,手動發(fā)送數(shù)據(jù)1、2、3、4、5、6、7、8、9、10,經232轉422轉換為422數(shù)據(jù)形式,再經fpga處理。則在超級終端上顯示出接收到的422數(shù)據(jù)個數(shù)以及數(shù)據(jù)。

      2.2.3 驅動程序

      驅動相當于用戶與底層FPGA邏輯的一個接口,里面包含一些初始化函數(shù)、發(fā)送函數(shù)、接收函數(shù),初始化包括配置寄存器,波特率配置,通道選擇,奇偶校驗設置等,最后根據(jù)需求直接寫一個測試函數(shù),那么在硬件測試時先通過workbench[5]進行調試,調試無誤后,通過wftp下載到cpu中,然后通過超級終端直接調用測試函數(shù)即可,就不需要之前手動單步通過寫、讀操作來進行配置和測試了。

      429與422通過檢測狀態(tài)位來控制發(fā)送接收的驅動測試流程如圖3所示。在上述測試過程中,發(fā)送一個數(shù)據(jù)則接收一個數(shù)據(jù),僅僅檢測到了接收與發(fā)送功能上的正確性??紤]到在應用過程中,并非發(fā)送一個數(shù)據(jù)接收完再發(fā)送一個數(shù)據(jù),比如發(fā)送若干個數(shù)據(jù)之后,此時才開始進行接收,那么在這種情況下,接收fifo緩存中將存在若干個數(shù)據(jù),因此引入fifo的data_count計數(shù),表示此時緩沖中儲存有多少個數(shù)據(jù),然后依次把這些數(shù)據(jù)給讀出來,這種情況下,也存在溢出的可能性,因此引出溢出狀態(tài)位。

      圖3 檢測狀態(tài)位來控制發(fā)送接收的驅動測試流程Fig. 3 Driving test process by detecting status bit to control the transmission and reception

      圖4 引入fifo計數(shù)和溢出狀態(tài)檢測的驅動測試流程Fig. 4 Driving test process by introducing fifo overflow state detection and counts

      改進后引入fifo計數(shù)和溢出狀態(tài)檢測的驅動測試流程如圖4所示。

      3 調試過程中遇到的關鍵問題及分析

      調用驅動對422進行外回環(huán)測試0通道發(fā)0通道收1通道發(fā)1通道收,這時出現(xiàn)問題:當發(fā)送多個數(shù)據(jù)接收多個數(shù)據(jù),或者多次測試時會出現(xiàn)接收數(shù)據(jù)錯誤或者未接收到數(shù)據(jù)的現(xiàn)象,但是通過超級終端單步測試確是是正確的。用chipscope[7]抓信號,發(fā)現(xiàn)接收數(shù)據(jù)時,會出現(xiàn)接收完數(shù)據(jù)后,fifo非空的狀態(tài),正常應是空狀態(tài),這樣就把之前的數(shù)據(jù)再次接收了一遍,抓到的錯誤如圖5,其中test是我們?yōu)榱藴y試方便加的一個參數(shù)用來檢測DAT變化,因為DAT是雙向數(shù)據(jù)無法抓到。

      圖5 test數(shù)據(jù)出錯Fig. 5 Test data error

      分析原因是由于發(fā)送的數(shù)據(jù)被接收后,再次發(fā)送數(shù)據(jù)前檢測狀態(tài)位未來得及告便,導致錯誤,于是在檢測狀態(tài)位后面加延遲taskdelay(1),測試正確,但是與之而來的問題是這樣大大影響了波特率,因為1代表1/60ms,而波特率是ns級的,于是用一個讀寄存器操作來代替這個延遲,讀一個寄存器狀態(tài)需要的時間大約為us級,具有一定的延時但性能又優(yōu)于taskdelay,并且讀寄存器也不會影響其他的正常功能,至此以為問題解決了。但是后來為了完善功能,在邏輯中添加count,修改驅動進行測試,發(fā)現(xiàn)打印到超級終端上的fifo計數(shù)不正確,發(fā)送一個數(shù)計數(shù)卻是31,繼續(xù)發(fā)送一個逐個計數(shù)為61,91….用chipscope抓信號發(fā)現(xiàn)在tf_push有效時(tf_push控制發(fā)送fifo的寫信號),同一數(shù)據(jù)輸入到fifo了31次,根據(jù)邏輯tf_push在寫信號有效以及地址是發(fā)送緩沖地址且此時是正常工作狀態(tài)時就有效,那么根據(jù)chipscope抓到的,發(fā)現(xiàn)在一個地址有效,寫信號有效的周期內,tf_push持續(xù)有效,持續(xù)計數(shù)就說明此時有效了多個時鐘周期,每個時鐘周期數(shù)據(jù)寫入到發(fā)送fifo中一次,但是我們期望的是寫信號有效地址有效一個周期內,數(shù)據(jù)只寫入一次,因此我們修改邏輯,使tf_push有效的周期縮短為一個時鐘周期,同時根據(jù)這個問題,也判斷了之前接收數(shù)據(jù)總出錯,出現(xiàn)一個數(shù)據(jù)接收兩次的現(xiàn)象,需要加適當?shù)难訒r才不會出錯的原因正是如此。 明白這些之后,我們又把驅動中檢測狀態(tài)位與接收之間的延時去掉,再次測試,這次果如預期的一樣不再出錯,至此才找到了根本原因。對于這個問題Modelsim是發(fā)現(xiàn)不了的,因為Modelsim仿真時輸入激勵比如寫信號wr_n有效設置的就是一個時鐘周期,因此chipscope能夠發(fā)現(xiàn)modelsim發(fā)現(xiàn)不了的問題,這也就是硬件調試的功效。

      圖6 修改前tf_push發(fā)送寫信號Fig. 6 Transmit write signal tf_push before amendment

      修改前tf_push如圖6所示。

      修改后的tf_push,持續(xù)一個時鐘周期,如圖7所示。

      圖7 修后tf_push發(fā)送寫信號Fig. 7 Transmit write signal tf_push aftere amendment

      針對這個問題,我們總結寫底層邏輯時控制讀信號和寫信號使其持續(xù)時間為一個時鐘周期是非常有必要的,可以有效避免數(shù)據(jù)重復讀入和寫出。

      4 結束語

      文中以FPGA為基礎,主要介紹了多路422協(xié)議429協(xié)議總線完整的FPGA硬件調試,涉及硬件原理 、調試過程、調試中用到的工具、驅動程序以及對調試過程中遇到問題的分析方法,經過這一系列的調試無誤,此部分將可以接受檢驗,實現(xiàn)穩(wěn)定的數(shù)據(jù)通訊功能。最后將邏輯固話到FPGA中,上電自啟動,自此我們完成了完善的多路機載總線收發(fā)器的設計和實現(xiàn)。

      [1] 張新.基于FPGA的多通道ARINC429通信芯片設計[J].航空電子技術,2008,39(1):46-52.ZHANG Xin. Design of Multi-Channel ARINC 429 Communication Chip Based on FPGA[J].Avionics Technology,2008,39(1):46-52.

      [2] 力榕.航空用ARINC429總線收發(fā)系統(tǒng)設計與實現(xiàn)[J].計算機測量與控制,2005,13(9):970-972.LI Rong. Design and Implementation of a arinc429 Bus Transmit-receive System[J].Computer Measurement & control,2005,13(9):970-972.

      [3] Altera Corporation. FLEX 10K Embedded Programmable Logic Device Family Data Sheet[R]. September 2003

      [4] 李精華.基于VHDL的串行通信接口UART設計[J].桂林航天工業(yè)學院學報,2011(2):127-128.LI Jing-hua. Design of serial communication interface UART based on FPGA[J].Journal of Guilin Colleage of Aerospace technology, 2011(2):127-128.

      [5] 段培賢.基于vxworks的網(wǎng)絡與串口通信裝換[J].魚雷技術,2009,17(6):58-61.DUAN Pei-xian.Communication conversion between UART and ethernet based on VxWorks[J].Torpedo Technology,2009,17(6):58-61.

      [6] 郭樹濤.基于FPGA的串口通訊設計[J].北京電子科技學院學報,2006,14(2):74-78.GUO Shu-tao. Serial communication based on FPGA[J].journal of Beijing Electronic Serial Science and Technology Institute,2006,14(2):74-78.

      [7] 萬翔.ChipScope Pro在FPGA調試中的應用[J].計算機與網(wǎng)絡,2005(21):58-59.WAN Xiang. The application of ChipScope Pro in FPGA debug[J].Computer & Network, 2005(21):58-59.

      猜你喜歡
      波特率PC機串口
      淺談AB PLC串口跟RFID傳感器的通訊應用
      CAN 總線波特率自適應程序設計
      智能制造(2020年5期)2020-07-03 06:24:00
      基于FPGA的異步串行通信波特率容錯設計
      電子測試(2018年7期)2018-05-16 06:27:18
      基于PC機與單片機的多機通信技術及抗干擾方法
      基于三菱FXPLC的感應淬火機床與PC機的串行通信實現(xiàn)
      VC.NET下實現(xiàn)dsPIC單片機與PC機的通信
      電子制作(2017年23期)2017-02-02 07:16:47
      USB接口的多串口數(shù)據(jù)并行接收方法探索
      基于藍牙串口適配器的GPS接收機與AutoCAD的實時無線通信
      地礦測繪(2015年3期)2015-12-22 06:27:26
      基于并行控制的FPGA多串口拓展實現(xiàn)
      C*Core芯片SCI串口波特率容限優(yōu)化
      渭源县| 梧州市| 达拉特旗| 闽清县| 枣庄市| 仲巴县| 伊通| 博客| 阜宁县| 古蔺县| 敦煌市| 焉耆| 晴隆县| 资兴市| 伽师县| 静宁县| 克拉玛依市| 鹿泉市| 肥乡县| 曲阳县| 邯郸县| 历史| 志丹县| 象州县| 安福县| 泗阳县| 来安县| 黑龙江省| 栾城县| 湖南省| 台北县| 凌云县| 东丽区| 会东县| 张家界市| 义乌市| 岐山县| 项城市| 黄大仙区| 瓮安县| 北辰区|