當(dāng)前位置:首頁 > EDA > 電子設(shè)計(jì)自動(dòng)化
[導(dǎo)讀]一、智能全數(shù)字鎖相環(huán)的設(shè)計(jì)  1 引言  數(shù)字鎖相環(huán)路已在數(shù)字通信、無線電電子學(xué)及電力系統(tǒng)自動(dòng)化等領(lǐng)域中得到了極為廣泛的應(yīng)用。隨著集成電路技術(shù)的發(fā)展,不僅能夠制成頻率較高的單片集成鎖相環(huán)路,而且可以把整

一、智能全數(shù)字鎖相環(huán)的設(shè)計(jì)

  1 引言

  數(shù)字鎖相環(huán)路已在數(shù)字通信、無線電電子學(xué)及電力系統(tǒng)自動(dòng)化等領(lǐng)域中得到了極為廣泛的應(yīng)用。隨著集成電路技術(shù)的發(fā)展,不僅能夠制成頻率較高的單片集成鎖相環(huán)路,而且可以把整個(gè)系統(tǒng)集成到一個(gè)芯片上去。在基于FPGA的通信電路中,可以把全數(shù)字鎖相環(huán)路作為一個(gè)功能模塊嵌入FPGA中,構(gòu)成片內(nèi)鎖相環(huán)。

  鎖相環(huán)是一個(gè)相位誤差控制系統(tǒng)。它比較輸入信號(hào)和振蕩器輸出信號(hào)之間的相位差,從而產(chǎn)生誤差控制信號(hào)來調(diào)整振蕩器的頻率,以達(dá)到與輸入信號(hào)同頻同相。所謂全數(shù)字鎖相環(huán)路(DPLL)就是環(huán)路部件全部數(shù)字化,采用數(shù)字鑒相器(DPD)、數(shù)字環(huán)路濾波器(DLF)、數(shù)控振蕩器(DCO)構(gòu)成的鎖相環(huán)路,其組成框圖見圖1示。

  

  當(dāng)鎖相環(huán)中的鑒相器與數(shù)控振蕩器選定后,鎖相環(huán)的性能很大程度依賴于數(shù)字環(huán)路濾波器的參數(shù)設(shè)置。

  2 K計(jì)數(shù)器的參數(shù)設(shè)置

  74297中的環(huán)路濾波器采用了K計(jì)數(shù)器。其功能就是對(duì)相位誤差序列計(jì)數(shù)即濾波,并輸出相應(yīng)的進(jìn)位脈沖或是借位脈沖,來調(diào)整I/D數(shù)控振蕩器輸出信號(hào)的相位(或頻率),從而實(shí)現(xiàn)相位控制和鎖定。

  K計(jì)數(shù)器中K值的選取需要由四根控制線來進(jìn)行控制,模值是2的N次冪。在鎖相環(huán)路同步的狀態(tài)下,鑒相器既沒有超前脈沖也沒有滯后脈沖輸出,所以K計(jì)數(shù)器通常是沒有輸出的;這就大大減少了由噪聲引起的對(duì)鎖相環(huán)路的誤控作用。也就是說,K計(jì)數(shù)器作為濾波器,有效地濾除了噪聲對(duì)環(huán)路的干擾作用。

  顯然,設(shè)計(jì)中適當(dāng)選取K值是很重要的。K值取得大,對(duì)抑止噪聲有利(因?yàn)镵值大,計(jì)數(shù)器對(duì)少量的噪聲干擾不可能計(jì)滿,所以不會(huì)有進(jìn)位或借位脈沖輸出),但這樣捕捉帶變小,而且加大了環(huán)路進(jìn)入鎖定狀態(tài)的時(shí)間。反之,K值取得小,可以加速環(huán)路的入鎖,但K計(jì)數(shù)器會(huì)頻繁地產(chǎn)生進(jìn)位或借位脈沖,從而導(dǎo)致了相位抖動(dòng),相應(yīng)地對(duì)噪聲的抑制能力也隨之降低。

  為了平衡鎖定時(shí)間與相位抖動(dòng)之間的矛盾,理想的情況是當(dāng)數(shù)字鎖相環(huán)處于失步狀態(tài)時(shí),降低K計(jì)數(shù)器的設(shè)置,反之加大其設(shè)置。實(shí)現(xiàn)的前提是檢測(cè)鎖相環(huán)的工作狀態(tài)。

  3 工作狀態(tài)檢測(cè)電路

  圖2為鎖相環(huán)狀態(tài)檢測(cè)電路,由觸發(fā)器與單穩(wěn)態(tài)振蕩器構(gòu)成,fin為輸入的參考時(shí)鐘,fout為鎖相環(huán)振蕩器輸出的時(shí)鐘移相900。fout對(duì)fin的抽樣送入單穩(wěn)態(tài)振蕩器。

  

  

  在鎖定狀態(tài)如圖3,fout與fin具有穩(wěn)定的相位關(guān)系, fout對(duì)fin抽樣應(yīng)全部為0或1,這樣不會(huì)激發(fā)振蕩器振蕩,從而lock將輸出低電平;而失鎖狀態(tài)時(shí)如圖4,fout與fin出現(xiàn)相位之間的滑動(dòng),抽樣時(shí)就不會(huì)出現(xiàn)長(zhǎng)時(shí)間的0或1,單穩(wěn)態(tài)振蕩器振蕩,使lock輸出高電平。鎖相環(huán)的鎖定狀態(tài)保持時(shí)間的認(rèn)定,可以通過設(shè)置振蕩器的性能。在FPGA設(shè)計(jì)中,要采用片外元件來進(jìn)行單穩(wěn)定時(shí),是很麻煩的,而且也不利于集成和代碼移植。單穩(wěn)態(tài)振蕩器的實(shí)現(xiàn)也可以在FPGA內(nèi)實(shí)現(xiàn),利用計(jì)數(shù)器的方法可以設(shè)計(jì)全數(shù)字化的上升、下降沿雙向觸發(fā)的可重觸發(fā)單穩(wěn)態(tài)振蕩器。

  

  4 智能鎖相環(huán)的設(shè)計(jì)

  智能全數(shù)字鎖相環(huán)的設(shè)計(jì)如圖5所示。鎖相環(huán)與CPU接口電路,由寄存器來完成。對(duì)于CPU寄存器內(nèi)容分為兩部分:鎖相環(huán)的工作狀態(tài)(只讀),k計(jì)數(shù)器的參數(shù)值(讀/寫)。CPU可以通過外部總線讀寫寄存器的內(nèi)容。

  圖5 智能全數(shù)字鎖相環(huán)框圖

  CPU根據(jù)鎖相環(huán)狀態(tài)就可以對(duì)鎖相環(huán)K計(jì)數(shù)器進(jìn)行最優(yōu)設(shè)置。實(shí)際測(cè)試時(shí)設(shè)置K初始值為23,此時(shí)鎖相環(huán)的捕捉帶較大,在很短時(shí)間內(nèi)就可以達(dá)到鎖定狀態(tài),lock變?yōu)榈碗娖?。CPU檢測(cè)到此信號(hào)后自動(dòng)將K值加1,如lock仍然為低電平,CPU會(huì)繼續(xù)增加K 值;直到鎖相環(huán)失鎖,記住其最佳設(shè)置值。設(shè)置K為初始值,鎖定后,設(shè)置到最佳值,這樣鎖相會(huì)快速進(jìn)入最佳的鎖定狀態(tài)。

  關(guān)于CPU的選擇有三種方案:①FPGA片內(nèi)實(shí)現(xiàn)CPU。片上系統(tǒng)的發(fā)展使其成為可能。②與片外系統(tǒng)共用CPU。DPLL大多用于通信系統(tǒng)中,而大部分通信系統(tǒng)都有嵌入式CPU。③單獨(dú)采用一個(gè)廉價(jià)單片機(jī)(如89C51),不僅可用于智能鎖相環(huán)的控制,還可控制外部RAM實(shí)現(xiàn)FPGA的初始裝載,一機(jī)多用,經(jīng)濟(jì)實(shí)惠??梢砸暰唧w情況而定。

  5 結(jié)論

  智能全數(shù)字鎖相環(huán),在單片F(xiàn)PGA中就可以實(shí)現(xiàn),借助鎖相環(huán)狀態(tài)監(jiān)測(cè)電路,通過CPU可以縮短鎖相環(huán)鎖定時(shí)間,并逐漸改進(jìn)其輸出頻率的抖動(dòng)特性。解決了鎖定時(shí)間與相位抖動(dòng)之間的矛盾,對(duì)信息的傳輸質(zhì)量都有很大的提高。此鎖相環(huán)已用于我校研發(fā)的數(shù)字通信產(chǎn)品中。
