《電子技術應用》
您所在的位置:首頁 > 可編程邏輯 > 設計應用 > 基于單片SRAM和FPGA的紅外圖像顯示的設計及實現
基于單片SRAM和FPGA的紅外圖像顯示的設計及實現
來源:電子技術應用2011年第7期
胡 哲,張貴清,祁釋冰,夏博儒,李芬芬
(湖北航天技術研究所,湖北 武漢430040)
摘要: 介紹一種采用單片SRAM和FPGA實現紅外圖像顯示的新方案,并對顯示系統結構、FPGA各功能模塊設計、SRAM的讀/寫時序設計進行了詳細論述。該圖像顯示方案可用于紅外圖像處理系統的硬件調試和紅外圖像處理效果觀測。實際使用情況表明,該顯示方案能夠很好地滿足紅外圖像處理系統的圖像輸出需求。
中圖分類號: TN911.73
文獻標識碼: A
文章編號: 0258-7998(2011)07-0061-04
Design and realization of infrared image display based on one SRAM and FPGA
Hu Zhe,Zhang Guiqing,Qi Shibing,Xia Boru,Li Fenfen
Hubei Institute of Spaceflight,Wuhan 430040,China
Abstract: A new solution using only one SRAM and FPGA for infrared image display on monitor, which can be used in many fields such as hardware debugging of infrared image processing system and visualization of image processing effect, is presented in this paper. The structure of display system, FPGA logic function block, SRAM read and write timing are also analyzed in detail. And it successfully satisfies the output image quality of infrared image processing system.
Key words : infrared image display;FPGA;SRAM


    隨著紅外探測技術的發展及其在軍事、工業等領域的廣泛使用,紅外圖像處理算法獲得了廣泛研究。在實際嵌入式紅外圖像處理系統中,為了方便硬件調試和觀察圖像處理的效果,需要在系統中加入圖像顯示模塊。通常視頻數據流需要處理的數據量大,實時性要求高,所以需要高速大容量的存儲器作為圖像數據的緩存。用于圖像數據緩存的存儲器有3種:①同步動態隨機存取存儲器SDRAM(Synchronous Dynamic RAM),其容量大、速度快、體積小、價格低,但SDRAM的控制邏輯比較復雜,對時序要求也十分嚴格,需要設計專門的SDRAM控制器以完成與SDRAM芯片的接口;②雙口RAM,它可以同時對數據進行讀寫,時序簡單,操作非常方便,但是容量相對較小,而且價格高;③靜態隨機存取存儲器SRAM(Static RAM),它不僅容量大、速度快、體積小、價格低,而且時序控制簡單,但是數據不能同時讀寫,工程中多采用2片SRAM做乒乓操作來簡化讀寫控制。針對實際工程中的體積小、成本低、開發周期短等要求,本文提出一種基于單片SRAM和FPGA的圖像處理及顯示方案,并在實際工程中得到了應用。
    本文的初始設計是面向幀頻為50幀/s、16 bit灰度、圖像為320×256像素的紅外圖像輸出顯示,但其設計方案可以應用于不同幀頻、灰度級及圖像大小的圖像顯示。
1 系統硬件結構和工作原理
    系統硬件結構圖如圖1所示。本系統中,高速串行LVDS視頻信號經Camera Link接收芯片DS90CR285接收轉化為并行TTL電平后送給FPGA,同時,其他系統的高速串行LVDS格式數據也可以直接送至FPGA。這些視頻數據經FPGA進行直方圖統計,并存儲在SRAM中。然后,FPGA在存儲間隙讀出SRAM內的有效像素數據,并采用直方圖統計的參數對圖像灰度拉伸,然后送至視頻轉換芯片ADV7123進行D/A轉換顯示。

