關 閉

新聞中心

EEPW首頁 > 安全與國防 > 數(shù)字網(wǎng)絡視頻監(jiān)控器中的多路轉接邏輯的設計與實現(xiàn)

數(shù)字網(wǎng)絡視頻監(jiān)控器中的多路轉接邏輯的設計與實現(xiàn)

——
作者:黃喜 時間:2006-07-20 來源:天津大學電子信息工程學院 收藏

摘要:本文主要介紹在視頻監(jiān)控板中多路視頻信號輸入情況下的數(shù)據(jù)緩存、信號格式轉換的設計,并用altera的cyclone器件實現(xiàn)的整個過程。包括簡單介紹視頻監(jiān)控器電路板的原理,此轉接邏輯在系統(tǒng)中的作用和地位,并詳細介紹了此邏輯用fpga設計實現(xiàn)的過程。

隨著科技的日新月異,視頻監(jiān)控市場也得到了飛速發(fā)展。視頻監(jiān)控以其直觀、方便、信息內容豐富而廣泛應用于許多場合。近年來,隨著互聯(lián)網(wǎng)的大范圍普及,以及計算機、網(wǎng)絡以及圖象處理、傳輸技術的飛速發(fā)展,視頻監(jiān)控技術也有長足的發(fā)展。視頻監(jiān)控已經滲透到教育、政府、娛樂場所、醫(yī)院、酒店、運動場館、城市治安等多種領域,視頻監(jiān)控服務器被稱為及手機以后另外一個極具市場開發(fā)前景的消費電子產品。


數(shù)字網(wǎng)絡視頻監(jiān)控服務器主要完成從攝像頭獲取的模擬信號到數(shù)字化壓縮后送到網(wǎng)絡的功能,其原理框圖如圖1所示。

由圖1所示,監(jiān)控器電路板主要由A/D芯片,F(xiàn)PGA多路轉接芯片,壓縮芯片,CPU等組成。其中本文要介紹的多路轉接邏輯的FPGA實現(xiàn)位于A/D芯片和壓縮芯片之間,由于FPGA內部含有PLL模塊,所以跟FPGA連接的TW2804芯片的27m輸入時鐘可以由FPGA產生。


這里選用altera的cyclone系列的EP1C6Q240C8,其內部有90k的存儲容量,6kLEBS,2個PLL,在后面的設計介紹中,將會講到整個設計用到了64k的存儲容量,1個PLL,大約4—5k左右的LEBS,所以選用此低成本的FPGA,可以完成此設計,而且基本上充分用到了內部的大多數(shù)資源,加上此芯片的引腳有240個,能滿足外面的引腳連接,所以altera的EP1C6Q240C8成為此邏輯設計中最佳的選擇器件。


如圖1所示,A/D芯片接受來自四個攝像頭的四路模擬視頻信號,這里采用Techwell公司的TW2804芯片,此芯片支持四路視頻模擬信號的輸入,輸出是數(shù)字ITU-R BT.656格式的信號,時鐘是27m。。D1、D2、D3、D4信號的時序圖如圖2所示。

圖2

其中EAV和SAV分別為行尾和行頭標志信號,他們中間是行與行之間的空白信號,SAV后面的VALID有效時的信號為1440bytes的d1格式的有效視頻信號,總的這些信號加起來是視頻信號的一行信號,一幀視頻信號包括576行這樣的行信號,也就是有效的這種格式的一幀輸出視頻信號為1440*576bytes的信號,由于每一行信號中由兩個bytes來表示一個像素,所以這種d1格式一幀的像素為720*576分辨率。


FPGA轉接邏輯要實現(xiàn)的功能是要在顯示終端上同時顯示四路的視頻信號,也就是要顯示如圖3所示的視頻信號。

圖3

由于要在一個顯示終端上同時顯示四路信號,所以原來每一路信號的720*576分辨率要轉換為原來1/4的分辨率,即cif的格式,cif格式是352*288的分辨率,這樣四路cif格式的信號組合成如圖3所示的一個幀輸出到終端顯示出來。


因為在終端顯示上是要求四路視頻信號同步輸出的,也就是不允許出現(xiàn)其中一路信號已經在顯示其上顯示出來了,但另外一路信號還沒有顯示出來也就是出現(xiàn)畫面上一部分是黑屏的情況,所以在這種情況下,需要把四路不同的視頻信號先用FPGA在sdram中緩存起來,當每一路信號都在sdram中都至少存滿一幀時就可以同步讀出,并通過FPGA內部緩存組成如圖3所示的幀格式,然后輸出給壓縮芯片壓縮后由處理器控制輸出至網(wǎng)絡,這里的壓縮芯片選的是VWEB公司的VW2010。


