劉亞亞
(商洛學院數(shù)學與計算機應用學院,商洛 726000)
基于FPGA的ADC時序設計
劉亞亞
(商洛學院數(shù)學與計算機應用學院,商洛 726000)
隨著機器視覺領域的快速發(fā)展,圖像實時處理的需求越來越迫切,而軟件實現(xiàn)圖像處理無法滿足實時性的需求,且基于專用集成芯片的實現(xiàn)開發(fā)周期過長,開發(fā)難度過大。針對此提出一種基于FPGA的ADC時序設計。該設計以現(xiàn)場可編程門陣列(FPGA)為核心,在ISE10.1和ModelSim仿真軟件環(huán)境下開發(fā),在Xilinx的XC4VSX55硬件平臺上實現(xiàn)。最終搭建圖像采集與處理系統(tǒng)的平臺,很好地實現(xiàn)圖像的實時與處理。
FPGA;ADC;圖像采集;仿真
隨著現(xiàn)代通信技術的發(fā)展,ADC信號的實時采樣和有效處理在數(shù)字化接收機中起到重要作用[1],F(xiàn)PGA提供邏輯控制,雖然以傳統(tǒng)的DSP或單片機作為CPU 的AD采樣系統(tǒng)控制簡單,但它們不適合完成對復雜的外圍電路的邏輯控制,而且軟件運行速度較低,而FPGA電路設計易于軟件仿真,可同時進行采樣控制和信號的處理[2],且能簡化硬件電路,提高系統(tǒng)工作速度,縮短產(chǎn)品研發(fā)周期。針對此,基于FPGA的ADC時序設計,能更有效地提高寬帶數(shù)字化接收技術,更容易硬件實現(xiàn)。同時該設計還具有比較好的通用性。
1.1ADC128的時序信號
ADC12要正常工作,必需獲取好的時序驅動信號,而時序信號的產(chǎn)生需要各種頻率的時鐘,而系統(tǒng)時鐘只有一個,因此,設計時鐘產(chǎn)生功能是ADC128時序設計的基礎。該模塊主要用來產(chǎn)生內部的全局清零信號和ADC128工作所需的時鐘信號。
上電初始時刻需對FPGA進行清零,清除FPGA上電初始時刻的不穩(wěn)定態(tài)以使FPGA避開外圍電路的不穩(wěn)定狀態(tài)[3-4]。接著產(chǎn)生系統(tǒng)需要的時鐘信號,時鐘產(chǎn)生模塊 (CLK_CTRL)接口框圖如圖1所示:
圖1 時鐘模塊接口圖
FPGA工作時鐘為40MHz時鐘,全局異步上電復位信號和ADC128等各個模塊所需的時鐘信號如表1所示。
該模塊內部模塊分為內部上電復位信號和時鐘分頻模塊,下面詳細介紹內部模塊的結構和設計。
(1)內部上電復位信號模塊設計
該模塊主要用來產(chǎn)生內部的全局清零信號。上電初始時刻對FPGA進行清零,清除FPGA上電初始時刻的不穩(wěn)定態(tài)以使FPGA避開外圍電路的不穩(wěn)定狀態(tài)。
表1 信號說明
輸入數(shù)據(jù):
內部上電復位信號程序設計中用g_rst_x復位10bit的計數(shù)器,當計數(shù)器滿時,即復位后又延時1024單位時間啟動所有時鐘。將全局時鐘和內部上電復位信號均放置在全局網(wǎng)絡上,以提高系統(tǒng)速度和可靠性。系統(tǒng)使用的中間時鐘信號如表2所示:
表2 系統(tǒng)中間所使用的時鐘信號
設計過程:
(1)5MHz時鐘 (ccd_5m_clk)是對輸入全局時鐘——40MHz時鐘進行8倍分頻。每當5MHz時鐘計數(shù)器(ccd_5m_cnt)的第二位的非為5MHz時鐘的當前狀態(tài)。即每4個40MHz時鐘時間ccd_5m_clk狀態(tài)變一次,周期為5MHz。
(2)1MHz時鐘 (ccd_1m_clk)是對輸入全局時鐘_40MHz時鐘進行40倍分頻。每當1MHz時鐘計數(shù)器(ccd_1m_cnt)記錄到19時 (從零開始),即每20個40MHz時鐘時間 ccd_1m_clk狀態(tài)變一次,并且對1MHz時鐘計數(shù)器清零,周期為1MHz時鐘。
(3)200Hz時鐘(ccd_200_clk)是通過輸入全局時鐘——40MHz時鐘進行200倍分頻得到200kHz時鐘計數(shù)器,再對200kHz時鐘計數(shù)器進行1000倍分頻得到。每當200kHz時鐘計數(shù)器(ccd_200k_cnt)記錄到99時(從零開始),即每100個40MHz時鐘時間ccd_200_cnt時鐘計數(shù)器加1,并且對200kHz時鐘計數(shù)器 (ccd_200k_cnt)清零,周期為400kHz時鐘。每當200Hz時鐘計數(shù)器(ccd_200_cnt)記錄到999時(從零開始),即每1000個400kHz時鐘時間ccd_200_clk狀態(tài)變一次,并且對200Hz時鐘計數(shù)器清零,周期為200Hz時鐘。
(4)2Hz時鐘(ccd_2hz_clk)是對 200Hz時鐘(ccd_200_clk)進行100倍分頻。每當2Hz時鐘計數(shù)器(ccd_2hz_cnt)記錄到99時(從零開始),即每100個400Hz時鐘時間ccd_2hz_clk狀態(tài)變一次,并且對2Hz時鐘計數(shù)器清零,周期為2Hz時鐘。
(5)內部上電復位信號(g_rst_x)為零時,所有信號清零。
在設計中的約束主要考慮時鐘信號在時鐘沿的一致性,在所有生成時序中都是以系統(tǒng)時鐘的上升沿和上電復位的下降沿為變化的觸發(fā)信號,這樣就保證了時序的一致性。
用ModelSim作的仿真結果如圖2所示,可示看出結果和設計要求一致。
圖2 時鐘仿真結果
1.2ADC128的串行接口及實現(xiàn)原理
一種操作的時序圖和一個串行接口時序圖中顯示為:ADC128S102的時序圖部分。CS為片選信號,啟動轉換和串行幀數(shù)據(jù)傳輸。SCLK為串行時鐘控制信號,控制轉換過程和串行數(shù)據(jù)的時序。串行數(shù)據(jù)輸出的串行數(shù)據(jù)輸出引腳,其轉換的結果是一個串行發(fā)送數(shù)據(jù)流,MSB是開始第一個數(shù)據(jù)。要寫入的數(shù)據(jù)ADC128S102控制器放在DIN引腳,即串行數(shù)據(jù)輸入引腳。新的數(shù)據(jù)寫入DIN引腳進行轉換[5]。
串行幀的開始時在CS信號的下降沿端的上升沿,每一個串行幀必須包含16個上升的SCLK邊緣信號。當CS信號為高電平時ADC的DOUT引腳處于高阻狀態(tài),否則DOUT引腳處于輸出狀態(tài)。因此,CS相當于一個輸出使能端。同樣,當CS為高電平時,SCLK關閉不工作。
表3 控制寄存器位
在SCLK的前三個周期,ADC處于跟蹤模式可以獲取輸入電壓。在后來的13個SCLK周期轉換的完成,數(shù)據(jù)同步輸出。SCLK的第1到4個下降沿輸出是0,從第5個開始一直到第16個輸出的是AD轉換結果,高位先輸出,低位后輸出。假如有多個數(shù)據(jù)需要轉換,ADC將在16個時鐘的整數(shù)倍處的下降沿處開始新數(shù)據(jù)的轉換,再過4個時鐘,進入轉換結果輸出階段。
ADC128S102會在三種情況下進入跟蹤模式[6]。第一種情形,當CS為低電平,SCLK為高電平時,ADC在SCLK的第一個下降沿時會進入跟蹤模式。第二種情形,當CS變低電平SCLK為低電平,ADC會自動進入跟蹤模式而CS的下降沿可被看做是SCLK的第一個下降沿。第三種情形,當CS和SCLK同時為低電平時,與此同時,ADC進入跟蹤模式。雖然關于CS和SCLK的下降沿來說沒有定時限制,但從表2中可以看出當SCLK在上升沿時為,為了建立和保持CS的低電平有效時還是有一定的條件限制。
每一次的轉換中,數(shù)據(jù)是在8個SCLK上升沿CS為下降沿時存儲到DIN引腳的一個控制寄存器中。控制寄存器裝載指示:要轉換的輸入通道的數(shù)據(jù)的隨后的轉換。如表3,表4,表5所示。雖然ADC128S102能夠獲得輸入信號的全分辨率的第一轉換,即立即上電后第一個轉換結果將是一個隨機選擇的通道。因此,用戶需要將一個虛擬的轉換設置所需要的通道,將用于所后的轉換。
表4 控制寄存器位描述
表5 輸入通道選擇
具體的數(shù)據(jù)采集的過程如圖3所示,圖4所示為圖3的部分放大圖。當使能端(en)有效CS信號為低電平時,運用3bit可以選擇6(000-101)路數(shù)據(jù),進入轉換器ADC128中進行轉換。在使能端(en)有效時,ADC開始轉換數(shù)據(jù)。在數(shù)字輸入引腳DIN中按照一個時間周期來采集輸入的數(shù)字信號,兩個是一個地址。在數(shù)據(jù)輸入所表示的12bit數(shù)據(jù)地址中的第3,4,5位表示數(shù)據(jù)輸入的地址,取出其地址中的數(shù)據(jù)并保存在數(shù)據(jù)緩存器里,可以發(fā)現(xiàn)本次注入,下次轉換才有效,所以從時序關系看是參數(shù)注入晚于數(shù)據(jù)輸出。
圖3 數(shù)據(jù)采集過程
圖4 數(shù)據(jù)采集過程放大圖
1.3程序流程圖
圖5所示表示的是進行程序設計的流程圖。敘述了程序進行到哪一步所要執(zhí)行的主要職責和作用。
ISE的主要功能包括設計和規(guī)劃,設計輸入、綜合建設網(wǎng)表、功能仿真、實現(xiàn)和下載到硬件電路中,涵蓋了FPGA開發(fā)的全過程,從功能上講,其工作流程無需借助任何第三方EDA軟件[7]。
設計和規(guī)劃:設計FPGA所要實現(xiàn)的功能然后規(guī)劃模塊及模塊接口[8]。
圖5 程序流程圖
設計輸入:用Verilog HDL硬件語言來描述硬件電路所要實現(xiàn)的功能,并把它加載到模擬仿真軟件中。
綜合建設網(wǎng)表:把Xilinx本身自帶的綜合工具和其他公司的綜合工具進行無縫鏈接。
功能仿真:把模塊好的硬件語言加載到ISE中,實現(xiàn)仿真,驗證是否可以實現(xiàn)功能仿真。
實現(xiàn):把實現(xiàn)好的程序加載到硬件電路中,查看其在ADC128工程運行的硬件環(huán)境。
本文根據(jù)彩色圖像采集系統(tǒng)的發(fā)展趨勢,結合實際工程項目,研究并設計了一套基于FPGA的ADC時序設計圖像實時采集系統(tǒng),系統(tǒng)性能優(yōu)良,開發(fā)難度較小。因此,具有廣闊的應用空間。
[1]王志剛.基于FPGA的高速數(shù)字化接收機與處理技術[D].南京:南京信息工程大學,2009:1-2.
[2]許孟杰,劉文臣,劉云.基于FPGA的AD采樣設計[J].艦船電子工程,2015,35(1):34-36.
[3]賀秋實,郝國法,錢龍.基于FPGA的高速AD轉換[J].電子設計工程,2012,20(8):122-124.
[4]王曉.寬帶數(shù)字監(jiān)測接收機算法研究及硬件實現(xiàn)[D].成都:電子科技大學,2011.
[5]李華.基于FPGA的圖像發(fā)生器的設計[J].商洛學院學報,2015,29(4):15-19.
[6]李戈,夏威,李雷.基于FPGA的ADC的自檢系統(tǒng)[J].儀表技術與傳感器,2015(2):51-53.
[7]侯伯亨,顧新.VHDL硬件描述語言與數(shù)字邏輯電路設計[M],1999:3-7.
[8]肖文娟.基于FPGA的多高分辨率彩色實時成像系統(tǒng)設計[[J].半導體光電,2015,36(2):293-298.
Design of ADC Timing Based on FPGA
LIU Ya-ya
(College of Mathematics and Computer Application,Shangluo University,Shangluo 726000)
Along with the rapid development in the field of machine vision,the requirements of real-time image processing has become more and more urgent,and unable to meet the needs of real time image processing software,and based on the realization of the special integrated chip development cycle is too long,difficult to develop.Proposes a ADC timing design based on FPGA,the design takes the field programmable gate array(FPGA)as the core,uses ISE10.1 and ModelSim simulation software environment,in Xilinx XC4VSX55 on the hardware platform.Eventually sets up a platform for the image acquisition and processing system,realizes the real-time and processing of the image.
FPGA;ADC;Image Acquisition;Simulation
1007-1423(2016)27-0046-05DOI:10.3969/j.issn.1007-1423.2016.27.012
劉亞亞(1981-),女,陜西商州人,碩士,講師,研究方向為計算智能和模式識別
2016-07-05
2016-09-15
陜西省教育廳自然科學研究計劃項目(No.2013JK0597)、陜西教育科學“十二五”規(guī)劃2014年課題(No.SGH140749)