2 各功能模塊設計
2.1 Camera Link接口

    本方案選用DS90CR285將Camera Link格式的4對串行LVDS圖像信號轉換成28 bit并行TTL/CMOS的數據。根據Camera Link基本協議,28 bit數據信號中包括3個數據端口:A口(8 bit)、B口(8 bit)、C口(8 bit),和4個視頻控制信號FVAL(幀有效)、DVAL(數據有效)、LVAL(行有效)、SPARE(空,暫時未用)。經過Camera Link芯片轉換后的時鐘信號是整個相機的同步驅動信號,所有的數據和視頻控制信號都和該時鐘信號同步。數據轉換后送入FPGA的時序如圖2。

2.2 FPGA核心功能模塊實現
    本設計中視頻數據的處理都在FPGA內實現,其內部功能框圖見圖3。

 

 

    本文主要討論在FPGA內,利用視頻數據的行場掃描間隙對單片SRAM進行讀寫操作從而完成模擬圖像的顯示功能。直方圖統計功能在另文中描述。
    本系統中,視頻信號時鐘為20 MHz,PAL制式信號數據時鐘采用13.5 MHz。為了讓SRAM讀寫時間更加充裕,使用了兩個FIFO模塊作為數據緩沖:FIFO_IN、FIFO_OUT。FIFO_IN用來做SRAM的輸入緩沖器,FIFO_OUT用來做SRAM的輸出緩沖器。FIFO可以通過IP核來實現,存儲寬度為16 bit,存儲深度設置為1.5倍行像素,本系統為1.5×320=480[1-2]。
2.2.1 FIFO_IN模塊
    為保證數據讀寫效率,此模塊的讀寫方式需進行合理規劃,具體為每次往FIFO中寫一行數據,寫完后立刻從FIFO讀一行數據并寫入SRAM。像素時鐘為FIFO的寫時鐘,行有效信號作為FIFO的寫使能,FIFO讀時鐘為100 MHz,也是SRAM的讀寫時鐘,通過判斷行下降沿來生成一個320的計數器,并在計數器有效期間將FIFO讀使能置為高。FVAL的上升沿作為FIFO的復位信號。此FIFO的讀寫時序圖見圖4。

2.2.2 FIFO_OUT模塊
    此模塊主要是緩沖灰度拉伸后的視頻數據用于輸出顯示。本系統要求輸出標準的PAL制式的模擬視頻,PAL制式視頻場頻為50 Hz,幀頻為25 Hz。本方案選用專用的圖像DA芯片ADV7123, 該芯片是一款高速的RGB D/A轉換芯片,內部集成有3路10位精度的D/A轉換器,分別用于RGB數字信號的D/A轉換,數據吞吐率可達到330 MS/s,適合高分辨彩色視頻生成。ADV7123提供有3路數字輸入接口(RE9:0]、G[9:0]、B[9:0])以及CRT消隱和同步控制信號(BLANK、SYNC)。標準PAL制式的行場消隱信號和行場同步信號都是標準信號,在FPGA內很容易實現,本文不再論述。實際應用中只需要在需要顯示圖像的正確行場位置,將圖像灰度數據送入G[9:0]通道,即可在lOG端口得到復合視頻信號。同時這些正確行場位置標志信號作為FIFO的輸出使能,輸出時鐘為13.5 MHz,輸入時鐘為100 MHz,輸入使能為灰度拉伸模塊的輸出數據有效信號,輸入數據為灰度拉伸模塊的輸出數據。FVAL的上升沿作為FIFO的復位信號。
2.2.3 SRAM讀寫控制模塊
    SRAM作為視頻數據的緩沖區,根據上述時序其容量最好能大于2幀數據,同時為了便于以后擴展,本方案中選用SRAM為CY7C1472BV33,容量為4 M×18 bit。由于SRAM屬于單向存儲器,利用單片SRAM作存儲的難點在于如何將讀寫控制分開。此控制包含2部分:讀寫使能和讀寫地址變換。下面分別從讀和寫來說明這2部分控制的實現。
    FIFO_IN的讀使能作為SRAM的寫使能,寫地址在寫使能有效期間從SRAM的零地址依次遞增,即地址范圍為0~81 919(320×256-1)。但由于本系統中視頻信號20 ms一幀,PAL制式視頻顯示一幀需要奇場20 ms、偶場20 ms,共40 ms,所以在偶場顯示時還是在讀SRAM中0~81 919部分的數據,此時視頻信號必須寫入SRAM的另外一部分空間,這就要求在奇場和偶場時寫地址要進行切換;或者采用在奇場時數據寫入SRAM,偶場時不寫入,這樣剛好做到顯示完一幀圖像,下一幀圖像數據就可以覆蓋上一幀圖像的數據,這樣寫地址就一直是從0~81 919,不需要切換。本方案采用后者,其寫使能及寫地址的FPGA主要代碼如下:
