《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 可編程邏輯 > 設(shè)計(jì)應(yīng)用 > Camera Link接口的異步FIFO設(shè)計(jì)與實(shí)現(xiàn)
Camera Link接口的異步FIFO設(shè)計(jì)與實(shí)現(xiàn)
宋振豐1,2,,李 巖1,,王鶴淇1,,2
1.中國科學(xué)院長春光學(xué)精密機(jī)械與物理研究所,,吉林 長春130033,;2.中國科學(xué)院研究生院,,北京10
摘要: 介紹了異步FIFO在Camera Link接口中的應(yīng)用,,將Camera Link接口中的幀有效信號FVAL和行有效信號LVAL引入到異步FIFO的設(shè)計(jì)中,。分析了FPGA中設(shè)計(jì)異步FIFO的難點(diǎn),解決了異步FIFO設(shè)計(jì)中存在的兩個(gè)關(guān)鍵問題:一是盡量降低電路中亞穩(wěn)態(tài)的出現(xiàn)概率,;二是如何產(chǎn)生空,、滿等相應(yīng)的控制信號。為Camera Link接口提供了穩(wěn)定的視頻數(shù)據(jù)及控制信號,。
Abstract:
Key words :

摘  要: 介紹了異步FIFOCamera Link接口中的應(yīng)用,,將Camera Link接口中的幀有效信號FVAL和行有效信號LVAL引入到異步FIFO的設(shè)計(jì)中。分析了FPGA中設(shè)計(jì)異步FIFO的難點(diǎn),,解決了異步FIFO設(shè)計(jì)中存在的兩個(gè)關(guān)鍵問題:一是盡量降低電路中亞穩(wěn)態(tài)的出現(xiàn)概率,;二是如何產(chǎn)生空,、滿等相應(yīng)的控制信號。為Camera Link接口提供了穩(wěn)定的視頻數(shù)據(jù)及控制信號,。
關(guān)鍵詞: Camera Link,;異步FIFO;雙口RAM,;亞穩(wěn)態(tài),;格雷碼

    FIFO(First In First Out)是一種常用于數(shù)據(jù)緩存的電路器件,可應(yīng)用于高速數(shù)據(jù)采集,、多處理器接口和視頻信號的時(shí)序控制等領(lǐng)域,。在Camera Link接口中,需要將28 bit的TTL/CMOS信號同時(shí)送給Camera Link接口芯片,,其中28 bit信號包括24 bit數(shù)據(jù)信號和4 bit控制信號(幀有效FVAL信號和行有效LVAL信號等),。而進(jìn)入FPGA中的只有數(shù)據(jù)信號,所以,,異步FIFO要有在控制圖像數(shù)據(jù)時(shí)序的同時(shí),,生成FVAL和LVAL同步控制信號的功能。在這種情況下,,目前常用的FIFO器件很難滿足系統(tǒng)的要求,。文中采用Verilog HDL語言設(shè)計(jì)了一種異步FIFO,它不僅提供數(shù)據(jù)緩沖,,而且能夠匹配Camera Link接口標(biāo)準(zhǔn),。
1 異步FIFO設(shè)計(jì)
    異步FIFO由FIFO主控模塊(包含存儲單元)、讀地址及空標(biāo)志產(chǎn)生模塊,、寫地址及滿標(biāo)志產(chǎn)生模塊,、異步比較模塊4部分組成,,結(jié)構(gòu)圖如圖1所示,。整個(gè)FIFO分為2個(gè)獨(dú)立的時(shí)鐘域,即讀時(shí)鐘域和寫時(shí)鐘域,,F(xiàn)IFO的存儲介質(zhì)為一塊雙口RAM,,可以同時(shí)進(jìn)行讀寫操作。在寫時(shí)鐘域部分,,由寫地址及滿標(biāo)志模塊產(chǎn)生寫地址和寫滿標(biāo)志信號,,寫時(shí)鐘信號和寫使能信號由系統(tǒng)數(shù)據(jù)生成模塊給出,寫入的數(shù)據(jù)由主控模塊存儲在雙端口RAM中,;在讀時(shí)鐘域部分,,由讀地址及空標(biāo)志模塊產(chǎn)生讀地址和讀空標(biāo)志信號,讀時(shí)鐘信號由系統(tǒng)時(shí)鐘通過分頻器得到,,讀使能使用視頻同步信號中的行同步LVAL信號,,讀出數(shù)據(jù)由主控制模塊從雙端口RAM中讀出并連同視頻同步信號一起發(fā)送到Camera Link接口,。由異步比較模塊對讀、寫地址進(jìn)行比較,,并產(chǎn)生將滿(nfull_n),、將空(nempty_n)信號。


