国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

一種內(nèi)嵌于DSP2F0X的ECAN設(shè)計(jì)及其通訊系統(tǒng)實(shí)現(xiàn)

2017-01-05 05:22
電子與封裝 2016年12期
關(guān)鍵詞:狀態(tài)機(jī)寄存器郵箱

(中國電子科技集團(tuán)公司第58研究所,江蘇無錫214072)

一種內(nèi)嵌于DSP2F0X的ECAN設(shè)計(jì)及其通訊系統(tǒng)實(shí)現(xiàn)

鮑宜鵬,強(qiáng)小燕

(中國電子科技集團(tuán)公司第58研究所,江蘇無錫214072)

通過對ECAN 2.0協(xié)議的深入研究,通過發(fā)送狀態(tài)機(jī)以及過濾狀態(tài)機(jī)實(shí)現(xiàn)消息的傳輸,完成了ECAN模塊的核心邏輯設(shè)計(jì),并通過APB總線將ECAN內(nèi)嵌于DSP2F0X上,完成了ECAN的ASIC電路設(shè)計(jì)及其通訊系統(tǒng)的實(shí)現(xiàn)。主要介紹了該系統(tǒng)的硬件模塊、連接結(jié)構(gòu)和實(shí)現(xiàn)通信的基本配置及自檢測試程序的設(shè)計(jì)。該系統(tǒng)的硬件實(shí)現(xiàn)使用verilog語言描述,采用了tcbn55lpwc工藝,在Synopsys/syn14.12環(huán)境下綜合,信號(hào)傳輸速率最高可達(dá)1 Mb/s能力。實(shí)驗(yàn)結(jié)果表明,該系統(tǒng)完全滿足CAN總線通信要求,與以往基于單片機(jī)的CAN總線通信系統(tǒng)相比較,具有更高的通訊效率及可靠性,同時(shí)功能也更加完備。

ECAN;總線協(xié)議;總線通信;自檢程序

1 引言

上世紀(jì)80年代末期,伴隨著汽車電子工業(yè)的發(fā)展,汽車各電子部件間的通訊就需要一種標(biāo)準(zhǔn)來規(guī)范,來減少通信信號(hào)線,CAN總線在這種背景下應(yīng)運(yùn)而生。隨著CAN總線技術(shù)的發(fā)展和成熟,在鐵路、輪船、樓宇自動(dòng)化等領(lǐng)域,CAN都能夠發(fā)揮作用[1]。在1986年,Bosch公司提出了正式的CAN協(xié)議。1991年 PHILIP公司首次提出標(biāo)準(zhǔn)和擴(kuò)展的CAN協(xié)議。

在傳統(tǒng)的CAN總線數(shù)據(jù)通信系統(tǒng)中,通常采用MCU+SJA1000+CAN總線收發(fā)器的方案實(shí)現(xiàn),但是單片機(jī)速度較低、資源較少,當(dāng)受到強(qiáng)電磁干擾時(shí)很容易出現(xiàn)程序跑飛。這種問題在航天控制中表現(xiàn)得尤為突出[2]。而在航天系統(tǒng)中,需要對數(shù)據(jù)進(jìn)行大量的計(jì)算處理,因此本文提出采用DSP+ECAN的系統(tǒng)結(jié)構(gòu),保留了對數(shù)據(jù)的處理能力。本系統(tǒng)的設(shè)計(jì)完全兼容CAN2.0標(biāo)準(zhǔn)[3],性能較之已有的單片機(jī)CAN總線收發(fā)器系統(tǒng),在進(jìn)行總線通信時(shí)數(shù)據(jù)傳輸更加靈活方便,數(shù)據(jù)量更大,可靠性更高,功能也更加完備。

本文使用的DSP2F0X芯片是一款用于電機(jī)控制的SOC,芯片內(nèi)部有一個(gè)32位的RISC處理器,工作頻率達(dá)400 MHz,最大運(yùn)算能力達(dá)6.4 GMACs。本文設(shè)計(jì)的ECAN是屬于它的片上外設(shè)。

