基于Virtex-5 FPGA的音視頻監(jiān)視系統(tǒng)設(shè)計
一般情況下,可以使用這些時鐘功能引腳和區(qū)域緩沖器來映射源同步時鐘輸入。區(qū)域緩沖器具有較低歪斜度,可以訪問三個區(qū)域(一個區(qū)域緩沖器所在的區(qū)域,以及其上和其下各一個區(qū)域)。但對于源同步數(shù)據(jù)的組選擇,我們傾向于只使用一個I/O組。如果需要其他IIO,則最好將I/O組用于已事先映射到相鄰組的數(shù)據(jù)信號。
設(shè)計的初始布局規(guī)劃按照幾個步驟進行。首先將系統(tǒng)時鐘放在上半部,然后將自動采集(可選)時鐘放在下半部。我們鎖定了每半部分的CMT,以滿足 I/O組的3/4要求。這樣映射能確保每半部分都留有兩個PLL/DCM(CMT)可用于PCI Express和千兆位以太網(wǎng)的MAC(SGMII)功能。
再把同步數(shù)據(jù)映射到含有區(qū)域時鐘的組,所以把10個音視頻信道輸入映射到剩下的I/O組。每條視頻信道由20條數(shù)據(jù)線、3個控制信號和3個視頻時鐘輸入組成。同時,每條音頻信道由4個數(shù)據(jù)信號、3個控制信號和1個音頻時鐘信號組成。這樣就滿足了32個信號至少使用兩個時鐘功能引腳的要求。
對于本設(shè)計,10個音視頻信道使用10個I/O組。我們將視頻時鐘和音頻時鐘映射到了時鐘功能引腳,以確保有效使用區(qū)域時鐘緩沖器和I/O時鐘緩沖器。根據(jù)PCB的要求,我們?yōu)?a class="contentlabel" href="http://www.biyoush.com/news/listbylabel/label/音視頻">音視頻信道選擇了第5、 6、 13、 17、 18、 19、 20、 22和25組。
對于DDR存儲器,設(shè)計支持1條32位的數(shù)據(jù)總線、14條地址線和若干條控制線。我們需要85~90個信號來映射DDR存儲器接口。根據(jù)PCB的布局,我們使用了I/O組11、23和15來映射DDR的全部I/0信號。由于DDR存儲器按照系統(tǒng)時鐘工作,所以我們選擇將DDR生成的讀數(shù)據(jù)DQS信號映射到具有時鐘功能的I/O線。
核生成與IP集成
用CORE Generator生成核并且集成知識產(chǎn)權(quán)模塊的任務(wù)可能很棘手。
Virtex—5支持可以用CORE Generator工具生成的時鐘控制模塊的各種配置。其中包括若干濾波器時鐘抖動PLL、一個具有濾波器時鐘抖動功能的PLL-DCM對、一個具有輸出雙倍數(shù)據(jù)速率(ODDR)的PLL-DCM對或DCM、一個標(biāo)準(zhǔn)型相移時鐘DCM和若干動態(tài)時鐘切換PLL。
要生成PLL,首先需要了解輸入是單端的還是差分的(示例設(shè)計中都是單端的)。然后,必須確定時鐘抖動是否適宜(在我們的示例中是120皮秒),以及是否使用了全局緩沖器來緩沖所有輸出。
每個PLL最多可生成6個不同頻率的時鐘。在我們的示例中,設(shè)計需要4個200MHz的系統(tǒng)時鐘和1個19.048MHz或39.096MHz的音頻采集時鐘。
為了使用ODDR觸發(fā)器在源同步輸出中驅(qū)動時鐘,我們實現(xiàn)了一個DCM,用于驅(qū)動ODDR觸發(fā)器來實現(xiàn)隨路時鐘控制。此DCM與我們用來進行內(nèi)部時鐘控制的DCM并行運行。
我們用CORE Generator生成了ASYCNFIFO或BlockRAM,并且用嵌入式微處理器核上的中斷邏輯來支持ECC,以完成數(shù)據(jù)錯誤檢測。
在生成PCIExpress核時,我們必須確保參考時鐘具有與PC主板上的PCIExpress插槽輸出相同的性能(即100MHz)。另外,我們還需要確定該核需要多少基址寄存器(BAR),以及BAR是存儲器映射還是I/O映射。我們?yōu)榈刂方獯a使用了BAR監(jiān)視器,這可以幫助生成BAR命中點。
在設(shè)計PCIExpress與系統(tǒng)局部總線之間的橋接器時,我們使用了BAR(起存儲器或I/O區(qū)域芯片選擇的作用)來訪問存儲器映射或I/O映射的寄存器或BlockRAM,確保該核及總線能正確訪問所有寄存器或BlockRAM。
如果上述任何點未命中,則主機PC在嘗試傳遞和執(zhí)行讀事務(wù)時就不會得到任何響應(yīng)。主機PC會進入未知的狀態(tài),或者產(chǎn)生無法恢復(fù)的錯誤。
對于IP集成,必須為各FPGA分別使用一個時鐘復(fù)位模塊。異步復(fù)位必須與每個時鐘都同步,無論是全局時鐘還是區(qū)域時鐘。就內(nèi)部而言,復(fù)位信號是相對于特定的時鐘而異步有效置位和同步無效置位,而其輸出則施加到各時鐘所屬的特定模塊。需要確保已經(jīng)將所有全局輸入時鐘連接到用CoreGen生成的 PLL/DCM核。
將區(qū)域時鐘連接到BUFR/BUFIO。另外,為了避免布局布線工具使用不必要的布線資源,只能僅生成必要的復(fù)位信號。需要確保將PLL/DCM的鎖存條件傳送給外部引腳或配置寄存器。示例中,我們僅將200MHz系統(tǒng)時鐘的PLL鎖存器連接到了I/O引腳。
因為我們是在用高速源同步輸入和輸出進行設(shè)計,所以Virtex-5的逐位去歪斜功能幫助我們在輸入和輸出級滿足建立和保持要求,逐位去歪斜功能內(nèi)置于所有I/O模塊(10DELAY基元)。對于源同步輸入,源同步時鐘使用BUFIO或BUFR, 因此會引入附加延遲。為了補償此延遲,我們通過一個IODELAY實例來驅(qū)動數(shù)據(jù)和時鐘輸入,該實例是按照具有已知延遲計數(shù)的輸入延遲模式配置的。我們通過修改延遲計數(shù)值來幫助滿足輸入級的時序要求。
輸出級的情況與此相似。因為同步時鐘信號是隨數(shù)據(jù)傳送,我們需要確保數(shù)據(jù)和時鐘信號的傳送方式能滿足FPGA或ASIC在另一端的建立和保持要求。對于時鐘和數(shù)據(jù)輸出,我們都使用了按照具有已知延遲計數(shù)值的輸出延遲模式配置的IODELAY實例。
評論