<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > FPGA系統設計原則和技巧之:FPGA系統設計的3種常用IP模塊

FPGA系統設計原則和技巧之:FPGA系統設計的3種常用IP模塊

作者: 時(shí)間:2017-06-05 來(lái)源:網(wǎng)絡(luò ) 收藏

本文引用地址:http://dyxdggzs.com/article/201706/348809.htm

9.3的3種常用

FPGA的開(kāi)發(fā)工具軟件,如QuartusII、ISE等,一般都會(huì )提供一些經(jīng)過(guò)驗證的。這些是芯片廠(chǎng)家提供的,所以只能用于該廠(chǎng)家的FPGA芯片設計中。這些IP主要包括以下幾類(lèi)。

·算術(shù)類(lèi),如乘法器、加法器、除法器等。

·邏輯門(mén)類(lèi),如與門(mén)、或門(mén)、非門(mén)等。

·類(lèi),如FIFO、RAM、ROM、移位寄存器等。

·I/O類(lèi),如雙向IO、PLL、LVDS等。

·接口類(lèi),如以太網(wǎng)MAC、PCI接口控制器、(SERDES)等。

·商業(yè)IP核,需要付費購買(mǎi)的。

以上的IP中,最常用的3個(gè)IP分別是片上(RAM/ROM/FIFO),(PLL/DLL)和(SERDES)。靈活使用這些IP,可以提升設計的性能,同時(shí)降低設計的復雜度。

IP模塊的實(shí)現方式主要有3種:使用HDL代碼描述、使用綜合約束屬性例化或類(lèi)推、使用器件商的IPcore生成器。

典型功能的IPcore都可以通過(guò)這3種途徑實(shí)現。其中前兩種方法需要學(xué)習綜合RAM、ROM、CAM等存儲單元的CodingStyle或約束屬性,后一種方法非常方便、直接,建議初學(xué)者首先要掌握使用器件商IPcore生成器設計RAM、ROM、CAM等存儲單元的方法。

下面通過(guò)QuartusII工具分別介紹Altera的3種IP模塊的使用方法。

9.3.1片上的使用方法

片上存儲器由內嵌于FPGA內部的邏輯資源(分布RAM和塊RAM)搭建而成。搭建出來(lái)的這些片上存儲器的調用方法與分立器件基本一致,但卻為開(kāi)發(fā)者省去了大量的PCB布線(xiàn)資源。在小容量的存儲器設計中有著(zhù)非常廣泛的應用,同時(shí)這些片上存儲器還常常用作數據緩沖及時(shí)鐘域轉換等工作。

首先來(lái)介紹片上FIFO的使用方法。

1.FIFO

(1)打開(kāi)宏模塊向導管理器。

在QuartusII中,IP模塊的生成都是通過(guò)“MegaWizardPlug-InManager”(宏模塊向導管理器)實(shí)現的,它可以通過(guò)如圖9.9的“Tools”菜單打開(kāi)。

(2)選擇新建宏模塊。

在宏模塊向導管理器的第1頁(yè),選擇新建一個(gè)自定義的宏模塊,如圖9.10所示。

圖9.9宏模塊向導管理器調用 圖9.10新建宏模塊

(3)選擇宏模塊。

在宏模塊向導管理器的第2頁(yè),管理器為我們提供了支持的宏模塊樹(shù)形目錄。通過(guò)在該目錄中選擇相應的宏模塊實(shí)現調用。同時(shí)在這一頁(yè)中還可以選擇應用的FPGA器件系列和宏模塊的描述語(yǔ)言,并使用用戶(hù)自定義的模塊名,如圖9.11所示。

圖9.11選擇宏模塊

在本例中,我們選擇“LPM_FIFO+模塊”進(jìn)行實(shí)現。

(4)設置FIFO寬度和深度。

在宏模塊向導管理器(FIFO)的第3頁(yè),可以設置FIFO的深度和寬度,同時(shí)在本頁(yè)的左下角會(huì )計算出實(shí)現這樣一個(gè)深度和寬度的FIFO所消耗的FPGA資源,如圖9.12所示。

圖9.12設置FIFO深度和寬度

(5)設置FIFO的控制信號。

在宏模塊向導管理器(FIFO)的第4頁(yè),可以設置FIFO的控制信號,包括滿(mǎn)信號full、空信號empty、使用字節信號組usedw[]、幾乎滿(mǎn)信號almostfull(可編程)、幾乎空信號almostempty(可編程)、異步清零信號和同步清零信號。

通過(guò)選擇是否打開(kāi)這些信號來(lái)構造一個(gè)用戶(hù)自定義的FIFO,如圖9.13所示。

圖9.13設置FIFO的控制信號

(6)設置FIFO的模式。