2 硬件實(shí)現(xiàn)

本通訊系統(tǒng)的整體結(jié)構(gòu)如圖1,將ECAN模塊設(shè)計(jì)為DSP2F0X芯片的外設(shè),DSP2F0X通過APB總線對ECAN模塊的寄存器進(jìn)行訪存,從而對ECAN模塊的內(nèi)存、消息接收與發(fā)送、超時(shí)等功能進(jìn)行管理。在進(jìn)行數(shù)據(jù)傳輸時(shí),進(jìn)入ECAN 2.0協(xié)議核心層,將按照ECAN 2.0標(biāo)準(zhǔn)協(xié)議將消息緩存到接收緩存或者發(fā)送緩存中。ECAN與外界的接口通過一根接收數(shù)據(jù)線和發(fā)送數(shù)據(jù)線與外界相連。

圖1 ECAN方框圖和接口電路

2.1 消息設(shè)計(jì)

ECAN模塊主要通過消息來實(shí)現(xiàn)不同設(shè)備之間的通訊,一個(gè)消息有以下幾種類型。

數(shù)據(jù)幀:數(shù)據(jù)幀攜帶數(shù)據(jù)從發(fā)送器至接收器;

遠(yuǎn)程幀:總線單元發(fā)出遠(yuǎn)程幀,請求發(fā)送具有同一識(shí)別符的數(shù)據(jù)幀;

錯(cuò)誤幀:任何單元檢測到總線錯(cuò)誤就會(huì)發(fā)出錯(cuò)誤幀;

過載幀:過載幀用以在先行和后續(xù)的數(shù)據(jù)幀或遠(yuǎn)程幀之間提供附加的延時(shí)。

其中數(shù)據(jù)幀和遠(yuǎn)程幀可有使用標(biāo)準(zhǔn)幀(11位標(biāo)示符)和擴(kuò)展幀(29位標(biāo)示符)兩個(gè)格式。它們使用幀間空間與前面的幀分割。設(shè)計(jì)郵箱控制寄存器來標(biāo)識(shí)要發(fā)送哪種類型的消息。

一個(gè)消息是否被有效接收,需要通過CRC序列檢測,CRC序列包含了發(fā)送器的計(jì)算結(jié)果。接收器的CRC計(jì)算方法與發(fā)送器相同,如果計(jì)算結(jié)果與接收到的CRC序列不匹配,則會(huì)產(chǎn)生一個(gè)CRC錯(cuò)誤,消息不能被有效接收,其CRC的計(jì)算代碼見圖2。圖2中①式表示下接收到的數(shù)據(jù)與CRC最高位進(jìn)行異或操作,②式表示CRC中間變量,③式表示CRC初始化。當(dāng)需要CRC計(jì)算時(shí),需要將CRC使能位打開,圖2中④式表示CRC計(jì)算。

圖2 CRC計(jì)算代碼

2.2 模塊設(shè)計(jì)

ECAN模塊設(shè)計(jì)共包含8個(gè)子模塊,具體劃分如圖3所示,而ECAN模塊包含APB和ECAN時(shí)鐘域。在 APB時(shí)鐘域的模塊分別為 ECAN_APB,ECAN_MEM,ECAN_FILTER,ECAN_TX;在ECAN時(shí)鐘域的模塊分別為ECAN_TIMER,ECAN_BTL,ECAN_BSP,ECAN_CRC。當(dāng)不同時(shí)鐘域的信號(hào)傳輸時(shí)需要做同步處理。

圖3 ECAN子模塊

ECAN_APB掛在APB總線上,該模塊的設(shè)計(jì)目的是使DSP2F0X能夠通過APB總線對ECAN的寄存器進(jìn)行訪存。ECAN_MEM模塊可以對SRAM 128× 32和SRAM 96×32進(jìn)行管理。

