MPC850中復(fù)位邏輯和CPM協(xié)議切換的CPLD實現(xiàn)
摘要:介紹了用CPLD輔助設(shè)計在嵌入系統(tǒng)中進(jìn)行曲MPU復(fù)雜邏輯功能設(shè)計的總體方案,給出了通過對XC95144中復(fù)用控制寄存器進(jìn)行配置以實現(xiàn)MPU復(fù)位邏輯和CPM協(xié)議切換的實現(xiàn)方案和設(shè)計要點。
關(guān)鍵詞:MPU CPM CPLD 復(fù)位邏輯性I/O口 MPC850
1 引言
近年來,微處理器(MPU)在嵌入式系統(tǒng)研發(fā)中所占地位越來越重要,很多應(yīng)用場合對MPU的處理速度、集成密度也提出了更高的要求。Power PC系列MPU是Motorola公司推出的面向嵌入式應(yīng)用的專用MPU,它在片內(nèi)集成了基于RISC體系的微處理器的內(nèi)核和支持多種通信協(xié)議的通信處理器(CPM),具有強大的通信和網(wǎng)絡(luò)協(xié)議處理能力,可廣泛應(yīng)用于通信和網(wǎng)絡(luò)產(chǎn)品中。CPLD(Complex Programmable Logic Device)是一種復(fù)雜的用戶可編程邏輯器件,和FPGA相比,由于采用連續(xù)連接結(jié)構(gòu),易于預(yù)測延時,從而使電路仿真更加準(zhǔn)確。近年來,由于采用先進(jìn)的集成工藝和大批量生產(chǎn),CPLD器件成本不斷下降,集成密度、速度和性能大幅度提高,一個芯片就可以實現(xiàn)一個復(fù)雜的數(shù)字電路系統(tǒng),再加上使用權(quán)方便的開發(fā)工具,因此使用權(quán)CPLD器件可以極大地縮短產(chǎn)品開發(fā)周期,給設(shè)計修改帶來很大方便。
嵌入式系統(tǒng)常用MPU和CPLD聯(lián)合設(shè)計?,F(xiàn)以PowerPC系列MPC850和XILINX公司的XC95144XL為例來介紹實現(xiàn)MPU功能的CPLD輔助設(shè)計方法。實際上,MPC850的外部復(fù)位和通信模塊(CPM)的設(shè)計在整個系統(tǒng)設(shè)計中占用重要地位,也是調(diào)試硬件中最容易出問題的環(huán)節(jié)。本文將對MPC850的外部復(fù)位邏輯和通信模塊的復(fù)用作一探討,并給出了這兩部分的CPLD邏輯實現(xiàn)方法。
2 MPC850的復(fù)位邏輯和CPLD實現(xiàn)
2.1 復(fù)位邏輯
MPC850內(nèi)部的復(fù)位時鐘具有復(fù)位控制邏輯,以及決定復(fù)位起因、同步和相應(yīng)復(fù)位的邏輯模塊。概括起來,MPC850總共具有以下復(fù)位源:
*上電復(fù)位;
*外部硬復(fù)位;
*內(nèi)部硬復(fù)位:包括失鎖、軟件看門狗復(fù)位、校驗停復(fù)位、調(diào)試口硬復(fù)位;
*JTAG復(fù)位;
*外部軟復(fù)位;
*內(nèi)部軟件復(fù)位:指調(diào)試口軟復(fù)位。
設(shè)計中需要用戶參與的主要是上復(fù)位和外部硬復(fù)位。其中上電復(fù)位的復(fù)位過程如下:
(1) 產(chǎn)生上電復(fù)位信號PORESET
(2) PORESET有效,CPU配置SCCR寄存器,PORESET保持時間至少在3μs以上。
(3) PORESET無效后,CPU采用MODCK(時鐘模式配置)并鎖存,同時初始化時鐘。
(4) CPU驅(qū)動HRESET和SRESET信號512個時鐘周期,512周期結(jié)束后,如果RSCONF信號接低,則CPU從數(shù)據(jù)總線上采樣配置數(shù)據(jù),并將內(nèi)部產(chǎn)生 的HRESET和SRESET信號置為無效;如果RSCONF信號接高,則CPU按內(nèi)部缺省值進(jìn)行配置。
(5) 計數(shù)器計數(shù)16個時鐘周期,然后采樣外部硬復(fù)位信號和外部軟復(fù)位信號,如果存在職效的外部硬復(fù)位信號或軟復(fù)位信號,則計數(shù)器清0,并重新計數(shù),否則跳出,執(zhí)行正常操作。
系統(tǒng)中硬件復(fù)位主要用于在CPU感知外部硬復(fù)位信號有效后,產(chǎn)生內(nèi)部硬復(fù)位信號,然后按照上述上電復(fù)位步驟從第4步開始執(zhí)行。其時序圖如圖1所示。
可見,相比一些常用的MPU器件,MPC850的復(fù)位邏輯比較復(fù)雜,而且對復(fù)位控制的時序有嚴(yán)格的要求。通常的設(shè)計需要較多的外部器件來實現(xiàn)邏輯控制,而采用一片CPLD則只需編寫簡單的代碼就可以了,且易于調(diào)度。本應(yīng)用于設(shè)計采用XILINX公司的XC95144XL進(jìn)行邏輯設(shè)計。
2.2 基于CPLD的實現(xiàn)方法。
設(shè)計時,將MPC850的復(fù)位信號(上電復(fù)位poreset、硬復(fù)位hreset、軟復(fù)位sreset)連接到XC95144XL的連接方法如圖2所示。
該方案中CPLD的上電復(fù)位設(shè)計過程如下:
(1) 系統(tǒng)上電后,上電復(fù)位poreset由XC95144XL產(chǎn)生,為了使MPC850得到可靠的復(fù)位,這個延遲時間通常比要求的3μs要大一些。MODCK配置可一直固定。
(2) poreset 信號無效后(為高電平),MPC850會采樣MODCK并驅(qū)動HRESET信號512個時鐘周期。需要注意的是這個時間由MPC850控制的,CPLD不作邏輯實現(xiàn)。然后MPC850開始采樣總線上的32bit配置數(shù)據(jù)。這時不能馬上驅(qū)動總線數(shù)據(jù)線,應(yīng)延遲若干時鐘周期后驅(qū)動,經(jīng)應(yīng)用證明延遲8個時鐘周期以上可以滿足要求。
(3) 驅(qū)動總線配置數(shù)據(jù)16個時鐘周期后把總線置為高阻態(tài),上電復(fù)位結(jié)束。
手動復(fù)位的邏輯實現(xiàn)主要考慮的是對按鍵的復(fù)位作抗抖動處理,以防止多次短暫接觸對系統(tǒng)造成反復(fù)復(fù)位,可以在代碼中加入一個RS觸發(fā)順來實現(xiàn)抗抖。
本設(shè)計采用VHDL語言實現(xiàn),限于篇幅代碼省略。需要注意的是:在總線數(shù)據(jù)配置時,不能采用順序執(zhí)行語句,而只有應(yīng)用并發(fā)語句執(zhí)行才能得到正確的配置。如:
d <="ZZZZZZZZZZZZZZZZ"when flag=true else"0000011010100010";
--512個時鐘周期后,再等待8個時鐘周期將初始配置字推至數(shù)據(jù)線
--采用條件代入語句的并發(fā)描述
而如果采用順序描述語句:
if flag =true then
d <="ZZZZZZZZZZZZZZZZ "
else
d <="0000011010100010";
則配置字將得不到正確讀取。這一點需要特別注意。
3 MPC850通信的CPLD實現(xiàn)
3.1 MPC850 CPM的應(yīng)用
MPC850的CPM模塊支持7個串行通道,其中包括:2個串行管理控制器SMC(支持通用異步收發(fā)UART、透明模式和通用電路接口)、2個串行通信控制器SCC(支持Ethernet、ATM、HDLC和其它多種通信協(xié)議)、1個USB信道、1個I2C端口和1個串行外圍接口SPI。
在實際應(yīng)用中,可通過設(shè)置模式寄存器的相關(guān)控制位來決定各個通道應(yīng)該采用的協(xié)議。各信道的接口通過MPC850的并行I/O口PA、PB和PC與外設(shè)進(jìn)行連接,這些I/O口對應(yīng)的協(xié)議需要對端口的引腳配置寄存器(pin assignment register)和數(shù)據(jù)方向寄存器(data direction register)進(jìn)行配置,但由于端口數(shù)量的限制,所有的通信協(xié)議不可能被同時支持,因此受I/O口限制,若干協(xié)議不能同時被使用。故此,在使用這些I/O口,就存在復(fù)用和互斥的問題。表1給出了各I/O口和通信協(xié)議的對應(yīng)關(guān)系。
表1 MPC850端口復(fù)用一覽表
復(fù)用I/O | 協(xié)議1(括號內(nèi)對應(yīng)該協(xié)議的功能引腳) | 協(xié)議2 | 協(xié)議3 |
PA8 | 串口2(SMRXD2) | RS485(SMRXD2) | ISDN(L1TXDA) |
PA9 | 串口2(SMTXD2) | RS485(SMTXD2) | ISDN(L1RXDA) |
PA7 | 以太網(wǎng)2(RCLK1) | ISDN(L1RCLKA) | |
PA5 | 以太網(wǎng)2(TCLK3) | HDLC(CLK3) | ISDN(L1TCLKA) |
PB30 | 以太網(wǎng)2(TXD3) | SPI(CLK) | HDLC(TXD3) |
PB29 | 以太網(wǎng)2(RXD3) | SPI(OSI) | HDLC(RXD3) |
PB27 | I2C(SDA) | ATM(PHYCS) | |
PB26 | I2C(SCL) | ATM(RST) | |
PC13 | 以太網(wǎng)2(RTS3) | TDMA(L1ST7) | ATM(PHYRD) |
PC11 | USB(RXP) | ATM(PHYAD7) | |
PC10 | USB(RXN) | ATM(PHYAD3) | |
PC7 | USB(TXP) | ATM(PHYAD2) | |
PC6 | USB(TXN) | ATM(PHYAD6) | |
PC5 | 以太網(wǎng)2(COL3) | ISDN(L1TSNCA) | HDLC(CTS3) |
PC4 | 以太網(wǎng)2(CD3) | ISDN(L1RSNCA) | HDLC(CD3) |
3.2 復(fù)用邏輯的CPLD實現(xiàn)
將MPC850需要復(fù)用的I/O端口全部連接到XC95144XL的可編程I/O口,然后將外部連接的各通信端口(RS232、以太網(wǎng)1、以太網(wǎng)2等)也連接到XC95144XL的可編程I/O口。這樣,當(dāng)MPC850需要切換到某個外部端口時,除設(shè)置內(nèi)部相關(guān)寄存器外,通過數(shù)據(jù)和地址線控制XC95144XL內(nèi)部的復(fù)位控制寄存器就可以完成I/O口的切換。余下的工作就是了解復(fù)用控制寄存器的結(jié)構(gòu)和CPLD的讀寫時序。這樣,通過對各位的設(shè)置就能開關(guān)相應(yīng)I/O口。圖3和圖4分別是CPLD的讀寫時序和復(fù)用控制寄存器的位定義結(jié)構(gòu)圖。
4 總結(jié)
本文介紹了MPU和CPLD在嵌入式設(shè)計中的綜合應(yīng)用方法,同時提供了一種簡單的實現(xiàn)方案,隨著VLSI集成度和功能的不斷增強,MPU和CPLD的結(jié)合應(yīng)用遠(yuǎn)不止文中提到的這些。隨著先進(jìn)集成工藝和大批量生產(chǎn)的出現(xiàn),CPLD器件的成本也不斷下降,其集成密度、速度和性能也將大幅提高。另外,其CPLD器件的設(shè)計靈活性也使得它能夠完成許多更多復(fù)雜的在片設(shè)計,從而極大地擴展了MPU的功能,增強了系統(tǒng)的易裁減特性,而這切都無穎將充分提升設(shè)計人員的創(chuàng)造空間。