在宏模塊向導管理器(FIFO)的第6頁(yè),可以設置FIFO的模式。分為L(cháng)agacy同步模式和Show-ahead同步模式。區別在于輸出數據是在FIFO的讀請求信號rdreq發(fā)出之前還是之后有效,用戶(hù)可以根據需要進(jìn)行選擇,如圖9.14所示。

(7)設置FIFO的外部屬性。

在宏模塊向導管理器(FIFO)的第7頁(yè),可以設置FIFO的外部屬性,包括輸出寄存器使用最佳速度策略還是最小面積策略,數據溢出及讀空狀態(tài)下的保護機制,還可以強制只利用邏輯單元來(lái)構造FIFO,如圖9.15所示。

圖9.14設置FIFO的模式

圖9.15設置FIFO的外部屬性

(8)選擇生成的FIFO模塊文件。

在宏模塊向導管理器(FIFO)的第8頁(yè),也就是最后一頁(yè),可以選擇生成的FIFO模塊文件。在QuartusII軟件中,宏模塊向導管理器可為FIFO生成7個(gè)文件,如圖9.16所示。

圖9.16選擇生成的FIFO模塊文件圖9.17打開(kāi)工程添加/刪除文件對話(huà)框

(9)向工程添加FIFO模塊文件。

生成FIFO模塊的文件后,在工程的目錄下生成了選擇的文件。要在工程中調用這些模塊,首先要將這些文件添加到工程中來(lái)。

打開(kāi)“Project”菜單,選擇其中的“Add/RemoveFilesinProject…”選項,如圖9.17所示,打開(kāi)工程添加/刪除文件對話(huà)框。

在打開(kāi)的對話(huà)框中,選擇向工程添加3個(gè)文件,如圖9.18所示。

圖9.18添加FIFO模塊文件圖 9.19工程瀏覽器

添加成功后,在工程瀏覽器中,可以看到器件設計文件中已經(jīng)包含了這3個(gè)文件,如圖9.19所示。

(10)FIFO模塊實(shí)例化。

將模塊文件加入工程后,設計者就可以調用這個(gè)片上FIFO,并實(shí)例化了。

首先我們看一下QuartusII是如何構建這個(gè)FIFO的。打開(kāi)fifo_test.v文件,這是FIFO模塊的構造設計文件。該構造設計文件主要可以分為下面4個(gè)部分。

第一部分是端口聲明和說(shuō)明,這部分是根據用戶(hù)自定義選擇的控制信號及深度、寬度等參數決定的,代碼如下:

modulefifo_test(

data, //數據輸入

wrreq, //寫(xiě)請求

rdreq, //讀請求

clock, //時(shí)鐘

aclr, //異步清零

q, //數據輸出

full, //滿(mǎn)信號

empty, //空信號

usedw); //字節使用信號

input [31:0]data; //輸入數據寬度

input wrreq;

input rdreq;

input clock;

input aclr;

output [31:0]q; //輸出數據寬度

output full;

output empty;

output [10:0]usedw; //自動(dòng)計算出的字節使用控制信號寬度

第二部分是FIFO端口信號與Altera宏模塊之間的連線(xiàn)聲明,其中只有輸出信號需要聲明,而輸入信號可以直接調用,代碼如下:

wire[10:0]sub_wire0; //usedw輸出類(lèi)型聲明

wiresub_wire1; //空信號輸出類(lèi)型聲明

wire[31:0]sub_wire2; //數據輸出類(lèi)型聲明

wiresub_wire3; //滿(mǎn)信號輸出類(lèi)型聲明

wire[10:0]usedw=sub_wire0[10:0]; //usedw連線(xiàn)

wireempty=sub_wire1; //空信號連線(xiàn)

wire[31:0]q=sub_wire2[31:0]; //數據輸出連線(xiàn)

wirefull=sub_wire3; //滿(mǎn)信號連線(xiàn)

第三部分是實(shí)例化FIFO所調用的宏模塊,這里調用的是scfifo模塊,代碼如下:

scfifoscfifo_component( //scfifo模塊實(shí)例化

.rdreq(rdreq), //讀請求

.aclr(aclr), //異步清零

.clock(clock), //時(shí)鐘

.wrreq(wrreq), //寫(xiě)請求

.data(data), //輸入數據

.usedw(sub_wire0), //字節使用信號

.empty(sub_wire1), //空信號

.q(sub_wire2), //數據輸出

.full(sub_wire3) //滿(mǎn)信號

.almost_empty(), //幾乎空信號

.almost_full(), //幾乎滿(mǎn)信號

.sclr() //清零信號

.);

第四部分是參數設置,這里設置的是scfifo模塊的參數,包括寬度、深度以及之前生成步驟中設置的那些參數,代碼如下:

defparam

scfifo_component.lpm_width=32, //寬度為32位