ECAN_BTL為位接收模塊,工作在ECAN時(shí)鐘域,由于發(fā)送單元和接收單元存在的時(shí)鐘頻率誤差以及傳輸路徑上的相位延遲會(huì)引起同步偏差[3],因此位接收單元需要通過硬件同步或者再同步的方法調(diào)整時(shí)序進(jìn)行接收[3]。而為了防止突發(fā)錯(cuò)誤,在本模塊中設(shè)計(jì)了位填充功能,即當(dāng)同樣的電平持續(xù)5位時(shí),則添加一位與前5位相反的數(shù)據(jù),如圖4所示。如果第6位的電平與前5位相同,將被視為錯(cuò)誤并發(fā)送錯(cuò)誤幀。由于位填充使原來的數(shù)據(jù)變長,因此在接收數(shù)據(jù)時(shí)需要將填充的位當(dāng)作無效位來處理,保持?jǐn)?shù)據(jù)的有效位不變。

圖4 位填充

ECAN_TIMER模塊的設(shè)計(jì)主要是為了實(shí)現(xiàn)時(shí)鐘標(biāo)志和超時(shí)功能,在模塊中使用一個(gè)自由運(yùn)行的32位計(jì)數(shù)器。當(dāng)一個(gè)消息被存儲(chǔ)或者被發(fā)送時(shí),定時(shí)器的值被寫入到郵箱的時(shí)間標(biāo)志寄存器。當(dāng)接收數(shù)據(jù)或發(fā)送數(shù)據(jù)發(fā)生超時(shí),將超時(shí)標(biāo)志發(fā)送到超時(shí)標(biāo)志寄存器中。

ECAN_TX模塊為發(fā)送控制模塊,是ECAN模塊的核心設(shè)計(jì)之一。發(fā)送邏輯控制采用有限狀態(tài)機(jī)的方式完成,其狀態(tài)機(jī)流程如圖5所示。起始狀態(tài)為IDLE,當(dāng)檢測到有數(shù)據(jù)要發(fā)送時(shí),進(jìn)入RDSELP狀態(tài)。在RDSELP狀態(tài)時(shí),讀取郵箱的優(yōu)先級(jí)以及發(fā)送標(biāo)志,當(dāng)有發(fā)送標(biāo)志時(shí),依然返回RDSELP狀態(tài),否則進(jìn)入RDID狀態(tài)。在RDID狀態(tài)讀取郵箱的ID號(hào),隨后進(jìn)入RDMDL狀態(tài)。在RDMDL狀態(tài),需要讀取低32位數(shù)據(jù),當(dāng)傳輸數(shù)據(jù)控制位為高時(shí),進(jìn)入RDMDH狀態(tài),讀取高32位數(shù)據(jù),否則,進(jìn)入TXSTART狀態(tài)。在TXSTART狀態(tài),開始發(fā)送數(shù)據(jù),當(dāng)發(fā)送結(jié)束標(biāo)志置位時(shí),則進(jìn)入TXEND狀態(tài),結(jié)束發(fā)送狀態(tài),隨后進(jìn)入TXNEXT狀態(tài),為發(fā)送下一個(gè)數(shù)據(jù)做準(zhǔn)備,隨后再進(jìn)入IDLE狀態(tài)。

圖5 發(fā)送邏輯控制狀態(tài)機(jī)流程圖

ECAN_BSP模塊為ECAN 2.0協(xié)議的核心模塊,負(fù)責(zé)發(fā)送與接收數(shù)據(jù)時(shí),根據(jù)ECAN 2.0協(xié)議,產(chǎn)生ECAN總線上的控制信號(hào)和數(shù)據(jù)。

