FlexRay總線控制器和 TCl796的MLI接口設(shè)計
FlexRayr總線是一種點對點形式的具有星形拓撲結(jié)構(gòu)的數(shù)據(jù)傳輸總線。提供了傳統(tǒng)總線通信協(xié)議所不具有的一些特性。FlexRay簡化了車載電子設(shè)備之間的通信系統(tǒng)架構(gòu),使得車載電子單元變得更加穩(wěn)定和可靠。FlexRay總線具有故障容限,可提供500 kbps~10 Mbps的確定數(shù)據(jù)傳輸速率和24位CRC(循環(huán)冗余)校驗碼。
FlexRay總線支持2×10 Mbps的數(shù)據(jù)速率,與CAN總線協(xié)議相比,可用的帶寬提高了10~40倍??偩€速率的提高使電子設(shè)備可以快速從總線獲取信息,也可以快速將自身信息傳送到總線上的其他設(shè)備。微處理器和FlexRay總線控制器的數(shù)據(jù)通信一般采用串行方式、并行方式以及其他方式。并行接口方式是早期采用的高速數(shù)據(jù)傳輸方式,但以更高速率傳輸時則存在多種問題。由于數(shù)據(jù)和地址總線較多,使得接口復(fù)雜,PCB布線難度增大,在高速時鐘下每根數(shù)據(jù)線和地址線都要求盡量等長,否則可能產(chǎn)生數(shù)據(jù)和地址傳輸時相應(yīng)位的紊亂,無法正確傳輸數(shù)據(jù)。串行方式硬件連接方便,內(nèi)部最少只需數(shù)據(jù)收和數(shù)據(jù)發(fā)2根線,但傳輸速率較慢。
本文介紹一種微連接口MLI(Micro—Link Interface)實現(xiàn)總線傳輸,使用FlexRay總線控制器CIC310及處理器TCl796。CIC310采集總線上各個節(jié)點的通信數(shù)據(jù),并對總線負載和總線容量進行檢測和控制。TCl796將各個節(jié)點數(shù)據(jù)進行處理,他們之間采用微連接口MLI,實現(xiàn)高速數(shù)據(jù)傳輸,最快數(shù)據(jù)傳輸速率達到37.5 Mbps,完全滿足2×10Mbps的總線數(shù)據(jù)速率。
1 FlexRay控制器CIC310
CIC310是英飛凌公司最近推出的FlexRay總線控制器,其內(nèi)部結(jié)構(gòu)如圖1所示。從圖中可以看出,CIC310總線控制器主要由E—Ray模塊、DMA模塊、時鐘管理模塊、中斷模塊、內(nèi)存和數(shù)據(jù)處理以及數(shù)據(jù)接口模塊等組成。
CIC310有3種接口方式將數(shù)據(jù)傳輸?shù)教幚砥?,這3種方式分別為SSC(Synchronous Serial Channel,串行接口)方式、XMU(De—multiplexer 8/16 bit Parallel Interface,非復(fù)用的8/16位并行接口)方式和MLI方式。其中SSC為一般的串口連接方式,具有連接簡單和連接線少的特點,但數(shù)據(jù)傳輸速率較低;XMU接口為并口連接方式,數(shù)據(jù)傳輸速度比串口方式快很多,但連接線較多;MLI接口為專用接口方式,一般可以和專用車載控制器連接。英飛凌的TCl796具有和CIC310連接的MLI接口。
CIC310和總線接口有2個獨立的收發(fā)通道,每個通道的數(shù)據(jù)傳輸速度可達10 Mbps,片內(nèi)E—Ray模塊主要負責(zé)總線數(shù)據(jù)的收發(fā)、總線和DMA模塊的數(shù)據(jù)交互、向外設(shè)產(chǎn)生各種中斷以及實現(xiàn)數(shù)據(jù)讀寫時鐘的管理等。E—Ray模塊一般經(jīng)過數(shù)據(jù)濾波器,將一些廣播幀和總線上其他用戶的數(shù)據(jù)幀濾除后,將本用戶的數(shù)據(jù)幀傳輸?shù)紺IC310片內(nèi)的DMA模塊。DMA模塊進行數(shù)據(jù)處理和數(shù)據(jù)校驗,可以采用事先設(shè)定的數(shù)據(jù)系數(shù)進行處理。
2 微處理器TCl796
TCl796是基于英飛凌公司TriCore處理器架構(gòu)的32位微控制器,在一塊芯片中集成了微控制器、微處理器和數(shù)字信號處理器。具有2 MB的嵌入式Flash和多種創(chuàng)新的片上外設(shè),如毫秒總線、快速模數(shù)轉(zhuǎn)換器、微連接口以及新穎的高性能三總線結(jié)構(gòu),提升了系統(tǒng)總體性能,同時降低了系統(tǒng)成本。其主要特點有:
◆具有4級流水及并行架構(gòu)的高性能32位CPU,完全集成DSP處理能力,具有單精度浮點運算單元,工作頻率達150 MHz;
◆具有32位外設(shè)控制處理器,2 MB嵌入式程序Flash、128 KB數(shù)據(jù)Flash、16 KB仿真EEPROM、192 KB片上SRAM;
◆具有16通道DMA控制器,支持同步burst Flash訪問的32位外部總線接口單元,支持2×255個硬件中斷源;
◆具有2個毫秒總線接口、2個通用定時器陣列模塊、2個異步/同步串行通道、2個高速同步串行通道、2個高速微連接口、4個CAN節(jié)點、4通道快速模數(shù)轉(zhuǎn)換器、2個具有8/10/12位精度的16通道模數(shù)轉(zhuǎn)換器。
TCl796的內(nèi)部結(jié)構(gòu)如圖2所示。內(nèi)部主要由PMU(Program Memory Unit,程序存儲單元)、DMU(DataMemory Unit,數(shù)據(jù)存儲單元)、FPU(Floating Point Unit,浮點單元)、PMI(Program Memory Interface,程序存儲接口)、DMI(Data Memory Interface,數(shù)據(jù)存儲接口)、PCP(Peripheral Control Processor,片內(nèi)外設(shè)控制處理器)、STM(System Timer,系統(tǒng)定時陣列)和PLL(PhaseLocked Loop,鎖相環(huán))等組成。外部接口包括ADC、FADC(快速ADC)、串口、JTAG(仿真口)、GPIO(通用I/0口)、ASC(異步串口)、CAN、MSC(MicrlO SeccondChannel,毫秒口)、MLI口等。
3 MLI接口
MLI接口是一種快速同步串行接口,可以在CPU不參與的情況下進行數(shù)據(jù)傳輸。圖3是MLI接口的典型連接框圖。
圖3中,具有MLI接口的處理器稱為本地控制器,另一個則為遠程控制器。雙方都具有發(fā)送器和接收器。發(fā)送器和接收器之間進行物理連接。本地控制器初始化數(shù)據(jù)和交互參數(shù),并負責(zé)控制所有的數(shù)據(jù)收發(fā)任務(wù)。每一次數(shù)據(jù)收發(fā)都必須由本地控制器發(fā)起,遠程控制器只是被動地響應(yīng)本地控制器的命令,讀取或者發(fā)送數(shù)據(jù)。如果有3個以上的MLI接口進行連接,則只能有1個本地控制器,其他均設(shè)置成遠程控制器。本地控制器具有1個發(fā)送窗口,所有的發(fā)送數(shù)據(jù)均通過發(fā)送窗口寫入發(fā)送器并發(fā)送出去。本地控制器接收到數(shù)據(jù)后通過中斷方式通知CPU或者DMA進行讀取數(shù)據(jù)。遠程控制器具有1個遠程窗口,沒有發(fā)送窗口;但遠程控制器不能控制遠程窗口,遠程窗口和發(fā)送窗口一樣,都是由本地控制器操作。實際上,遠程控制器相當(dāng)于一個完全被動的設(shè)備。遠程控制器收到數(shù)據(jù)將自動或者手動放到遠程窗口中,由遠程控制器的CPU或者DMA從相應(yīng)地址讀取。當(dāng)遠程控制器的CPU或者DMA需要發(fā)送數(shù)據(jù)時,本地控制器控制遠程窗口讀取相應(yīng)地址的數(shù)據(jù),并從發(fā)送器發(fā)送到本地控制器的接收器。
4 TCl796和CIC310的MLI接口連接
TCl796最多可以和4個CIC310的MLI接口連接,這樣1個處理器就可以連接4個總線控制器,從而控制8個總線節(jié)點并進行數(shù)據(jù)通信(每個CIC310控制2個總線節(jié)點),節(jié)省處理器成本。圖4為TCl796和2個CIC310的MLI接口連接。TCl796必須作為本地控制器,2個CIC310均為遠程控制器。
TCl796向CIC310發(fā)送數(shù)據(jù)的連接說明如下:MLI的接收器具有4個引腳,分別為RREADYA(接收數(shù)據(jù)準備好標志)、RVALIDA(接收數(shù)據(jù)有效標志)、RDATAA(接收數(shù)據(jù))、RCLKA(接收時鐘);對應(yīng)的發(fā)送器也具有TREADYA(發(fā)送數(shù)據(jù)準備好標志)、TVALIDA(發(fā)送數(shù)據(jù)有效標志)、TDATAA(發(fā)送數(shù)據(jù))、TCLK(發(fā)送時鐘)。其中TDATA和TCLK引腳由TCl796輸出,連接到每個CIC310的RDATAA和RCLKA引腳,這樣每個CIC310都采用同一個時鐘和數(shù)據(jù)信號。TCl796的4個MLI接口具有4個發(fā)送數(shù)據(jù)準備好標志和發(fā)送數(shù)據(jù)有效標志,分別為TREADYA~TREADYD、TVALIDA~TVALIDD。將每個MLI的一對這樣的引腳連接到1個CIC310上,就完成對不同CIC310的選擇,從而區(qū)分出對哪個CIC310發(fā)送數(shù)據(jù)。從硬件連接可以看出,TCl796雖然可以和多個CIC310連接,但同時只能對1個CIC310發(fā)送數(shù)據(jù)。
TCl796接收CIC310的數(shù)據(jù)連接說明如下:TCl796的MLI接收器每個接口都具有獨立的4個引腳,RREADYA~RREADYD、RVALIDA~RVALIDD、RDATAA~RDAT-AD、RCLKA~RCLKAD,這樣每個接口正好和CIC310的發(fā)送器的4個引腳連接,可以同時接收4個CIC310的數(shù)據(jù)。在TCl796內(nèi)部,將每個CIC310連接到不同的DMA中斷上,使用DMA進行數(shù)據(jù)讀取。
TCl796與多個CIC310進行連接,采用下行單向通信(TCl796向CIC310發(fā)送數(shù)據(jù))、上行并行通信(CIC310向TCl796發(fā)送數(shù)據(jù))的目的是減少總線負載。當(dāng)總線節(jié)點有數(shù)據(jù)向處理器發(fā)送時,處理器總是及時讀取數(shù)據(jù),避免總線重發(fā)數(shù)據(jù),同時避免CIC310無法存儲突發(fā)的大量數(shù)據(jù)幀。當(dāng)處理器需要向總線發(fā)送數(shù)據(jù)時,即使處理器需要同時向多個總線節(jié)點發(fā)送數(shù)據(jù),依然采用單個節(jié)點輪流發(fā)送數(shù)據(jù)的方式,避免處理器同時將大量數(shù)據(jù)發(fā)送到總線,增加總線負載。一旦總線負載增加,數(shù)據(jù)傳輸誤碼率將大大增加,使得總線惡化。