二、使用PLD內(nèi)部鎖相環(huán)解決系統(tǒng)設(shè)計(jì)難題

  微電子技術(shù)的發(fā)展趨勢(shì)是片上系統(tǒng)(SoC),也就是在一塊芯片上實(shí)現(xiàn)整個(gè)系統(tǒng),包括模擬部分和數(shù)字部分。作為IC產(chǎn)業(yè)中重要的一個(gè)分支,可編程邏輯器件(PLD)也在努力向這個(gè)方向發(fā)展。無論是Xilinx還是Altera,它們最新的PLD產(chǎn)品中都集成了諸如PCI接口、乘法器、MCU核以及DSP核等部件,有的甚至集成了完整的微處理器。例如,Xlinux的Vietex2-Pro系列就是集成了PowerPC微處理器。

  鎖相環(huán)技術(shù)是模擬集成電路設(shè)計(jì)中一個(gè)重要的研究方向。但是,現(xiàn)在中高檔的可編程邏輯器件一般都集成有片內(nèi)的鎖相環(huán)(如Xilinx的Spartan2系列,Altera的Cyclone系列)。鎖相環(huán)一端連接外部全局時(shí)鐘或者全局控制信號(hào),另一端連接可編程邏輯器件內(nèi)部專門的布線網(wǎng)絡(luò),可以最大程度地減少全局時(shí)鐘信號(hào)到片內(nèi)各個(gè)部分的布線延遲,有效地消除了時(shí)鐘偏移而帶一的各種問題。同時(shí),鎖相環(huán)一般都提供了倍頻、分頻、相移三個(gè)功能。

  1 應(yīng)用背景介紹

  本文用FPGA實(shí)現(xiàn)FIFO,連接PCI與TI的TMS320C6204的擴(kuò)展總線,與DSP傳輸數(shù)據(jù)的時(shí)鐘達(dá)到100MHz。由于DSP的接口對(duì)于時(shí)鐘和信號(hào)的要求很苛刻,所以下面具體分析核心的DSP的XBUS時(shí)序。

  DSP的擴(kuò)展總線(XBUS)是一個(gè)32位寬的總線,支持與異步外設(shè)、異步/同步FIFO、PCI橋以及外部主控處理器等的接口。它同時(shí)提供一個(gè)靈活的總線仲裁機(jī)制,可以內(nèi)部進(jìn)行仲裁,也可以由外部邏輯完成。

  本文中使用XBUS的同步FIFO接口。如果是要讀取FIFO,首先FIFO要通過中斷信號(hào)XINT0來通知XBUS數(shù)據(jù)已經(jīng)準(zhǔn)備好,然后XBUS響應(yīng)XCE0、XRE、XOE有效,就開始讀取FIFO中的數(shù)據(jù),讀FIFO的時(shí)序如圖1所示;如果是要寫FIFO,FIFO通過XINT1申請(qǐng)XBUS,然后XBUS響應(yīng)XCE1、XWE有效,開始一個(gè)寫FIFO的DMA傳輸過程,寫FIFO的時(shí)序如圖2所示。

  通過分析XBUS讀寫FIFO的時(shí)序關(guān)系可以看出,在FIFO實(shí)現(xiàn)的過程中需要注意以下幾個(gè)地方:

  ①XBUS工作時(shí)鐘是100MHz,對(duì)于大部分的FPGA來說是一個(gè)比較高的頻率。而且,由于讀出的數(shù)據(jù)要求一定的建立時(shí)間(setup time)和保持時(shí)間(hold time),這就對(duì)內(nèi)部邏輯的設(shè)計(jì)提出了較高的要求。

  ②讀FIFO時(shí),必須在使能信號(hào)有效之后的第二個(gè)時(shí)鐘周期就把數(shù)據(jù)輸出。對(duì)于FIFO內(nèi)部的雙端口RAM來說,這個(gè)實(shí)現(xiàn)起來不一定能滿足要求(有很多RAM是在使能信號(hào)只有的3~5個(gè)時(shí)鐘周期才輸出數(shù)據(jù)的)。這樣,通用FIFO中就要考慮產(chǎn)生預(yù)讀邏輯來產(chǎn)生數(shù)據(jù),以滿足XBUS嚴(yán)格的時(shí)序要求。

 ?、踃BUS的使能信號(hào)XCE0/XCE1/XRE/XOE/XWE的變化時(shí)間范圍是在時(shí)鐘有效之后的1~7ns,考慮到FPGA內(nèi)部的組合邏輯延時(shí)和布線延時(shí),這樣對(duì)有效信號(hào)的鎖定可能是不穩(wěn)定的。這就為邏輯設(shè)計(jì)帶來了很大的難度。

  2 鎖相環(huán)的相移功能

  系統(tǒng)時(shí)鐘是100MHz,為了獲得更好的布線效果和系統(tǒng)性能,時(shí)鐘信號(hào)必須經(jīng)過鎖相環(huán)到達(dá)全局時(shí)鐘布線網(wǎng)絡(luò)。同時(shí),鎖相環(huán)還可以提供多個(gè)時(shí)鐘相移的信號(hào),同樣可以連接到全局布線網(wǎng)絡(luò)來驅(qū)動(dòng)片的時(shí)鐘信號(hào)。以Xilinx公司的SPARTAN2系列芯片為例(Altera的Cyclone或者更高級(jí)別的系列也提供了類似的鎖相環(huán)),使用片內(nèi)鎖相環(huán)進(jìn)行時(shí)鐘相移。

  相移以后的時(shí)鐘對(duì)于系統(tǒng)設(shè)計(jì)有很大的用處。本文利用了相移以后的時(shí)鐘解決了系統(tǒng)設(shè)計(jì)中的兩個(gè)難點(diǎn),取得了令人滿意的效果:

 ?、儆肞LL解決使能信號(hào)漂移的難題;

 ?、谑褂肞LL滿足TI的TMS320C62XX系列DSP中XBUS的建立、保持時(shí)間要求。

  3 使用PLL解決使能信號(hào)漂移的難題

  由于DSP的XBUS響應(yīng)FIFO的中斷XINT0時(shí),需要回復(fù)XRF、XCE0、XOE三個(gè)信號(hào)。只有三個(gè)同時(shí)有效時(shí),才可以讀FIFO,所以讀使能信號(hào)RDEN=not(XCE0 or XRE or XOE);XBUS回復(fù)FIFO中斷信號(hào)XINT1時(shí),需要回復(fù)XWE和XCE1兩個(gè)信號(hào)。只有兩個(gè)信號(hào)時(shí)有效才可以寫FIFO,所以WREN=not(XCE1 or XWE)。

  RDEN或者WREN都是由FPGA內(nèi)部組合邏輯產(chǎn)生的,在FPGA內(nèi)部組合邏輯的物理延時(shí)(tc)為3~5ns。考慮到XBUS的使能信號(hào)本身相對(duì)于時(shí)鐘上升沿(td)就有1~7ns,所以使能信號(hào)有效相對(duì)時(shí)鐘上升沿來說可能的變化范圍為4~12ns,如圖4所示。

  系統(tǒng)經(jīng)過鎖相環(huán)的相移,驅(qū)動(dòng)FPGA內(nèi)部邏輯的時(shí)鐘。相對(duì)于XCLK來說,如果XBUS的回應(yīng)信號(hào)的延時(shí)為1ns(圖4中實(shí)線所示部分),則RDEN經(jīng)過組合邏輯延遲,變?yōu)楦哂行У臅r(shí)候,可以在時(shí)鐘的第一個(gè)上升沿采樣到(圖4中實(shí)線所示);如果XBUS的回應(yīng)信號(hào)延時(shí)為7ns,則RDEN經(jīng)過組合邏輯延遲以后,只能在第二個(gè)時(shí)鐘的上升延才能采樣到高有效信號(hào)。

  顯而易見,XBUS信號(hào)延遲的變化范圍太大,造成了系統(tǒng)設(shè)計(jì)的不穩(wěn)定性。要解決這個(gè)問題,通過邏輯優(yōu)化是沒有辦法來進(jìn)行的。因?yàn)楫a(chǎn)生使能信號(hào)的那一級(jí)組合邏輯本身的延遲是無法改變的。

  本文靈活地運(yùn)用了FPGA內(nèi)部鎖相環(huán)的移相功能,巧妙地解決了信號(hào)XCLK_Shift相對(duì)于XCLK的相移問題。而且,經(jīng)過這個(gè)相移以后的時(shí)鐘信號(hào),無論XBUS使能信號(hào)怎么在1~7ns內(nèi)發(fā)生變化,都可以保證在XCLK_Shift的第二個(gè)時(shí)鐘周期采樣到高有效信號(hào)。這樣就確定了穩(wěn)定的邏輯關(guān)系,為可靠穩(wěn)定的設(shè)計(jì)奠定了基礎(chǔ)。

  4 使用PLL滿足XBUS的建立、保持時(shí)間要求

  如圖1中所示,F(xiàn)IFO中數(shù)據(jù)輸出時(shí)需要滿足一定的建立和保持時(shí)間(圖1中為時(shí)間5和時(shí)間6)。但是,時(shí)鐘信號(hào)XCLK輸入FPGA的時(shí)候需要首先經(jīng)過IOB(輸入輸出模塊),然后才能連接到鎖相環(huán)部分進(jìn)入全局時(shí)鐘網(wǎng)絡(luò)。采用同步輸出的時(shí)候,輸出數(shù)據(jù)也要經(jīng)過IOB才可以輸出。IOB本身的延時(shí)就很容易導(dǎo)致無法確保正確的建立和保持時(shí)間,滿足不了XBUS的要求,如圖5所示。

  為了解決這個(gè)問題,同樣可以采用鎖相環(huán)進(jìn)行時(shí)鐘相位偏移來彌補(bǔ)通過IOB引起的時(shí)鐘相位偏移。這樣,數(shù)據(jù)端的輸出只要相對(duì)于經(jīng)過偏移的時(shí)鐘信號(hào)滿足建立保持時(shí)間,那么,就可以滿足原始時(shí)鐘信號(hào)的要求(如圖5中虛線所示)。

  5 結(jié)論

  通過合理的使用FPGA內(nèi)部的鎖相環(huán),本文在不改動(dòng)原有邏輯設(shè)計(jì)和代碼的情況下,巧妙地解決了高速DSP擴(kuò)展總線XBUS與FIFO的接口問題。為系統(tǒng)和邏輯設(shè)計(jì)解決了可能遇到的幾個(gè)難點(diǎn),為進(jìn)一步的研究和開發(fā)提供了一種解決問題的新方法和思路。

 

 

