嚴(yán)帥
摘要: 設(shè)計(jì)了一種基于Altera的FPGA芯片EP4CE10F17C8以及基于CortexM3構(gòu)架的ARM處理器STM32F103VE,該系統(tǒng)通過(guò)FPGA對(duì)線陣CCD進(jìn)行時(shí)序的驅(qū)動(dòng),并完成像素信號(hào)的采集、硬件處理以及傳輸工作。ARM作為FPGA的外掛處理器,實(shí)現(xiàn)數(shù)據(jù)信息的軟件處理以及對(duì)整個(gè)系統(tǒng)的控制。介紹了該系統(tǒng)的基本原理,并給出了詳細(xì)的基于FPGA和ARM的軟硬件聯(lián)合設(shè)計(jì)方案。
關(guān)鍵詞: CCD; FPGA; ARM; 軟硬件聯(lián)合設(shè)計(jì)
中圖分類號(hào): TP 39文獻(xiàn)標(biāo)志碼: Adoi: 10.3969/j.issn.10055630.2015.03.013
Abstract: The CCD driving system is based on a combinational system with Altera FPGA chip EP4CE10F17C8 and ARM processor STM32F103VE which is powered by CortexM3. The system uses FPGA to control CCD by timing drive circuit as well as information acquisition, data processing and data transmission. ARM is used as an external processor for FPGA. It accomplishes data processing based on software and controlling the entire system. The paper introduces the basic principle of the system, gives the results of the design of software and hardware based on FPGA and ARM.
Keywords: CCD; FPGA; ARM; CoDesign
引言CCD(Charge Coupled Device)是一種可以實(shí)現(xiàn)光電轉(zhuǎn)換的圖像傳感器,其將圖像信號(hào)直接轉(zhuǎn)換成電荷信號(hào),后端一般通過(guò)調(diào)理電路連接至AD轉(zhuǎn)換器件,從而獲得各像素點(diǎn)對(duì)應(yīng)的數(shù)字信號(hào)量為嵌入式設(shè)備所用[1]。CCD圖像傳感器具有精度高、靈敏度高、自掃描和寬光譜響應(yīng)范圍等諸多優(yōu)點(diǎn),廣泛應(yīng)用在圖像掃描、條碼掃描、非接觸式位移測(cè)量、非接觸式尺寸檢測(cè)等工業(yè)測(cè)量與成像領(lǐng)域[2]。傳統(tǒng)的CCD驅(qū)動(dòng)系統(tǒng)普遍采用單一的MCU或DSP作為整個(gè)系統(tǒng)驅(qū)動(dòng)控制的核心,以MCU為例,其信號(hào)采集速度較慢,遇到高速信號(hào)任務(wù)時(shí)需要外接FIFO起到數(shù)據(jù)緩存的作用,處理器功能比較簡(jiǎn)單,已經(jīng)無(wú)法滿足應(yīng)用于現(xiàn)在檢測(cè)系統(tǒng)的需求。采用FPGA+ARM作為該類系統(tǒng)的基本構(gòu)架,可以利用FPGA的靈活性簡(jiǎn)化驅(qū)動(dòng)電路的設(shè)計(jì),并利用FPGA的并行性提高數(shù)據(jù)采集處理的速度,同時(shí)外掛的ARM芯片作為整個(gè)系統(tǒng)的控制器,可以實(shí)現(xiàn)一些通用且功能豐富的嵌入式系統(tǒng)應(yīng)用[3]。1系統(tǒng)組成基于FPGA和ARM的線陣CCD圖像采集系統(tǒng)在硬件上主要包括線陣CCD、CCD輸出信號(hào)調(diào)理電路、FPGA芯片、ARM芯片、顯示以及數(shù)據(jù)傳輸接口,其基本的原理框圖如圖1所示。
從圖1可以看出由于系統(tǒng)采用FPGA+ARM的系統(tǒng)構(gòu)架,整個(gè)采集系統(tǒng)可以分為前端和后端兩個(gè)部分。系統(tǒng)的前端即FPGA之上的系統(tǒng)主要完成外部芯片驅(qū)動(dòng)以及數(shù)據(jù)流的采集和緩存功能,F(xiàn)PGA提供CCD、AD芯片正常工作所需的驅(qū)動(dòng)時(shí)序。線陣CCD在FPGA的驅(qū)動(dòng)脈沖控制下進(jìn)行自掃描,每個(gè)像素點(diǎn)將進(jìn)行光電轉(zhuǎn)換將光信號(hào)轉(zhuǎn)換為電信號(hào),并通過(guò)移位寄存器輸出,線陣CCD的輸出信號(hào)包含暗電流信號(hào)、直流分量信號(hào)以及各類噪聲信號(hào),為了取得良好的信噪比需要在CCD輸出的后端接一級(jí)信號(hào)調(diào)理放大電路并配合AD芯片,AD芯片在FPGA產(chǎn)生的采樣時(shí)鐘的控制下將CCD的模擬信號(hào)轉(zhuǎn)成相應(yīng)的數(shù)字信號(hào),并通過(guò)FPGA進(jìn)行采集[4]。ARM與FPGA數(shù)據(jù)的交互主要通過(guò)ARM總線接口控制器完成,ARM通過(guò)對(duì)對(duì)應(yīng)地址的讀寫操作完成采集系統(tǒng)的配置以及數(shù)據(jù)的采集工作。ARM微處理器采用意法半導(dǎo)體的STM32f103系列芯片,其內(nèi)核基于CortexM3,具有72 MHz的主頻,存儲(chǔ)容量包括512 kbit的Flash以及64 kbit的RAM,外設(shè)方面包括UART、SPI、USB等常用通信接口,可以方便的實(shí)現(xiàn)外部各類通信方式,同時(shí)該系列芯片具有靜態(tài)存儲(chǔ)器控制器(FSMC)可外接片外存儲(chǔ)器芯片,在本系統(tǒng)中,通過(guò)將FPGA連接至該控制器,實(shí)現(xiàn)ARM與FPGA的數(shù)據(jù)交互。
1.1線陣CCD及其驅(qū)動(dòng)設(shè)計(jì)選用的CCD是TCD1304AP,該線陣CCD為日本TOSHIBA公司生產(chǎn)的一款高速、低暗電流線陣CCD,其內(nèi)部總共具有3 694個(gè)像素,并具有電子快門功能以及采樣保持電路。其中前32個(gè)像素以及后14像素為無(wú)效像素點(diǎn)用作暗電流的檢測(cè),實(shí)際有效像素點(diǎn)為3 648個(gè)。TCD1304AP的工作頻率為2 MHz,像素速率為0.5 MHz,接口方面處理提供工作時(shí)鐘以外,配合時(shí)序要求還需要提供ICG信號(hào)以及SH信號(hào),其中ICG信號(hào)為幀起始信號(hào),其上升沿的跳變控制一幀信號(hào)的開始。SH信號(hào)為電子快門功能信號(hào),TCD1304具有獨(dú)特的電子快門功能,可由外部驅(qū)動(dòng)時(shí)序決定是否開啟該功能,因此該線陣CCD具有兩種工作模式:普通模式、電子快門模式。兩種工作模式的主要區(qū)別在于SH信號(hào)。模式一中,每個(gè)CCD采集周期中間只有兩個(gè)SH脈沖信號(hào),其對(duì)應(yīng)的有效光積分時(shí)間為第一個(gè)SH脈沖的下降沿到后一個(gè)SH脈沖的下降沿之間的時(shí)間。而模式二中,有效光積分時(shí)間為SH脈沖信號(hào)的周期。實(shí)際上,有效光積分時(shí)間其實(shí)就是采樣結(jié)束后(ICG下降沿標(biāo)志一幀采樣結(jié)束)第一個(gè)SH脈沖的下降沿到其前一個(gè)SH脈沖的下降沿之間的時(shí)間。在模式二中,每個(gè)SH信號(hào)下降沿之間實(shí)際都在進(jìn)行光信號(hào)的采集工作,只是其他這些光電轉(zhuǎn)換后的信號(hào)并沒(méi)有被轉(zhuǎn)移到移位寄存器中得到輸出。CCD器件通過(guò)ICG的信號(hào)來(lái)判斷采集到的光信號(hào)是否有效。當(dāng)ICG信號(hào)變?yōu)榈碗娖綍r(shí),CCD內(nèi)部圖2CCD控制模塊接口的積分清除門將處于開啟狀態(tài),如果在此期間有SH脈沖信號(hào),光敏區(qū)域采集到的光電信號(hào)將被轉(zhuǎn)移到移位寄存器,并在ICG重新恢復(fù)到高電平之后移位輸出。CCD只有在滿足符合要求的驅(qū)動(dòng)時(shí)序下,才能得到良好的工作效果以及可靠的信號(hào)輸出。因此,針對(duì)CCD的驅(qū)動(dòng)模塊的設(shè)計(jì)是整個(gè)系統(tǒng)是否能獲得有效圖像數(shù)據(jù)的前提。在FPGA上針對(duì)CCD的驅(qū)動(dòng)要求,要設(shè)計(jì)一個(gè)負(fù)責(zé)用于CCD驅(qū)動(dòng)的模塊,其需要有輸出到CCD的驅(qū)動(dòng)信號(hào),以及系統(tǒng)時(shí)鐘的輸入、參數(shù)控制信號(hào)的輸入(調(diào)節(jié)電子快門)。該模塊的接口定義和驅(qū)動(dòng)時(shí)序仿真圖分別如圖2以及圖3所示。
1.2ARM總線接口設(shè)計(jì)ARM總線接口用于FPGA與ARM之間進(jìn)行數(shù)據(jù)的橋接,通過(guò)該接口將數(shù)據(jù)傳輸給ARM控制器做進(jìn)一步處理同時(shí)接收ARM發(fā)來(lái)的對(duì)應(yīng)指令并處理。其作為連接這個(gè)系統(tǒng)的前端與后端,是本系統(tǒng)在設(shè)計(jì)上的一個(gè)難點(diǎn)。該接口采用3位地址總線,數(shù)據(jù)總線采用16位數(shù)據(jù)線連接,即每次讀寫操作都可直接操作16位的數(shù)據(jù)。同時(shí),總線還包括片選信號(hào)CS、讀信號(hào)RD、寫信號(hào)WR[5]。在STM32端通過(guò)其片上提供的靜態(tài)存儲(chǔ)器控制器(FSMC)與FPGA相連。
本系統(tǒng)采用用于NOR閃存的控制器時(shí)序,工作模式為異步、總線工作方式為非復(fù)用,所有的控制器輸出信號(hào)由STM32內(nèi)部時(shí)鐘HCLK控制并在其上升沿變化[6]。具體采用FSMC提供的模式A作為實(shí)際工作方式。FPGA端只需對(duì)對(duì)應(yīng)的時(shí)序操作進(jìn)行解析即可完成數(shù)據(jù)的讀寫操作。該模塊對(duì)應(yīng)的外部接口框圖如圖4所示。圖4中,DB[0]用于連接前端CCD數(shù)字信號(hào)的輸出,通過(guò)Read Clock控制將數(shù)據(jù)逐一送到Data Bus總線上,前端的數(shù)據(jù)輸出模塊實(shí)際是一個(gè)經(jīng)過(guò)封裝的雙RAM讀寫控制器,其使用的數(shù)據(jù)存儲(chǔ)器可以是外部SRAM或者是片上通過(guò)IP核例化生成的雙口異步RAM模塊。該模塊開辟兩個(gè)RAM緩存區(qū),分別用于緩存一幀的像素?cái)?shù)據(jù),并通過(guò)乒乓操作的方式采集以及送出CCD沒(méi)幀的像素?cái)?shù)據(jù)。本設(shè)計(jì)中采用兩個(gè)大小為4 096、寬度為12 Bits的雙口異步RAM,寫時(shí)鐘通過(guò)前端采集控制,讀時(shí)鐘通過(guò)ARM的FSMC控制由FSMC模塊解析后生成對(duì)應(yīng)的讀時(shí)鐘信號(hào)。2系統(tǒng)的總體設(shè)計(jì)對(duì)各個(gè)分模塊進(jìn)行設(shè)計(jì)之后需要對(duì)整個(gè)采集系統(tǒng)進(jìn)行整合,每個(gè)模塊的功能是否健全,輸入輸出是否合理,以及工作時(shí)鐘設(shè)置等參數(shù)是否設(shè)置正確對(duì)整個(gè)系統(tǒng)是否能正確運(yùn)行至關(guān)重要。系統(tǒng)的結(jié)構(gòu)框圖已經(jīng)在圖1中給出,這里要注意的幾點(diǎn)包括,各模塊的運(yùn)行時(shí)鐘需采用PLL提供的全局時(shí)鐘網(wǎng)絡(luò)、有效數(shù)據(jù)的讀取和緩存信號(hào)需要考慮到外部器件信號(hào)的延遲、存儲(chǔ)器控制器的讀寫等。經(jīng)過(guò)將各模塊進(jìn)行整合并通過(guò)Quartus綜合,最后通過(guò)SingalTapII檢驗(yàn)實(shí)際工作情況。3結(jié)束語(yǔ)本文著重介紹了如何從系統(tǒng)的角度設(shè)計(jì)一個(gè)基于FPGA和ARM的線陣CCD圖像采集系統(tǒng),并詳細(xì)介紹了CCD驅(qū)動(dòng)的模塊設(shè)計(jì)以及ARM總線接口的模塊設(shè)計(jì),提供了一種在FPGA上構(gòu)建采集系統(tǒng)的方法,解決了以往采集系統(tǒng)在硬件上過(guò)于龐大和復(fù)雜的問(wèn)題,從而達(dá)到小型化和智能化儀器趨勢(shì)的要求。系統(tǒng)的模塊的劃分具有良好的可替換性,只需稍加修改便能應(yīng)用到不同類型的外部器件中。外掛的ARM處理器可以彌補(bǔ)所用低端FPGA在硬核處理器上的缺陷,同時(shí)滿足通用功能方面的需求,隨著嵌入式微處理器的發(fā)展以及對(duì)基于嵌入式系統(tǒng)研究的深入,將使得CCD圖像采集系統(tǒng)不論從功能上還是性能上具有更廣闊的發(fā)展空間和使用價(jià)值。參考文獻(xiàn):
[1]劉立波.基于DSP的激光三角測(cè)距傳感器研究[D].上海:上海交通大學(xué),2008.
[2]李興廣.基于FPGA的高速非接觸式位移測(cè)量系統(tǒng)[J].制造業(yè)自動(dòng)化,2011,12(23):2224.
[3]劉爽,趙凱生,龍?jiān)俅ǎ?基于ARM和FPGA的嵌入式CCD采集系統(tǒng)[J].電子·激光,2007,18(11):12961298.
[4]劉艷,趙洪,于效宇,等.一種可調(diào)線陣CCD信號(hào)采集處理系統(tǒng)[J].光學(xué)技術(shù)應(yīng)用,2009,32(2):294299.
[5]潘松.EDA技術(shù)與Verilog HDL[M].北京:清華大學(xué)出版社,2013.
[6]EDA先鋒工作室.Altera FPGA/CPLD設(shè)計(jì)(高級(jí)篇)[M].北京:人民郵電出版社,2011.
(編輯:程愛(ài)婕)