MPC850中復(fù)位邏輯和CPM協(xié)議切換的CPLD實(shí)現(xiàn)
1 引言
本文引用地址:http://butianyuan.cn/article/21153.htm近年來(lái),微處理器(mpu)在嵌入式系統(tǒng)研發(fā)中所占地位越來(lái)越重要,很多應(yīng)用場(chǎng)合對(duì)mpu的處理速度、集成密度也提出了更高的要求。power
pc系列mpu是motorola公司推出的面向嵌入式應(yīng)用的專(zhuān)用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ù)雜的用戶(hù)可編程邏輯器件,和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ù)位:包括失鎖、軟件看門(mén)狗復(fù)位、校驗(yàn)停復(fù)位、調(diào)試口硬復(fù)位;
*jtag復(fù)位;
*外部軟復(fù)位;
*內(nèi)部軟件復(fù)位:指調(diào)試口軟復(fù)位。
設(shè)計(jì)中需要用戶(hù)參與的主要是上復(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ù)總線(xiàn)上采樣配置數(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則只需編寫(xiě)簡(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)始采樣總線(xiàn)上的32bit配置數(shù)據(jù)。這時(shí)不能馬上驅(qū)動(dòng)總線(xiàn)數(shù)據(jù)線(xiàn),應(yīng)延遲若干時(shí)鐘周期后驅(qū)動(dòng),經(jīng)應(yīng)用證明延遲8個(gè)時(shí)鐘周期以上可以滿(mǎn)足要求。
(3) 驅(qū)動(dòng)總線(xiàn)配置數(shù)據(jù)16個(gè)時(shí)鐘周期后把總線(xiàn)置為高阻態(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),限于篇幅代碼省略。需要注意的是:在總線(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ù)線(xiàn)
--采用條件代入語(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ù)用一覽表
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ù)和地址線(xiàn)控制xc95144xl內(nèi)部的復(fù)位控制寄存器就可以完成i/o口的切換。余下的工作就是了解復(fù)用控制寄存器的結(jié)構(gòu)和cpld的讀寫(xiě)時(shí)序。這樣,通過(guò)對(duì)各位的設(shè)置就能開(kāi)關(guān)相應(yīng)i/o口。圖3和圖4分別是cpld的讀寫(xiě)時(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)造空間。
評(píng)論