//SRAM寫使能
always @(posedge SRAM_CLK)
    if (!rst_n | (sram_write_counter==319))
    ui_sram_write <= 0;
    else if(LVAL_fallage)
    ui_sram_write <= 1;//SRAM寫地址切換
    always @(posedge SRAM_CLK)
    if (!rst_n | Hsync_odd_riseage)
      ui_sram_write_add <= 0;//起始地址
    else if (ui_sram_write)
      ui_sram_write_add <= ui_sram_write_add + 1;
    SRAM的寫使能設計要避免與SRAM的讀使能沖突。本方案在FIFO_OUT模塊上設計了一個可編程空標志位program_empty,當fifo數據不足160個時,program_empty置高,PAL制式視頻的行掃描周期為64&mu;s,也就是FIFO_OUT每64 &mu;s被讀一次(一次讀出320個數),這樣只要在64 &mu;s時間內能夠寫入320個數就可以保證下次行掃描能夠從FIFO_OUT取出數據。由于本系統中SRAM的寫使能周期為16.5 &mu;s,因此本方案是將SRAM讀狀態分2種情況,在FVAL信號有效期間,采用program_empty置高和SRAM的寫使能下降沿的&ldquo;與&rdquo;操作作為SRAM讀觸發信號;在FVAL信號無效期間,SRAM無寫控制,program_empty信號的上升沿將作為SRAM的讀觸發信號。然后根據讀觸發信號生成一個320的計數器,并在計數器有效期間將SRAM的讀使能置為高。這樣就能保證SRAM的讀寫不沖突,且數據也不會漏寫,控制時序見圖5。

    PAL制式視頻顯示分為奇場和偶場,因此在奇場時,SRAM的讀地址應該滿足:第n行地址范圍為320&times;(n-1)~319+320&times;(n-1)(n=1,2&hellip;&hellip;128);偶場時,RAM的讀地址應該滿足:第n行地址范圍320&times;n~319+320&times;n(n=1,2&hellip;&hellip;128),其讀使能及讀地址的FPGA主要代碼如下:
//////// sram的讀標志位有2種狀態:(1)奇場數據有效時////用寫sram的下降沿&lsquo;與&rsquo;fifo半行標志位。(2)奇場數據無效時用 fifo半行標志位產生上升沿
    always @(posedge SRAM_CLK)
    if (!rst_n)
    ui_sram_read_flag <= 0;
    else begin
    if ((FVAL_d | ui_sram_write_5d)& Hsync_odd )
    ui_sram_read_flag <= ui_sram_write_fallage &
fifo_sram_adv7123_prom_empty_d;
    else
    ui_sram_read_flag<=fifo_sram_adv7123_prom_empty_riseage;
    end
////  SRAM讀地址切換
    always @(posedge SRAM_CLK)
    if (!rst_n | Hsync_odd_riseage)
       ui_sram_read_add <= 0;//奇場起始地址
    else if (Hsync_odd_fallage)
        ui_sram_read_add <= 320;//偶場起始地址
    else if (ui_sram_read_fallage)
        ui_sram_read_add <= ui_sram_read_add+320;
    else if (ui_sram_read)
        ui_sram_read_add <= ui_sram_read_add+1;
    最后通過下面的賦值給出了SRAM芯片的讀寫、片選及地址信號:
