點擊上方藍字關注我們
引言
圖像信息的獲取和傳輸是圖像處理系統的重要組成部分,直接影響圖像處理系統的性能。圖像信息的采集包括對圖像數據、各種附帶參數信息以及狀態控制信號的采集,一般圖像信號和狀態參數信號以及控制信號是獨立產生的,因此需要設計一種系統能夠將外部設備產生的圖像數據和狀態控制信號同步采集,并能長距離高速傳輸,綜合考慮到圖像采集系統所要求的實時性,可靠性,以及FPGA在數字電路的設計中的優勢,為此本文討論了一種利用FPGA實現基于LVDS的圖像數據采集傳輸技術。
系統設計
高速圖像數據的采集傳輸系統如圖1 所示,主要包括圖像數據源的形成、數據信息的處理和緩存以及幀數據的轉發三部分。其中,圖像數據源的形成過程中,成像設備作為圖像數據的來源,它為系統提供高分辨率的可見光和紅外圖像,考慮系統的實時性和高可靠性因素,采用LVDS傳輸接口實現數據長距離高速傳輸,解決了傳輸瓶頸問題,圖像數據在進入FPGA之前需通過數據格式轉換接口(采用MAX9218實現)將串行的數據轉換為并行數據并緩存。
數據信息的處理由協處理器FPGA完成,主要包括圖像數據及相關參數信息的采集、緩存、組幀和圖像數據的轉發。其中圖像數據的組幀過程最為復雜, FPGA根據圖像源中幀同步、行同步、圖像選擇信號接收解串圖像,存儲至緩存區,并將圖像附帶的參數信息寫入緩存后部,經組幀狀態機形成所需的圖像數據幀。
圖像數據幀形成后,轉發存儲至乒乓結構的幀存儲器,其容量為:512×512×8bit=2Mb。同時硬件邏輯自動將圖像和配套參數信息數據通過LVDS圖像發送接口發送至數據鏈,圖像數據再次以串行的LVDS方式傳輸到后續設備進行處理。
系統實現
FPGA及外圍硬件電路
在接口轉換電路模塊中,圖像數據接收端和發送端均需采用LVDS串行方式進行傳輸,所以在接收端將串行輸入的數據并行接收進FPGA進行處理和在發送端將并行的數據串行輸出時,需要進行并串和串并轉換。
本設計選用MAXIM公司點對點LVDS串行/解串器芯片MAX9247/MAX9218實現數據收發。
在MAX9218接收端,需要進行數據格式轉換,將串行數據源變成并行格式供FPGA處理,同樣在圖像數據鏈路終端發送方MAX9247對輸入的圖像數據也有特定的時序要求,涉及到數據位和控制位的交替傳輸,需要由FPGA完成數據格式的轉換, 并產生相應的控制信號DE_IN。
可編程器件FPGA選用Xilinx公司Virtex-4系列XC4VLX25。實現的功能主要是:根據輸入的行幀同步,采圖像同步和圖像選擇信號來實現圖像數據的接收,并緩存到FPGA內部的接收RxFIFO中,進行幀頭幀尾識別、時序轉換,控制信號的生成,并且根據自定義的通訊協議,從數據流中分解出數據幀,同時將原始圖像數據和狀態數據打包到同一幀數據包中,輸出至數據鏈路終端。
圖像數據鏈路層
由圖3數據的流向來分析,從LVDS接口板輸出的串行圖像數據由14個數據位(數字圖像數據為D0--D13,低位在前高位在后)、幀同步、行同步、時鐘同步、圖像選擇信號、采圖同步信號組成。圖像數據同步時鐘采用7.375MHz,DE_IN由圖像的幀同步信號產生,幀、行同步均為高電平有效,圖像選擇信號用來區分紅外和可見光圖像,紅外圖像為256×320b,可見光圖像為512×512b,19位圖像數據信號經過MAX9218解串后的數據和控制位接入FPGA。
FPGA設計時,針對紅外和可見光兩種不同類型的圖像數據進行采集傳輸,設置一個模式寄存器ModeReg來實現圖像選擇,可以填0或1,用來區分紅外和可見光,當采集可見光時,每輸出一幀有效圖像數據,需輸出兩個幀信號,第一幀內(A幀)只輸出采圖同步信號,不輸出圖像數據、行信號等,第二幀(B幀)中不輸出采圖同步信號,只輸出圖像數據、行信號等;當采集紅外圖像時,只需輸出一幀,圖像選擇信號在第一個幀信號的下降沿跳變,至第二個幀信號下降沿有效,高電平表示紅外圖像,低電平表示可見光圖像。具體時序參考圖3。
經過FPGA組幀完成的幀數據同時要轉發到終端數據鏈路和外部幀存儲器中,供后續設備調用。為了實現后續設備提取圖像信息時的實時性,外部存儲模塊采用由乒乓開關控制的兩個片外幀存儲器,應用FPGA實現雙幀存交替切換,將圖像數據存儲在兩個獨立的FIFO中,FIFO采用IDT公司的IDT72V2103,此器件快速的存取允許圖像實時存儲轉發。在FPGA的控制下,FIFO空間的一幀數據送出后,然后開始將FIFO1 空間的數據送出,同時又向FIFO中寫入下一幀數據,這樣可以保證后續圖像處理設備不間斷的提取圖像數據,以實現快速處理,提高工作效率。
組幀狀態機
狀態機在FPGA內部設計成兩部分,為組幀狀態機(外圈)和組行狀態機(內圈)。其中組幀狀態機各狀態轉移順序及條件見圖4,各狀態占用時間可以通過組行狀態機中的行計數來控制,近而可以完成不同大小規格的圖像的接收。組幀狀態機共有6個狀態。
state0:空閑狀態(系統復位)。state1:幀有效期開始到行有效期開始之間的延時。state2:圖像幀有效期,state3:圖像參數幀有效期。state4:行有效期結束到幀有效期結束之間的延時。state5:幀無效期。Reset為輸入的狀態機復位信號,在系統復位狀態,如果用來啟動狀態機的信號StartMakeFrame = 1,狀態機開始工作,進入系統下一狀態,組幀狀態機在各狀態轉移條件滿足時,依次進入下一狀態,否則,保持在原狀態。
組行狀態機共有3個狀態。
stML_Idle:空閑狀態。stML_High:行有效期。stML_Low:行無效期。在外圈組幀狀態機的每個狀態中,包含n個組行狀態,所包含的組行狀態機中的行數即組幀狀態機各狀態所占用時間,組行狀態機和組幀狀態機啟動條件一致,同時啟動。
以采集可見光圖像數據為例,上電復位期間系統處于states0狀態,狀態機用外部輸入的7.375MHz時鐘同步整個運行過程,圖像的幀、行、圖像數據等信號在同步時鐘的下降沿跳變,上升沿鎖存。一幀圖像數據的大小為512×512bit,并將圖像附帶的參數信息寫入圖像數據后一行(即513行),在幀有效期間(states1、 states2、 states3狀態),CLK 信號作為行計數器的時鐘,每幀圖像在行有效之前有1行無效圖像信號(states1), 在states2狀態下,控制采集一幀中的前512行,在states3狀態下,采集圖象的參數信息,將圖像數據和狀態參數組合為統一的數據幀,采集完一幀圖像數據后等待下一個幀同步信號的到來。在行有效期(stML_High)控制采集一行中的512個像素點數據,在CLK信號的上升沿進行計數, 在數據有效期間采集完512個像素點,等待下一個行同步信號的到來,按同樣方式對下一行512像素點數據進行采集,直至采集完一幀中的512行。
系統仿真
在該系統中,狀態機設計是難點,圖5是運用Active-HDL7.1仿真工具的狀態機仿真結果,仿真時,采用7.375MHz時鐘同步,狀態機啟動后,計數寄存器里的數據遞減,進而產生各狀態轉移滿足的條件,以此實現狀態機的翻轉。
在Active-HDL7.1中編寫TestBench文件時,通過向組幀狀態機計數寄存器寫數,來控制各狀態所占用的時間,利用 StartMakeFrame信號高電平啟動狀態機,各狀態發生翻轉時,狀態完成標志就產生產生高電平跳變。
根據圖5的仿真結果,可以看出組幀狀態機工作正常,所有的邏輯關系也都驗證無誤。
結語
本文采用FPGA設計實現高速圖像采集系統,并采用LVDS接口實現接收與發送,各種模塊之間通過緩存實現通信,避免圖像的丟失;采集的圖像類型和圖像尺寸可以通過軟件重新配置FPGA進行調整??傊贔PGA 的高速專用圖像采集系統電路集成度高、信噪比高、功耗低、成本低、速度快以及接口方便,所設計系統采用兩幀切換存儲方式,使得后續的其它圖像處理模塊能夠與圖像采集模塊并行工作,為圖像處理器的高度集成化實現提供了可能性。
歡迎加入至芯科技FPGA微信學習交流群,這里有一群優秀的FPGA工程師、學生、老師、這里FPGA技術交流學習氛圍濃厚、相互分享、相互幫助、叫上小伙伴一起加入吧!
點個在看你最好看
原文標題:利用FPGA設計基于LVDS的圖像數據采集傳輸系統
文章出處:【微信公眾號:FPGA設計論壇】歡迎添加關注!文章轉載請注明出處。
-
FPGA
+關注
關注
1620文章
21507瀏覽量
598836
原文標題:利用FPGA設計基于LVDS的圖像數據采集傳輸系統
文章出處:【微信號:gh_9d70b445f494,微信公眾號:FPGA設計論壇】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論