scfifo_component.lpm_numwords=2048, //深度為2048字節

scfifo_component.intended_device_family=Cyclone,//器件族為Cyclone

scfifo_component.lpm_type=scfifo, //調用lpm為scfifo

scfifo_component.lpm_showahead=OFF, //關(guān)閉showahead模式

scfifo_component.overflow_checking=ON, //打開(kāi)溢出校驗

scfifo_component.underflow_checking=ON, //打開(kāi)讀空校驗

scfifo_component.add_ram_output_register=ON; //使用輸出寄存器

在生成的3個(gè)FIFO模塊文件中,還包含一個(gè)fifo_test_bb.v文件,這個(gè)文件包含的是fifo_test.v文件的第一部分內容,也就是說(shuō)這個(gè)文件是FIFO模塊的端口聲明模塊。

剩下的一個(gè)文件是fifo_test_inst.v,inst是實(shí)例化的簡(jiǎn)稱(chēng)。在這個(gè)文件里面提供了FIFO模塊實(shí)例化的模板,代碼如下:

fifo_test fifo_test_inst( //fifo_test模塊實(shí)例化

.data(data_sig), //輸入數據

.wrreq(wrreq_sig), //寫(xiě)請求

.rdreq(rdreq_sig), //讀請求

.clock(clock_sig), //時(shí)鐘

.aclr(aclr_sig), //異步清零

.q(q_sig), //輸出數據

.full(full_sig), //滿(mǎn)信號

.empty(empty_sig), //空信號

.usedw(usedw_sig) //字節使用信號

);

通過(guò)復制這個(gè)模板至工程設計文件中,即可實(shí)現FIFO模塊的實(shí)例化。在進(jìn)行實(shí)例化時(shí),可以修改實(shí)例化的名稱(chēng)以及FIFO模塊端口信號線(xiàn)的連線(xiàn)資源名稱(chēng)。

下面是將FIFO實(shí)例化在IP_Generate_Test工程中的代碼。

moduleIP_Generate_Test(...); //調用FIFO模塊的設計文件模塊

... //連線(xiàn)資源聲明

fifo_test fifo_test_inst1( //實(shí)例化為fifo_test_inst1

.data(fifo_data), //FIFO數據輸入為fifo_data

.wrreq(fifo_wrreq),

.rdreq(fifo_rdreq),

.clock(fifo_clock),

.aclr(fifo_aclr),

.q(fifo_q),

.full(fifo_full),

.empty(fifo_empty),

.usedw() //未實(shí)例化的端口保留空白表示不使用該端口

);

...

endmodule

至此,已經(jīng)在一個(gè)工程中實(shí)現了片上FIFO的調用。

2.RAM

這里主要介紹雙口RAM模塊的生成方法,模塊的構造方法及調用方法與FIFO模塊類(lèi)似,不詳細介紹。

(1)打開(kāi)宏模塊向導管理器并新建宏模塊。

具體方法參見(jiàn)FIFO的方法。

(2)選擇宏模塊。

在本例中,我們選擇LPM_RAM_DP模塊進(jìn)行實(shí)現,如圖9.20所示。

圖9.20選擇宏模塊

(3)設置DPRAM端口數及容量單位。

在宏模塊向導管理器(DPRAM)的第3頁(yè),可以設置DPRAM的端口數及容量單位。支持兩種DPRAM:1個(gè)讀端口和1個(gè)寫(xiě)端口的DPRAM,2個(gè)讀端口和2個(gè)寫(xiě)端口的DPRAM??梢栽O置DPRAM的容量單位為位或者是字節。同時(shí)在本頁(yè)的左下角會(huì )計算出實(shí)現這樣一個(gè)DPRAM所消耗的FPGA資源,如圖9.21所示。

圖9.21選擇宏模塊

(4)設置DPRAM數據寬度及容量。

在宏模塊向導管理器(DPRAM)的第4頁(yè),可以設置DPRAM的數據寬度及容量,同時(shí)可以設置輸入輸出端口為不同的寬度實(shí)現串并或并串轉換,如圖9.22所示。

(5)設置DPRAM時(shí)鐘及使能。

在宏模塊向導管理器(DPRAM)的第5頁(yè),可以設置DPRAM的時(shí)鐘及使能信號,可以將DPRAM設置為單時(shí)鐘(輸入輸出使用同一個(gè)時(shí)鐘),也可以使用獨立的時(shí)鐘。另外還可以為DPRAM增加讀使能信號rden,如圖9.23所示。

圖9.22設置DPRAM數據寬度及容量

圖9.23設置DPRAM時(shí)鐘及使能

(6)設置DPRAM端口寄存器及清零信號。