2 設(shè)計(jì)的難點(diǎn)
    對于通用的FIFO,,不能直接應(yīng)用到Camera Link接口中,,也不能通過簡單修改現(xiàn)成的FIFO模塊而得到,這是因?yàn)楫惒紽IFO的設(shè)計(jì)存在以下難點(diǎn):
    (1)亞穩(wěn)態(tài)問題:在信號傳輸中,,每種觸發(fā)器都有時(shí)序要求,,并在工作過程中存在數(shù)據(jù)的建立時(shí)間和保持時(shí)間。對于使用上升沿觸發(fā)的觸發(fā)器來說,,建立時(shí)間(Setup Time)是在時(shí)鐘上升沿到來之前,,觸發(fā)器數(shù)據(jù)保持穩(wěn)定的最小時(shí)間;而保持時(shí)間(Hold Time)是在時(shí)鐘上升沿到來之后,,觸發(fā)器數(shù)據(jù)還應(yīng)該保持的最小時(shí)間,。在時(shí)鐘上升沿前后的這個(gè)窗口內(nèi)數(shù)據(jù)應(yīng)該保持不變,否則會使觸發(fā)器工作在一個(gè)不確定的狀態(tài),,即亞穩(wěn)態(tài),。如圖2所示。當(dāng)觸發(fā)器處于亞穩(wěn)態(tài),,且處于亞穩(wěn)態(tài)的時(shí)間超過了一個(gè)時(shí)鐘周期時(shí),,這種不確定的狀態(tài)將會影響到下一級的觸發(fā)器,最終導(dǎo)致連鎖反應(yīng),,從而使整個(gè)系統(tǒng)功能失常,。

    (2)FIFO空、滿標(biāo)志產(chǎn)生邏輯:一個(gè)好的FIFO設(shè)計(jì)的基本要求是:寫滿不溢出,;讀空又不多讀,。傳統(tǒng)的異步FIFO把讀寫地址信號同步后再進(jìn)行比較以產(chǎn)生空滿標(biāo)志,由于讀寫地址的每一位都需要兩級同步電路,,大量使用寄存器必然要占用很大的面積,。這種方法不適合設(shè)計(jì)大容量的FIFO。當(dāng)讀,、寫指針相等也就是指向同一個(gè)內(nèi)存位置時(shí),,F(xiàn)IFO可能處于滿或空兩種狀態(tài),必須區(qū)分FIFO是處于空狀態(tài)還是滿狀態(tài),。
    (3)Camera Link接口的匹配:由于異步FIFO在控制數(shù)據(jù)時(shí)序的同時(shí),,還要產(chǎn)生視頻同步控制信號,并按照控制信號的時(shí)序?qū)?shù)據(jù)讀出,。設(shè)計(jì)中,,只用到Camera Link接口中的幀有效信號FVAL和行有效信號LVAL,,當(dāng)FVAL和LVAL信號為高時(shí),才能將數(shù)據(jù)讀出,,為低時(shí),,數(shù)據(jù)不能讀出。所以雙重的時(shí)序控制很難穩(wěn)定,,Camera Link接口的匹配也很難達(dá)到要求,。
