黃海波,王衛(wèi)華,江學煥
(湖北汽車工業(yè)學院電氣與信息工程學院,湖北十堰442002)
通常駕駛員都利用后視鏡作為輔助工具來觀看車后景象,不僅看不到車后擋風玻璃以下物體,而且由于其他干擾的影響造成車后盲區(qū),在倒車時發(fā)生事故。另一方面,在交通事故發(fā)生后,通常辦案人員只能靠觀看事故現(xiàn)場,根據(jù)當事人及周圍目擊者提供的口供對事故發(fā)生的當時情景進行分析判斷。但是當某些證據(jù)不完全,以及其準確性受到質(zhì)疑的時候,就會影響到公安機關的辦案,甚至可能會導致誤判。基于上述原因,本系統(tǒng)實現(xiàn)了輔助駕駛視頻監(jiān)控系統(tǒng),主要包括前視視頻抓拍存儲子系統(tǒng)和后視倒車測距子系統(tǒng),整個系統(tǒng)利用EP2C35F672C6 FPGA芯片采用Altera公司的Nios II解決方案[1]。
如圖1所示,本系統(tǒng)分為汽車前視和汽車后視2個部分,用2路攝像頭分別進行數(shù)據(jù)采集。Nios II作為系統(tǒng)的中央處理器,負責系統(tǒng)的控制和數(shù)據(jù)處理,以及存儲器的讀寫、鍵盤的掃描和LCD的顯示等。前視部分中,前視監(jiān)控攝像頭將攝取到的模擬視頻信號,送往A/D轉(zhuǎn)換電路,轉(zhuǎn)換后的數(shù)字視頻信號經(jīng)處理器壓縮后,存儲在SD卡中。在需要的時候,Nios II從SD卡中讀取視頻信號,經(jīng)過解壓縮,送往VGA顯示器顯示。后視監(jiān)控中,處理器發(fā)出的超聲波脈沖,經(jīng)過功率放大電路,驅(qū)動超聲探頭放出超聲波,超聲波遇到障礙物后返回,超聲探頭接收后轉(zhuǎn)換為電脈沖,經(jīng)過帶通濾波放大電路,送往Nios II處理,計算出所測距離。同時,后視模擬攝像頭將攝取到的模擬視頻信號,一路送往字庫掃描電路,提取行頻和場頻信號,一路送往字模疊加電路,和Nios II處理器控制的距離字符和漢字字模疊加在一起,構成既有后視景像、又有測距及其提示的視頻信號,輸出送往TFT液晶顯示器顯示。下面就對前視監(jiān)控和后視監(jiān)控的主要功能部分進行設計分析。
圖1 系統(tǒng)方案框圖
如圖2所示,攝像頭采集到的視頻信號為模擬量,首要的任務是將模擬量來轉(zhuǎn)換成數(shù)字量,利用I2C總線來配置ADV7181,使其實現(xiàn)對PAL制式的視頻信號的轉(zhuǎn)換。從ADV7181中出來的數(shù)據(jù)為YCbCr格式的,符合ITU-BT.656電視TV標準[2]。但是TV與VGA的場頻相差很大,要解決兩個場頻相差很大的系統(tǒng)實現(xiàn)協(xié)調(diào)工作,即由隔行信息變成逐行信息,這里就需要將行頻變?yōu)樵瓉淼膬杀丁?梢园裈V的場頻與變換成的VGA的場頻送到外部的示波器上來觀察頻率的關系。在這里倍頻不采用PLL來實現(xiàn),而是用Verilog語言來描述一個倍頻的過程,采用了將場頻的起始和中間生成兩個脈沖來實現(xiàn)。其次完成將TV信號轉(zhuǎn)換成VGA顯示器所需的RGB基色[3],這里采用的是色度空間的轉(zhuǎn)換來實現(xiàn)。色度空間的轉(zhuǎn)換首先是先轉(zhuǎn)換一幅圖像,轉(zhuǎn)換完成的RGB為數(shù)字量,需要經(jīng)過數(shù)模轉(zhuǎn)換才能送到VGA上顯示,這3個分量經(jīng)過芯片ADV7123來完成數(shù)模轉(zhuǎn)換。
圖2 前視監(jiān)控結(jié)構框圖
前視監(jiān)控系統(tǒng)要求對模擬攝像頭采集的視頻圖像進行實時傳輸和存儲,由于圖像信息量大,必須進行壓縮處理。而目前的圖像壓縮算法都比較復雜且耗時很多,因而僅靠軟件壓縮難以滿足前視監(jiān)控的要求,通常的做法都是將硬件壓縮和軟件壓縮結(jié)合起來實現(xiàn)圖像的實施傳輸和存儲。
模擬圖像經(jīng)過數(shù)字化后符合ITU-BT.656標準,系統(tǒng)實現(xiàn)了從隔行數(shù)據(jù)到逐行數(shù)據(jù)的轉(zhuǎn)換,圖像的分辨力為640×480。每一幅灰度圖片大小都高達300 kbyte,向SD卡里寫入的數(shù)據(jù)量太大,并且軟件處理的速度與硬件的處理的速度相差甚遠,達不到存儲的要求。因為監(jiān)控圖像信息的細節(jié)要求不是很高,因此,采取簡單壓縮的處理方法就可以實現(xiàn)。即對圖像信息進行隔行與隔點的抽取,使數(shù)據(jù)量降低到原來的1/4,每幅圖片達到了75 kbyte。為了解決軟件與硬件的處理速度問題,采用了片上RAM作為緩存。圖像的壓縮提高了圖像的存儲速度和效率,并且也滿足了向SD卡里寫入數(shù)據(jù)時軟件處理速度不足的問題。
本系統(tǒng)采用SD卡實現(xiàn)圖像的實時存儲。SD卡定義了兩種可選擇的通信模式——SD模式和SPI模式,應用中可選擇其中之一。對于主機來說,方式選擇是透明的,SD卡在復位時接收命令以確定工作在哪種通信模式。在應用時,可以使用現(xiàn)有的主機,兼容性好,相對于SD模式其傳輸性能有所降低。
FPGA(主機)與SD卡的SPI通信模式需要4個信號:CS為FPGA到SD卡的選通信號,CLK為FPGA到SD卡的時鐘信號,Datain為FPGA到SD卡的數(shù)據(jù)信號,Dataout為SD卡到FPGA的數(shù)據(jù)信號。SPI模式面向字節(jié)傳輸,傳輸中的命令或者數(shù)據(jù)都以8 bit為單位,且和CS信號保持同步。SPI模式支持單數(shù)據(jù)塊和多數(shù)據(jù)塊的讀寫操作,且僅使用兩個單向信號Datain和Dataout。如圖3所示,當SD卡接收到一個有效的讀命令后,首先進行應答響應,緊接著傳送數(shù)據(jù)塊,數(shù)據(jù)塊的長度在先前傳送的SET_BLOCKLEN命令中定義。每個數(shù)據(jù)塊后緊接著16 bit的CRC進行校驗,CRC由標準CCITT多項式x16+x12+x5+1產(chǎn)生。當接收到STOP_TRANSMISSION命令后,就停止多數(shù)據(jù)塊的讀操作。
圖3 SD卡讀時序圖
如圖4所示,當SD卡接收到一個有效的寫命令后,首先進行應答響應,然后等待FPGA傳送數(shù)據(jù)塊。其中CRC、數(shù)據(jù)塊長度和起始地址的定義和讀操作中完全一樣。當一個數(shù)據(jù)塊接收后,SD卡立即向FPGA返回一個響應信息。經(jīng)過CRC校驗數(shù)據(jù)無誤后,SD卡進行編程操作,在編程操作中,SD卡同時向FPGA返回連續(xù)的忙信息。SD卡讀寫的程序設計完全按照其讀寫時序進行。
圖4 SD卡寫時序圖
圖5 是后視視頻傳輸及測距系統(tǒng)設計框圖。Nios II處理器控制BA(00,01,10,11)通道選擇,發(fā)出一串超聲波脈沖。處理器關閉中斷,啟動定時器定時。超聲波經(jīng)過相應的通道(0X,1X,2X,3X),輸出的脈沖經(jīng)過功率放大,驅(qū)動收發(fā)換能器(超聲波傳感器),發(fā)出超聲波。為避免發(fā)出超聲信號本身返回引起的中斷,經(jīng)過適當?shù)难訒r后,Nios II處理器打開中斷。超聲波遇到障礙物返回后,經(jīng)由相應的通道(0Y,1Y,2Y,3Y),經(jīng)過中心頻率為40 kHz的帶通放大器后,與設置號的固定門限比較,消除噪聲(非返回脈沖),比較器輸出的低電平信號作為Nios II處理器的中斷信號,處理器接收到中斷信號后,關中斷,停止計數(shù)器計時,讀出計數(shù)器計數(shù)值,根據(jù)相應的公式換算出所測距離。如此周期性地循環(huán)下去。
圖5 后視監(jiān)控結(jié)構框圖
為了將所測距離和車后景物實時顯示給司機,還設計了聲音報警電路和視頻顯示電路。Nios II處理器根據(jù)所測距離長短不同,發(fā)出不同頻率的脈沖,驅(qū)動蜂鳴器發(fā)聲,距離越短,頻率越高,蜂鳴器發(fā)聲越急促。當距離小于設定的門限時,發(fā)出連續(xù)的長鳴聲,以提示司機倒車。視頻顯示電路部分的主要作用是將車后景況實時地顯示給司機,并將所測距離疊加在屏幕上,根據(jù)距離的不同,分別顯示“請停車”、“請注意”等提示。所需要顯示的字符和漢字的字模存儲在ROM芯片中,與字模對應的ROM地址存儲在RAM芯片中。車后攝像頭攝取的視頻信號,經(jīng)過信號提取電路,提取出行頻信號和場頻信號,行頻信號和場頻信號控制高速計數(shù)器的時鐘和清零信號,計數(shù)器的輸出作為多路選擇器的一個輸入,Nios II處理器的輸出作為多路選擇器的另一個輸入,多路選擇器的輸出作為RAM芯片的地址。這樣設計的好處是,Nios II處理器只需在更新顯示時,一次性將需要顯示的字模地址存儲在RAM芯片中,然后釋放對外部電路的控制,外部電路就工作在DMA方式,大大減輕了處理器的工作負擔。
后視系統(tǒng)里的字符疊加是由Nios II控制器來控制外部電路實現(xiàn)的,如圖6所示。首先控制CD74LS157多路選擇器選擇由地址0端口送入的信號,而此信號作為TMM2016 RAM芯片的高8 bit地址。同時控制另一路由地址1送來的信號作為RAM中存儲的數(shù)據(jù),存儲到相應的地址中去。再控制多路選擇器選擇視頻行同步和場同步信號,由它們來選擇相應的地址,將地址中已存儲的數(shù)據(jù)發(fā)出。這些數(shù)據(jù)又作為TMS2764 ROM芯片的地址,地址中所存儲的數(shù)據(jù)就是所需要疊加的字模數(shù)據(jù),通過尋址,將地址中所存儲的數(shù)據(jù)并串轉(zhuǎn)換后發(fā)送出去。發(fā)送出去的電平再經(jīng)過3次反相,來控制模擬開關,從而選擇是低電平輸出還是高電平輸出。由于視頻中顯示的字符是以低電平方式點亮的,所以當從并串轉(zhuǎn)換芯片中發(fā)送來的是低電平的時候,模擬開關閉合,輸出低電平,從而點亮相應的點。這樣,就實現(xiàn)了字符疊加到液晶顯示屏上的功能。
圖6 ROM字模數(shù)據(jù)的讀取電路
汽車處于倒車狀態(tài)時,控制器控制探頭發(fā)射40 kHz的超聲波信號,發(fā)射后再檢測超聲波的回波信號。超聲波的發(fā)射是由Nios II內(nèi)核控制器通過定時器定時由pio口來發(fā)射一串40 kHz的脈沖信號,經(jīng)放大電路放大后,由探頭發(fā)射出去。實驗證明,使控制器發(fā)射5個40 kHz的脈沖信號,既能檢測很近的距離,又能準確接收到信號。由于超聲波探頭在發(fā)射超聲波信號后還有一段時間的殘余超聲波,所以在Nios II控制器發(fā)射5個超聲波脈沖信號,并打開Nios II中的定時器開始計數(shù)后,需要延時一段時間再開啟Nios II中的外部pio中斷,其過程如圖7所示。
圖7 超聲波測距流程圖
如圖8所示,由SOPC構建Nios II處理器對整個系統(tǒng)進行組合,使用μC/OS-II實時操作系統(tǒng)調(diào)度切換任務。整個系統(tǒng)并沒有使用復雜的IP核,軟硬件之間的通信基本上都是靠pio口來實現(xiàn)。對SD卡的讀寫操作,是通過pio模擬SD卡的讀寫時序來完成的。對后視控制的操作,是通過3個定時器和1個pio中斷來完成的。一個定時器是用來發(fā)送40 kHz的超聲波的,另一個用來控制發(fā)波的間隔,最后一個用來對波發(fā)送和返回時間間隔的計數(shù)。pio中斷主要用來關定時器計數(shù)。同時在SOPC中構建了一些pio口,用來引入一些控制信號和疊加字符的地址信號。
圖8 SOPC系統(tǒng)構建(載圖)
利用Quartus開發(fā)系統(tǒng)自帶的Signal Tap II來觀察各個模塊中內(nèi)部節(jié)點[4],測試顯示信號的變化是正確的,說明了軟件的內(nèi)部流程是符合邏輯的。采集的視頻在VGA上顯示,觀察輸出結(jié)果與攝像頭采集到的圖像信息一致,說明視頻的采集是正確的。將其中的輸出設為一個固定值,寫入到SD卡里,圖像像素的色度值與設定值相同,證明軟硬件的通信是正確的。存儲圖像的分辨力為320×240,色深為8 bit,每幀圖像大小約為75 kbyte。對于后視監(jiān)控系統(tǒng),顯示器可以清晰地顯示車后120°范圍內(nèi)的景象,超聲波最小測距為0.30 m,最遠測距為2.99 m,測距精度為0.01 m,滿足實際應用的需要。
本文根據(jù)汽車行駛過程中輔助駕駛的工作需求,應用Nios II處理器,實現(xiàn)了基于SOPC的汽車前視與后視的監(jiān)控系統(tǒng)。系統(tǒng)利用2路攝像頭進行視頻采集。前視監(jiān)控是利用攝像頭采集汽車前方景象,經(jīng)過壓縮處理,把圖片存儲到SD卡;后視監(jiān)控是利用攝像頭采集汽車后方景象,并送往LCD液晶屏幕顯示。同時利用超聲波探頭測距,將汽車與障礙物的距離疊加到液晶屏幕上。利用MicroC/OS-II實時操作系統(tǒng)切換調(diào)度前視、后視監(jiān)控任務。整合測試表明,系統(tǒng)軟硬件工作正常,滿足實際工作需要,
具有很強的實用價值。
[1]郭書軍,王玉華,葛紉秋,等.嵌入式處理器原理及應用[M].北京:清華大學出版社,2004.
[2]宋占偉.電視原理[M].西安:西安電子科技大學出版社,2011.
[3]李江輝,王景存.基于FPGA的視頻采集與顯示系統(tǒng)設計[J].電視技術,2010,34(13):19-21.
[4]吳繼華,王城.Altera FPGA/CPLD設計[M].北京:人民郵電出版社,2005.