在宏模塊向導管理器(DPRAM)的第7頁(yè),可以設置DPRAM的端口寄存器及清零信號,可以選擇是否增加端口的寄存器,如圖9.24所示。

圖9.24設置DPRAM端口寄存器及清零信號

(7)設置DPRAM初始化值。

在宏模塊向導管理器(DPRAM)的第9頁(yè),可以設置DPRAM的初始化值。通過(guò)選擇MIF文件或者HEX文件可以使用文件中的值對DPRAM進(jìn)行初始化,如圖9.25所示。

圖9.25設置DPRAM初始化值

(8)生成DPRAM模塊文件。

設置完成所有的參數,來(lái)到宏模塊向導管理器(DPRAM)的最后一頁(yè)??梢赃x擇生成的DPRAM模塊文件,共有6個(gè)文件可以生成,如圖9.26所示。

圖9.26生成DPRAM模塊文件

DPRAM的調用方式與FIFO的類(lèi)似,其構建方式及模塊的聲明結構可以參看DPRAM模塊的dpram_test.v和dpram_test_bb.v文件。

3.ROM

這里主要介紹ROM模塊的生成方法,模塊的構造方法及調用方法與FIFO模塊類(lèi)似,就不詳細介紹了。

(1)打開(kāi)宏模塊向導管理器并新建宏模塊。

具體方法參見(jiàn)FIFO的方法。

(2)選擇宏模塊。

在本例中,我們選擇LPM_ROM模塊進(jìn)行實(shí)現,如圖9.27所示。

(3)設置ROM寬度、深度及時(shí)鐘控制方式。

在宏模塊向導管理器(DPRAM)的第3頁(yè),可以設置DPRAM的寬度、深度及時(shí)鐘控制方式。ROM寬度指的是存儲器數據位寬,深度指的是具有該寬度的存儲單元個(gè)數。宏模塊向導管理器會(huì )根據設計者的選擇自動(dòng)生成ROM的地址總線(xiàn),同時(shí)也會(huì )在左下角顯示消耗的FPGA邏輯資源情況。

圖9.27選擇宏模塊

ROM的時(shí)鐘控制方式分為兩種,一種為單時(shí)鐘,另一種將輸入時(shí)鐘和輸出時(shí)鐘分離。ROM的輸入輸出使用的是同一個(gè)數據端口,時(shí)鐘的分離實(shí)際上也是對同一個(gè)數據端口作控制,如圖9.28所示。

圖9.28設置ROM寬度、深度及時(shí)鐘控制方式

(4)設置端口寄存器及清零信號。

這個(gè)步驟與RAM中的第(6)步類(lèi)似,不再詳述,如圖9.29所示。

(5)設置ROM初始化值。

同樣可以參看RAM使用方法的第(7)步,如圖9.30所示。

圖9.29設置端口寄存器及清零信號

圖9.30設置ROM初始化值

(6)選擇生成ROM模塊文件。

設置完成所有的參數,來(lái)到宏模塊向導管理器(ROM)的最后一頁(yè)??梢赃x擇生成的ROM模塊文件,同樣有6個(gè)文件可以生成,如圖9.31所示。

圖9.31生成ROM模塊文件

ROM的調用方式與FIFO的類(lèi)似,其構建方式及模塊的聲明結構可以參看ROM模塊的ROM_test.v和ROM_test_bb.v文件。

9.3.2的使用方法

在數字系統中的應用非常廣泛,在A(yíng)ltera的FPGA產(chǎn)品中集成的是PLL模塊,在Xilinx的FPGA產(chǎn)品中集成的是DLL模塊。兩者采用的技術(shù)不同,但是實(shí)現的基本功能大致相同,但也各有特點(diǎn)。

鎖相環(huán)的原理及在FPGA內部的構造這里將不做介紹,只以Altera的CycloneFPGA的PLL為例講解其使用方法。

CyclonePLL具有時(shí)鐘倍頻和分頻、相位偏移、可編程占空比和外部時(shí)鐘輸出,進(jìn)行系統級的時(shí)鐘管理和偏移控制。PLL常用于同步內部器件時(shí)鐘和外部時(shí)鐘,使內部工作的時(shí)鐘頻率比外部時(shí)鐘更高,時(shí)鐘延遲和時(shí)鐘偏移最小,減小或調整時(shí)鐘到輸出(TCO)和建立(TSU)時(shí)間。

(1)打開(kāi)宏模塊向導管理器并新建宏模塊。

具體方法參見(jiàn)FIFO的方法。

(2)選擇宏模塊。

在本例中,我們選擇ALTPLL模塊進(jìn)行實(shí)現,如圖9.32所示。

圖9.32選擇宏模塊

(3)設置時(shí)鐘源,PLL類(lèi)型及工作模式。