3 問題的解決
    (1)高速的格雷碼指針:對于亞穩(wěn)態(tài)問題,采用高速的格雷碼指針來解決,。設(shè)計(jì)中讀,、寫地址采用格雷碼,用兩組寄存器作為格雷碼指針,。一組二進(jìn)制計(jì)數(shù)器,,而另一組用來存放二進(jìn)制碼到格雷碼轉(zhuǎn)換(Binary-to-Gray)的值。圖3是高速格雷碼計(jì)數(shù)器的示意圖,。加法器的附加條件分別是讀(或?qū)?使能和空(或滿)標(biāo)志,。當(dāng)讀(或?qū)?使能有效(高電平)且FIFO存儲器處在非空(或非滿)狀態(tài)時(shí)就對二進(jìn)制序列加一,否則二進(jìn)制序列加零(保持不變),;然后通過Binary-to-Gray電路將二進(jìn)制bnext轉(zhuǎn)換為格雷碼gnext,,這個(gè)轉(zhuǎn)換電路是由n個(gè)二輸入異或門組成,在下一個(gè)時(shí)鐘沿gnext被存到格雷碼指針中,。

    (2)空滿狀態(tài)產(chǎn)生邏輯:對于空,、滿標(biāo)志,設(shè)計(jì)中采用的解決方法是將地址空間劃分為4個(gè)連續(xù)區(qū)間,,將取自每個(gè)指針最高位和次高位的4位地址狀態(tài)進(jìn)行譯碼,,以判定當(dāng)2個(gè)指針相等時(shí)FIFO存儲器是處于滿狀態(tài)還是空狀態(tài)。如圖4和5所示,,如果寫指針落后于讀指針一個(gè)區(qū)間,,說明FIFO存儲器將可能為滿狀態(tài);如果讀指針落后于寫指針一個(gè)信號區(qū),,說明FIFO存儲器將可能為空狀態(tài),。利用一個(gè)狀態(tài)鎖存器,,當(dāng)寫指針在讀指針后一個(gè)地址空間時(shí)將鎖存器置位,;當(dāng)讀指針在寫指針后一個(gè)地址空間時(shí)將鎖存器清零。在讀指針與寫指針相等時(shí),,如果鎖存器值為1,,F(xiàn)IFO存儲器是滿狀態(tài);如果鎖存器值為0,,F(xiàn)IFO存儲器是空狀態(tài),。由圖4和5可以寫出狀態(tài)鎖存器的置位和復(fù)位的邏輯關(guān)系:
   

    對于空,、滿標(biāo)志的置位和復(fù)位,設(shè)計(jì)中采用異步比較的方法實(shí)現(xiàn),。如圖6所示,,aempty_n和afull_n是由異步信號比較產(chǎn)生的。aempty_n有效(低電平)是由讀指針增加引起的,,所以它是發(fā)生在讀時(shí)鐘的上升沿,;aempty_n信號釋放(無效)是由寫指針增加引起的,所以它發(fā)生在寫時(shí)鐘的上升沿,。類似地,,afull_n信號變?yōu)橛行?低電平)是由寫指針增加引起的,所以它發(fā)生在寫時(shí)鐘的上升沿,;釋放(無效)是由讀指針增加引起的,,所以它發(fā)生在讀時(shí)鐘的上升沿??諣顟B(tài)標(biāo)志是用于阻止下一個(gè)讀時(shí)鐘周期繼續(xù)讀取數(shù)據(jù),,aempty_n的有效沿(下降沿)與讀時(shí)鐘同步,但是它的上升沿卻與寫時(shí)鐘同步,,所以aempty_n的上升沿要經(jīng)過同步器才能傳遞到讀時(shí)鐘域中,。afull_n信號與此類似。

    (3)Camera Link接口匹配邏輯:Camera Link接口有基本架構(gòu)(Base Configuration),、中階架構(gòu)(Medium Configuration)及完整架構(gòu)(Full Configuration)3種,。設(shè)計(jì)中采用基本架構(gòu),配置A口和B口作為圖像數(shù)據(jù)的輸入,,其中A口,、B口都為8 bit;控制信號使用幀有效信號FVAL和行有效信號LVAL,。當(dāng)FVAL和LVAL信號都為高電平時(shí),,數(shù)據(jù)在圖像時(shí)鐘信號的控制下依次發(fā)送。
    由于對FIFO的讀要嚴(yán)格按照控制信號的時(shí)序,,依次將寫入到雙端口RAM中的像素?cái)?shù)據(jù)讀出,,也就是當(dāng)幀有效信號FVAL為高電平,行有效信號LVAL由低電平跳變到高電平時(shí),,讀出的是該行的第一個(gè)像素?cái)?shù)據(jù),;并依次按照行頻和幀頻將像素?cái)?shù)據(jù)發(fā)送到Camera Link接口中。所以要解決以下幾個(gè)問題:
    首先是讀時(shí)鐘信號與寫時(shí)鐘信號的匹配問題,。設(shè)計(jì)中采用分頻器將系統(tǒng)時(shí)鐘分頻,,并與寫時(shí)鐘相近,作為讀時(shí)鐘,,這樣可以避免頻繁產(chǎn)生空,、滿信號,。
    其次,讀操作控制信號的確定,。通常的設(shè)計(jì)中,,讀出數(shù)據(jù)和讀地址加一都在讀使能信號的控制下完成。但設(shè)計(jì)中增加FVAL和LVAL信號后,,數(shù)據(jù)的讀出和讀地址的增加都是在LVAL和FVAL信號為高時(shí)完成,,因此就不能用通常設(shè)計(jì)中的讀使能信號作為讀操作的控制信號,設(shè)計(jì)中用LVAL做為讀操作的控制信號,,從圖1中也可以看出,。這樣,當(dāng)LVAL為高電平時(shí),,就可以實(shí)現(xiàn)每次地址加一,,讀出一個(gè)數(shù)據(jù)。當(dāng)LVAL為低電平時(shí),,地址不增加,,數(shù)據(jù)也不被讀出。
    最后,,F(xiàn)VAL和LVAL信號的產(chǎn)生,。設(shè)計(jì)中通過計(jì)數(shù)來實(shí)現(xiàn),那么觸發(fā)計(jì)數(shù)的信號如何選取呢,?通過上面分析知道,,讀地址的增加和數(shù)據(jù)的讀出都是在LVAL信號的控制下完成的,而LVAL信號也要與讀出的數(shù)據(jù)一一對應(yīng),,也就是說LVAL計(jì)數(shù)每次加一就會有一個(gè)數(shù)據(jù)讀出,,所以采用通常設(shè)計(jì)中的讀使能信號作為LVAL和FVAL計(jì)數(shù)的觸發(fā)信號,便可以實(shí)現(xiàn)Camera Link接口的控制信號對圖像數(shù)據(jù)的控制,。
