999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于FPGA的CAN總線通信接口的設(shè)計

2010-06-05 10:47:58徐木水劉金國
電子設(shè)計工程 2010年10期
關(guān)鍵詞:計算機設(shè)計

徐木水,劉金國

(1.中國科學院 長春光學精密機械與物理研究所 空間光學部,吉林 長春 130033;2.中國科學院 研究生院,北京 100039)

CAN總線是現(xiàn)場總線的一種,因為其成本低、容錯能力強、支持分布式控制、通信速率高等優(yōu)點在汽車、工業(yè)控制、航天等領(lǐng)域得到廣泛應(yīng)用。但是計算機沒有CAN總線接口,為了進行CAN總線的調(diào)試,必須具有專用的適配卡才能實現(xiàn)與計算機的通信。目前常用的CAN轉(zhuǎn)換器是基于單片機設(shè)計的[1-2],一般只適用于單路CAN總線的數(shù)據(jù)轉(zhuǎn)換,可擴展性差。

在小衛(wèi)星相機下位機系統(tǒng)中使用了多種總線,如CAN總線與衛(wèi)星管理計算機的通信;RS422(或RS485)總線與成像單元等下行單元的通信[3]。在進行相機下位機系統(tǒng)地面調(diào)試時,可能需要多種總線轉(zhuǎn)換器。采用FPGA將不同總線協(xié)議轉(zhuǎn)換成USB2.0、RS232等可與計算機直接交換數(shù)據(jù)的協(xié)議,可增強設(shè)計的靈活性,降低設(shè)計的成本和復(fù)雜性,且可實現(xiàn)多路總線的數(shù)據(jù)通信接口[4]。

這里以CAN總線通信接口為例,詳細論述了基于FPGA的CAN總線轉(zhuǎn)換USB接口的設(shè)計方案。

1 系統(tǒng)硬件組成

實現(xiàn)CAN總線與計算機雙向通信接口的核心是FPGA。它首先接收來自CAN總線的數(shù)據(jù),保存在FPGA內(nèi)部設(shè)計的FIFO緩存中,經(jīng)過內(nèi)部數(shù)據(jù)格式的轉(zhuǎn)換后,由USB控制器讀取并上傳給計算機。而總線數(shù)據(jù)注入過程的數(shù)據(jù)流向與之相反。FPGA選用Xilinx公司的Spartan3的XC3S200,系統(tǒng)硬件結(jié)構(gòu)如圖1所示。

1.1 USB接口電路

USB是一種支持即插即用及熱插拔的串行總線,它具有傳輸速率高、連接靈活、使用方便等優(yōu)點。CYPRESS公司的EZ-USB芯片CY7C68013A支持USB2.0協(xié)議,通信可靠,傳輸速率可達480 Mb/s。CY7C68013A工作在SLAVE FIFO異步通信方式下,接口電路如圖2所示。

圖2 CY7C68013A接口電路圖Fig.2 Diagram of CY7C68013A interface circuit

SLAVE FIFO異步寫周期中,高電平需維持70 ns,低電平需維持50 ns,理論最高傳輸速率為8 Mb/s,而CAN總線的最高傳輸速率為1 Mb/s,符合通信要求。端口PA0~PA1用作USB控制器端向FPGA發(fā)送讀寫命令的控制線,由USB固件程序配合上位機端自定義請求代碼產(chǎn)生PA端口的控制信號。另外使用了EEPROM芯片24LC128存放USB固件程序。

1.2 CAN總線接口電路

選用Philips公司的SJA1000作為CAN控制器,采用PCA82C250作為CAN收發(fā)器,并在CAN控制器與收發(fā)器之間使用6N137進行光電隔離,以增強抗干擾能力[3]。將MODE引腳接高電平即SJA1000工作在INTEL模式,RST引腳與復(fù)位芯片MAX706T的RESET引腳相連,進行全局復(fù)位。在FPGA與SJA1000連接時需要使用74LV164245電平轉(zhuǎn)換器完成CAN總線5 V TTL電平向3.3 V FPGA I/O電平的轉(zhuǎn)換。另外,SJA1000的RX1引腳與PCA82C250的VREF引腳相連,使用輸入比較器旁路功能,可減少內(nèi)部延時,增加正常通信的總線長度[5]。具體的接口電路如圖3所示。

圖3 SJA1000接口電路圖Fig.3 Interface circuit diagram of SJA1000

2 FPGA邏輯控制程序

2.1 SJA1000邏輯控制

