新聞中心

EEPW首頁(yè) > EDA/PCB > 設(shè)計(jì)應(yīng)用 > 基于FPGA的高頻時(shí)鐘的分頻和分配設(shè)計(jì)

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

作者: 時(shí)間:2004-12-08 來(lái)源:網(wǎng)絡(luò) 收藏
摘要:介紹了為PET(正電子發(fā)射斷層掃描儀)的前端電子學(xué)模塊提供時(shí)間基準(zhǔn)而設(shè)計(jì)的一種新型扇出電路。該電路利用芯片來(lái)實(shí)現(xiàn)對(duì),并用LVDS傳輸標(biāo)準(zhǔn)對(duì)生成的多路時(shí)鐘信號(hào)進(jìn)行傳輸,從而最大程度地減少了輸出各路時(shí)鐘之間的延時(shí)偏差,同時(shí)利用低壓差分信號(hào)的傳輸特性增強(qiáng)了信號(hào)的抗干擾能力。文章給出了采用VHDL語(yǔ)言編寫的時(shí)鐘電路程序代碼。

關(guān)鍵詞:;;VHDL

1 引言

隨著應(yīng)用系統(tǒng)向高速度、低功耗和低電壓方向的發(fā)展,對(duì)電路設(shè)計(jì)的要求越來(lái)越高?傳統(tǒng)集成電路設(shè)計(jì)技術(shù)已無(wú)法滿足性能日益提高的整機(jī)系統(tǒng)的要求。同時(shí),由于IC設(shè)計(jì)與工藝技術(shù)水平的提高,集成電路規(guī)模越來(lái)越大,復(fù)雜程度越來(lái)越高。目前已經(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ì)來(lái)說(shuō),采用FPGA在實(shí)現(xiàn)小型化、集成化和高可靠性系統(tǒng)的同時(shí),還可以減少風(fēng)險(xiǎn)、降低成本、縮短開發(fā)周期。

2 系統(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來(lái)實(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)并通過(guò)差分雙絞線傳輸給前端電子學(xué)模塊的32塊數(shù)字電路板。

圖2

2.1 FPGA的結(jié)構(gòu)

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

2.2 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芯片來(lái)實(shí)現(xiàn)。

3 用FPGA實(shí)現(xiàn)時(shí)鐘和分配

如圖2所示?SpartanII系列芯片內(nèi)部含有四個(gè)全數(shù)字延時(shí)鎖定環(huán)(DLL),每一個(gè)DLL可驅(qū)動(dòng)兩個(gè)全局時(shí)鐘分布網(wǎng)絡(luò)。通過(guò)控制DLL輸出時(shí)鐘的一個(gè)采樣?可以補(bǔ)償由于布線網(wǎng)絡(luò)帶來(lái)的時(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í)和分頻功能來(lái)實(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í)。通過(guò)器件內(nèi)部的時(shí)鐘分布網(wǎng)絡(luò)可將該輸入時(shí)鐘分配給所有的內(nèi)部寄存器和時(shí)鐘反饋端CLKFB??刂七壿媱t主要用于采樣輸入時(shí)鐘和反饋時(shí)鐘以調(diào)整延時(shí)線。這里所說(shuō)的延時(shí)線由壓控延時(shí)或衰減延時(shí)組件構(gòu)成,SpartanII系列芯片選用了后者。DLL可在輸入時(shí)鐘和反饋時(shí)鐘之間不停地插入延時(shí),直到兩個(gè)時(shí)鐘的上升沿同步為止。當(dāng)兩時(shí)鐘同步時(shí),DLL鎖定。在DLL鎖定后,只要輸入時(shí)鐘沒(méi)有變化,兩時(shí)鐘就不會(huì)出現(xiàn)可識(shí)別偏差。因此,DLL輸出時(shí)鐘就補(bǔ)償了時(shí)鐘分布網(wǎng)絡(luò)帶來(lái)的輸入時(shí)鐘延時(shí),從而消除了源時(shí)鐘和負(fù)載之間的延時(shí)。

3.2 DLL功能的實(shí)現(xiàn)

SpartanII系列芯片內(nèi)含專門實(shí)現(xiàn)DLL功能的宏單元模塊BUFGDLL,其結(jié)構(gòu)簡(jiǎn)圖如圖4所示。該模塊由IBUFG、CLKDLL和BUFG三個(gè)庫(kù)元件組成?其原理框圖如圖5所示。圖5中,CLKDLL庫(kù)元件用于實(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輸出引腳。

4 軟件實(shí)現(xiàn)

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

entity lvds is

port (

pclk: in STD LOGIC;

pclk_62: out std_logic_vector(31 downto 0);?

pclk_4: out std_logic_vector(31 downto 0));

end lvds;

architecture lvds_arch of lvds is

component clkdll

port( clkin: in std_logic;

clkfb : in std_logic;

rst: in std_logic;

clk0: out std_logic;

clk90 : out std_logic;

clk180: out std_logic;

clk270: out std_logic;

clk2x : out std_logic;

clkdv: out std_logic;

locked: out std_logic);

end component;

begin

reset n<=‘0' ;

uibuf : ibufg port map (

i => pclk,

o => clk);

udll: clkdll port map( clkin => clk,

rst => reset_n,

clkfb => clkfb,

clk0 => clk0,

clk90 => open,

clk180 => open,

clk270 => open,

clk2x => clk2x,

clkdv => clkdv,

locked => locked

);

bufg_clk0: bufg port map ( i => clk0,

o=>clk_int2;

);

clkfb<=clk_int2;

process(clk2x);

begin

if clk2x′event and clk2x=′1′ then

clk_int <=clk int2;

clk_int3<= clkdv;

pclk_62(0)<=clk_int;

pclk_62(1)<=clk_int;

pclk_62(31)<=clk_int;

pclk_4(0)<=clk_int3;

pclk_4(1)<=clk_int3;

pclk_4(31)<=clk_int3;

end if;

end process;

end lvds_arch;



關(guān)鍵詞: FPGA 高頻時(shí)鐘 分頻 分配

評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