4 驗(yàn)證結(jié)果
      將程序下載到FPGA中,,使用開發(fā)工具Quartus II6.0中自帶的邏輯分析儀SignalTap對FIFO中的信號進(jìn)行采樣監(jiān)測,采樣結(jié)果如圖7,、圖8所示,。結(jié)果表明信號時(shí)序準(zhǔn)確,數(shù)據(jù)和地址無毛刺現(xiàn)象,。從圖7可以看出,,當(dāng)LVAL信號為低時(shí),讀地址不增加并停止讀,,滿足時(shí)序要求,。圖8中rdata為讀出數(shù)據(jù),值為0~9,,lval_count為LVAL信號的計(jì)數(shù)寄存器,,計(jì)數(shù)值為0~369,其中高電平為0~319,。從圖中看出:讀出數(shù)據(jù)值和lval_count的尾數(shù)值一一對應(yīng),,也就是說LVAL與讀出數(shù)據(jù)一一對應(yīng)。結(jié)果表明其可以為Camera Link接口提供穩(wěn)定的數(shù)據(jù)及控制信號,。

    本文設(shè)計(jì)了一種異步FIFO,,并成功應(yīng)用在Camera Link接口中。分析和解決了異步FIFO設(shè)計(jì)中存在的2個(gè)關(guān)鍵問題:用高速的格雷碼指針作為讀寫地址編碼,,有效降低了亞穩(wěn)態(tài)出現(xiàn)的概率,;通過劃分地址空間和增加標(biāo)志位解決了空、滿信號問題,。同時(shí)還解決了與Camera Link接口的時(shí)序匹配問題,。設(shè)計(jì)中增加了電路的面積,但避免了復(fù)雜的組合邏輯,,提高了系統(tǒng)的工作頻率,。
參考文獻(xiàn)
[1] 夏宇聞.Verilog數(shù)字系統(tǒng)設(shè)計(jì)教程[M].北京航空航天大學(xué)出版社,2003.
[2] 魏芳,,劉志軍,,馬克杰.基于Verilog HDL的異步FIFO設(shè)計(jì)與實(shí)現(xiàn)[J].電子技術(shù)應(yīng)用,2006(7):97-99.
[3] 陳驥,,王鑫,,曹久大.高速CCD激光移位傳感器[J].光學(xué)精密工程,2008(4):611-616.
[4] 劉洪波,,龍娟.異步FIFO狀態(tài)判斷的研究與設(shè)計(jì)[J].微電子學(xué)與計(jì)算機(jī),,2007,24(3).
[5] 黃平,,何虎剛,,徐定杰.導(dǎo)航接收機(jī)的非對稱異步FIFO設(shè)計(jì)[J].彈箭與制導(dǎo)學(xué)報(bào),2008,,28(1).
[6] 萬秋華,,孫瑩,王樹浩,,等.雙讀數(shù)系統(tǒng)的航天級絕對式光電編碼器設(shè)計(jì)[J].光學(xué)精密工程,,2009(6):52-57.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載,。