至此,F(xiàn)PGA要實現(xiàn)的功能已經非常清晰,首先把輸入的四路d1格式的信號分別轉換成四路cif格式的信號,然后把這四路信號分別緩存在sdram中,當sdram中每一路信號都至少存滿一幀時,同步讀出,讀出sdram到FPGA中后,經過格式的重新組合,最后組成如圖3所示的信號格式輸出。其中數(shù)據(jù)在sdram中的緩存控制是最重要也是最復雜的環(huán)節(jié)。下面詳細介紹此FPGA的邏輯設計與實現(xiàn)。


由上面的介紹可知,此FPGA主要有三方面的接口,與TW2804的輸入接口,與sdram的緩存接口,與VW2010的輸出接口。所以FPGA的內部邏輯大致可以設計為如圖4所示。

圖4

下面對各個模塊分別進行介紹。
輸入格式轉換模塊的主要是完成四路信號從d1到cif格式的轉換,即從原來的720*576像素的分辨率轉換為352*288像素的分辨率。其轉換過程是把一幀中偶數(shù)行的數(shù)據(jù)全部去掉,把奇數(shù)行中的數(shù)據(jù),按奇數(shù)列的順序一個隔一個的去掉,最后保留的數(shù)據(jù)就是原來1/4的數(shù)據(jù)。這個過程比較簡單,通過設計兩個行列計數(shù)器就能實現(xiàn)。其仿真圖如圖5所示。 

圖5

圖5所示為在奇數(shù)行時數(shù)據(jù)一個空一個的有效,在一行讀完后,下一行就都設為無效。


接下來是內部輸入緩沖模塊,此模塊式用來控制與sdram控制相連接和進行數(shù)據(jù)緩存控制的模塊。其內部邏輯圖如圖6所示。

如圖6所示,此模塊主要設置了四個FIFO。因為sdram只有一個數(shù)據(jù)通道,所以四路信號輸入時必須先進行內部緩存才能無丟失的存儲于sdram中。所以此時要把FIFO的讀時鐘至少設為寫時鐘的四倍,這樣才能在FIFO沒有存滿時就能把每一路的信號從FIFO緩存中讀出到sdram中。


 由于sdram的數(shù)據(jù)是32位的,這里把四個FIFO也設為32位,所以在四路cif格式的信號進入FIFO之前要先用四個寄存器進行8/32的轉換。只要設置四個移位寄存器就可實現(xiàn)。


如圖5所示,cif格式的信號的輸入時鐘是27/2m的,由于FIFO是32位的,所以FIFO的讀時鐘要至少設成(8/32)*(27/2)*4=13.5m。


對于這里的FIFO的數(shù)據(jù)容量,把每個FIFO都設為256個深度,這樣就需要256*32=8k的容量,四個FIFO就需要8*4=32k的容量。所以在輸入緩沖中用到了FPGA中32k的存儲資源。


由于四路cif格式的信號是每隔704(352*2)bytes就會出現(xiàn)704個無效的數(shù)據(jù),即數(shù)據(jù)是一行隔一行的有效的,而sdram需要讀寫兩個獨立的帶寬,所以可以把sdram的讀寫周期分別設為704個bytes的長度,這樣在704個有效數(shù)據(jù)到來的時候就給sdram控制器寫數(shù)據(jù),而在704個無效數(shù)據(jù)到來時,就對sdram控制器讀數(shù),這樣就解決了sdram只有一個數(shù)據(jù)通道的問題。


但是,由于sdram還有自刷新周期,而且對其控制的命令是有一定延時的,所以這里把sdram對數(shù)據(jù)的讀寫時鐘頻率再提高一倍,即由上面算得的13.5m提高到27m,對于cyclone系列的FPGA來說,這樣的邏輯是很容易跑到27m的時鐘頻率的。


數(shù)據(jù)從FIFO中讀出后,就要送入到sdram控制器中,sdram控制器可以由quartus的megacore產生,也可以根據(jù)需要自己設計,這里是自己設計的,sdram控制器的輸入輸出接口如圖7所示。 

如圖7所示,sdram控制器的左面為用戶接口,右面為sdram接口,用戶給sdram發(fā)出請求命令(cmd),當收到回應信號(cmdack)時,sdram給用戶端發(fā)送或讀取數(shù)據(jù)。