assign SRAM_read_write_en=~(ui_sram_write & Hsync_odd);
//SRAM讀寫使能
assign SRAM_CE=~(ui_sram_read | ui_sram_write);
//SSRAM片選
assign SRAM_ADD=(ui_sram_write)?ui_sram_write_add:
ui_sram_read_add;//SSRAM地址
2.2.4 灰度拉伸
    將SRAM的讀使能和讀數據送入灰度拉伸模塊作為數據使能和輸入數據。本方案中,圖像灰度線性拉伸算法表達式為:
    
    式(1)中:Y是拉伸后輸出圖像灰度值;X是SRAM中讀出的數據,為原始圖像16 bit二進制數灰度值;Xmin是輸入圖像數據直方圖統計最小灰度值;Xmax是輸入圖像數據直方圖統計最大灰度值。為保證精度,實際應用中將上述公式進行簡單變換,可以記為:
    
    Q值在上幀結束前直方圖統計模塊已經得到,這樣拉伸運算只需1次減法和乘法運算,得到積左移14 bit后,截取低10 bit就得到拉伸后的灰度值。需要注意的是,截取前要判定乘法是否溢出,如果溢出,結果置為最大灰度值210。本方案中主要通過調用乘法器IP核來完成乘法運算,不同硬件的乘法器延遲時間不同,所以必須要將輸入數據使能信號作相應延遲后,成為輸出使能與乘法器輸出數據同步[3]。經過灰度拉伸后的圖像數據送入FIFO_OUT模塊用于圖像顯示,其中,灰度拉伸模塊的輸出使能及輸出數據作為FIFO_OUT模塊的輸入使能和輸入數據。
    該圖像處理方案以FPGA 作為核心控制芯片,采用單片SRAM實現了圖像預處理、數據緩存、圖像存儲及顯示的功能。隨著FPGA 性能的不斷提高及其靈活的可編程性,設計者可以進一步在FPGA內部實現各種其他的圖像處理算法。這樣,直接采用FPGA和單片SRAM的方案不但減小了PCB 尺寸,降低了元件數量及PCB布線的難度,也降低了元件相互連線帶來的信號失真,從而增加了可靠性和穩定性。本方案已成功應用在本單位的圖像采集和處理產品中。
參考文獻
[1] 田耘,胡彬,徐文波,等.Xilinx ISE Design Suite 10.x FPGA開發指南[M].北京:人民郵電出版社,2008.
[2] Xilinx Corporation.fifo_generator_ds317.http://www.xilinx.com,2005.
[3] Xilinx Corporation.Muli_gen_ds255.http://www.xilinx.com,2005.

此內容為AET網站原創,未經授權禁止轉載。
主站蜘蛛池模板: 久久久2019精品 | 亚洲精品第一综合99久久 | 嫩草影院永久一二三入口 | 怡红院成人g影院 | 免费鲁丝片一级在线观看 | 免费一级毛片视频 | 一区在线播放 | 黄色a∨ | 日日日日操| 国产一级高清视频在线 | 亚洲精品视频在线观看免费 | 波多野结衣在线视频播放 | 羞羞视频观看 | 涩涩成人免费视频 | 国产精品视频第一区二区 | 97狠狠| 欧美成人免费全网站大片 | 亚洲一页 | 色图综合网 | 日韩中文字幕免费版 | 亚洲影视网 | 国产性片在线 | 一级毛片短视频 | 欧美乱人伦视频 | 欧美在线视频a | 欧美精品导航 | 高清国产一区二区 | 欧美片第一页 | 久久亚洲精品成人 | 成人网欧美亚洲影视图片 | 一级黄色免费观看 | 夜夜操夜夜爱 | 扒开双腿爽爽爽视频www | 在线簧片 | 中文字幕 一区 婷婷 在线 | 亚洲aaa视频| 中国一级毛片特级毛片 | 欧美性最xxx | 欧美v亚洲| 2015小明看日韩成人免费视频 | 色综合天天综一个色天天综合网 |