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