文獻(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)帶來的影響。隨著測試的重要性越來越突出,,可測性設(shè)計(jì)DFT(Design For Test)在可控性和可觀測性等方面對(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)一般來自于SoC的模擬部分,,與時(shí)鐘信號(hào)的相位關(guān)系是不確定的,相對(duì)于數(shù)字部分而言是一個(gè)異步復(fù)位信號(hào),,故在復(fù)位釋放時(shí)容易引起亞穩(wěn)態(tài)的問題,。上電復(fù)位處理電路用于實(shí)現(xiàn)對(duì)POR的同步化處理,以減少亞穩(wěn)態(tài)對(duì)電路帶來的影響[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)來源于芯片的外部復(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)測定,,在本設(shè)計(jì)環(huán)境下需要濾除寬度為90 μs以下的毛刺,。由于設(shè)計(jì)中使用了頻率為32 kHz的時(shí)鐘CLK_32K,為了簡化電路,,使用5級(jí)D觸發(fā)器DFF(D Flip-Flop)級(jí)聯(lián)來完成濾波功能,。其中D1、D2為同步器,,對(duì)external_reset在CLK_32K域做同步化處理[4],;之后經(jīng)過D3、D4,、D5分別得到external_reset的延遲信號(hào),。由于CLK_32K的一個(gè)周期大約為30 ?滋s,并且external_reset為低電平有效,,故將各延遲信號(hào)經(jīng)過一個(gè)“或”門輸出即可得到濾波后的復(fù)位信號(hào),;該信號(hào)經(jīng)D6、D7,、D8后,,得到最終的經(jīng)過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)沒有復(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所組成的電路用來檢測soft_reset或WDT的上升沿,;由D10、D11,、D12和O3組成的電路將信號(hào)展寬后,,經(jīng)過反相器I2輸出,送給復(fù)位信號(hào)產(chǎn)生電路,。
1.4 復(fù)位信號(hào)產(chǎn)生
SoC中的復(fù)位信號(hào)來源繁多,,不同的復(fù)位信號(hào)作用的模塊也有所不同,需要對(duì)各復(fù)位信號(hào)進(jìn)行處理,,以得到系統(tǒng)中每個(gè)模塊所需的復(fù)位信號(hào),。復(fù)位信號(hào)產(chǎn)生電路將經(jīng)過濾波和同步化處理后得到的各個(gè)復(fù)位信號(hào)進(jìn)行收集,再根據(jù)系統(tǒng)需求,,經(jīng)過相應(yīng)的處理,,產(chǎn)生符合要求的各種復(fù)位信號(hào),最終分配至系統(tǒng)中各模塊,,連接至各寄存器復(fù)位端,。
1.4.1 DMA模塊復(fù)位電路
SoC在系統(tǒng)上電后,由DMA模塊將存儲(chǔ)于Flash中的程序讀出,,然后寫入SRAM中供MCU執(zhí)行,。在此過程中,芯片中除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來自于Flash控制模塊,,用來指示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í),,開始從Flash搬移數(shù)據(jù)。同樣,,在外部復(fù)位或上電復(fù)位之后,,DMA開始從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ù)位來源包括上電復(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)用來指示DMA已經(jīng)完成了程序搬移,,MCU可以離開復(fù)位狀態(tà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組成的電路用來檢測flash_program的下降沿,,經(jīng)過反相器I4之后,,與ext_porn、soft_WDT一起經(jīng)過與門A4送出,。
1.5 DFT設(shè)計(jì)相關(guān)電路
芯片測試的原則之一是要求被測電路具備良好的可控性。由于SoC中各寄存器的復(fù)位端信號(hào)全部來自于復(fù)位網(wǎng)絡(luò)的寄存器輸出端,,在ATPG(Auto Test Pattern Generation)測試模式下,,這些寄存器輸出會(huì)迫使位于掃描鏈中后級(jí)的寄存器輸出值被強(qiáng)制清零,從而覆蓋正確的測試采樣值,,違背了可控性的原則,。因此,需要在電路中使用選擇器,,將所有寄存器的復(fù)位端旁路至外部復(fù)位管腳,,以滿足可控性的要求,這樣就避免了芯片測試過程中前級(jí)寄存器的輸出端對(duì)后級(jí)寄存器清零的問題,,保證了測試的有效進(jìn)行,。Mux的選擇端信號(hào)(如圖2所示M1~M7的S端)使用測試使能信號(hào)scan_en,當(dāng)退出測試模式回到正常工作模式時(shí),,SoC中各寄存器復(fù)位端從外部可控復(fù)位管腳切換至正常復(fù)位網(wǎng)絡(luò),,功能不受影響。
2 設(shè)計(jì)結(jié)果與分析
本設(shè)計(jì)采用Verilog語言編寫代碼,,使用NC-Verilog工具進(jìn)行電路仿真,。此外,將整個(gè)系統(tǒng)設(shè)計(jì)適配至Xilinx Spartan-6 FPGA上進(jìn)行了驗(yàn)證,,并通過Xilinx自帶工具ChipScope觀察設(shè)計(jì)結(jié)果,。
由于軟件復(fù)位和WDT復(fù)位信號(hào)的處理方式一致,故只給出軟件復(fù)位測試結(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模塊沒有被復(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] 黃良,,韓誠山,,文明.星載FPGA混合時(shí)鐘域設(shè)計(jì)[J].電子技術(shù)應(yīng)用,2010,,36(12):42-47.