在宏模塊向導管理器(PLL)的第3頁(yè),設計者可以設置一些PLL基本屬性,如器件族、速度級別及基準頻率,還可以設置PLL的類(lèi)型及工作模式。

值得注意的是,這里的基準頻率并不一定是最終設計者向PLL輸入的時(shí)鐘。最終的PLL是通過(guò)比例值來(lái)對輸入頻率進(jìn)行綜合,所以PLL的關(guān)鍵參數是比例值,即圖9.33中PLL_test框圖中的Ratio值。

例如Ratio值為5/2(通過(guò)后面幾個(gè)步驟實(shí)現),而基準頻率為40MHz,則PLL的c0輸出為100MHz。在調用這個(gè)PLL時(shí),若設計者使用20MHz的頻率輸入,則輸出的頻率為50MHz,而不是100MHz。

另外,在這頁(yè)中,設計者還可以設置PLL的工作模式,如圖9.33所示。

圖9.33設置時(shí)鐘源、PLL類(lèi)型及工作模式

CyclonePLL支持3種(反饋)模式:標準、零延遲緩沖和無(wú)補償。和其他Altera器件系列不同,CyclonePLL不支持外部反饋模式。所有支持的3種時(shí)鐘反饋模式允許倍頻/分頻、相位偏移和可編程占空比。下面對每種模式進(jìn)行講解。

·標準模式。

在標準模式下,PLL把參考時(shí)鐘和邏輯陣列或I/O單元的端口緩存器處的時(shí)鐘信號相位對齊,補償內部全局時(shí)鐘網(wǎng)絡(luò )延遲。在A(yíng)LTPLL宏模塊向導管理器中,可以定義PLL的哪個(gè)內部時(shí)鐘輸出(c0或c1)應該補償。

如果在該模式中使用外部時(shí)鐘輸出(PLL[2..1]_OUT),則相對于時(shí)鐘輸入管腳有相位偏移。如果用內部PLL時(shí)鐘輸出驅動(dòng)通用I/O管腳,則相對應的時(shí)鐘輸入管腳也有相位偏移。

·零延遲緩沖模式。

PLL外部時(shí)鐘輸出管腳(PLL[2..1]_OUT)的時(shí)鐘信號和PLL輸入時(shí)鐘是相位對齊的,沒(méi)有延遲。如果用c[1..0]端口驅動(dòng)內部時(shí)鐘管腳,那么相對于輸入時(shí)鐘管腳有相位偏移。

·無(wú)補償模式。

在該模式下,PLL不補償任何時(shí)鐘網(wǎng)絡(luò )。這樣會(huì )有更佳的抖動(dòng)性能,因為反饋到PFD的時(shí)鐘不經(jīng)過(guò)某些電路。相對PLL時(shí)鐘輸入,PLL內部和外部時(shí)鐘輸出都有相位偏移。

(4)設置可選輸入輸出。

在宏模塊向導管理器(PLL)的第4頁(yè),可以選擇PLL模塊的可選輸出信號,如圖9.34所示。

CyclonePLL有4個(gè)控制信號pllena、areset、prdena和locked,進(jìn)行PLL管理。

·pllena。

PLL啟動(dòng)信號pllena用于啟動(dòng)PLL。當pllena為低時(shí),PLL時(shí)鐘輸出端口為低,PLL失鎖。當pllena再次變高時(shí),PLL重新鎖定并重新同步輸入時(shí)鐘。因此,pllena是高有效信號。

因為在CycloneFPGA中沒(méi)有專(zhuān)用的pllena管腳,內部邏輯或任意通用I/O管腳都可以驅動(dòng)pllena端口。因為每個(gè)PLL都有自己的pllena控制電路或共享通用的pllena電路,這樣就很靈活。pllena信號是可選的,如果軟件中沒(méi)有啟動(dòng)它,端口內部就連接到VCC。

圖9.34設置可選輸入

·areset。

PLLareset信號是每個(gè)PLL的復位或重新同步輸入。但驅動(dòng)為高時(shí),PLL計數器重置,清除PLL輸出,造成PLL失鎖,VCO復位后回到初始設置。當areset再次變低,PLL重新開(kāi)始鎖定,PLL重新和輸入時(shí)鐘同步。如果目標VCO的頻率低于標準頻率,在鎖定過(guò)程中PLL時(shí)鐘輸出起始頻率值比所需值要高。areset是高有效信號。

CycloneFPGA可以從內部邏輯或任意通用I/O管腳驅動(dòng)這個(gè)PLL輸入信號。areset信號是可選的,如果在軟件中沒(méi)有使用它,該端口內部連接到GND。

·pfdena。

