基于CPLD的片內(nèi)振蕩器設(shè)計(jì)
在絕大部分?jǐn)?shù)字系統(tǒng)設(shè)計(jì)中,時(shí)鐘是不可或缺的部分,通常采用外接有源或者無(wú)源振蕩器來(lái)提供時(shí)鐘信號(hào)。外接時(shí)鐘的優(yōu)點(diǎn)是性能穩(wěn)定,設(shè)計(jì)簡(jiǎn)便;缺點(diǎn)是會(huì)增加電路板面積,而且高頻設(shè)計(jì)時(shí)對(duì)電路板布線和加工的要求比較嚴(yán)格,可能增加系統(tǒng)成本和設(shè)計(jì)難度。基于可編程邏輯器件FPGA/CPLD的設(shè)計(jì)提供了另外一種選擇,即采用片內(nèi)的可編程資源實(shí)現(xiàn)振蕩器功能。這種設(shè)計(jì)可以將振蕩部分同時(shí)集成到FPGA/CPLD中,減少了外部資源的使用。
環(huán)形振蕩器是最簡(jiǎn)單的振蕩器設(shè)計(jì)方法,在分立器件和專用集成電路(ASIC)設(shè)計(jì)中一直受到關(guān)注[1,2,3]。但是在這類設(shè)計(jì)中,振蕩頻率隨電壓變化的特性使其應(yīng)用受到限制,所以要在工藝或電路設(shè)計(jì)方面考慮振蕩頻率的穩(wěn)定問(wèn)題[2][3]。隨著電路制造技術(shù)的發(fā)展,穩(wěn)壓電路已經(jīng)物美價(jià)廉;另外,F(xiàn)PGA/CPLD廠商為用戶在片內(nèi)預(yù)設(shè)了一些特定模塊,為振蕩器的片內(nèi)實(shí)現(xiàn)提供了方便。如Altera公司的MaxII系列CPLD芯片,允許用戶通過(guò)軟件Quartus II的MegaWizard:Plug-in Manager功能來(lái)調(diào)用系統(tǒng)提供的參數(shù)化模塊庫(kù)(LPM)。其中的IO/MAXII Oscil-lator[4]模塊即是一個(gè)能在芯片內(nèi)部實(shí)現(xiàn)片內(nèi)振蕩器的軟核,其工作頻率范圍為3.33MHz~5.56MHz,用戶不可以調(diào)整工作頻率。在做仿真應(yīng)用時(shí),可選擇3.33或5.56MHz;在實(shí)際應(yīng)用中,會(huì)自動(dòng)給出3.33~5.56MHz范圍內(nèi)的振蕩頻率。該片上振蕩器模塊只能下載在MaxII系列芯片內(nèi)的用戶閃存存儲(chǔ)器(UFM)上,振蕩輸出可以驅(qū)動(dòng)芯片引腳和內(nèi)部邏輯,該UFM資源一旦作為振蕩器使用,便不能再實(shí)現(xiàn)并聯(lián)接口(PIO)、串連接口(SPI)和IIC接口等其他功能。
本文介紹一種通用的基于CPLD的片內(nèi)振蕩器設(shè)計(jì)方法,它基于環(huán)形振蕩器原理,只占用片上普通邏輯資源(LE),無(wú)需使用專用邏輯資源(如MaxII中的UFM),從而提高了芯片的資源利用率;振蕩頻率可在一定范圍內(nèi)調(diào)整,振蕩輸出可以驅(qū)動(dòng)內(nèi)部邏輯和外部器件引腳。本設(shè)計(jì)有較大的通用性,可方便地在不同CPLD器件間移植,使一些基于CPLD的片上系統(tǒng)(SoC)設(shè)計(jì)無(wú)需使用外部時(shí)鐘信號(hào)源,從而降低設(shè)計(jì)成本和難度,增加系統(tǒng)集成度。通過(guò)在Altera公司的MAX7000系列EMP7128LC84-15芯片上的實(shí)驗(yàn)說(shuō)明實(shí)現(xiàn)的方法。實(shí)驗(yàn)實(shí)現(xiàn)的頻率范圍在8MHz~62MHz。仿真和硬件測(cè)試結(jié)果表明了該設(shè)計(jì)方法的正確性和可行性。
1 基于CPLD的片內(nèi)環(huán)形振蕩器
環(huán)形振蕩器原理如圖1所示。由奇數(shù)個(gè)非門組成的環(huán)形非門級(jí)聯(lián)串使電路處于無(wú)穩(wěn)定狀態(tài),靜態(tài)下任何一個(gè)非門的輸入和輸出都不可能穩(wěn)定在高電平或低電平,而只能處于周而復(fù)始的高低電平轉(zhuǎn)換狀態(tài),從而產(chǎn)生自激振蕩[5]。振蕩周期為T=2Ntpd,其中N是非門的個(gè)數(shù),tpd是每個(gè)非門的傳輸延遲時(shí)間,改變電路中非門的數(shù)量可以改變電路的振蕩頻率。
圖1所示的環(huán)形振蕩器即使采用電路原理圖輸入,經(jīng)電子設(shè)計(jì)自動(dòng)化(EDA)軟件綜合后,也得不到對(duì)應(yīng)的電路結(jié)構(gòu)。實(shí)際上,EDA綜合工具不是從電路結(jié)構(gòu)出發(fā),而是從電路輸入和輸出的邏輯關(guān)系出發(fā)給出綜合結(jié)果,所以,奇數(shù)個(gè)非門的級(jí)聯(lián)將被綜合為一個(gè)非門,而偶數(shù)個(gè)非門的級(jí)聯(lián)被綜合為一個(gè)緩沖或一條聯(lián)線。為能在CPLD器件中實(shí)現(xiàn)圖1的環(huán)形振蕩器結(jié)構(gòu),本文將圖1中單端口輸入元件改成二端口輸入元件,即用二輸入與非門代替圖1的第一個(gè)非門,其余偶數(shù)個(gè)非門則用二輸入與門代替,二端口元件的一個(gè)輸入端口連接上級(jí)輸出,另一輸入端口作為控制端引出。振蕩器正常工作時(shí)控制端全部置高電平。采用Synplify Pro 7.7綜合后的原理圖如圖2所示。該電路完全可實(shí)現(xiàn)圖1的功能。
為了保證正反饋,圖1結(jié)構(gòu)的非門級(jí)聯(lián)必須是奇數(shù)個(gè)。圖2中的與非門起到反相作用,其他與門則起延時(shí)緩沖的作用??梢酝ㄟ^(guò)改變門的數(shù)量以及選擇門的種類(與門、與非門等)改變osc輸出端的振蕩頻率,而不受"奇數(shù)"個(gè)門的限制,只要保障第一個(gè)門得到正反饋就可以產(chǎn)生振蕩。而圖1的結(jié)構(gòu)必須改變偶數(shù)個(gè)非門才能達(dá)到改變振蕩頻率的目的,因而圖2結(jié)構(gòu)在CPLD芯片中實(shí)現(xiàn)時(shí)可以節(jié)省邏輯資源??刂贫薿scena[n-1,0]為振蕩使能控制端,置高電平時(shí),與非門的輸入和輸出在緩沖級(jí)聯(lián)鏈的反饋?zhàn)饔孟庐a(chǎn)生自激振蕩,振蕩器正常工作;控制端的任意一位置零使振蕩器停振。所以oscena既可單獨(dú)使用,也可互聯(lián)后作為一個(gè)端使用。實(shí)驗(yàn)證明,圖2結(jié)構(gòu)能夠保證門延時(shí)的等間隔特性。
2 CPLD片內(nèi)振蕩器的實(shí)現(xiàn)和優(yōu)化
2.1 CPLD片內(nèi)振蕩器的實(shí)現(xiàn)
基于上述方法的片內(nèi)環(huán)形振蕩器設(shè)計(jì)有很大的通用性,可在不同CPLD芯片間方便地移植。本文以Altera公司的MAX7000S系列CPLD芯片的實(shí)現(xiàn)和測(cè)試為例說(shuō)明。MAX7000S系列基于先進(jìn)的多矩陣構(gòu)架設(shè)計(jì),采用CMOS工藝制造,容量高達(dá)256個(gè)邏輯單元LE(Logic El-ement),每16個(gè)宏單元組成一個(gè)邏輯陣列塊LAB(LogicArray Block),速度達(dá)3.5ns的管腳到管腳延時(shí),同時(shí)支持多種I/O電壓標(biāo)準(zhǔn)。
從EDA軟件綜合后的報(bào)告可以看出,圖2所示電路中每個(gè)門占用了一個(gè)邏輯單元。也就是說(shuō),電路內(nèi)LE的延時(shí)將作為門的延時(shí)tpd,而且需要將振蕩使能端引出到I/O引腳,當(dāng)所實(shí)現(xiàn)振蕩頻率較低時(shí),需要較多的門電路單元,這將占用一定的邏輯和引腳資源,從而降低芯片資源的利用率,所以在低頻情況下使用時(shí),要綜合考慮系統(tǒng)需要的振蕩頻率,盡量用較少的門電路實(shí)現(xiàn)環(huán)形振蕩器,以提供較高振蕩頻率,再設(shè)計(jì)分頻電路以取得合適的振蕩頻率,從而提高芯片的資源利用率。綜合器的這一處理,從客觀上保證了設(shè)計(jì)者可以選擇不同的門來(lái)實(shí)現(xiàn)圖2的結(jié)構(gòu),仍然可以保證振蕩間隔的一致性。實(shí)驗(yàn)也證實(shí)了這個(gè)結(jié)果。
2.2 電源電壓的影響
電壓會(huì)影響振蕩電路的工作頻率[6],電壓增大會(huì)導(dǎo)致電路振蕩頻率增加,反之振蕩頻率減小。CPLD芯片一般有兩個(gè)相對(duì)獨(dú)立的供電端口,即核心電壓(VCCINT)和引腳電壓(VCCIO)。其中核心電壓給芯片內(nèi)部可編程邏輯電路資源提供電源,引腳電壓為芯片的I/O引腳提供電源,以適應(yīng)各種輸出標(biāo)準(zhǔn)(如LVCOMOS、LVTTL、SSTL-2、SSTL-3等)。對(duì)振蕩頻率有影響的是CPLD芯片的核心電壓,對(duì)此電壓應(yīng)采取穩(wěn)壓措施,穩(wěn)壓措施要視不同的應(yīng)用要求而定。最簡(jiǎn)單的措施是采用高性能的穩(wěn)壓芯片給CPLD芯片分別提供兩部分電壓。隨著半導(dǎo)體技術(shù)的發(fā)展,簡(jiǎn)單而廉價(jià)的穩(wěn)壓芯片已具有較高的性能,如National公司的LM2678系列芯片[7]在有效輸入變化范圍內(nèi),穩(wěn)壓輸出誤差在±2%以內(nèi)。
2.3 CPLD片內(nèi)振蕩器優(yōu)化
通過(guò)EDA軟件對(duì)設(shè)計(jì)做優(yōu)化有可能提高所設(shè)計(jì)的振蕩器的性能,減少對(duì)CPLD片內(nèi)資源的占用。當(dāng)采用MAX+plusII10.2軟件設(shè)計(jì)時(shí),軟件優(yōu)化開(kāi)關(guān)設(shè)置為:(1)本設(shè)計(jì)選用MAX系列芯片,故選擇對(duì)該芯片的多層綜合選項(xiàng)(Multi-Level Synthesis for Max5000/7000/9000De-vice)。(2)在面積和速度優(yōu)化選項(xiàng)中,選擇對(duì)面積的優(yōu)化,使振蕩器部分盡可能分配到同一個(gè)LAB中。(3)打開(kāi)"Slow Slew Rate"以降低開(kāi)關(guān)噪聲,打開(kāi)"XOR Synthesis"以減少芯片面積的占用。
3 電路仿真及測(cè)試結(jié)果
本文以Altera公司的MAX+plus II 10.2為設(shè)計(jì)工具,在MAX7000S系列芯片上實(shí)現(xiàn)并測(cè)試。圖3為選用EMP7128LC84-15芯片的時(shí)序仿真結(jié)果。其中p0~p7分別為環(huán)形振蕩電路中單個(gè)門之后的電路節(jié)點(diǎn);oscena[7…0]為各延時(shí)門電路的控制端(即所有二輸入門中多余的輸入端)。
表1列出了以EPM7128LC84-15為目標(biāo)芯片、采用Tektronic TDS2012示波器對(duì)用不同門數(shù)實(shí)現(xiàn)的片內(nèi)振蕩器的測(cè)試數(shù)據(jù)。F1和F2分別表示片內(nèi)振蕩器輸出和二分頻輸出的測(cè)量數(shù)據(jù)。圖4給出了測(cè)量數(shù)據(jù)的曲線。
表1數(shù)據(jù)表明,通過(guò)增加門電路的數(shù)量可以有規(guī)律地減小振蕩電路的工作頻率,由每個(gè)邏輯單元實(shí)現(xiàn)的門電路單元延時(shí)tpd在7.5~10ns之間。
本文介紹的基于CPLD的片內(nèi)振蕩器設(shè)計(jì)方法,在改變?cè)撜袷幤麟娐分虚T電路數(shù)量時(shí),可以有規(guī)律地將振蕩頻率控制在8MHz~62MHz范圍內(nèi)。振蕩器的片內(nèi)設(shè)計(jì)使基于CPLD的片上系統(tǒng)(SoC)設(shè)計(jì)無(wú)需外接時(shí)鐘信號(hào)源,加大了系統(tǒng)的集成度并降低了設(shè)計(jì)成本。本方法有很大的通用性,可以方便地在不同CPLD芯片間移植。仿真和測(cè)試數(shù)據(jù)表明該設(shè)計(jì)方法具有正確性和可行性。
評(píng)論