基于FPGA的高頻時(shí)鐘的分頻和分配設(shè)計(jì)#e#

 

  三、基于FPGA的高頻時(shí)鐘的分頻和分配設(shè)計(jì)

 ?。?引言

  隨著應(yīng)用系統(tǒng)向高速度、低功耗和低電壓方向的發(fā)展,對(duì)電路設(shè)計(jì)的要求越來越高?傳統(tǒng)集成電路設(shè)計(jì)技術(shù)已無法滿足性能日益提高的整機(jī)系統(tǒng)的要求。同時(shí),由于IC設(shè)計(jì)與工藝技術(shù)水平的提高,集成電路規(guī)模越來越大,復(fù)雜程度越來越高。目前已經(jīng)可以將整個(gè)系統(tǒng)集成在一個(gè)芯片上,即片上系統(tǒng)(System on a Chip?縮寫為SOC),這種芯片以具有系統(tǒng)級(jí)性能的復(fù)雜可編程邏輯器件(CPLD)和現(xiàn)場(chǎng)可編程門陣列(FPGA)為主要代表。與主要實(shí)現(xiàn)組合邏輯功能的CPLD相比,FPGA主要用于實(shí)現(xiàn)時(shí)序邏輯功能。對(duì)于ASIC設(shè)計(jì)來說,采用FPGA在實(shí)現(xiàn)小型化、集成化和高可靠性系統(tǒng)的同時(shí),還可以減少風(fēng)險(xiǎn)、降低成本、縮短開發(fā)周期。

 ?。病∠到y(tǒng)硬件組成

  本文介紹的時(shí)鐘板主要由于為PET(正電子發(fā)射斷層掃描儀)的前端電子學(xué)模塊提供32路系統(tǒng)時(shí)鐘(62.5MHz)和32路同步時(shí)鐘(4MHz)。時(shí)鐘信號(hào)之間的偏差要求在2ns之內(nèi)。為了消除各路時(shí)鐘信號(hào)之間的偏差,文中介紹利用FPGA來實(shí)現(xiàn)主時(shí)鐘的分頻、零延時(shí)輸出和分配,同時(shí)利用LVDS技術(shù)實(shí)現(xiàn)多路時(shí)鐘的傳輸?shù)膶?shí)現(xiàn)方法。圖1所示是其硬件設(shè)計(jì)示意圖。

  由圖1可知,該時(shí)鐘電路的具體工作原理是:首先由精密晶體振蕩器產(chǎn)生62.5MHz的時(shí)鐘信號(hào),然后經(jīng)時(shí)鐘驅(qū)動(dòng)芯片CY2305輸入FPGA芯片的時(shí)鐘引腳GCLK以作為時(shí)鐘源。該時(shí)鐘在FPGA芯片內(nèi)部經(jīng)DLL(延遲鎖定環(huán))模塊分別生成62.5MHz的系統(tǒng)時(shí)鐘和4MHz的同步時(shí)鐘?LVTTL電平信號(hào)?,然后由內(nèi)部的IOB(輸入輸出功能模塊)分配到64個(gè)輸出引腳(32路62.5MHz系統(tǒng)時(shí)鐘和32路4MHz同步時(shí)鐘),這64路LVTTL電平信號(hào)兩兩進(jìn)入32塊LVDS(兩路)驅(qū)動(dòng)轉(zhuǎn)換芯片后,即可轉(zhuǎn)換為LVDS信號(hào)并通過差分雙絞線傳輸給前端電子學(xué)模塊的32塊數(shù)字電路板。

 ?。玻?FPGA的結(jié)構(gòu)

  單元型FPGA主要由三部分組成:可配置邏輯模塊CLB(Configurable Logic Block),輸入、輸出模塊I/OB和可編程連線PI(Programmable Interconnect)。對(duì)于不同規(guī)格的芯片,可分別包含8×8、20×20、44×44甚至92×92個(gè)CLB陣列,同時(shí)配有64、160、352、甚至448?jìng)€(gè)I/OB以及為實(shí)現(xiàn)可編程連線所必需的其它部件。圖2所示是本設(shè)計(jì)中使用的XC2S30芯片的內(nèi)部結(jié)構(gòu)。

 ?。玻?Xinlinx公司的SpartanII系列FPGA

  Xinlinx公司目前生產(chǎn)的FPGA有兩類代表性產(chǎn)品?一類是XC40003/Spartan系列?另一類是Vir-tex/SpartanII系列。這兩類產(chǎn)品除具有FPGA的三種基本資源(可編程I/O、可編程邏輯功能模塊CLB和可編程布線等)外?還具有片內(nèi)RAM資源。但兩種產(chǎn)品也有所不同。其中XC4000E可以用于實(shí)現(xiàn)片內(nèi)分布RAM,同時(shí)專門為實(shí)現(xiàn)可編程片上系統(tǒng)開發(fā)的Virtex系列,其片內(nèi)分布RAM和塊RAM都可以實(shí)現(xiàn),并可實(shí)現(xiàn)片上系統(tǒng)所要求的其他性能,如時(shí)鐘分配和多種電平接口等特性。SpartanII系列與Virtex系列產(chǎn)品相比,除了塊RAM數(shù)量少于Virtex系列產(chǎn)品外,其余有關(guān)性能(如典型門范圍、線寬、金屬層、芯內(nèi)電壓、芯片輸入輸出引腳電壓、系統(tǒng)頻率和所含DLL個(gè)數(shù)等)都基本相同,它的一個(gè)突出優(yōu)點(diǎn)(也是本設(shè)計(jì)選用該系列芯片的主要原因)是:該系列產(chǎn)品是專門為取代掩膜門陣列的低價(jià)位FPGA,在達(dá)到門陣列數(shù)量時(shí),其價(jià)格可與門陣列相比。因此,本文介紹的時(shí)鐘電路的設(shè)計(jì)選用SpartanII系列FP-GA中的XC2S30-5PQ208芯片來實(shí)現(xiàn)。

 ?。场∮茫疲校牵翆?shí)現(xiàn)時(shí)鐘分頻和分配

  如圖2所示?SpartanII系列芯片內(nèi)部含有四個(gè)全數(shù)字延時(shí)鎖定環(huán)(DLL),每一個(gè)DLL可驅(qū)動(dòng)兩個(gè)全局時(shí)鐘分布網(wǎng)絡(luò)。通過控制DLL輸出時(shí)鐘的一個(gè)采樣?可以補(bǔ)償由于布線網(wǎng)絡(luò)帶來的時(shí)鐘延時(shí),從而有效消除從外部輸入端口到器件內(nèi)部各個(gè)時(shí)鐘負(fù)載的延時(shí)。DLL除提供對(duì)用戶輸入時(shí)鐘的零延時(shí)之外,還具有時(shí)鐘倍頻和分頻功能。它可以對(duì)時(shí)鐘源進(jìn)行兩倍頻和1.5、2、3、4、5、8或16分頻。本設(shè)計(jì)就是利用DLL的零延時(shí)和分頻功能來實(shí)現(xiàn)對(duì)62.5MHz時(shí)鐘的輸出和16分頻后4MHz(約)時(shí)鐘的輸出。

  3.1 數(shù)字延時(shí)鎖定環(huán)(DLL)的結(jié)構(gòu)原理

  圖3是一個(gè)DLL的內(nèi)部原理框圖,它由各類時(shí)鐘延時(shí)線和控制邏輯組成。延時(shí)線主要用于對(duì)時(shí)鐘輸入端CLKIN產(chǎn)生一個(gè)延時(shí)。通過器件內(nèi)部的時(shí)鐘分布網(wǎng)絡(luò)可將該輸入時(shí)鐘分配給所有的內(nèi)部寄存器和時(shí)鐘反饋端CLKFB。控制邏輯則主要用于采樣輸入時(shí)鐘和反饋時(shí)鐘以調(diào)整延時(shí)線。這里所說的延時(shí)線由壓控延時(shí)或衰減延時(shí)組件構(gòu)成,SpartanII系列芯片選用了后者。DLL可在輸入時(shí)鐘和反饋時(shí)鐘之間不停地插入延時(shí),直到兩個(gè)時(shí)鐘的上升沿同步為止。當(dāng)兩時(shí)鐘同步時(shí),DLL鎖定。在DLL鎖定后,只要輸入時(shí)鐘沒有變化,兩時(shí)鐘就不會(huì)出現(xiàn)可識(shí)別偏差。因此,DLL輸出時(shí)鐘就補(bǔ)償了時(shí)鐘分布網(wǎng)絡(luò)帶來的輸入時(shí)鐘延時(shí),從而消除了源時(shí)鐘和負(fù)載之間的延時(shí)。

 ?。常?DLL功能的實(shí)現(xiàn)

 ?。樱穑幔颍簦幔睿桑上盗行酒瑑?nèi)含專門實(shí)現(xiàn)DLL功能的宏單元模塊BUFGDLL,其結(jié)構(gòu)簡(jiǎn)圖如圖4所示。該模塊由IBUFG、CLKDLL和BUFG三個(gè)庫元件組成?其原理框圖如圖5所示。圖5中,CLKDLL庫元件用于實(shí)現(xiàn)DLL的主要功能?包括完成時(shí)鐘的零延時(shí)輸出、時(shí)鐘的倍頻以及分頻和鏡像操作。而IBUFG和BUFG則分別實(shí)現(xiàn)外部時(shí)鐘的輸入以及將輸出時(shí)鐘分配到芯片引腳。本設(shè)計(jì)的時(shí)鐘分頻就是將62.5MHz的時(shí)鐘由IBUFG輸入?經(jīng)CLKDLL分頻后再由CLKDV端傳給BUFG?然后經(jīng)片內(nèi)IOBUF分配到芯片的普通I/O輸出引腳。

 ?。础≤浖?shí)現(xiàn)

  在設(shè)計(jì)的總體構(gòu)思和器件選擇完成后,必須進(jìn)行的工作是建立設(shè)計(jì)輸入文件,該文件主要用于描述所設(shè)計(jì)電路的邏輯功能。這里使用的是XILINX公司提供的開發(fā)工具FOUNDATION 4.1。本設(shè)計(jì)采用硬件描述語言VHDL來設(shè)計(jì),其部分程序如下:

 ?。澹睿簦椋簦?lvds is

  port (

 ?。穑悖欤耄?in STD LOGIC;

  pclk_62: out std_logic_vector(31 downto 0);?

  pclk_4: out std_logic_vector(31 downto 0));

 ?。澹睿?lvds;

 ?。幔颍悖瑁椋簦澹悖簦酰颍?lvds_arch of lvds is

 ?。悖铮恚穑铮睿澹睿?clkdll

  port( clkin: in std_logic;

 ?。悖欤耄妫?: in std_logic;

  rst: in std_logic;

 ?。悖欤耄埃?out std_logic;

  clk90 : out std_logic;

 ?。悖欤耄保福埃?out std_logic;

  clk270: out std_logic;

 ?。悖欤耄玻?: out std_logic;

  clkdv: out std_logic;

 ?。欤铮悖耄澹洌?out std_logic);

  end component;

 ?。猓澹纾椋?/p>

  reset n<=‘0' ;

  uibuf : ibufg port map (

 ?。?=> pclk,

 ?。?=> clk);

  udll: clkdll port map( clkin => clk,

  rst => reset_n,

  clkfb => clkfb,

 ?。悖欤耄?=> clk0,

  clk90 => open,

  clk180 => open,

 ?。悖欤耄玻罚?=> open,

 ?。悖欤耄玻?=> clk2x,

 ?。悖欤耄洌?=> clkdv,

 ?。欤铮悖耄澹?=> locked

  );

 ?。猓酰妫鏮clk0: bufg port map ( i => clk0,

 ?。铮剑荆悖欤隷int2;

 ?。?

  clkfb<=clk_int2;

 ?。穑颍铮悖澹螅螅ǎ悖欤耄玻?

  begin

  if clk2x′event and clk2x=′1′ then

 ?。悖欤隷int <=clk int2;

 ?。悖欤隷int3<= clkdv;

 ?。穑悖欤隷62(0)<=clk_int;

 ?。穑悖欤隷62(1)<=clk_int;

  …

  …

 ?。穑悖欤隷62(31)<=clk_int;

  pclk_4(0)<=clk_int3;

 ?。穑悖欤隷4(1)<=clk_int3;

  …

  …

  pclk_4(31)<=clk_int3;

 ?。澹睿?if;

 ?。澹睿?process;

 ?。澹睿?lvds_arch;
四、基于FPGA的多種形式分頻的設(shè)計(jì)與實(shí)現(xiàn)

  分頻器是數(shù)字系統(tǒng)設(shè)計(jì)中的基本電路,根據(jù)不同設(shè)計(jì)的需要,我們會(huì)遇到偶數(shù)分頻、奇數(shù)分頻、半整數(shù)分頻等,有時(shí)要求等占空比,有時(shí)要求非等占空比。在同一個(gè)設(shè)計(jì)中有時(shí)要求多種形式的分頻。通常由計(jì)數(shù)器或計(jì)數(shù)器的級(jí)聯(lián)構(gòu)成各種形式的偶數(shù)分頻及非等占空比的奇數(shù)分頻,實(shí)現(xiàn)較為簡(jiǎn)單。但對(duì)半整數(shù)分頻及等占空比的奇數(shù)分頻實(shí)現(xiàn)較為困難。本文利用VHDL硬件描述語言,通過QuartusⅡ3.0開發(fā)平臺(tái),使用Altera公司的FPGA,設(shè)計(jì)了一種能夠滿足上述各種要求的較為通用的分頻器。

  一、電路設(shè)計(jì)

  采用FPGA實(shí)現(xiàn)半整數(shù)分頻器,可以采用以下方法:設(shè)計(jì)一個(gè)模N的計(jì)數(shù)器,再設(shè)計(jì)一個(gè)脈沖扣除電路,每來兩個(gè)脈沖扣除一個(gè)脈沖,即可實(shí)現(xiàn)分頻系數(shù)為N-0.5的分頻器。脈沖扣除電路由異或門和一個(gè)2分頻器構(gòu)成。本設(shè)計(jì)在半整數(shù)分頻器原理的基礎(chǔ)上,對(duì)異或門加一個(gè)使能控制信號(hào),通過對(duì)異或門和計(jì)數(shù)器計(jì)數(shù)狀態(tài)值的控制,實(shí)現(xiàn)同一個(gè)電路完成多種形式分頻,如圖1所示。

  

  二、VHDL語言的實(shí)現(xiàn)

  現(xiàn)通過設(shè)計(jì)一個(gè)可以實(shí)現(xiàn)8.5分頻,等占空比的17分頻,2、4、8、16、32分頻,及占空比為1∶8和4∶5的9分頻等多種形式分頻的分頻器,介紹該通用分頻器的FPGA實(shí)現(xiàn)。

  由圖1所示的電路原理圖可知,分頻器由帶使能端的異或門、模N計(jì)數(shù)器和一個(gè)2分頻器組成,本設(shè)計(jì)用D觸發(fā)器來完成2分頻的功能,實(shí)現(xiàn)方法是:將觸發(fā)器的Q反輸出端反饋回輸入端D,將計(jì)數(shù)器的一個(gè)計(jì)數(shù)輸出端作為D觸發(fā)器的時(shí)鐘輸入端。各功能模塊的VHDL語言實(shí)現(xiàn)如下。

  1.模N計(jì)數(shù)器的實(shí)現(xiàn)

  一般設(shè)計(jì)中用到計(jì)數(shù)器時(shí),我們可以調(diào)用lpm庫中的計(jì)數(shù)器模塊,也可以采用VHDL語言自己設(shè)計(jì)一個(gè)模N計(jì)數(shù)器。本設(shè)計(jì)采用VHDL語言設(shè)計(jì)一個(gè)最大模值為16的計(jì)數(shù)器。輸入端口為:使能信號(hào)en,復(fù)位信號(hào)clr和時(shí)鐘信號(hào)clk;輸出端口為:qa、qb、qc、qd。其VHDL語言描述略。

  2.帶使能控制的異或門的實(shí)現(xiàn)

  輸入端為:xor_en:異或使能,a和b:異或輸入;輸出端為:c:異或輸出。當(dāng)xor_en為高電平時(shí),c輸出a和b的異或值。當(dāng)xor_en為低電平時(shí),c輸出信號(hào)b。其VHDL語言略。

  3.2分頻(觸發(fā)器)的實(shí)現(xiàn)

  輸入端為:時(shí)鐘信號(hào)clk,輸入信號(hào)d;輸出端為:q:輸出信號(hào)a,q1:輸出信號(hào)a反。其VHDL語言略。

  4.分頻器的實(shí)現(xiàn)

  本設(shè)計(jì)采用層次化的設(shè)計(jì)方法,首先設(shè)計(jì)實(shí)現(xiàn)分頻器電路中各組成電路元件,然后通過元件例化的方法,調(diào)用各元件,實(shí)現(xiàn)整個(gè)分頻器。其VHDL語言略。

  三、仿真結(jié)果及硬件電路的測(cè)試

  本設(shè)計(jì)的目的是通用性和簡(jiǎn)易性,只要對(duì)上述程序稍加改動(dòng)即可實(shí)現(xiàn)多種形式的分頻。

  1.實(shí)現(xiàn)8.5分頻和等占空比的17分頻

  只要將上述程序中,調(diào)用計(jì)數(shù)器模塊時(shí)端口qa、qb、qc匹配為open狀態(tài),同時(shí)置xor_en為高電平即可。從編譯報(bào)告看出總共占用8個(gè)邏輯單元(logic elements),其仿真波形如圖2~4所示。

  

  圖二

  

  圖三

  

  圖四

  由圖中qxiao和clk的波形可以看出,每隔8.5個(gè)時(shí)鐘周期,qxiao信號(hào)產(chǎn)生一個(gè)上升沿,從而實(shí)現(xiàn)分頻系數(shù)是8.5的分頻,同時(shí)在qzheng端得到等占空比的17分頻。設(shè)clk為170MHz,則qxiao輸出為20MHz,qzheng輸出為10MHz。

  2.實(shí)現(xiàn)占空比為1∶8和4∶5的9分頻

  只要上述程序的xor_en置低電平即可在qxiao輸出占空比為1∶8的9分頻信號(hào);在qzheng2輸出占空比為4∶5的9分頻信號(hào)。同樣僅占8個(gè)邏輯單元(logic elements)。仿真波形如下。

  3.實(shí)現(xiàn)等占空比的2、4、8、16和32分頻

  只要將上述程序中的xor_en置為低電平,同時(shí)將計(jì)數(shù)器模塊的計(jì)數(shù)最大值設(shè)為16即可。仿真波形如下。

  由此可見,只要稍微改變計(jì)數(shù)器的計(jì)數(shù)狀態(tài)值,對(duì)異或門進(jìn)行選通控制,即可實(shí)現(xiàn)上述多種形式的分頻。本設(shè)計(jì)在Altera公司的EP1K50QC208-3構(gòu)成的測(cè)試平臺(tái)上測(cè)試通過,性能良好。

  結(jié)束語

  我們?cè)谠O(shè)計(jì)模擬雷達(dá)脈沖信號(hào)和用FPGA開發(fā)擴(kuò)頻芯片時(shí)就用到了上述多種形式得分頻。本文旨在介紹一種進(jìn)行FPGA開發(fā)時(shí),所需多種分頻的實(shí)現(xiàn)方法,如果設(shè)計(jì)中所需分頻形式較多,可以直接利用本設(shè)計(jì),通過對(duì)程序的稍微改動(dòng)以滿足自己設(shè)計(jì)的要求。如果設(shè)計(jì)中需要分頻形式較少,可以利用本設(shè)計(jì)部分程序,以節(jié)省資源。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國(guó)汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營(yíng)業(yè)績(jī)穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤(rùn)率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長(zhǎng) 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營(yíng)商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國(guó)電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長(zhǎng)三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡(jiǎn)稱"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