文獻(xiàn)標(biāo)識(shí)碼: A
文章編號(hào): 0258-7998(2012)12-0032-04
隨著集成電路技術(shù)的發(fā)展,,嵌入微控制器MCU(Micro Control Unit)的片上系統(tǒng)SoC(System on Chip)已經(jīng)成為芯片設(shè)計(jì)的主要方向[1]。作為存儲(chǔ)程序使用的嵌入式Flash已被廣泛應(yīng)用于其中,,以減小芯片的面積和功耗,。MCU和嵌入式Flash的存在使得SoC的復(fù)位較一般專用集成電路ASIC(Application Specific Integration Circuit)更加復(fù)雜。
一般而言,,SoC中的復(fù)位通常包括上電復(fù)位,、外部復(fù)位、軟件復(fù)位和看門狗(WatchDog)復(fù)位,,合理分配這些復(fù)位所作用的模塊和范圍非常重要,。同時(shí),由于SoC在系統(tǒng)復(fù)位后需要將程序從Flash搬移至SRAM,,此段時(shí)間內(nèi)MCU及相關(guān)模塊必須保持復(fù)位狀態(tài),以防止錯(cuò)誤執(zhí)行未準(zhǔn)備好的程序,,因此復(fù)位順序需要特別留意,。此外,,對(duì)于異步復(fù)位的釋放需要考慮亞穩(wěn)態(tài)帶來(lái)的影響,。隨著測(cè)試的重要性越來(lái)越突出,,可測(cè)性設(shè)計(jì)DFT(Design For Test)在可控性和可觀測(cè)性等方面對(duì)復(fù)位網(wǎng)絡(luò)的設(shè)計(jì)也提出了要求,。
本文設(shè)計(jì)的電路綜合考慮了上述各種因素,,能夠妥善處理各種復(fù)位信號(hào)之間的關(guān)系及釋放順序,,產(chǎn)生正確合理的復(fù)位信號(hào),,并對(duì)DFT設(shè)計(jì)加以支持,。如圖1所示,。
1 復(fù)位電路設(shè)計(jì)
圖1所示的SoC中復(fù)位電路的結(jié)構(gòu)框圖,,由上電復(fù)位處理電路、外部復(fù)位處理電路,、軟件復(fù)位與看門狗(WatchDog)復(fù)位處理電路和復(fù)位信號(hào)產(chǎn)生等幾部分組成,。
圖2所示為SoC復(fù)位電路設(shè)計(jì)實(shí)現(xiàn)的實(shí)際門級(jí)電路圖。
1.1 上電復(fù)位處理電路
SoC通常會(huì)在芯片上電時(shí)進(jìn)行系統(tǒng)復(fù)位,。該復(fù)位信號(hào)(如圖1中POR)一般來(lái)自于SoC的模擬部分,,與時(shí)鐘信號(hào)的相位關(guān)系是不確定的,相對(duì)于數(shù)字部分而言是一個(gè)異步復(fù)位信號(hào),,故在復(fù)位釋放時(shí)容易引起亞穩(wěn)態(tài)的問(wèn)題,。上電復(fù)位處理電路用于實(shí)現(xiàn)對(duì)POR的同步化處理,,以減少亞穩(wěn)態(tài)對(duì)電路帶來(lái)的影響[2-3]。如圖3所示,,使用兩組同步器在CLK域和CLK_32K域分別對(duì)POR進(jìn)行同步化處理,。經(jīng)同步處理后的por_32k和por_clk大大減小了POR釋放時(shí)可能引起的亞穩(wěn)態(tài)影響,能夠提供穩(wěn)定有效的異步復(fù)位,。
1.2 外部復(fù)位處理電路
SoC中另一個(gè)常用的復(fù)位信號(hào)來(lái)源于芯片的外部復(fù)位管腳(圖1中external_reset),。外部復(fù)位信號(hào)容易受到外界環(huán)境的干擾,如果該復(fù)位信號(hào)使用外部按鍵,,還容易引發(fā)抖動(dòng),,造成復(fù)位電平的波動(dòng),引起系統(tǒng)的不穩(wěn)定,,因此在設(shè)計(jì)中需要使用去抖電路進(jìn)行濾波,。
圖4所示為外部復(fù)位處理電路的實(shí)際電路圖。該電路首先對(duì)外部復(fù)位信號(hào)external_reset進(jìn)行濾波,,再將濾波后得到的復(fù)位信號(hào)經(jīng)CLK域同步化處理得到最終的復(fù)位信號(hào)ext_porn,,然后送至復(fù)位信號(hào)產(chǎn)生電路。
經(jīng)實(shí)驗(yàn)測(cè)定,,在本設(shè)計(jì)環(huán)境下需要濾除寬度為90 μs以下的毛刺,。由于設(shè)計(jì)中使用了頻率為32 kHz的時(shí)鐘CLK_32K,為了簡(jiǎn)化電路,,使用5級(jí)D觸發(fā)器DFF(D Flip-Flop)級(jí)聯(lián)來(lái)完成濾波功能,。其中D1、D2為同步器,,對(duì)external_reset在CLK_32K域做同步化處理[4],;之后經(jīng)過(guò)D3、D4,、D5分別得到external_reset的延遲信號(hào),。由于CLK_32K的一個(gè)周期大約為30 ?滋s,并且external_reset為低電平有效,,故將各延遲信號(hào)經(jīng)過(guò)一個(gè)“或”門輸出即可得到濾波后的復(fù)位信號(hào),;該信號(hào)經(jīng)D6、D7,、D8后,,得到最終的經(jīng)過(guò)CLK域同步化處理的復(fù)位信號(hào)ext_porn,送至復(fù)位信號(hào)產(chǎn)生電路,。其中,,D6的作用是將濾波后的復(fù)位信號(hào)寄存,為D7、D8組成的同步器提供穩(wěn)定的寄存器輸出,,以避免由于布線及“或”門對(duì)信號(hào)造成不對(duì)稱延遲所引起的毛刺被同步器捕獲,,從而進(jìn)一步降低亞穩(wěn)態(tài)的影響。
圖5所示為Xilinx自帶工具ChipScope獲得的65 ?滋s低電平信號(hào)輸入到外部復(fù)位管腳時(shí)的波形圖,。從圖中可以看到,,在此輸入下系統(tǒng)沒(méi)有復(fù)位發(fā)生。
圖6所示為ChipScope獲得的124 μs低電平信號(hào)輸入到外部復(fù)位管腳時(shí)的波形圖,。從圖中可以看到,,在此輸入下系統(tǒng)所有模塊均被復(fù)位。
由圖5和圖6所顯示的結(jié)果可以看出,,本設(shè)計(jì)的外部復(fù)位處理電路可以將90 ?滋s以下的毛刺濾除,。
1.3 軟件復(fù)位與WatchDog復(fù)位處理電路
軟件復(fù)位在軟硬件協(xié)同工作的SoC中不可或缺。在某些特定的情況下,,需要在軟件的控制下對(duì)系統(tǒng)或者其中某些特定模塊進(jìn)行復(fù)位,。此外,SoC中通常使用WatchDog在程序“跑飛”的情況下使系統(tǒng)復(fù)位至初始化狀態(tài),。圖7所示為軟件與WatchDog復(fù)位電路,,其中soft_reset是軟件復(fù)位信號(hào),WDT是WatchDog復(fù)位信號(hào),,二者均為高電平有效,。由D9、I1和A1所組成的電路用來(lái)檢測(cè)soft_reset或WDT的上升沿,;由D10,、D11、D12和O3組成的電路將信號(hào)展寬后,,經(jīng)過(guò)反相器I2輸出,送給復(fù)位信號(hào)產(chǎn)生電路,。
1.4 復(fù)位信號(hào)產(chǎn)生
SoC中的復(fù)位信號(hào)來(lái)源繁多,,不同的復(fù)位信號(hào)作用的模塊也有所不同,需要對(duì)各復(fù)位信號(hào)進(jìn)行處理,,以得到系統(tǒng)中每個(gè)模塊所需的復(fù)位信號(hào),。復(fù)位信號(hào)產(chǎn)生電路將經(jīng)過(guò)濾波和同步化處理后得到的各個(gè)復(fù)位信號(hào)進(jìn)行收集,再根據(jù)系統(tǒng)需求,,經(jīng)過(guò)相應(yīng)的處理,,產(chǎn)生符合要求的各種復(fù)位信號(hào),最終分配至系統(tǒng)中各模塊,,連接至各寄存器復(fù)位端,。
1.4.1 DMA模塊復(fù)位電路
SoC在系統(tǒng)上電后,由DMA模塊將存儲(chǔ)于Flash中的程序讀出,然后寫入SRAM中供MCU執(zhí)行,。在此過(guò)程中,,芯片中除DMA之外的其他模塊(尤其是MCU)仍然處于復(fù)位狀態(tài)。因此,,DMA模塊的復(fù)位電路需要獨(dú)立于SoC的復(fù)位網(wǎng)絡(luò)單獨(dú)設(shè)計(jì),。
圖2中包括中DMA模塊復(fù)位信號(hào)(dma_rstn)的產(chǎn)生電路。圖中,,flash_program來(lái)自于Flash控制模塊,,用來(lái)指示Flash當(dāng)前的狀態(tài)。Flash在芯片外部控制下被燒錄時(shí),,flash_program信號(hào)一直保持高電平,,dma_rstn輸出為低電平,此時(shí)DMA處于復(fù)位狀態(tài),,不進(jìn)行程序搬移的操作,;當(dāng)Flash完成燒錄后,flash_program信號(hào)變?yōu)榈碗娖?,DMA進(jìn)入正常工作狀態(tài)時(shí),,開(kāi)始從Flash搬移數(shù)據(jù)。同樣,,在外部復(fù)位或上電復(fù)位之后,,DMA開(kāi)始從Flash中搬移數(shù)據(jù)。
1.4.2 CGU模塊復(fù)位信號(hào)的產(chǎn)生
SoC中通常包含時(shí)鐘產(chǎn)生單元CGU(Clock Generate Unit),,主要完成對(duì)系統(tǒng)時(shí)鐘分頻,、時(shí)鐘切換等工作。為保證系統(tǒng)的穩(wěn)定性,,該模塊中的寄存器僅在上電復(fù)位信號(hào)和外部復(fù)位信號(hào)的作用下才進(jìn)行復(fù)位,,因此僅需將經(jīng)處理后的ext_porn直接送至該模塊。
1.4.3 MCU復(fù)位信號(hào)的產(chǎn)生
MCU的復(fù)位來(lái)源包括上電復(fù)位,、外部復(fù)位以及軟件/WatchDog復(fù)位,。在復(fù)位順序上,為了防止MCU在系統(tǒng)尚未準(zhǔn)備好時(shí)執(zhí)行程序,,通常會(huì)將MCU的復(fù)位一直保持有效,,直至系統(tǒng)中其他所有模塊就緒并且程序準(zhǔn)備好才被釋放。在本設(shè)計(jì)中,,MCU的復(fù)位一定要在DMA模塊完成程序搬移之后釋放,。因此,MCU的復(fù)位邏輯中包含了DMA模塊輸出的狀態(tài)標(biāo)志信號(hào)dma_over,,該信號(hào)用來(lái)指示DMA已經(jīng)完成了程序搬移,,MCU可以離開(kāi)復(fù)位狀態(tài)開(kāi)始執(zhí)行程序,。
1.4.4 其他模塊復(fù)位信號(hào)的產(chǎn)生
系統(tǒng)中其他模塊包括接口電路和Flash控制電路,在上電和Flash燒錄結(jié)束時(shí)都需要將其復(fù)位,。因此,,這些模塊的復(fù)位電路也需要獨(dú)立設(shè)計(jì)。
圖8所示為系統(tǒng)中其他模塊復(fù)位信號(hào)產(chǎn)生電路,。D10,、I3、A3組成的電路用來(lái)檢測(cè)flash_program的下降沿,,經(jīng)過(guò)反相器I4之后,,與ext_porn、soft_WDT一起經(jīng)過(guò)與門A4送出,。
1.5 DFT設(shè)計(jì)相關(guān)電路
芯片測(cè)試的原則之一是要求被測(cè)電路具備良好的可控性,。由于SoC中各寄存器的復(fù)位端信號(hào)全部來(lái)自于復(fù)位網(wǎng)絡(luò)的寄存器輸出端,在ATPG(Auto Test Pattern Generation)測(cè)試模式下,,這些寄存器輸出會(huì)迫使位于掃描鏈中后級(jí)的寄存器輸出值被強(qiáng)制清零,,從而覆蓋正確的測(cè)試采樣值,違背了可控性的原則,。因此,,需要在電路中使用選擇器,將所有寄存器的復(fù)位端旁路至外部復(fù)位管腳,,以滿足可控性的要求,,這樣就避免了芯片測(cè)試過(guò)程中前級(jí)寄存器的輸出端對(duì)后級(jí)寄存器清零的問(wèn)題,保證了測(cè)試的有效進(jìn)行,。Mux的選擇端信號(hào)(如圖2所示M1~M7的S端)使用測(cè)試使能信號(hào)scan_en,,當(dāng)退出測(cè)試模式回到正常工作模式時(shí),SoC中各寄存器復(fù)位端從外部可控復(fù)位管腳切換至正常復(fù)位網(wǎng)絡(luò),,功能不受影響,。
2 設(shè)計(jì)結(jié)果與分析
本設(shè)計(jì)采用Verilog語(yǔ)言編寫代碼,使用NC-Verilog工具進(jìn)行電路仿真,。此外,,將整個(gè)系統(tǒng)設(shè)計(jì)適配至Xilinx Spartan-6 FPGA上進(jìn)行了驗(yàn)證,并通過(guò)Xilinx自帶工具ChipScope觀察設(shè)計(jì)結(jié)果,。
由于軟件復(fù)位和WDT復(fù)位信號(hào)的處理方式一致,,故只給出軟件復(fù)位測(cè)試結(jié)果,。圖9所示為軟件復(fù)位時(shí)系統(tǒng)復(fù)位信號(hào)產(chǎn)生情況,,除了cgu_rstn之外,其余復(fù)位信號(hào)均將進(jìn)入復(fù)位狀態(tài),。
圖10所示為flash_program結(jié)束時(shí)的驗(yàn)證結(jié)果,。此時(shí),,dma_rstn撤離復(fù)位狀態(tài);per_rstn有一個(gè)系統(tǒng)時(shí)鐘周期的復(fù)位,;而MCU一直處于復(fù)位狀態(tài),,直到DMA完成了程序的搬移(dma_over為高電平),MCU才撤離復(fù)位狀態(tài),;cgu_rstn一直為高電平,,即cgu模塊沒(méi)有被復(fù)位。
本文設(shè)計(jì)了一種片上系統(tǒng)復(fù)位電路,,針對(duì)SoC的特點(diǎn),,可以正確穩(wěn)定地產(chǎn)生各模塊所需要的復(fù)位信號(hào),同時(shí)可以滿足DFT設(shè)計(jì)的要求,。Xilinx Spartan-6 FPGA驗(yàn)證結(jié)果表明,,該電路能夠滿足系統(tǒng)的應(yīng)用需求,可以有效正確地復(fù)位系統(tǒng)中的各模塊,,同時(shí)可以濾除90 MHZ以下的外部干擾信號(hào),。該設(shè)計(jì)已成功應(yīng)用于電容式觸控芯片中。
參考文獻(xiàn)
[1] 謝平.基于龍芯IP核SoC芯片的FPGA驗(yàn)證技術(shù)研究[J]. 電子技術(shù)應(yīng)用,,2010,,36(10):128-131.
[2] CUMMINGS C E,MILLS D.Synchronous resets? Asynchronous resets? I am so confused! How will I ever know which to use?[M/OL].(2002-04-xx)[2012-07-31].http://www.sunburst-design.com.
[3] KLEEMAN L,,CANTONI A.Metastable behavior in digital systems[J].IEEE Design & Test of Computers,,1987,4(6):4-19.
[4] 黃良,,韓誠(chéng)山,,文明.星載FPGA混合時(shí)鐘域設(shè)計(jì)[J].電子技術(shù)應(yīng)用,2010,,36(12):42-47.