馮源
摘 要: 目前DSP處理器和CAN總線都在控制領(lǐng)域得到了廣泛應(yīng)用,在此以TMS320F2812 DSP處理器和獨(dú)立的CAN控制器SJA1000為例,在分析DSP和SJA1000接口時(shí)序的基礎(chǔ)上,采用CPLD有效地實(shí)現(xiàn)了兩者之間數(shù)據(jù)和地址總線復(fù)用與非復(fù)用之間的轉(zhuǎn)換和時(shí)序匹配。同時(shí)希望對(duì)于其他微處理器與CAN控制器的接口電路設(shè)計(jì)可以提供一定的參考。
關(guān)鍵詞: DSP; CAN; CPLD; VHDL; 哈佛結(jié)構(gòu)
中圖分類號(hào): TN710?34; TP302.2 文獻(xiàn)標(biāo)識(shí)碼: A 文章編號(hào): 1004?373X(2015)08?0066?04
Design and realization of interface between DSP and CAN bus controller based on CPLD
FENG Yuan1, DOU Hai?li2, YAN Hai?ming1
(1. China Aeronautics Computing Technique Research Institute, Xian 710119, China;
2. College of Science, Air Force Engineering University, Xian 710051 China)
Abstract: At present, digital signal processors (DSP) and CAN bus are applied widely to the control field. Taking the DSP TMS320F2812 and CAN controller SJA1000 as examples, the complex programmable logic device (CPLD) is used to realize the timing sequence matching effectively between data of DSP and SJA1000, and conversion of address multiplex bus and non?multiplex bus based on the analysis of the interface timing sequence of DSP and SJA1000. It is hoped that it can provide a reference for the design of interface circuit between other microprocessors and SJA1000 CAN controller.
Keywords: DSP; CAN; CPLD; VHDL; Harvard architecture
DSP(數(shù)字信號(hào)處理器)是一種具有特殊結(jié)構(gòu)的微處理器。其芯片內(nèi)部采用程序和數(shù)據(jù)分開的哈佛結(jié)構(gòu),具有專門的硬件乘法器,廣泛采用流水線操作,提供特殊的DSP指令,可以快速地實(shí)現(xiàn)各種數(shù)字信號(hào)處理算法。TMS320F2812是TI公司為滿足控制應(yīng)用而設(shè)計(jì)的32位定點(diǎn)DSP處理器,它把一個(gè)高性能DSP內(nèi)核和多種適合于控制的外設(shè)集成為一個(gè)芯片,運(yùn)算速度可達(dá)150 MIPS,各項(xiàng)性能指標(biāo)遠(yuǎn)遠(yuǎn)超過傳統(tǒng)的16位處理器。
控制器局域網(wǎng)(Controller Area Network,CAN)是一種有效支持分布式控制或?qū)崟r(shí)控制的串行通信網(wǎng)絡(luò)。由于 CAN總線具有通信速率高、 開放性好、 報(bào)文短、 糾錯(cuò)能力強(qiáng)以及控制簡(jiǎn)單、 擴(kuò)展能力強(qiáng)、 系統(tǒng)成本低等特點(diǎn),再加上有眾多的產(chǎn)品支持,已經(jīng)在工業(yè)控制、汽車電子控制系統(tǒng)、船舶運(yùn)輸和航空航天等方面均得到了成功的應(yīng)用,成為公認(rèn)的最具有前途的現(xiàn)場(chǎng)總線之一。
CAN控制器實(shí)現(xiàn)了CAN協(xié)議的物理層和數(shù)據(jù)鏈路層的幾乎所有功能,對(duì)外具有與主控制器和總線驅(qū)動(dòng)器的接口。目前的CAN控制器有兩種常見形式:一種是與某些微處理器集成在一起的內(nèi)嵌的CAN控制器;另一種是獨(dú)立的CAN控制器。采用集成了CAN控制器的微處理器實(shí)現(xiàn)CAN節(jié)點(diǎn),電路和邏輯設(shè)計(jì)簡(jiǎn)單,減少成本;然而軟、硬件設(shè)計(jì)過多地依賴于處理器的結(jié)構(gòu)和資源,可移植性和靈活性比較差,協(xié)議無法有效地?cái)U(kuò)展和改進(jìn),從而使得模塊的升級(jí)和維護(hù)成為一個(gè)重要問題。使用獨(dú)立的CAN控制器的潛在優(yōu)勢(shì)是,系統(tǒng)開發(fā)人員可以根據(jù)需要,靈活地選擇處理器來進(jìn)行系統(tǒng)設(shè)計(jì),而且軟硬件設(shè)計(jì)具有較強(qiáng)的通用性,升級(jí)和維護(hù)比較簡(jiǎn)單。
目前應(yīng)用最多的獨(dú)立的CAN控制器是Philips公司的SJA1000芯片,它采用數(shù)據(jù)線和地址線復(fù)用的接口模式。而國(guó)內(nèi)使用的 DSP 芯片以 TI 公司的 TMS320 系列為主流,它們對(duì)外的數(shù)據(jù)和地址總線結(jié)構(gòu)形式是非多路復(fù)用方式。因此它們之間不能直接相連,需要數(shù)據(jù)和地址總線復(fù)用與非復(fù)用之間的轉(zhuǎn)換和接口時(shí)序的匹配設(shè)計(jì)。本文以TMS320F2812 DSP處理器為例,在分析DSP和SJA1000接口時(shí)序的基礎(chǔ)上,采用CPLD有效地實(shí)現(xiàn)了兩者之間數(shù)據(jù)和地址總線復(fù)用與非復(fù)用之間的轉(zhuǎn)換和時(shí)序匹配。
1 SJA1000與F2812 DSP接口信號(hào)與時(shí)序分析
1.1 SJA1000接口的主要信號(hào)說明
CAN 控制器 SJA1000 提供的微處理器接口方式為典型 INTEL 或 MOTOROLA 地址數(shù)據(jù)多路復(fù)用總線模式,主要信號(hào)有地址數(shù)據(jù)信號(hào) AD7~AD0 ,地址選通信號(hào)ALE,片選信號(hào)CS,讀信號(hào)RD,寫信號(hào)WR,模式選擇信號(hào)MODE。當(dāng)MODE=時(shí),為INTEL模式;當(dāng) MODE=0時(shí),為MOTOROLA模式。后面描述的地址數(shù)據(jù)多路復(fù)用總線模式均為INTEL模式。
圖1、圖 2 分別為INTEL模式讀、 寫周期時(shí)序。
1.2 SJA1000接口時(shí)序分析
圖1中SJA1000 的讀時(shí)序,說明在設(shè)計(jì)轉(zhuǎn)換橋時(shí),多路復(fù)用總線的各信號(hào)必須滿足的時(shí)間參數(shù)要求。ALE的脈沖寬度tw(AL)最小為8 ns ;地址信號(hào)(A7~A0)建立到ALE變?yōu)榈碗娖剿钑r(shí)間tsu(A?AL)最小為8 ns;RD的有效脈寬tw(R)最小為40 ns;RD為低電平到數(shù)據(jù)信號(hào)(D7~D0)有效所需時(shí)間tRLQV最大為50 ns;RD變?yōu)楦唠娖降降刂窋?shù)據(jù)線釋放(即高阻狀態(tài))所需時(shí)間(tRHDZ)最大為30 ns。
圖2中SJA1000 的寫時(shí)序,與讀時(shí)序相比,時(shí)間參數(shù)tw(AL)、tsu(A?AL)的要求是相同的,WR的有效脈寬tw(W)最小為20 ns;數(shù)據(jù)信號(hào)(D7~D0)有效時(shí)刻到WR撤銷為高電平所需時(shí)間tDVWH最小為8 ns;WR變?yōu)楦唠娖降降刂窋?shù)據(jù)線釋放(即高阻狀態(tài))所需時(shí)間(tWHDX)最小為8 ns。
芯片的地址/數(shù)據(jù)復(fù)用引腳AD7~AD0,實(shí)際操作時(shí),地址和數(shù)據(jù)分時(shí)傳輸,地址在前,數(shù)據(jù)在后。在地址選通信號(hào)ALE 有效時(shí),傳送的是地址信號(hào);在RD或WR有效時(shí),傳輸?shù)氖菙?shù)據(jù)信號(hào)。片選信號(hào)CS與讀信號(hào)RD或?qū)懶盘?hào)WR同步,允許對(duì)SJA1000進(jìn)行讀/寫操作。
1.3 TMS320F2812的XINTF接口的工作原理
TMS320F2812 DSP提供了一個(gè)可配置的存儲(chǔ)器擴(kuò)展接口(XINTF)來支持存儲(chǔ)器空間的擴(kuò)展,它是DSP與外部設(shè)備進(jìn)行通信的重要接口。這個(gè)接口通常用于擴(kuò)展SRAM、FLASH、ADC、DAC以及其他可以作為外部存儲(chǔ)器的方式來訪問的外設(shè)。對(duì)于DSP來說,SJA1000是一個(gè)以存儲(chǔ)器編址的I/O器件,對(duì)它的內(nèi)部寄存器的操作就像對(duì)RAM操作一樣,并且其內(nèi)部的地址空間0~127。在本文的設(shè)計(jì)中,將CAN控制器擴(kuò)展到DSP的外部存儲(chǔ)器空間Zone0(0x2000~0x4000)。TMS320F2812 DSP的XINTF接口被映射到5個(gè)固定的存儲(chǔ)空間區(qū)域,可以通過軟件操作配置寄存器對(duì)其中的每個(gè)區(qū)域的讀/寫操作的時(shí)序進(jìn)行獨(dú)立的設(shè)置,來實(shí)現(xiàn)對(duì)這些存儲(chǔ)器或外設(shè)的正確接口。
對(duì)XINTF中所有區(qū)域的訪問都是以XINTF的定時(shí)時(shí)鐘XTIMCLK為基礎(chǔ)的,對(duì)外訪問的時(shí)序都是從外部時(shí)鐘輸出XCLKOUT的上升沿開始的。XTIMCLK的大小可以通過軟件設(shè)置為系統(tǒng)時(shí)鐘SYSCLKOUT或是系統(tǒng)時(shí)鐘的一半。XINTF對(duì)外訪問時(shí)序分為三個(gè)階段,即引導(dǎo)(Lead)、激活(Active)和跟蹤(Trail)。另外可以通過采樣由外設(shè)所提供的XREADY信號(hào)來在激活階段添加1個(gè)或多個(gè)XTIMCLK周期的額外延時(shí)。
在本文的設(shè)計(jì)中,設(shè)置XTIMCLK=XCLKOUT=[12]SYSCLKOUT=50 MHz,即1拍的訪問周期是20 ns,另外屏蔽XREADY信號(hào)的采樣。
1.4 TMS320F2812的XINTF接口時(shí)序分析
下面重點(diǎn)對(duì)TMS320F2812的XINTF接口時(shí)序進(jìn)行分析,圖3和圖4分別是屏蔽XREADY信號(hào)的采樣時(shí),TMS320F2812外部接口讀時(shí)序圖和寫時(shí)序圖。
首先需要參考SJA1000的時(shí)序圖,確定以上時(shí)序圖中引導(dǎo)(Lead)和激活(Active)、跟蹤(Trail)三個(gè)階段的時(shí)間參數(shù)。由圖3和圖4可知,對(duì)Zone0區(qū)域的實(shí)際操作是從該區(qū)域的片選信號(hào)XZCS0AND1有效作為起始基準(zhǔn)時(shí)刻,另外對(duì)Zone0區(qū)域的訪問時(shí)序都是從外部時(shí)鐘輸出XCLKOUT的上升沿開始的。為了使得譯碼邏輯簡(jiǎn)單,采樣時(shí)序的可靠穩(wěn)定,選定XCLKOUT的上升沿作為SJA1000時(shí)序譯碼的計(jì)數(shù)脈沖。
引導(dǎo)階段片選有效,地址總線上有效地址穩(wěn)定;激活階段讀/寫信號(hào)穩(wěn)定,數(shù)據(jù)穩(wěn)定出現(xiàn)在數(shù)據(jù)總線上;跟蹤階段片選依然有效,但是讀/寫信號(hào)無效,從而結(jié)束讀時(shí)序或完成寫時(shí)序中總線上的數(shù)據(jù)到外部存儲(chǔ)器的鎖存。由圖1和圖2可知,引導(dǎo)階段至少設(shè)置3個(gè)XCLKOUT,激活階段至少設(shè)置4個(gè)XCLKOUT,跟蹤階段至少設(shè)置2個(gè)XCLKOUT。為了使得有效信號(hào)的譯碼時(shí)序盡量的寬松,在這里選定引導(dǎo)階段4個(gè)XCLKOUT,激活階段6個(gè)XCLKOUT,跟蹤階段4個(gè)XCLKOUT。
2 硬件接口的設(shè)計(jì)與實(shí)現(xiàn)
本文采用 Lattice公司在系統(tǒng)可編程器件 ISPLSI1032E,用硬件描述語(yǔ)言VHDL來描述邏輯,實(shí)現(xiàn)了系統(tǒng)編程調(diào)試,將硬件系統(tǒng)“軟件化”, 其優(yōu)點(diǎn)主要在于它有很強(qiáng)的靈活性,即其內(nèi)部的具體邏輯功能可以根據(jù)需要配置,對(duì)電路的修改簡(jiǎn)單易行,可以很方便地實(shí)現(xiàn)復(fù)雜的邏輯電路,同時(shí)使得布線更簡(jiǎn)單合理,系統(tǒng)工作可靠性更高。TMS320F2812 DSP處理器與 CAN控制器 SJA1000的硬件接口原理圖如圖 5所示。因?yàn)樵揇SP的I/O信號(hào)的電壓是3.3 V,而ISPLSI1032E和SJA1000的信號(hào)是5 V,所以DSP的數(shù)據(jù)總線ED、地址總線EA、讀/寫等控制信號(hào),都事先需要經(jīng)過IDT74FCT164245進(jìn)行電平轉(zhuǎn)換和雙向緩沖,以保證信號(hào)傳輸?shù)目煽啃?。由于篇幅有限,在圖中省略了這部分電路的描述。在該電路設(shè)計(jì)中,采用1片三態(tài)緩沖驅(qū)動(dòng)芯片IDT74FCT162245,通過由ISPLSI1032E生成:IDT74FCT162245的控制信號(hào)DOE#、AOE#、DDIR、ADIR;SJA1000的讀/寫控制信號(hào)SJA_ALE、SJA_CS#、SJA_RD#、SJA_WR#、SJA_RST#等。
3 接口邏輯設(shè)計(jì)
將SJA1000的地址范圍確定為Zone0區(qū)域中的0x2000~0x20FF,根據(jù)以上的分析,由Zone0區(qū)域的片選信號(hào)XZCS0AND1和DSP的高地址EA15~EA8譯碼得到信號(hào)CAN_CS#,并且以該信號(hào)開始有效的時(shí)刻作為讀、寫時(shí)序轉(zhuǎn)換的起始基準(zhǔn)時(shí)刻。另外,整個(gè)譯碼以DSP的外部時(shí)鐘輸出XCLKOUT為節(jié)拍,并對(duì)其上升沿進(jìn)行脈沖計(jì)數(shù)。圖5中的接口控制信號(hào)的譯碼邏輯時(shí)序圖如圖6所示。
3.1 地址信號(hào)的轉(zhuǎn)換過程
由圖1和圖2可知,SJA1000的讀操作和寫操作過程中的地址信號(hào)A7~A0和地址鎖存信號(hào)ALE的時(shí)序是完全一致的。以已經(jīng)確定的CAN_CS#的信號(hào)的開始有效的時(shí)刻為起始基準(zhǔn)時(shí)刻,確定SJA1000的地址使能控制信號(hào)AOE#在CAN_CS#有效后第1個(gè)上升沿處開始有效,在Lead階段結(jié)束時(shí)刻撤銷。SJA1000的地址鎖存信號(hào)SJA_ALE可以和AOE#信號(hào)同時(shí)開始有效,但是必須比AOE#信號(hào)提前1拍結(jié)束,以保證在SJA_ALE的下降沿采樣到穩(wěn)定的地址信號(hào)進(jìn)行地址鎖存。
3.2 讀操作的轉(zhuǎn)換過程
在TMS320F2812 DSP對(duì)CAN控制器SJA1000進(jìn)行讀操作時(shí),數(shù)據(jù)流是由SJA1000流向DSP。SJA1000是數(shù)據(jù)流源端,DSP是數(shù)據(jù)流的目的端,并且目的端(DSP)的讀時(shí)序是確定的。進(jìn)一步分析圖3可知,DSP的讀信號(hào)XRD#和XD[0:15]上有效數(shù)據(jù)DIN的時(shí)序是已知的。首先根據(jù)SJA_ALE信號(hào)的結(jié)束時(shí)刻和DSP的讀信號(hào)XRD#開始有效的時(shí)刻,確定SJA1000的讀信號(hào)SJA_RD#是從XRD#有效后1個(gè)XCLKOUT時(shí)間后開始有效。
為了保證DSP從SJA1000所獲得的數(shù)據(jù)是穩(wěn)定可靠的,由圖1的分析可以確定對(duì)SJA1000進(jìn)行讀操作時(shí)的數(shù)據(jù)使能信號(hào)RD_DOE#必須在SJA_RD#有效后大于50 ns以后才開始有效。這里,讓RD_DOE#信號(hào)在SJA_RD#保持有效狀態(tài)(低電平)3拍(60 ns)后開始有效。在DSP讀操作的過程中,SJA1000給DSP提供的數(shù)據(jù)必須要“包住”DSP讀時(shí)序中的有效數(shù)據(jù)DIN,所以RD_DOE#的有效狀態(tài)在Trail階段的第2拍結(jié)束后撤銷。然后,只需讓SJA1000的讀信號(hào)SJA_RD#與RD_DOE#信號(hào)同時(shí)撤銷即可。
3.3 寫操作的轉(zhuǎn)換過程
在TMS320F2812 DSP對(duì)CAN控制器SJA1000進(jìn)行寫操作時(shí),數(shù)據(jù)流是由DSP流向SJA1000。DSP是數(shù)據(jù)流源端,SJA1000是數(shù)據(jù)流的目的端,并且源端(DSP)的寫時(shí)序是確定的。進(jìn)一步分析圖4可知,DSP的寫信號(hào)XWE#和XD[0:15]上的有效數(shù)據(jù)DOUT的時(shí)序是已知的。首先根據(jù)XD[0:15]上的有效數(shù)據(jù)DOUT開始有效的時(shí)刻,確定對(duì)SJA1000進(jìn)行寫操作時(shí)的數(shù)據(jù)使能信號(hào)WR_DOE#從Active階段的第3拍開始時(shí)有效;然后根據(jù)DSP的寫信號(hào)XWE#的撤銷時(shí)刻,確定WR_DOE#信號(hào)在Active階段結(jié)束后立刻撤銷。
根據(jù)圖2中SJA_ALE信號(hào)的結(jié)束時(shí)刻和剛剛確定的WR_DOE#的時(shí)序,確定SJA1000的寫信號(hào)SJA_WR#可以和WR_DOE#信號(hào)同時(shí)開始有效,而SJA_WR#信號(hào)必須比WR_DOE#信號(hào)提早1拍撤銷。
在確定了SJA1000的讀信號(hào)SJA_RD#和寫信號(hào)SJA_WR#后,由圖1和圖2可知,SJA1000的片選信號(hào)SJA_CS#在已經(jīng)確定的中間信號(hào)CAN_CS#的基礎(chǔ)上,SJA_CS#信號(hào)必須“包住”SJA_RD#和SJA_WR#即可。
4 結(jié) 語(yǔ)
本文詳細(xì)分析了TMS320F2812 DSP處理器和 CAN控制器 SJA1000的接口信號(hào)和訪問時(shí)序,提供一種基于復(fù)雜可編程邏輯器件 CPLD來解決兩者之間的接口邏輯的匹配問題的方法,設(shè)計(jì)了DSP處理器和 CAN控制器之間的接口電路,給出了邏輯譯碼時(shí)序圖,并詳細(xì)分析了時(shí)序轉(zhuǎn)換的整個(gè)過程。實(shí)踐表明,該設(shè)計(jì)穩(wěn)定可靠,同時(shí)對(duì)于其他系列 DSP處理器與SJA1000之間的接口邏輯的轉(zhuǎn)換也具有很強(qiáng)的借鑒意義。
參考文獻(xiàn)
[1] 饒運(yùn)濤,鄒繼軍.現(xiàn)場(chǎng)總線CAN原理與應(yīng)用技術(shù)[M].2版.北京:北京航空航天大學(xué)出版社,2007.
[2] 寧改娣,曾翔君.DSP控制器原理及應(yīng)用[M].北京:科學(xué)出版社,2009.
[3] PHILIPS Semiconductors. SJA1000 stand?alone CAN controller [M]. [S.l.]: PHILIPS Semiconductors, 1999.
[4] Texas Instruments. TMS320F2812 digital signal processors data manual [M]. USA: Texas Instruments, 2007.
[5] Texas Instruments. TMS320F28xx and TMS320F28xxx DSCs hardware designing guide (ZHCA065) [R]. USA: Texas Instruments, 2008.
[6] Philips Semiconductors. SJA1000 stand?alone CAN controller application note (AN97076) [R]. [S.l.]: Philips Semiconductors,1997.
[7] 李俊萍,王靜平.基于CPLD的DSP微處理器與CAN控制器接口的一種設(shè)計(jì)方法[J].現(xiàn)代電子技術(shù),2007,30(9):56?58.