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