由于SJA1000地址線與數(shù)據(jù)總線復(fù)用,F(xiàn)PGA不僅僅要產(chǎn)生SJA1000讀寫控制引腳的信號邏輯,還需要模擬單片機等處理器產(chǎn)生對SJA1000的尋址信號,實際上是一個向SJA1000寫地址的過程。根據(jù)SJA1000技術(shù)手冊的時序要求,要完成對SJA1000內(nèi)寄存器的正確讀寫,接口邏輯必須在地址鎖存信號ALE為高電平時將SJA1000的寄存器地址當作數(shù)據(jù)寫入,然后在ALE和片選信號CS為低電平后使能SJA1000的讀寫控制信號(WR或RD)。SJA1000的邏輯控制采用狀態(tài)機的方式完成,狀態(tài)機流程圖如圖4所示。起始態(tài)為IDLE態(tài),當接收到數(shù)據(jù)讀寫等命令時,進入ADDRESS態(tài),向SJA1000寫入相應(yīng)寄存器的地址值。然后根據(jù)命令類型決定下一個態(tài)是寫寄存器狀態(tài)(WR1~WR3)還是讀寄存器狀態(tài)(RD1~RD4)。 以寫寄存器為例,在 WR1 態(tài) ALE、WR、RD等信號置為非有效態(tài),將CS置為有效狀態(tài);在WR2態(tài)ALE、RD為非有效態(tài),而將WR信號置為有效態(tài),在時鐘的下降沿將數(shù)據(jù)寫入寄存器。WR3狀態(tài)保持CS有效,WR信號變?yōu)闊o效,進入IDLE態(tài),一次寫周期完成[6]。

圖4 SJA1000邏輯控制狀態(tài)機流程圖Fig.4 Flow chart of SJA1000 logic control state machine

2.2 SJA1000讀寫數(shù)據(jù)流程控制

FPGA對SJA1000控制程序包括SJA1000初始化、SJA1000讀數(shù)據(jù)、SJA1000寫數(shù)據(jù)等部分。SJA1000的初始化是在復(fù)位模式下進行的,在復(fù)位模式下分別設(shè)置時鐘分頻器CDR、總線定時器(BTR0、BTR1)、輸出控制寄存器(OCR)等重要寄存器。SJA1000通信波特率由總線定時器決定,需要與后端節(jié)點的波特率相同才能進行節(jié)點間的正常通信。FPGA上電后需要延時一段時間,等待SJA1000復(fù)位完成才能進行SJA1000初始化。初始化仿真波形如圖5(a)所示。SJA1000內(nèi)部有一個接收緩沖器和一個發(fā)送緩沖器。FPGA對SJA1000的讀寫操作,實際上對這兩個緩沖器的讀寫控制。當FPGA接收CAN總線數(shù)據(jù)時首先讀取SJA1000中斷寄存器IR判斷是否有接收中斷。如果有接收中斷到來則開始讀取緩沖器內(nèi)的8字節(jié)數(shù)據(jù),然后釋放接收緩沖器 (寫命令寄存器CMR)。使用Xilinx公司的Chipscope軟件進行板上測試,測試數(shù)據(jù)為(E0,E1,……E7),抓取到的波形如圖 5(b)所示。FPGA讀寫SJA1000的流程控制圖如圖6所示。

2.3 CY7C68013A通信控制程序

圖5 SJA1000邏輯控制波形圖Fig.5 Wave chart of SJA1000 logic control

圖6 SJA1000讀寫控制程序流程圖Fig.6 Flow chart of SJA1000 read and write control program

CY7C68013A提供一種量子FIFO的處理架構(gòu),使USB接口和應(yīng)用環(huán)境直接共享內(nèi)部含有的4 K FIFO空間。本文CY7C68013A的控制是以異步SLAVE FIFO方式實現(xiàn)的,F(xiàn)PGA對CY7C68013A的邏輯控制實際上是對CY7C68013A內(nèi)部FIFO的異步讀寫控制。設(shè)置CY7C68013A端點2為批量輸入端點(FIFO地址為00),端點6為批量輸出端點(FIFO地址為 10)。FPGA判斷CY7C68013A的PA[1:0]端口電平,當PA[1:0]為01時,F(xiàn)PGA將接收到的CAN總線數(shù)據(jù)寫入端點2對應(yīng)的FIFO空間并上傳給上位機,PA[1:0]為10時,F(xiàn)PGA讀取端點6對應(yīng)的FIFO內(nèi)數(shù)據(jù)。FPGA對CY7C68013A的時序控制嚴格按照芯片手冊完成。