pfdena信號用可編程開(kāi)關(guān)控制著(zhù)PLL中PFD輸出。如果把areset置低禁止PFD,那么VCO將以最后設置的控制電壓和頻率值工作,長(cháng)時(shí)間會(huì )漂移到更低的頻率。即使每個(gè)輸入時(shí)鐘PLL時(shí)鐘輸出也會(huì )繼續觸發(fā),但是PLL可能會(huì )失鎖。

當PLL失鎖或輸入時(shí)鐘禁止時(shí),系統會(huì )繼續運行。因為在一段時(shí)間內最后鎖定輸出頻率不會(huì )改變,所以可以用pfdena端口作為關(guān)機或清除功能。為了維持這一頻率,系統在關(guān)機之前有時(shí)間儲存當前的設置。如果pfdena信號再次變高,PLL重新鎖定和輸入時(shí)鐘重新同步。因此pfdena管腳是高有效信號。

可以用任意通用I/O管腳或內部邏輯驅動(dòng)pfdena輸入信號。該信號是可選的,如果在軟件沒(méi)有使用它,該端口內部連接到VCC。

·locked。

當locked輸出是邏輯高電平,表明PLL時(shí)鐘輸出和PLL參考輸入時(shí)鐘穩定同相。當PLL開(kāi)始跟蹤參考時(shí)鐘時(shí),locked端口可能會(huì )觸發(fā),無(wú)需額外電路。

PLL的locked端口可以使用任意通用I/O管腳和內部邏輯。這個(gè)locked信號是可選的,在監視PLL鎖定過(guò)程中是非常有用的。

(5)設置c0輸出參數。

在宏模塊向導管理器(PLL)的第5頁(yè),可以選擇PLL模塊c0輸出參數,包括Ratio比值、相移量、占空比等,如圖9.35所示。

圖9.35設置c0輸出參數

(6)設置c1輸出參數。

在宏模塊向導管理器(PLL)的第6頁(yè),同樣可以選擇PLL模塊c1輸出參數,包括Ratio比值、相移量、占空比等,如圖9.36所示。

圖9.36設置c1輸出參數

(7)設置e0輸出參數。

在宏模塊向導管理器(PLL)的第7頁(yè),可以選擇PLL模塊e0輸出參數,包括Ratio比值、相移量、占空比等,如圖9.37所示。

圖9.37設置e0輸出參數

(8)選擇生成PLL模塊文件。

在宏模塊向導管理器(PLL)的第8頁(yè),完成PLL參數設置后,可以選擇生成的PLL模塊文件,共包含6個(gè)文件可以生成,如圖9.38所示。

圖9.38選擇生成PLL模塊文件

PLL的調用方式與FIFO的類(lèi)似,其構建方式及模塊的聲明結構可以參看PLL模塊的PLL_test.v和PLL_test_bb.v文件。

9.3.3的使用方法

1.SERDES簡(jiǎn)介

隨著(zhù)對信息流量需求的不斷增長(cháng),傳統并行接口技術(shù)成為進(jìn)一步提高數據傳輸速率的瓶頸。過(guò)去主要用于光纖通信的串行通信技術(shù)——SERDES正在取代傳統并行總線(xiàn)而成為高速接口技術(shù)的主流。

SERDES是英文SERializer(串行器)/DESerializer(解串器)的簡(jiǎn)稱(chēng)。它是一種時(shí)分多路復用(TDM)、點(diǎn)對點(diǎn)的通信技術(shù),即在發(fā)送端,多路低速并行信號被轉換成高速串行信號,經(jīng)過(guò)傳輸媒體(光纜或銅線(xiàn)),最后在接收端高速串行信號重新轉換成低速并行信號。這種點(diǎn)對點(diǎn)的串行通信技術(shù)充分利用傳輸媒體的信道容量,減少所需的傳輸信道和器件引腳數目,從而大大降低通信成本。

隨著(zhù)半導體技術(shù)的迅速發(fā)展,計算機的性能和應用取得了長(cháng)足進(jìn)步??墒?,傳統并行總線(xiàn)技術(shù)PCI卻跟不上處理器和存儲器的進(jìn)步,而成為提高數據傳輸速率的瓶頸。新一代PCI標準PCIExpress正是為解決計算機I/O瓶頸而提出的。

PCIExpress是一種基于SERDES的串行雙向通信技術(shù),每個(gè)通道的數據傳輸速率為2.5Gbit/s,可多達32通道,支持芯片與芯片和背板與背板之間的通信。國際互聯(lián)網(wǎng)絡(luò )和信息技術(shù)的興起促成了計算機和通信技術(shù)的交匯,而SERDES串行通信技術(shù)逐步取代傳統并行總線(xiàn)正是這一交匯的具體體現。

2.SERDES系統結構

