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