由于USB數(shù)據(jù)包與CAN數(shù)據(jù)幀是基于兩種不同協(xié)議的數(shù)據(jù)格式,因此在FPGA內(nèi)開辟了2個512×8 bit的FIFO緩存,并要進行必要的格式轉(zhuǎn)換。例如,當從USB總線端注入的數(shù)據(jù)大于8字節(jié)時,需要將數(shù)據(jù)分成多幀傳送給CAN總線;當數(shù)據(jù)小于8字節(jié)時則在數(shù)據(jù)后填充0。另外,在數(shù)據(jù)傳送給CAN總線之前還需要添加適當?shù)膸畔⑴c幀識別碼。

3 軟件設(shè)計

3.1 USB固件程序

USB固件程序是在Keil工具上開發(fā)完成的,除了進行必要的端點及寄存器配置外,程序中使用了自定義請求命令。自定義請求碼通過USB控制傳輸?shù)姆绞絺魉徒o固件,固件程序需要響應(yīng)自定義請求碼的請求信息[7]。本文使用的自定義請求碼為0xa8,在響應(yīng)代碼中設(shè)置端口PA[1:0]電平值,產(chǎn)生USB控制命令,代碼如下所示。SETUPDAT[2]對應(yīng)控制傳輸端點的Value值,由上位機應(yīng)用程序設(shè)定。

3.2 USB驅(qū)動程序及應(yīng)用程序

使用CYPRESS公司提供的CY7C68013A通用驅(qū)動程序CyUSB.sys。上位機應(yīng)用程序使用VC編寫,也是基于Cypress提供的C++類庫文件CyAPI.lib設(shè)計完成的。使用的主要函數(shù)包括:BeginDataXfer、FinishDataXfer、XferData 等函數(shù)。 應(yīng)用程序中設(shè)計了獨立的數(shù)據(jù)接收線程,線程函數(shù)中不斷地發(fā)送USB數(shù)據(jù)讀命令,并完成批量輸入端點的讀操作。當有數(shù)據(jù)讀入時,與主線程之間采用事件的線程同步方式,將數(shù)據(jù)讀入計算機內(nèi)存并保存。以下是線程函數(shù)中用于發(fā)送USB控制命令的控制傳輸代碼:

4 實驗調(diào)試與結(jié)果

為驗證設(shè)計的正確性,使用了周立功公司的USBCAN-I產(chǎn)品,與目標電路板組成雙節(jié)點通信,2個節(jié)點設(shè)置相同波特率 500 Kb/s(BTRO=00,BTR1=1Ch)和相同幀格式,由測試軟件 ZLGCANTest發(fā)送一組數(shù)據(jù)(e0h,e1h,……,e7h),上位機應(yīng)用程序接收到的數(shù)據(jù)如圖7所示。反過來由上位機應(yīng)用程序注入指令數(shù)據(jù)e0h,a8h,周立功軟件接收到的數(shù)據(jù)為e0h,a8h,00h,00h……。經(jīng)實驗表明,數(shù)據(jù)收發(fā)正確,近距離通信時,通信速率可高達1 Mb/s。

圖7 上位機應(yīng)用程序圖Fig.7 Application program diagram of upper computer

5 結(jié) 論

使用該方法設(shè)計的CAN總線轉(zhuǎn)換器優(yōu)點在于:使用USB總線完成CAN總線與計算機的數(shù)據(jù)交換,不會影響CAN總線的整體通信速率;通過FPGA控制完成通信接口的設(shè)計,可擴展性好,靈活性強,穩(wěn)定性高。作為空間相機下位機地檢設(shè)備的一部分,F(xiàn)PGA同時還可以完成RS422等總線的通信控制。

[1]彭廣,曹建.一種工業(yè)現(xiàn)場應(yīng)用的USB-TO-CAN轉(zhuǎn)換器的設(shè)計與實現(xiàn)[J].電子測量技術(shù),2008,31(1):20-24.PENG Guang,CAO Jian.Design and implementation of USBTO-CAN converter applied in industry local[J].Electronic Measurement Technology,2008,31(1):20-24.

[2]張紹兵,郭繼坤,趙艷芹.基于CAN總線智能適配卡的軟硬件設(shè)計[J].計算機測量與控制,2008(8):1195-1196.ZHANG Shao-bing,GUO Ji-kun, ZHAO Yan-qin.Software and hardware design of intelligent adapter based on CAN Bus[J].Computer Measurement&Control,2008 (8):1195-1196.

[3]武星星,劉金國,孔德柱,等.基于混合編程的空間相機控制器的自檢方法[J].光學精密工程, 2008,16(9):1635-1641.WU Xing-xing, LIU Jin-guo, KONG De-zhu, et al.Selftesting method of space camera controller based on mixed language programming[J].Optics and Precision Engineering,2008,16(9): 1635-1641.