基于SERDES的高速串行接口采用以下措施突破了傳統并行I/O接口的數據傳輸瓶頸:一是采用差分信號傳輸代替單端信號傳輸,從而增強了抗噪聲、抗干擾能力;二是采用時(shí)鐘和數據恢復技術(shù)代替同時(shí)傳輸數據和時(shí)鐘,從而解決了限制數據傳輸速率的信號時(shí)鐘偏移問(wèn)題。

一個(gè)典型SERDES收發(fā)機由發(fā)送通道和接收通道組成,如圖9.39所示。編碼器、串行器、發(fā)送器以及時(shí)鐘產(chǎn)生電路組成發(fā)送通道,解碼器、解串器、接收器以及時(shí)鐘恢復電路組成接收通道。顧名思義,編碼器和解碼器完成編碼和解碼功能,其中8B/10B、64B/66B和不規則編碼(scrambling)是最常用的編碼方案。

圖9.39典型SERDES收發(fā)機結構圖

串行器和解串器負責從并行到串行和從串行到并行的轉換。串行器需要時(shí)鐘產(chǎn)生電路,時(shí)鐘發(fā)生電路通常由鎖相環(huán)(PLL)來(lái)實(shí)現。解串器需要時(shí)鐘和數據恢復電路(CDR),時(shí)鐘恢復電路通常也由鎖相環(huán)來(lái)實(shí)現,但有多種實(shí)現形式如相位插值、過(guò)剩抽樣等。

發(fā)送器和接收器完成差分信號的發(fā)送和接收,其中LVDS和CML是最常用的兩種差分信號標準。另外還有一些輔助電路也是必不可少的,例如環(huán)路(loopback)測試、內置誤碼率測試等。

3.SERDES實(shí)現方式

SERDES在系統中的實(shí)現雖然概念上比較簡(jiǎn)單,但是硬件實(shí)現要求很多細節正確無(wú)誤,如信號端接、參考時(shí)鐘的生成、鎖相環(huán)(PLL)的使用、背板信號完整性和位錯誤率的評估等。

下面以Altera的StratixGXFPGA為例介紹其中的內嵌的數千兆位收發(fā)器功能塊。

StratixGX器件將高速3.125Gbit/s收發(fā)器串行/解串行(SERDES)技術(shù)和業(yè)界最先進(jìn)的FPGA架構相結合。在FPGA中嵌入的數千兆位收發(fā)器功能塊,能夠在需要靈活性、高性能和最先進(jìn)功能的許多新系統中使用收發(fā)器。

下面是這個(gè)數千兆位收發(fā)器功能塊的主要特點(diǎn)。

·支持從622MHz~3.125GHz的所有頻率。

·每個(gè)塊有4個(gè)獨立的3.125Gbit/s全雙工通道,每個(gè)器件多達20個(gè)通道(5個(gè)塊)。

·支持3.1875Gbit/s的10Gbit光纖通道。

·集成時(shí)鐘數據恢復(CDR)、模式檢測、字對齊、8b/10b編解碼器和同步功能。

·功耗很低,每4通道只有450mW(包括數千兆收發(fā)器功能塊的功耗)。

·支持動(dòng)態(tài)可編程:預加重、均衡和I/O緩沖上的差分輸出電壓。

·支持SerialLite協(xié)議,這是一個(gè)精簡(jiǎn)的點(diǎn)對點(diǎn)協(xié)議。

·對中等性能信號的差分片內匹配。

·完全實(shí)現10Gbit以太網(wǎng)物理介質(zhì)接入層(PMA)和物理編碼子層(PCS)功能。

·支持靈活的時(shí)鐘拓撲,每個(gè)收發(fā)器模塊中有一個(gè)發(fā)送器PLL和四個(gè)接收器PLL。

·采用1.5V、0.13mm全銅CMOS工藝技術(shù)制造,支持1.5VPCMLI/O標準。

·包括獨立的發(fā)送器和接收器節電功能,在不工作過(guò)程中減小功耗。

·內嵌自檢(BIST)功能,包括嵌入偽隨機二進(jìn)制序列(PRBS)圖案生成和驗證。

·有4個(gè)獨立的環(huán)回路徑用于系統驗證。

可以看到,StratixGX的這個(gè)收發(fā)器功能非常強大,遠遠超出了圖9.39所示的SERDES基本結構圖的功能。圖9.40是它的原理框圖,需要說(shuō)明的是,設計者在使用這個(gè)模塊時(shí)并不一定完全實(shí)現其中的每一個(gè)模塊,可以根據需要只實(shí)現其中的部分內容。

圖9.40StratixGX收發(fā)機

下面介紹其中的一些模塊。

(1)差分緩沖。