ECAN_FILTER為接收過濾模塊,是ECAN模塊的核心設(shè)計(jì)之一。本模塊可以從ECAN_BSP模塊中接收控制信號(hào)、ID號(hào)和數(shù)據(jù),對接收到的數(shù)據(jù)進(jìn)行解碼和ID匹配,找到與ID匹配的郵箱,如果是數(shù)據(jù)幀,則存儲(chǔ)數(shù)據(jù),如果是遠(yuǎn)程幀,等待發(fā)送數(shù)據(jù)。模塊的邏輯控制同樣采用有限狀態(tài)機(jī)的方式完成,狀態(tài)機(jī)的流程如圖6所示。

起始狀態(tài)為IDLE,當(dāng)檢測到接收ID1請求,進(jìn)入ID1狀態(tài)。在ID1狀態(tài)下,獲取ID1號(hào),當(dāng)檢測到接收ID2請求,進(jìn)入ID2狀態(tài),進(jìn)而獲取ID2號(hào)。在ID2狀態(tài)下,當(dāng)檢測到獲取MEMID號(hào)時(shí),進(jìn)入RDMEM狀態(tài)。在RDMEM狀態(tài)下,從內(nèi)存中獲取ID號(hào),隨后進(jìn)入CMP狀態(tài)。在CMP狀態(tài)下,將獲取的ID號(hào)進(jìn)行比較,當(dāng)ID匹配,則進(jìn)入WDT0狀態(tài),否則當(dāng)檢測到發(fā)送結(jié)束標(biāo)志時(shí),進(jìn)入END狀態(tài)。在WDT0狀態(tài)時(shí),如果接收成功,則進(jìn)入WDT1狀態(tài),否則一直處于自身狀態(tài)。在WDT1狀態(tài)下,在發(fā)送接收成功且發(fā)送結(jié)束時(shí),進(jìn)入發(fā)送結(jié)束狀態(tài)。在END狀態(tài)下,將傳輸數(shù)據(jù)所用時(shí)間寫入內(nèi)存中,如果傳輸結(jié)束標(biāo)志置位,則進(jìn)入IDLE狀態(tài)。

圖6 接收FILTER的狀態(tài)轉(zhuǎn)換

2.3 仿真綜合

整個(gè)硬件模塊采用Verilog HDL語言進(jìn)行描述,在cds/incisiv142環(huán)境下,調(diào)用NC_SIM進(jìn)行仿真。選擇兩個(gè)ECAN設(shè)備之間的數(shù)據(jù)傳輸作為仿真Case,將ECAN0和ECAN1設(shè)備的兩個(gè)輸入輸出引腳相連接,將ECAN0的前8個(gè)郵箱設(shè)置為發(fā)送郵箱,ECAN1的前8個(gè)郵箱設(shè)置為接收郵箱,其仿真波形見圖7。在圖7的仿真波形中,tx_o為輸出引腳,rx_i為輸入引腳,trs_reg為發(fā)送請求置位寄存器,tx_request為發(fā)送請求信號(hào),ta_reg為發(fā)送響應(yīng)寄存器,trs_fsm為發(fā)送有限狀態(tài)機(jī),filter_fsm為接收過濾有限狀態(tài)機(jī)。當(dāng)trs_reg不為0時(shí),tx_request發(fā)送請求信號(hào)置1,啟動(dòng)發(fā)送有限狀態(tài)機(jī)。當(dāng)數(shù)據(jù)發(fā)送成功時(shí),tx_successful信號(hào)置1,trs_reg中相應(yīng)郵箱的發(fā)送請求位被清0,同時(shí)ta_reg中相應(yīng)郵箱的發(fā)送響應(yīng)位置1。

圖7 ECAN設(shè)備之間數(shù)據(jù)傳輸?shù)姆抡娼Y(jié)果圖

