一種音視頻監(jiān)視系統(tǒng)的設(shè)計(jì)和實(shí)現(xiàn)
FPGA的選擇
FPGA(Field-Programmable Gate Array),即現(xiàn)場(chǎng)可編程門陣列,它是在PAL、GAL、CPLD等可編程器件的基礎(chǔ)上進(jìn)一步發(fā)展的產(chǎn)物。它是作為專用集成電路(ASIC)領(lǐng)域中的一種半定制電路而出現(xiàn)的,既解決了定制電路的不足,又克服了原有可編程器件門電路數(shù)有限的缺點(diǎn)。
我們根據(jù)幾個(gè)因素進(jìn)行選擇。器件需要滿足預(yù)計(jì)的I/O要求,并且必須具有相應(yīng)數(shù)量的邏輯單元、適宜的Block RAM尺寸以及一定數(shù)量的時(shí)鐘緩沖器和時(shí)鐘管理器件,如鎖相環(huán)(PLL)、數(shù)字時(shí)鐘管理(DcM)模塊和乘累加模塊。基于這些需求,我們選擇了 Virtex-5 XCVSX95T-FF1136.
時(shí)鐘要求分析
選擇FPGA之后,我們開始設(shè)計(jì)過(guò)程,即分析時(shí)鐘控制要求,然后將信號(hào)映射到I/O組或I/O引腳。
對(duì)于時(shí)鐘要求分析,重要的是考慮以下幾個(gè)因素:FPGA是否具有足夠的時(shí)鐘功能I/O線和全局時(shí)鐘I/O線?是否有足夠的PLL、DCM和全局時(shí)鐘緩沖器?全局時(shí)鐘I/O緩沖器是否支持所要求的最高頻率?
本設(shè)計(jì)的時(shí)鐘控制要求包括:一個(gè)以150MHz-200MHz頻率運(yùn)行的全局系統(tǒng)時(shí)鐘,具有若干PLL供所有內(nèi)部邏輯用來(lái)進(jìn)行處理;一個(gè)以 250MHz頻率運(yùn)行的全局時(shí)鐘,具有PLL/DCM的PCI Express鏈接;一個(gè)以250MHz頻率運(yùn)行的全局時(shí)鐘緩沖器(帶有PLL和DCM)用于以太網(wǎng)MAC;以及一個(gè)200MHz的時(shí)鐘(由 PLL/DCM生成),用于I/O模塊中的逐位去歪斜等。
我們總共需要4~6個(gè)全局時(shí)鐘緩沖器和16個(gè)局部時(shí)鐘緩沖器。FPGA XCVSX95T-FF1136提供每組20個(gè)全局時(shí)鐘輸入引腳和4個(gè)時(shí)鐘功能I/O.也可將I/O組的時(shí)鐘功能引腳直接連接到區(qū)域緩沖器或I/O緩沖器,并且將其用于特定區(qū)域或相鄰區(qū)域。另外,各GTP/MGT還有一個(gè)參考時(shí)鐘輸入引腳。
初始布局規(guī)劃
Virtex-5 FPGA共有18個(gè)I/O組,可以將各種輸入/輸出對(duì)映射到這些I/O組。有幾個(gè)I/O組支持20對(duì)輸入/輸出或10個(gè)全局時(shí)鐘。其他I/O組則大多支持 40對(duì)輸入/輸出,每對(duì)輸入/輸出上有4個(gè)輸入時(shí)鐘功能引腳和8個(gè)輸出時(shí)鐘功能引腳。
同時(shí),上下兩牛個(gè)FPGA包括三個(gè)時(shí)鐘控制模塊(CMT),即一個(gè)PLL和兩個(gè)DCM.對(duì)于需要上下兩半個(gè)器件中的PLL的所有全局時(shí)鐘信號(hào),我們必須確保予以妥善映射,以使設(shè)計(jì)具有從全局時(shí)鐘輸入緩沖器到PLL的直接連接。然后我們使用剩下的14個(gè)I/O組,這些組支持40條I/O線,是單端/差分模式。每個(gè)組由4個(gè)單端時(shí)鐘功能引腳和8個(gè)差分時(shí)鐘功能引腳組成。接下來(lái)可以將時(shí)鐘功能引腳映射或連接到區(qū)域時(shí)鐘緩沖器或I/O時(shí)鐘緩沖器。
一般情況下,可以使用這些時(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://butianyuan.cn/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集成
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í)鐘抖動(dòng)是否適宜,以及是否使用了全局緩沖器來(lái)緩沖所有輸出。
為了使用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)行。
在生成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來(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ò)誤。
IP是英文Internet Protocol(網(wǎng)絡(luò)之間互連的協(xié)議)的縮寫,中文簡(jiǎn)稱為網(wǎng)協(xié),也就是為計(jì)算機(jī)網(wǎng)絡(luò)相互連接進(jìn)行通信而設(shè)計(jì)的協(xié)議。在因特網(wǎng)中,它是能使連接到網(wǎng)上的所有計(jì)算機(jī)網(wǎng)絡(luò)實(shí)現(xiàn)相互通信的一套規(guī)則,規(guī)定了計(jì)算機(jī)在因特網(wǎng)上進(jìn)行通信時(shí)應(yīng)當(dāng)遵守的規(guī)則。任何廠家生產(chǎn)的計(jì)算機(jī)系統(tǒng),只要遵守 IP協(xié)議就可以與因特網(wǎng)互連互通。IP地址具有唯一性,根據(jù)用戶性質(zhì)的不同,可以分為5類。另外,IP還有進(jìn)入防護(hù),知識(shí)產(chǎn)權(quán),指針寄存器等含義。
對(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)論