數千兆位收發(fā)器功能塊差分I/O緩沖支持1.5VPCMLI/O標準,有許多改善系統信號完整性的特性。例如,動(dòng)態(tài)可重配置預加重和均衡功能,調整信號以補償信號經(jīng)過(guò)傳送介質(zhì)的衰減。不同的可編程VOD設置確保了驅動(dòng)強度匹配傳輸線(xiàn)電阻和線(xiàn)長(cháng)。另外,差分片內匹配為中等性能信號提供了合適的接收器和發(fā)送器緩沖匹配。

(2)可編程發(fā)送預加重模塊。

發(fā)送預加重塊使收發(fā)器(SERDES)可以驅動(dòng)更長(cháng)的背板或超過(guò)1GHz頻率下的電纜。在這些頻率下,通道損耗是很高的,衰減是很明顯的,因為眼圖的關(guān)閉無(wú)法讓發(fā)送的信號繼續傳送。預加重信號提升信號的高頻部分,補償傳輸線(xiàn)的衰減。使用可編程的預加重設置,能夠為給定的傳輸線(xiàn)選擇最優(yōu)的水平(或者在軟件設定,或者通過(guò)內部或外部信號動(dòng)態(tài)選擇),讓信號眼圖在遠端張得最開(kāi)。

(3)可編程接收均衡器模塊。

接收均衡器塊使得收發(fā)器(SERDES)驅動(dòng)更長(cháng)的背板或超過(guò)1GHz的電纜。當信號經(jīng)過(guò)接收器均衡器塊時(shí),同樣可以提升信號的高頻部分能量,補償傳輸線(xiàn)的高頻衰減指標??删幊叹馑娇梢愿鶕鬏斁€(xiàn)進(jìn)行優(yōu)化(或者在軟件設定或者通過(guò)內部或外部信號動(dòng)態(tài)選擇),讓信號眼圖在CDR單元輸入端張得最開(kāi)。

(4)發(fā)送器和接收器PLL。

每個(gè)數千兆位收發(fā)器功能塊有一個(gè)專(zhuān)用發(fā)送器PLL和四個(gè)專(zhuān)用接收器PLL,提供靈活的時(shí)鐘拓撲,支持一系列的輸入數據流。對于輸出傳送和接收,這些PLL根據更低速的輸入參考時(shí)鐘生成所需的時(shí)鐘頻率。每個(gè)PLL支持4、8、10、16或20的倍增因子。每個(gè)外部參考時(shí)鐘或StratixGX內的各種時(shí)鐘源都可以驅動(dòng)PLL。

(5)時(shí)鐘恢復單元。

CDR從輸入串行數據流中提取時(shí)鐘?;謴偷臅r(shí)鐘用于采樣串行數據流、同步控制解串行器。

(6)串行/解串模塊。

SERDES模塊將輸入的高速串行數據轉換為更低速度的并行接口,反之亦然。SERDES模塊可以配置為8、10、16或20位并行接口。

(7)模式檢測器模塊。

模式檢測器模塊識別輸入數據流中的特殊模式。模式檢測器包括一個(gè)內建的8b/10b的K28間隔符號檢測和SONET的A1A2模式檢測。在定制模式下,設計者可以創(chuàng )建專(zhuān)用模式。

(8)字對齊模塊。

字對齊模塊和模式檢測器共同識別和調整正確的字節邊界。此外,字對齊有一個(gè)定制模式,能夠從FPGA內核邏輯人工地控制字節對齊。

(9)速率匹配器模塊。

在串行數據傳輸中,發(fā)送和接收器件的時(shí)鐘頻率通常是不匹配的。這種不匹配會(huì )引起數據以略快或慢于接收器件能解釋的速度傳送。StratixGX速率匹配器從數據流中插入或刪除如傳送協(xié)議中定義的可移除的符號,解決了恢復時(shí)鐘和PLD邏輯陣列時(shí)鐘的頻差,而不會(huì )丟失傳送的數據。StratixGX數據匹配器為使用8b/10b編碼數據的系統進(jìn)行了優(yōu)化。

(10)信道對齊器。

信道對齊器消除了實(shí)現4個(gè)收發(fā)器XAUI協(xié)議相關(guān)的信道至信道的偏移。信道對齊器消除4信道的偏移,為內核邏輯建立了可靠的以太網(wǎng)XGMII接口。

(11)8b/10b編解碼器。

8b/10b編解碼器模塊將8比特的數據轉換為10比特的數據,反之亦然。該算法平衡了串行數據流中“0”和“1”的數量,增加了變換密度,因此更易于接收器恢復串行數據。

(12)同步器。

同步器補償了并行收發(fā)器接口和FPGA內核邏輯之間的相位差。

(13)內建自測。

BIST為收發(fā)器提供了一組強大的診斷能力。它包括偽隨機二進(jìn)制序列(PRBS)和其他圖案的生成器和檢查器。BIST也提供了4個(gè)環(huán)回配置用于系統診斷。



評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>