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