[4]曹輝,劉波,姜秀杰.基于USB與FPGA的多路總線通信接口的設(shè)計與實現(xiàn)[J].導(dǎo)彈與航天運載技術(shù),2009,4(302):18-22.CAO Hui, LIU Bo, JIANG Xiu-jie.Design and implementation of a multi-channel bus interface based on USB and FPGA[J].Missiles and Space Vehicles, 2009, 4(302):18-22.

[5]鐃云濤,鄒繼軍,鄭勇蕓.現(xiàn)場CAN總線原理與應(yīng)用技術(shù)[M].北京:北京航空航天大學出版,2003.

[6]陳萍,姜秀杰.基于FPGA的CAN總線通信系統(tǒng)[J].計算機測量與控制, 2009,17(12):2482-2484.CHEN Ping,JIANG Xiu-jie.System for CAN bus communication based on FPGA[J].Computer Measurement&Control, 2009,17(12):2482-2484.

[7]錢峰.EZ-USB FX2單片機原理、編程及應(yīng)用[M].北京:北京航空航天大學出版社,2006.

猜你喜歡
計算機設(shè)計
計算機操作系統(tǒng)
何為設(shè)計的守護之道?
穿裙子的“計算機”
《豐收的喜悅展示設(shè)計》
流行色(2020年1期)2020-04-28 11:16:38
基于計算機自然語言處理的機器翻譯技術(shù)應(yīng)用與簡介
科技傳播(2019年22期)2020-01-14 03:06:34
計算機多媒體技術(shù)應(yīng)用初探
科技傳播(2019年22期)2020-01-14 03:06:30
瞞天過海——仿生設(shè)計萌到家
信息系統(tǒng)審計中計算機審計的應(yīng)用
設(shè)計秀
海峽姐妹(2017年7期)2017-07-31 19:08:17
有種設(shè)計叫而專
Coco薇(2017年5期)2017-06-05 08:53:16
主站蜘蛛池模板: 久久综合九九亚洲一区 | 在线毛片网站| 日本一本正道综合久久dvd| 亚洲欧州色色免费AV| 色有码无码视频| 5555国产在线观看| 热re99久久精品国99热| 国产女同自拍视频| 国产在线一二三区| 久久精品只有这里有| 国产成人一区免费观看| 国产乱子伦精品视频| 狠狠色综合久久狠狠色综合| 国产人妖视频一区在线观看| 亚洲综合精品第一页| 欧美在线观看不卡| 国产欧美日韩在线在线不卡视频| 久久久波多野结衣av一区二区| 色哟哟国产精品一区二区| 色综合久久88| 浮力影院国产第一页| 欧美97色| 老色鬼久久亚洲AV综合| 亚洲欧洲国产成人综合不卡| 日韩精品欧美国产在线| 成人在线观看不卡| 四虎国产精品永久一区| 毛片手机在线看| 亚洲精品免费网站| 99久久国产精品无码| 伊人五月丁香综合AⅤ| 国产免费看久久久| 久久精品国产国语对白| 国产91导航| 免费一级毛片在线播放傲雪网 | 毛片网站免费在线观看| 丝袜无码一区二区三区| 最新痴汉在线无码AV| 国产好痛疼轻点好爽的视频| 中文字幕不卡免费高清视频| 亚洲资源在线视频| 国产精品伦视频观看免费| 特黄日韩免费一区二区三区| 精品午夜国产福利观看| 国产新AV天堂| 久久综合成人| 制服丝袜无码每日更新| 日本一区二区不卡视频| 久久中文字幕不卡一二区| 欧美色视频日本| 99久久免费精品特色大片| 免费看的一级毛片| 欧美有码在线| 女人18毛片一级毛片在线 | 99re66精品视频在线观看| а∨天堂一区中文字幕| 欧美福利在线播放| 这里只有精品在线播放| 在线观看亚洲成人| 国产成人午夜福利免费无码r| 国产日本一区二区三区| 亚洲精品老司机| 久久青草免费91观看| 99久久精品国产综合婷婷| 国产在线一区二区视频| 成人国产精品网站在线看| 五月天天天色| 免费又黄又爽又猛大片午夜| …亚洲 欧洲 另类 春色| 久久久久久高潮白浆| 欧美.成人.综合在线| 69av在线| 91亚洲国产视频| 国产精品久久久久鬼色| 亚洲不卡网| 国产美女丝袜高潮| 欧美福利在线观看| 免费亚洲成人| 午夜无码一区二区三区| 欧美福利在线观看| 日韩免费视频播播| 日韩av无码精品专区|