1 引 言
文獻(xiàn)[1]提出了一種轉(zhuǎn)換方法,是將DSP的數(shù)據(jù)線作為CAN控制器的數(shù)據(jù)地址復(fù)用線,用DSP的地址線A0作為地址、數(shù)據(jù)選擇線。A0=1時(shí),地址有效;A0=0時(shí),數(shù)據(jù)有效,即用奇數(shù)地址傳送地址,用偶數(shù)地址傳送數(shù)據(jù)。雖然此方法實(shí)現(xiàn)起來電路簡單,但在編程時(shí),程序員必須考慮發(fā)送的數(shù)據(jù)何時(shí)作為CAN控制器的地址,何時(shí)作為CAN控制器的數(shù)據(jù),沒有從根本解決非多路復(fù)用方式到多路復(fù)用方式的轉(zhuǎn)換。
本文以TMS320F206與SJAl000連接為例,提出采甩復(fù)雜可編程邏輯器件CPLD,完全用硬件實(shí)現(xiàn)非多路復(fù)用方式到多路復(fù)用方式的轉(zhuǎn)換。
2 多路復(fù)用總線的信號(hào)和時(shí)序
2.1 SJAl000接口的主要信號(hào)說明
CAN控制器SJAl000提供的微處理器接口方式為典型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=1時(shí),為INTEL模式;當(dāng)MODE=0時(shí),為MOTOROLA模式。后面描述的地址數(shù)據(jù)多路復(fù)用總線模式均為INTEL模式。
圖1,圖2分別為INTEL模式讀、寫周期時(shí)序[2]。AD7~AD0引腳在ALE有效時(shí),傳送的是地址信號(hào),在RD或WR有效時(shí),傳輸?shù)氖菙?shù)據(jù)信號(hào)。
2.2 SJAl000時(shí)序分析
以SJAl000的讀時(shí)序(圖1)為例,說明在設(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。
3非多路復(fù)用總線的信號(hào)和時(shí)序
3.1 TSM320F206總線主要信號(hào)說明
TSM320F206的總線接口方式采用了地址和數(shù)據(jù)分離的形式。其主要信號(hào)有地址信號(hào)A0~A15,數(shù)據(jù)信號(hào)DO~D15,讀信號(hào)RE,寫信號(hào)WE,閘門信號(hào)STRB,I/O空間選擇信號(hào)IS,數(shù)據(jù)存儲(chǔ)器選擇信號(hào)DS,程序存儲(chǔ)器選擇信號(hào)PS,機(jī)器時(shí)鐘輸出信號(hào)CLKOUT1。當(dāng)對外部數(shù)據(jù)存儲(chǔ)器、程序存儲(chǔ)器或I/O空間訪問時(shí),STRB有效,若對外部I/O訪問時(shí)(即程序中使用PORTR,PORTW指令),IS有效。
TMS320F206的讀寫時(shí)序[2]如圖3和圖4所示。I/O的讀或?qū)懝ぷ髦芷谝话阍趦蓚€(gè)機(jī)器周期內(nèi)完成,在此期間,IS信號(hào)地址信號(hào)一直保持有效;閘門信號(hào)STRB發(fā)生在個(gè)機(jī)器周期有效后并保持一個(gè)機(jī)器周期以上;RE和WE有效時(shí),數(shù)據(jù)有效。在兩次連續(xù)的寫操作(如圖4所示),WE的有效間隔時(shí)間tw(WH)小為(2H-4)ns,而兩次連續(xù)的讀訪問(如圖3所示),RE的有效間隔時(shí)間tw(RDH)為(H-4)ns-H ns,其中H為0.5倍的機(jī)器時(shí)鐘周期,可見連續(xù)的讀、寫操作時(shí),RE,WE的有效間隔不同,在設(shè)計(jì)電路時(shí),應(yīng)注意此細(xì)節(jié)。
在連續(xù)的讀或?qū)懖僮鲿r(shí),IS信號(hào)一直為有效電平'0',無法以此信號(hào)作為產(chǎn)生SJAl000的ALE、讀、寫信號(hào)起始基準(zhǔn),而在寫周期時(shí),STRB與WE的變化始終保持一致,因此在產(chǎn)生SJAl000寫周期時(shí),可以用STRB作為ALE、寫信號(hào)WR產(chǎn)生的起始基準(zhǔn)信號(hào)。但是TSM320F206在連續(xù)的讀操作時(shí),STRB一直保持為低電平,可見在產(chǎn)生SJAl000讀、寫操作周期時(shí),無法單獨(dú)以他作為ALE,RD信號(hào)產(chǎn)生的起始基準(zhǔn),需與IS,WE,RE進(jìn)行邏輯組合作為SJAl000讀、寫操作周期的起始基準(zhǔn)信號(hào)。
此轉(zhuǎn)換橋如果用中規(guī)模集成電路(74系列)實(shí)現(xiàn)比較復(fù)雜,工作頻率又較高,布線時(shí)稍不合理,易引起干擾,使得電路工作不穩(wěn)定,因此采用高可靠性的復(fù)雜可編程邏輯
器件CPLD,用硬件描述語言VHDL來實(shí)現(xiàn)。
4.1轉(zhuǎn)換橋引腳信號(hào)定義
圖5為轉(zhuǎn)換橋的時(shí)序仿真結(jié)果,其中轉(zhuǎn)換橋的各引腳信號(hào)與TMS320F206和SJAl0001引腳信號(hào)對應(yīng)為:fabl7接A0~A7;fdb7接DO~D7;fds接IS;fstrb接STRB;fwe接WE;frd接RE;fcp接CLKOUT1;ale接ALE;adb7接AD7~AD0;wr接WR;rd接RD。
轉(zhuǎn)換橋的基準(zhǔn)時(shí)鐘fcp為TMS320F206的機(jī)器時(shí)鐘輸出信號(hào)CLKOUT1。fcp為20 MHz的方波信號(hào)。因?yàn)門MS320F206的讀或?qū)懝ぷ髦芷谝话銥?~2個(gè)機(jī)器周期,此時(shí)基準(zhǔn)時(shí)鐘fcp多含有4個(gè)邊沿狀態(tài),無法完成非多路復(fù)用到多路復(fù)用的轉(zhuǎn)換,所以通過軟件等待設(shè)置[4],使TMS320F206對外部總線操作時(shí),由原來所用的1個(gè)機(jī)器時(shí)鐘周期,延長到4個(gè)機(jī)器時(shí)鐘周期,邊沿狀態(tài)個(gè)數(shù)增加了4倍,另外fcp的脈寬為25 ns,這樣可以保證轉(zhuǎn)換橋輸出的多路復(fù)用總線時(shí)序的時(shí)間參數(shù)滿足SJAl000的時(shí)序要求。
從上面時(shí)序分析中可以確定出,SJAl000的讀、寫周期的使能信號(hào)(IS)和起始基準(zhǔn)信號(hào)(STRB,WE,RE)邏輯組合。IS作為轉(zhuǎn)換橋的片選信號(hào),當(dāng)IS為'0',轉(zhuǎn)換橋工作,否則轉(zhuǎn)換橋的各輸出信號(hào)被懸掛。當(dāng)IS為'0',STRB為'0',WE為'0',RE為'1'時(shí),DSP開始對外部I/O進(jìn)行寫操作,在后面緊跟的4個(gè)DSP機(jī)器周期產(chǎn)生出1個(gè)SJAl000的寫周期;當(dāng)IS為'0',STRB為'0',WE為'1',RE為'1'時(shí),DSP開始對外部I/O進(jìn)行讀操作,同樣在后面緊跟的4個(gè)DSP機(jī)器周期產(chǎn)生出1個(gè)SJAl000的讀周期。
4.3讀操作轉(zhuǎn)換過程
通過軟件等待設(shè)置,使DSP的I/O讀、寫操作需4個(gè)機(jī)器時(shí)鐘周期。個(gè)時(shí)鐘周期的上升沿產(chǎn)生ale信號(hào)(脈寬為O.5倍的機(jī)器時(shí)鐘周期),同時(shí)將DSP輸入的低8位地址fab17鎖存并送到地址數(shù)據(jù)復(fù)用總線adb7,并保持直到第二個(gè)時(shí)鐘周期的上升沿為止,此時(shí)adb7為高阻狀態(tài)。第三、第四個(gè)時(shí)鐘周期DSP的讀信號(hào)。frd有效,將此信號(hào)直接送到rd引腳,此時(shí)adb7引腳的數(shù)據(jù)直接送給fdb7引腳,讀操作結(jié)束。
4.4寫操作轉(zhuǎn)換過程
在寫操作的4個(gè)時(shí)鐘周期中,個(gè)時(shí)鐘周期的上升沿產(chǎn)生ale信號(hào)(脈寬為一個(gè)機(jī)器時(shí)鐘周期),同時(shí)將DSP輸入的低八位地址fabl7引腳的信號(hào)送到adb7上,并保持到第三個(gè)時(shí)鐘周期結(jié)束。第四個(gè)時(shí)鐘周期的上升沿產(chǎn)生寫信號(hào)wr(寬度為一個(gè)時(shí)鐘周期),在DSP。寫信號(hào)few的上升沿處鎖存數(shù)據(jù)線fdb7來的信號(hào),并將其送到adb7引腳上,延時(shí)到第五個(gè)時(shí)鐘周期把a(bǔ)db7變?yōu)楦咦锠顟B(tài),寫操作結(jié)束。
5 結(jié) 語
本文提出的非多路復(fù)用總線到多路復(fù)用總線轉(zhuǎn)換橋采用了Xilinx公司的CPLD芯片X(295144-15-PQl00,并使用該公司開發(fā)集成環(huán)境Fundation F3.1i,將其集成為一塊專用芯片。實(shí)現(xiàn)了DSP微處理器TM320F206與CAN控制器SJAl000連接,通過大量的實(shí)驗(yàn)測試,此轉(zhuǎn)換橋工作非常穩(wěn)定,現(xiàn)已應(yīng)用到電力網(wǎng)絡(luò)饋線遠(yuǎn)程終端裝置(FTU)中。