ECAN1為接收設(shè)備,id_ok為 ID匹配信號(hào),rx_end為接收數(shù)據(jù)結(jié)束信號(hào),rx_id1為接收ID1請求,rmp_reg為接收消息未決寄存器。當(dāng)收到數(shù)據(jù)時(shí),rx_id1置位,啟動(dòng)接收過濾有限狀態(tài)機(jī),當(dāng)數(shù)據(jù)接收結(jié)束,rx_end信號(hào)置1,同時(shí)rmp_reg相應(yīng)郵箱的接收相應(yīng)位置1。

系統(tǒng)的硬件實(shí)現(xiàn)在Synopsys/syn14.12環(huán)境中綜合,采用了tcbn55lpwc工藝,一共包含約30870門數(shù),可以達(dá)到100MHz運(yùn)行速度,具有1Mbps的通信速率。2.4 通信接口

將不同設(shè)備的ECAN連接起來,需要采用驅(qū)動(dòng)芯片,這里采用德州儀器公司生產(chǎn)的SN65HVD230,對ECAN發(fā)送引腳與接收引腳進(jìn)行驅(qū)動(dòng),SN65HVD230芯片完全兼容ISO11898標(biāo)準(zhǔn),具有抗干擾、熱保護(hù)、信號(hào)傳輸速率最高可達(dá)1 Mb/s的能力[4]。圖8為兩個(gè)不同ECAN設(shè)備之間的連接示意圖。

圖8 ECAN設(shè)備之間的連接示意圖

3 軟件設(shè)計(jì)

3.1 應(yīng)用程序設(shè)計(jì)

在使用DSP2F0X內(nèi)嵌的ECAN設(shè)備之前,首先必須對DSP先進(jìn)行配置,然后進(jìn)行ECAN的設(shè)置,配置流程如圖9。在DSP2F0X的初始化階段,需要初始化DSP,配置ECAN的時(shí)鐘門,配置APB時(shí)鐘,此應(yīng)用程序配置APB為100 MHz,由于ECAN兩個(gè)引腳CANTX和CANRX在DSP2F0X中均為復(fù)用I/O口,因此,需要將DSP2F0X的I/O配置為ECAN的I/O口,且需要將CANTX配置為輸出引腳,CANRX配置為輸入引腳。

圖9 ECAN設(shè)備的配置流程

在ECAN位初始化階段,對位時(shí)序配置寄存器進(jìn)行配置,包括采樣次數(shù)和重同步方式、通訊波特率、同步跳轉(zhuǎn)寬度。在初始化郵箱階段,主要是設(shè)置郵箱的標(biāo)識(shí)符、發(fā)送字節(jié)數(shù)和優(yōu)先級(jí)別,數(shù)據(jù)幀還是遠(yuǎn)程幀及相應(yīng)的郵箱賦初值。在ECAN發(fā)送階段,配置郵箱為發(fā)送郵箱且使能,配置發(fā)送請求。在ECAN接收階段,將DSP2F0X外部的ECAN設(shè)備的郵箱配置為接收郵箱且使能。完成上述配置后,接著實(shí)現(xiàn)對數(shù)據(jù)的發(fā)送和接收。在數(shù)據(jù)接收時(shí),只有當(dāng)所接收到的信息的標(biāo)識(shí)符與相應(yīng)郵箱的標(biāo)識(shí)符相同時(shí),數(shù)據(jù)才能被接收,否則該信息被過濾掉。

3.2 自檢測試程序設(shè)計(jì)

在測試過程中,每次都要通過軟件工具查看數(shù)據(jù)接收正確與否,多次測試需要多次人為查看結(jié)果,為了避免這種情況,設(shè)計(jì)自動(dòng)檢測程序,如圖10所示。

圖10 自檢測試程序設(shè)計(jì)

首先將DSP2F0X的通用輸入輸出A端口配置成輸出端口,如圖10中①式,然后讀出接收的數(shù)據(jù),如②所示。將接收到的數(shù)據(jù)讀出,與理想值進(jìn)行比較,如圖10中③式所示,如果比較相等,則程序繼續(xù)執(zhí)行,否則程序跳轉(zhuǎn)到⑥式。

