• 
    

    
    

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

      ?

      基于FPGA的CPCI-CAN通信卡電路設(shè)計(jì)

      2019-01-12 02:43:34戴宏睿李文魁阮嘉偉
      聲學(xué)與電子工程 2018年4期
      關(guān)鍵詞:寄存器上位總線

      戴宏睿李文魁阮嘉偉

      (1.海軍工程大學(xué)電氣工程學(xué)院,武漢,430033;2.東部戰(zhàn)區(qū)海軍保障部,寧波,315100)

      20世紀(jì)90年代發(fā)展起來(lái)的PCI總線作為計(jì)算機(jī)的行業(yè)標(biāo)準(zhǔn),具有支持多種處理器、優(yōu)異的并行操作能力、即插即用等特點(diǎn)[1],但在工業(yè)控制、軍工等可靠性實(shí)時(shí)性要求較高的場(chǎng)所,暴露出連接不可靠、抗干擾能力差、抗震性差等問(wèn)題。緊湊型PCI總線(Compact PCI)是PCI總線的電氣和軟件標(biāo)準(zhǔn)與歐式板卡機(jī)械結(jié)構(gòu)的結(jié)合。電氣接口上增加了一部分故障檢測(cè)、系統(tǒng)管理、熱插拔等總線信號(hào);機(jī)械結(jié)構(gòu)上摒棄了原有的金手指連接方式,采用高密度、氣密性針孔連接器,連接可靠。

      控制器局域網(wǎng)(Controller Area Network,CAN)是20世紀(jì)90年代發(fā)展起來(lái)的現(xiàn)場(chǎng)串行總線。相比于RS485等傳統(tǒng)總線,CAN總線采用不分主從的多主方式,通信實(shí)時(shí)性高;傳輸距離更遠(yuǎn)、傳輸速率更快;采用非破壞性總線仲裁技術(shù),抗電磁干擾性好[2];使用短幀數(shù)據(jù)結(jié)構(gòu),容錯(cuò)性高。本文設(shè)計(jì)旨在開(kāi)發(fā)基于CPCI總線的CAN通信卡,滿(mǎn)足工業(yè)、軍事應(yīng)用環(huán)境下的自動(dòng)化測(cè)控系統(tǒng)應(yīng)用需要。

      1 總體設(shè)計(jì)

      擬設(shè)計(jì)的CPCI-CAN通信卡電路組成如圖1所示,主要參數(shù)為:3U規(guī)格(100 mm×160 mm),2通道隔離CAN接口,DB9接口,支持CAN 2.0B規(guī)范,最高波特率1 Mbps,電氣隔離DC 2 500 V。電路主要包括CPCI接口電路、主控電路、CAN通信電路。CPCI接口電路負(fù)責(zé)接收上位機(jī)的指令,CAN收發(fā)電路用于執(zhí)行指令,完成數(shù)據(jù)和地址的收發(fā),主控電路負(fù)責(zé)控制數(shù)據(jù)傳輸速率。

      圖1 CPCI-CAN通信卡電路組成框圖

      CPCI接口實(shí)現(xiàn)一般有兩類(lèi)方案[3],一是采用FPGA等可編程邏輯器件實(shí)現(xiàn)接口邏輯,但 CPCI總線協(xié)議及時(shí)序控制復(fù)雜,開(kāi)發(fā)難度較大;二是采用專(zhuān)用接口芯片,此時(shí)不用考慮邏輯的時(shí)序匹配等。本文采用第二種方案,選用PLX Technology公司的PCI9030接口芯片實(shí)現(xiàn),它具有可編程通用I/O,兼容PCI r2.2規(guī)范,并將CPCI總線信號(hào)轉(zhuǎn)化為本地總線信號(hào)。

      主控制器件的選擇有多種方案:或是采用單片機(jī)、ARM、DSP等微處理器;或是采用可編程邏輯器件,如 CPLD和 FPGA等?,F(xiàn)場(chǎng)可編程門(mén)陣列FPGA是在PAL、CPLD基礎(chǔ)上發(fā)展起來(lái)的,相比單片機(jī)、ARM 等微控制器,在不更換硬件條件下可靈活方便地升級(jí),開(kāi)發(fā)時(shí)間短。本設(shè)計(jì)采用FPGA實(shí)現(xiàn)主控電路功能,具體選用 Xilinx公司的XC2S200。它具有低功耗高級(jí)CMOS NOR閃存工藝和適用于標(biāo)準(zhǔn)FPGA配置的JTAG初始化命令。

      CAN總線控制器實(shí)現(xiàn)有多種方案:一是選用集成CAN控制器的微控制器,如單片機(jī)、DSP、ARM等;二是選用獨(dú)立的CAN控制器;三是通過(guò)FPGA等實(shí)現(xiàn)CAN控制器功能[4]。本設(shè)計(jì)選用獨(dú)立CAN控制器SJA1000,可靠性高,開(kāi)發(fā)效率高。

      2 電路設(shè)計(jì)

      2.1 CPCI接口電路

      2.1.1 組成及功能

      CPCI接口電路實(shí)現(xiàn)CPCI總線與本地總線的時(shí)序轉(zhuǎn)換、協(xié)議轉(zhuǎn)換和數(shù)據(jù)傳輸。如圖2所示,CPCI總線接口信號(hào)包括上位機(jī)控制信號(hào)、數(shù)據(jù)地址等,這些信號(hào)經(jīng) PCI9030轉(zhuǎn)換為本地總線信號(hào),進(jìn)入FPGA的 PCI9030接口模塊。其中,MODE引腳置低規(guī)定PCI9030為非復(fù)用模式。

      圖2 PCI9030接口電路圖

      2.1.2 CPCI本地總線信號(hào)

      CPCI本地總線信號(hào)及含義為:ADS#(地址起始)、BLAST#(傳輸結(jié)束),分別控制總線數(shù)據(jù)傳輸開(kāi)始和結(jié)束。本地地址信號(hào)LA[27:2],通過(guò)LBE[3:0]使能。非分時(shí)復(fù)用數(shù)據(jù)總線 LD[31:0]用來(lái)傳遞 32位PCI數(shù)據(jù)。PCI9030作為主設(shè)備時(shí),通過(guò)LW/R#控制本地總線數(shù)據(jù)的寫(xiě)/讀。RD#和 WR#實(shí)現(xiàn)PCI9030的讀輸出和寫(xiě)輸出。本地中斷輸入 LINTi用于觸發(fā)中斷。基地址片選信號(hào) CS0#、CS1#使能本地總線上相應(yīng)設(shè)備,并設(shè)定總線地址范圍。LRESETo#用于在復(fù)位輸入 RST#有效時(shí)輸出本地復(fù)位信號(hào)。

      2.1.3 PCI9030配置電路

      PCI9030的初始化通過(guò)EEPROM配置實(shí)現(xiàn),包括工作模式、數(shù)據(jù)地址空間及設(shè)備ID等。EEPROM選用93LC66B,3.3 V供電。將93LC66B的CS(片選)、SLK(時(shí)鐘)、DO(數(shù)據(jù)輸出)及 DI(數(shù)據(jù)輸入)與PCI9030對(duì)應(yīng)引腳相連。ORG置1選擇16位數(shù)據(jù)傳輸模式。DO需要外接上拉電阻,配合 PCI9030的復(fù)位下拉信號(hào) RST#,上電時(shí)可在 PC端對(duì)EEPROM進(jìn)行在線燒寫(xiě)。

      2.2 FPGA主控電路

      如圖3所示,主控電路由XC2S200 FPGA及其輔助電路組成,包括24 MHz晶振、電平轉(zhuǎn)換(5 V-3.3 V、5 V-2.5 V及FPGA配置電路等。其主要功能為:通過(guò)CPCI總線接收上位機(jī)傳來(lái)的信息,處理后產(chǎn)生各種控制信號(hào),實(shí)現(xiàn) CAN總線和上位機(jī)之間按規(guī)定的時(shí)序邏輯進(jìn)行數(shù)據(jù)傳輸;通過(guò)訪問(wèn) CAN控制器實(shí)現(xiàn)對(duì) CAN總線的控制,并對(duì)兩端總線傳輸過(guò)來(lái)的數(shù)據(jù)進(jìn)行緩沖和鎖存。

      圖3 主控電路

      XC2S200 FPGA是基于RAM的,掉電后程序丟失,配套的需選用專(zhuān)用系統(tǒng)可編程PROMS平臺(tái)閃存存儲(chǔ)FPGA內(nèi)部網(wǎng)表信息,工作時(shí)再將其加載到FPGA上。根據(jù)Xilinx的FPGA配置芯片匹配表,選擇XCF02S作為配置芯片,它具有標(biāo)準(zhǔn)FPGA配置的JTAG初始化命令。配置電路見(jiàn)圖4。

      圖4 XCF02S配置電路

      FPGA配置可采用主串行模式或從串行模式。本設(shè)計(jì)使用FPGA主串行模式。該模式下時(shí),F(xiàn)PGA產(chǎn)生時(shí)鐘由CCLK輸出驅(qū)動(dòng)PROM,將CF#置高,并使能CE#、OE,數(shù)據(jù)將在時(shí)鐘上升沿傳輸。

      FPGA TDO將其內(nèi)部網(wǎng)表信息傳輸至XCF02S。在配置時(shí),控制信號(hào)和同步信號(hào)通過(guò)TDO發(fā)給配置芯片 XCF02S,其收到指令后,通過(guò)數(shù)據(jù)輸出引腳D0輸出網(wǎng)表信息至FPGA的DIN。來(lái)自PC端的程序通過(guò)JTAG TDO直接對(duì)FPGA進(jìn)行燒寫(xiě)。

      2.3 CAN通信電路

      在FPGA控制下,CAN通信電路實(shí)現(xiàn)CAN消息幀的接收和發(fā)送,其中CAN控制器SJA1000和CAN收發(fā)器PCA82C250分別實(shí)現(xiàn)CAN協(xié)議的數(shù)據(jù)鏈路層功能和物理層功能。

      如圖5所示,SJA1000與FPGA的連接信號(hào)主要包括:AD[7:0](數(shù)據(jù)地址復(fù)用);讀寫(xiě)控制信號(hào) RD(讀)、WR (寫(xiě))、ALE(鎖存)、INT#(收發(fā)中斷使能);來(lái)自FPGA的時(shí)鐘輸入XTAL1。

      圖5 CAN通信接口電路圖

      采用雙通道數(shù)字磁隔離器 ADuM1201實(shí)現(xiàn)CAN控制器與收發(fā)器之間的電氣隔離。隔離電路如圖6所示。

      圖6 CAN通信磁隔離電路

      3 邏輯設(shè)計(jì)

      FPGA開(kāi)發(fā)可采用Verilog HDL、VHDL等多種硬件描述語(yǔ)言。Verilog HDL簡(jiǎn)潔易懂,應(yīng)用廣泛。本文在Xilinx ISE10.1集成開(kāi)發(fā)環(huán)境下采用Verilog HDL語(yǔ)言進(jìn)行板卡的FPGA邏輯設(shè)計(jì)。

      3.1 邏輯模塊組成

      FPGA內(nèi)部邏輯可分為PCI9030接口模塊和SJA1000接口模塊兩個(gè)功能模塊。前者包括地址譯碼、數(shù)據(jù)鎖存和數(shù)據(jù)緩沖子模塊,實(shí)現(xiàn)與CPCI總線的數(shù)據(jù)交互;后者包括初始化、發(fā)送控制和接收控制等子模塊,實(shí)現(xiàn)CAN總線數(shù)據(jù)通信。FPGA內(nèi)部邏輯如圖7所示。

      圖7 FPGA內(nèi)部邏輯

      上電后,應(yīng)首先完成SJA1000和PCI9030的初始化。接收數(shù)據(jù)時(shí),SJA1000接口模塊接收來(lái)自CAN總線數(shù)據(jù),通過(guò)接收控制單元進(jìn)入數(shù)據(jù)緩沖區(qū),發(fā)送給PCI9030接口模塊,經(jīng)由PCI9030傳遞到CPCI總線到達(dá)上位機(jī)。發(fā)送數(shù)據(jù)時(shí),上位機(jī)發(fā)送指令,經(jīng)PCI9030接口模塊地址譯碼后,將數(shù)據(jù)地址鎖存。進(jìn)入SJA1000接口模塊數(shù)據(jù)緩沖區(qū),待先前數(shù)據(jù)發(fā)完后,通過(guò)發(fā)送邏輯將數(shù)據(jù)送至SJA1000往外發(fā)送。

      PCI9030接口模塊負(fù)責(zé)將傳來(lái)的上位機(jī)發(fā)送或接收命令信號(hào)進(jìn)行譯碼,使能(CS[2:0])SJA1000的各子模塊和CAN通道選擇(SEL)等。鎖存來(lái)自上位機(jī)或 CAN總線的數(shù)據(jù)地址,并提供接收數(shù)據(jù)時(shí)的緩沖空間。

      3.2 SJA1000接口模塊設(shè)計(jì)

      FPGA要實(shí)現(xiàn)對(duì)SJA1000的控制,主要是對(duì)其寄存器進(jìn)行操作,包括初始化、發(fā)送控制及接收控制。FPGA的控制命令是通過(guò)寫(xiě)使能 WR、讀使能RD、鎖存ALE及片選CS等操作實(shí)現(xiàn)對(duì)寄存器的讀寫(xiě)。

      SJA1000接口模塊的主要工作流程為:接收到發(fā)送或接收指令后,向SJA1000發(fā)送初始化指令,待發(fā)送/接收的數(shù)據(jù)進(jìn)入 SJA1000接口模塊中的發(fā)送接收控制子模塊。同時(shí)各子模塊準(zhǔn)備好后將READY信號(hào)返回上位機(jī)。

      3.2.1 初始化邏輯

      仿真開(kāi)始時(shí),設(shè)置各信號(hào)初值為0。分別對(duì)控制寄存器賦值0x01和0x06,完成置位復(fù)位請(qǐng)求和發(fā)送中斷使能。下面給出部分代碼及含義。

      SJA1000初始化操作時(shí)序如圖8所示。通過(guò)對(duì)總線定時(shí)寄存器(BTR0和 BTR1)賦值來(lái)設(shè)置總線波特率。16 MHz晶振,波特率125 kbps,則BTR0和BTR1分別賦值0x03和0x1c。置位命令寄存器(CDR)設(shè)置CAN模式。

      圖8 CAN控制器初始化仿真

      3.2.2 發(fā)送控制邏輯

      發(fā)送前,檢測(cè)是否有數(shù)據(jù)等待發(fā)送,即讀取SJA1000狀態(tài)寄存器值是否為“0D”,若是,表明發(fā)送緩沖區(qū)空閑。若不滿(mǎn)足,賦值“0E”給控制寄存器,清空發(fā)送緩沖區(qū),再讀取狀態(tài)寄存器值,循環(huán)超過(guò)3次即發(fā)送請(qǐng)求失敗。發(fā)送控制流程如圖9所示。

      圖9 發(fā)送控制流程圖

      部分發(fā)送代碼如下:

      3.2.3 接收控制邏輯

      板卡收到上位機(jī)“接收”指令后,SJA1000接收模塊接收PCI9030接口模塊的發(fā)送使能信號(hào),然后讀SJA1000狀態(tài)寄存器,判斷是否滿(mǎn)足接收條件。若滿(mǎn)足,置位命令寄存器將SJA1000接收緩沖區(qū)的數(shù)據(jù)發(fā)送至PCI9030接口模塊的數(shù)據(jù)緩沖子模塊。接收控制邏輯對(duì)應(yīng)的主要代碼如下:

      4 測(cè)試與結(jié)論

      如圖10所示,將CPCI-CAN通信卡插入神州飛航CPCI 6U工控機(jī)BST71004,通過(guò)USB-CAN轉(zhuǎn)接器與 PC連接。PC端運(yùn)行 CAN測(cè)試軟件CANTest??偩€波特率分別設(shè)置為125 kbps、500 kbps和1 000 kbps,CAN數(shù)據(jù)幀采用擴(kuò)展幀,對(duì)板卡進(jìn)行 CAN數(shù)據(jù)收發(fā)的通信速度測(cè)試和正確性測(cè)試。結(jié)果表明,該CPCI-CAN通信卡能在CPCI總線計(jì)算機(jī)上以最高1 Mbps的波特率實(shí)現(xiàn)CAN總線數(shù)據(jù)的正確傳輸,通信可靠,工作穩(wěn)定。

      圖10 板卡通信測(cè)試連接圖

      本文設(shè)計(jì)的CPCI-CAN通信電路以FPGA為核心進(jìn)行開(kāi)發(fā),消除了傳統(tǒng) CAN通信電路可能存在的信道堵塞等問(wèn)題,具有可靠性高、抗干擾能力強(qiáng)、便于后續(xù)升級(jí)的優(yōu)點(diǎn)。該CPCI-CAN通信卡在工業(yè)及軍事領(lǐng)域具有廣泛的應(yīng)用前景。

      猜你喜歡
      寄存器上位總線
      Lite寄存器模型的設(shè)計(jì)與實(shí)現(xiàn)
      基于PCI Express總線的xHC與FPGA的直接通信
      機(jī)載飛控1553B總線轉(zhuǎn)以太網(wǎng)總線設(shè)計(jì)
      特斯拉 風(fēng)云之老阿姨上位
      車(chē)迷(2018年12期)2018-07-26 00:42:22
      分簇結(jié)構(gòu)向量寄存器分配策略研究*
      “三扶”齊上位 決戰(zhàn)必打贏
      基于ZigBee和VC上位機(jī)的教室智能監(jiān)測(cè)管理系統(tǒng)
      以新思路促推現(xiàn)代農(nóng)業(yè)上位
      多通道ARINC429總線檢查儀
      基于EtherCAT總線的ROV控制系統(tǒng)設(shè)計(jì)
      河南科技(2014年16期)2014-02-27 14:13:22
      府谷县| 光山县| 彰武县| 广西| 乌审旗| 新蔡县| 红桥区| 海门市| 修文县| 辛集市| 灵山县| 高陵县| 关岭| 丽水市| 无棣县| 仁布县| 和静县| 宁蒗| 阳山县| 威远县| 乌鲁木齐县| 晋城| 神池县| 奉贤区| 偃师市| 景德镇市| 绍兴市| 五常市| 德令哈市| 会泽县| 五指山市| 垫江县| 谷城县| 图们市| 沁源县| 内黄县| 防城港市| 东台市| 咸阳市| 利辛县| 三原县|