這里用到的是64m的sdram,因為每一路cif格式的信號每幀數(shù)據(jù)是352*288個像素,即704*288=202752bytes,這里給每一路信號分配兩幀的地址空間。由于sdram有突發(fā)數(shù)據(jù)長度(burst length)和整頁(full page)兩種數(shù)據(jù)操作方式,而這里因為數(shù)據(jù)比較大,所以采用了full page的方式,這種方式是在讀寫命令有效后,即在時鐘控制下讀出整頁256個32bits的數(shù)據(jù),這樣讀寫數(shù)據(jù)的效率就可以提高很多。


因為sdram中數(shù)據(jù)的寬度是32位的,而cif格式的信號是8位的,所以只需要給每路信號分配2*704*288/4=101376的地址空間。


如圖8所示為sdram控制器的讀寫時候的控制信號圖。

a

b

圖8

圖8中a為對sdram寫數(shù)據(jù)的命令,b為對sdram讀數(shù)據(jù)的命令,由圖可以看出,通過sdram控制器的轉換,在接收到回應信號(cmdack)后,把讀寫命令分別轉換成了rasn,casn,wen控制指令。其中讀寫指令分別對應如下。


寫數(shù)據(jù) :rasn=1 ;casn=0 ;wen=0 ;
讀數(shù)據(jù) :rasn=1 ;casn=0 ;wen=1 ;


數(shù)據(jù)從sdram讀出時,應滿足每一路信號都至少在sdram中存滿一幀的條件。當可以同步讀出時,由于還是要四路讀出,所以在讀出端口還要設置四個FIFO,用來緩存數(shù)據(jù),以進行信號的組幀。


這里把四個FIFO同樣設為32位寬度,256長度,所以這里總共也是用到了32k的存儲容量。加上上面sdram控制器輸入端用到的32k存儲容量,在整個FPGA中用到了64k的存儲容量,對于EP1C6Q240C8的90k存儲容量來說是足夠的而且利用率也是比較高的了。


輸出FIFO緩存后,就要把四路信號按照每一幀如圖3的格式輸出,也就是第一行的前一半的704bytes輸出第一路信號,后一半704個bytes輸出第二路信號,然后直到第289行開始,前一半的704bytes輸出第三路信號,后一半704個bytes輸出第四路信號,這樣最后在網(wǎng)絡顯示終端就可以在一個屏幕上看到如圖3所示的四幅圖像。


如圖9所示為在前兩行的數(shù)據(jù)輸出波形圖。 

由圖可知,第一和第二路的輸出FIFO分別在兩個rden信號下控制數(shù)據(jù)的讀出,而這兩個rden信號就是由計數(shù)器計數(shù)至704產生的,再另外設置一個行計數(shù)器,當此計數(shù)器計數(shù)至289時,輸出dout就換為第三和第四路信號的輸出FIFO。


到此為止,整個FPGA的設計大致完成。下面給出對此次設計以后可以擴展和改進的功能。


首先,因為這是四路的多路轉換緩沖,所以直接把它們固定組合起來送至網(wǎng)絡顯示于終端。如果需要支持更多路的視頻信號輸入進行多路轉換,例如輸入信號時8路或16路,那么送入網(wǎng)絡的時候就有一個組合的問題,即在顯示器上四幅圖像最終顯示視頻輸入的哪四幅。這在實際情況下也是經常出現(xiàn)的情況,例如在某個建筑物中安裝了8個攝像頭,在白天的情況下可能要監(jiān)視樓道內的情況,而到晚上可能要監(jiān)視樓外門口的情況,這就需要在FPGA中進行一個選擇,所以,此時可以在FPGA中加入一個I2C從模塊,通過此模塊可以與處理器通信,在FPGA中設置一些寄存器,通過由I2C送來的不同的寄存器配置指令,就可以實現(xiàn)顯示器上圖像的實時切換。


其次,由于cyclone系列的產品存儲容量比較有限,如果要增加到16路這樣的規(guī)模,輸入輸出緩沖的存儲容量必將不夠,所以此時可以考慮用cyclone2系列的產品。


另外,如果以后要完成路數(shù)比較多的轉接,可以在監(jiān)控器板上多加幾塊TW2804和VW2010芯片,這樣就需要FPGA的輸入輸出引腳要足夠多,而EP1C6Q240C8這樣的FPGA芯片有240個引腳,足夠擴展需要。
總之,在這樣的轉接邏輯中用到altera的cyclone系列低成本的FPGA產品,充分利用了其現(xiàn)有的內部資源,而且價格也是非常的易于接受,是非常理想的選擇。 

 

 
 
 
 
 



評論


相關推薦

技術專區(qū)

關閉