如果DSP2F0X的通用輸出端口輸出0xfeedbeef,則表明ECAN之間的通訊正確,如果DSP2F0X的通用輸出端口輸出0xdeadbeed,則表明ECAN之間的通訊出現(xiàn)錯(cuò)誤,程序執(zhí)行退出。

4 總結(jié)

本文提出采用DSP+ECAN的系統(tǒng)結(jié)構(gòu),不僅實(shí)現(xiàn)ECAN強(qiáng)大的通訊能力,還保留了DSP對數(shù)據(jù)的處理能力。本通訊系統(tǒng)的ECAN設(shè)計(jì)完全兼容CAN 2.0標(biāo)準(zhǔn),通過ECAN配置和自檢測試程序,可以方便實(shí)現(xiàn)ECAN設(shè)備之間的通訊和測試,較之已有的單片機(jī)CAN總線收發(fā)器系統(tǒng),數(shù)據(jù)傳輸更加靈活方便,數(shù)據(jù)量更大,可靠性更高,功能也更加完備。

[1]Renjun Li,Chu Liu,Feng Luo.A Design for Automotive CAN Bus Monitoring System [C].Vehicle Power and Propulsion Conference,2008,VPPC'08.IEEE.3-5 Sept, 2008:1-5.

[2]陳萍,姜秀杰.基于FPGA的CAN總線通訊系統(tǒng)[J].計(jì)算機(jī)測量與控制,2009,17(12):2482-2484.

[3]BOSCH公司.CAN Specification V2.0[P].1995.

[4]德州儀器公司.SN65HVD230[P].Datasheet.

A Design of ECAN Embedded in DSP2F0X and Communication System

BAO Yipeng,QIANG Xiaoyan
(China Electronics Technology Group Corporation No.58 Research Institute,Wuxi 214072,China)

By referring to ECAN 2.0 protocol and the message transmission process relating to the transmit state machine and filter state machine,the core logic of ECAN module is designed.By embedding ECAN in DSP2F0X though the APB bus,ECAN ASIC is designed and corresponding communication system is developed.The paper describes the hardware structure,the connection structure and the self-test program of the system.The system is described by the verilog language and developed using tcbn55lpwc technology.The system is integrated in the Synopsys/syn14.12 environment,the transmission rate reaching 1 Mb/s.The communication system improves communication efficiency and reliability with more functions.

ECAN;bus protocol;bus communication;self-test

TN402

A

1681-1070(2016)12-0026-04

2016-5-23

猜你喜歡
狀態(tài)機(jī)寄存器郵箱
關(guān)于變更投稿郵箱的通知
關(guān)于變更投稿郵箱的通知
STM32和51單片機(jī)寄存器映射原理異同分析
Lite寄存器模型的設(shè)計(jì)與實(shí)現(xiàn)
基于有限狀態(tài)機(jī)的交會(huì)對接飛行任務(wù)規(guī)劃方法
沒問題郵箱
移位寄存器及算術(shù)運(yùn)算應(yīng)用
三段式狀態(tài)機(jī)在單片機(jī)中的實(shí)現(xiàn)
郵箱變更
Lx5280模擬器移植設(shè)計(jì)及實(shí)施
乳山市| 瑞金市| 龙州县| 柳江县| 鞍山市| 梓潼县| 辉县市| 汪清县| 宽甸| 阿拉善右旗| 綦江县| 景谷| 芒康县| 北流市| 韶山市| 雷州市| 礼泉县| 子长县| 永川市| 遂川县| 宁津县| 阳泉市| 高要市| 西乌珠穆沁旗| 柞水县| 洪湖市| 灵石县| 长沙市| 平安县| 上虞市| 保靖县| 淳化县| 平乡县| 栖霞市| 尼勒克县| 绥棱县| 上饶县| 亳州市| 林甸县| 芜湖县| 平定县|