美章網 資料文庫 ARM和FPGA的紅外系統數據交換范文

ARM和FPGA的紅外系統數據交換范文

本站小編為你精心準備了ARM和FPGA的紅外系統數據交換參考范文,愿這些范文能點燃您思維的火花,激發您的寫作靈感。歡迎深入閱讀并收藏。

ARM和FPGA的紅外系統數據交換

《電視技術雜志》2014年第十一期

1數據接口硬件設計

對于高速圖像采集系統,兩個模塊的數據交互接口非常重要,極有可能成為高速圖像傳輸性能的瓶頸。根據系統對處理數據的分析,考慮到系統向上和向下的兼容性,SRAM選型時均考慮處理數據的最大值情況,前端非制冷焦平面微熱輻射計型探測器選用系統兼容最大可能的384×288像素,處理后的圖像數據16位寬度,得到未經過壓縮的單幀圖像數據量為2.16Mbyte??紤]到圖像處理運算過程中需要大約10幀的圖像緩存空間。鑒于以上對系統中傳輸數據的分析,本系統選用ISSI公司的IS61LV51216,高性能CMOS制造工藝,存儲容量為512×16kbit,內部8Mbyte容量,存取時間最低可達8ns,全靜態操作不需要時鐘或刷新,輸入輸出兼容TTL標準,高字節數據和低字節數據可分別控制,最高運行頻率為133MHz,常見的封裝為44腳TSOP,兼容LVTTL接口。具有簡單的讀寫和片選控制引腳,在與FPGA和arm連接時,只需將SRAM的控制端、數據端及地址端直接與fpga和ARM分配的相應端口連接,并在FPGA和ARM中設計SRAM接口控制模塊,便可實現SRAM的讀寫操作[4]。ARM與FPGA接口電路設計框圖如圖2所示。FPGA模塊首先將前端處理后的高速數據分為4路低速數據寫到構建的4個FIFO中,采用乒乓操作的方式將經過算法處理的32bit數據存到4個FIFO中[5]。經過對SRAM的時鐘控制,將4個FIFO的數據分別存儲到4個地址區域,將8Mbyte的SRAM分為4個地址空間,由于SRAM的寫時鐘信號和FIFO的時鐘信號為同頻,所以FIFO時鐘與輸出之間必然會產生時間延時,本文采用FIFO的時鐘相位做相應的偏移,然后作為SRAM的寫時鐘信號方法,有效地避免了競爭冒險。存入的數據采用小端存儲方式,數據存儲的控制模塊采用中斷控制方式對數據流進行相應控制,當FIFO中的數據達到系統設計的一幀閾值時,控制模塊將FIFO中的數據存儲到SRAM中,當SRAM中的數據達到一幀數據時,控制模塊向ARM端口發出中斷信號,ARM通過片選總線獲取數據。

2驅動程序設計

系統以ARM模塊為核心對各個模塊進行控制,其操作系統選用具有開源、免費、安全、穩定、高性能等優點的Linux系統,應開發商要求本系統選用Linux-2.6.30穩定版本。在整個系統中,驅動程序主要工作為:消息隊列函數等待響應中斷信號,軟件觸發DMA中斷,數據進行內部映射,DMA方式獲取紅外圖像信號。驅動程序主要處理過程為:1)初始化前端SRAM模塊,注冊設備號,申請外部中斷和DMA中斷,申請兩個阻塞等待隊列;2)判斷FPGA模塊發出的中斷信號,喚醒等待隊列1,并進行中斷響應;3)通過片選nGCS1,將地址線、數據線獲取片外SRAM數據;4)喚醒等待隊列2,響應DMA中斷,通過DMA方式對數據進行內存映射;5)將SRAM的存儲空間映射到用戶進程空間。驅動設計的主要流程如圖3所示,驅動程序主要分為下面幾個部分進行介紹。

2.1模塊初始化每個字符設備驅動中都需要一個file_operations結構,便于內核與驅動程序的操作對應,file_operations結構是定義在<Linux/fs.h>中的函數指針數組,結構體中的每一個域對應著驅動內核模塊用來處理某個被請求事件的函數首地址,在驅動編寫時均用dma作為函數名。在該結構體中,每個函數的參數都有1個指向特定file結構的指針,第2個參數在驅動程序中都有對應的硬件操作程序,每個參數都有特定的功能。對驅動程序的初始化是在dma_init()函數中完成的,其中包括設備號的申請、外部中斷的初始化、對外部地址映射空間的初始化等。

2.2驅動設備號申請函數本文設計的驅動函數采用動態分配設備號,調用函數alloc_chrdev_region(dev_t*dev,unsignedint-firstmi-nor,unsignedint-count,char*name),其中dev為手動給定的設備號,count為所請求的連續設備號的個數,而name為與該設備號范圍關聯的設備名稱,它將出現在/proc/devices和sysfs中。采用動態申請可以避免手動指定設備號帶來的缺點。

2.3中斷申請初始化由于Linux內核要與外部硬件設備進行通信管理,但處理器的處理速度與外圍設備速度不處于一個等級,不能采用浪費處理器資源的輪詢方式進行處理,因此驅動程序中通過注冊中斷號并且激活一個中斷處理函數來對數據進行處理。中斷注冊函數如下所示:其中第1個參數irq表示分配的中斷號,第2個參數handler是指向中斷處理函數的指針,中斷一旦來臨轉到處理中斷處理函數,第3個參數flags指定了快速中斷或中斷共享等中斷處理屬性,第4個是設備驅動程序的稱,第5個是中斷名稱。與之對應的中斷注銷函數為free_irq(unsignedintirq,void*dev_id),一般在退出和出現特殊情況時調用。本系統選用的是外部中斷4(IRQ_EINT4)與DMA中斷,選用軟件觸發的DMA3通道(IRQ_DMA3)。具體程序代碼如下:

2.4等待隊列等待隊列屬于阻塞式的訪問模式,阻塞方式是驅動在對設備進行操作時,如果始終沒有獲取中斷信號,進程將會被掛起直到中斷信號來臨滿足條件后再進行操作;非阻塞式是不對設備進行操作時,不斷地查詢或者放棄控制設備,這樣將大大降低系統性能。本驅動選用阻塞式等待隊列,當應用程序對設備進行讀操作時,會調用一個程序,將系統的控制權交給內核并進入等待狀態,當系統執行程序完畢后向應用程序返回響應,得到響應后系統將退出阻塞狀態繼續后面的工作。

2.5存儲器控制初始化S3C2440A存儲器控制器為訪問外部存儲器提供控制信號,控制器包括以下特性:支持軟件大/小端控制,共1Gbyte的存儲空間分為8個Bank,每個Bank有128Mbyte的空間,其中Bank6~Bank7存儲器為ROM,SRAM,SDRAM提供控制,Bank0~Bank5為ROM,SRAM提供控制。具有7個固定的Bank地址,1個可變的存儲器Bank地址,所有的存儲器訪問周期都可以編程控制,并且支持SDRAM自刷新和掉電模式。S3C2440A內部存儲空間地址分配如圖4所示。系統選用的SRAM芯片為IS61LV51216,芯片總線寬度為16位。該外部存儲器SRAM映射到Bank1上,物理地址0x08000000上,需要對控制寄存器進行相應的設置,首先是總線寬度和等待控制寄存器BWSCON,該寄存器的物理地址為0x48000000,只需對Bank1的控制位進行相應設置。SRAM不使用UB/LB,禁止WAIT狀態,數據總線寬度根據芯片所知為16位,BWSCON中Bank1的控制信息詳見S3C2440A芯片手冊。由于采用的是Bank1,對Bank1的控制寄存(BANKCON1)進行相應設置。根據S3C2440A芯片手冊,該寄存器物理地址為0x48000008,對寄存器每一位進行相應設置,根據圖5對SRAM控制時序對寄存器進行相應配置。圖5中,Tacs為nGCSn前的地址建立時間選擇0個時鐘;Tcos為nOE前的片選建立時間選擇0個時鐘;Tacc為訪問周期選擇14個時鐘;Tcoh為nOE后的片選保持時間選擇0個時鐘;Tcah為片選信號nGCS1后的地址保持時間選擇0個時鐘;Tacp為Page模式下的訪問周期選擇0時鐘;PMC為Page模式配置選擇正常模式一個數據。這些參數都在BANKCON1寄存器中進行配置。具體代碼如下:

2.6DMA寄存器初始化S3C2440A支持處于系統總線和外設總線的4個DMA通道,DMA控制器的每個通道都可以無限制地執行系統總線和外設總線之間設備的數據移動,每個DMA通道都可以執行下面4種情況[7]:1)源地址和目標地址都在系統總線上;2)源地址在系統總線上,目標地址在外設總線上;3)源地址在外設總線上,目標地址在系統總線上;4)源地址和目標地址都在外設總線上。DMA可以在沒有CPU的干擾之下進行數據傳輸,大大提高處理器的效率,DMA的運行還可以由軟件進行控制,也可以由來自內部或者外部的引腳請求進行。本系統選用DMA3通道,采用軟件觸發的方式進行,驅動程序需要對DMA中的相關寄存器進行配置。源地址寄存器是要傳輸的源數據基本地址,S3C2440A的DMA3通道源地址寄存器為DISRC3,物理地址為0x4B0000C0。系統中SRAM映射到片外Bank1上,即0x08000000。源地址控制寄存器DISRCC3,物理地址為0x4B0000C4,源地址在系統總線(AHB)上,每次進行單次和突發模式傳輸后數據大小選擇增加。目的地址寄存器DIDST3,物理地址為0x4B0000C8,分配目的地址時要注意,由于采用DMA方式,內存中獲取的目的虛擬地址數據與cache中數據不一致將會出現內存錯誤,所以在進行地址申請時要禁止C(Cacheable)域,C域代表是否使用高速緩沖存儲器。也就是cache。所以在進行目的地址申請時采用dma_alloc_writecom-bine()。目的地址控制寄存器DIDSTC3,物理地址為0x4B0000CC,因為SRAM也外設在系統總線上,所以與源地址控制寄存器配置相同。DMA控制寄存器DCON3,物理地址為0x4B0000D0,該寄存器有32位,配置非常重要,針對外接SRAM的特性,軟件觸發的方式。最后對DMA觸發屏蔽寄存器(DMASKTRIG3)進行配置,主要設置為軟件觸發方式。如要詳細了解配置原因詳見芯片手冊。

3應用程序設計

系統對實時性要求較高,以突出高性能為主,因此應用程序規模較小,在設計時采用面向過程的開發方式。本系統的主要開發流程如圖6所示。本系統的主要應用程序較簡單,主要是將圖像數據上傳到PC機,本系統選用UDP的方式進行數據傳輸。上傳數據包括兩個部分,一個是圖像數據,另一個是傳感器信息。由于傳輸數據中包括了實時媒體流數據,因此該網絡傳輸協議采用了RTP/RTCP實時傳輸協議和實時傳輸控制協議。傳輸數據包括標簽數據和視頻壓縮數據,進行分時傳輸,但由于標簽數據重要性高,因此具有更高的優先級,即保證一個傳輸周期內標簽數據可靠傳輸完成后,再進行視頻數據流的傳輸。RTP/RTCP下層使用的網絡層協議為UDP,因為RTP/RTC協議已經完成了差錯控制和擁塞控制等傳輸控制,不需要使用復雜的TCP協議來實現,而是選擇簡單的UDP協議[7]。數據按照RTP格式封裝完成后,使用UDP協議通信,UDP不要求保持一個連接,沒有因接收方認可收到數據包而帶來的開銷,需要的網絡帶寬比TCP更小。UDP通信的程序設計流程圖如圖7所示。

4實驗結果分析

對采集的原始圖像,在FPGA做相應的盲元補償、濾波、非均勻校正等算法處理。通過實驗室中黑體映射進行溫度標定,建立溫度與灰度的映射表,ARM系統中采用DMA方式對圖像進行傳輸存取,每幀圖像分辨率為384×288,每點的圖像數據位16bit,在進行圖像顯示時只需選取高8位輪廓進行顯示就能達到要求,經測試傳輸速度為15f/s(幀/秒),網口模塊需要在系統中達到20Mbit/s的帶寬,經過測試本系統網口模塊能達到傳輸要求。最后PC機對上傳的灰度數據經過編碼顯示。系統實物圖和PC機接收到烙鐵紅外圖像如圖8所示。測試表明本文設計的各組模塊均能達到紅外監控系統的要求。

5總結

本文設計出基于ARM和FPGA紅外系統數據交換驅動程序,詳細介紹驅動設計的流程,在傳統數據的內存映射傳輸方式上,提出軟件觸發DMA方式實現對圖像數據的搬移,極大提高了系統傳輸效率。

作者:王小平吳偉單位:重慶城市管理職業學院重慶郵電大學信號與信息處理重慶市重點實驗室

主站蜘蛛池模板: 大肉大捧一进一出小视频| 欧美三级不卡在线观看| 国产99视频在线| 日本xxxxx在线观看| 在厨房里挺进美妇雪臀| 三年片在线观看免费观看大全中国 | 亚洲美女又黄又爽在线观看| 色一情一乱一伦一视频免费看 | 嗯~啊太紧了妖精h| 黄色香蕉视频网站| 国产裸模视频免费区无码| ssni-436| 成人免费视频一区| 久久久久人妻一区精品性色av| 果冻传媒91制片厂211| 亚洲欧美成人一区二区在线电影| 男女性杂交内射女BBWXZ| 啊灬啊灬别停啊灬用力啊在线观看| 青草国产精品久久久久久| 国产成年无码久久久免费| 18女人腿打开无遮挡网站| 在线播放亚洲精品| www成人国产在线观看网站| 成年男女男精品免费视频网站| 久久精品亚洲精品国产色婷| 欧美xxxx做受欧美| 亚洲欧美国产精品久久久| 狠狠久久永久免费观看| 再深点灬舒服灬太大了添学长 | 美女把尿口扒开让男人桶| 国产亚洲美女精品久久久2020 | 久久天天躁狠狠躁夜夜avapp| 果冻传媒mv在线| 亚洲国产91在线| 欧美日韩亚洲第一页| 亚洲第一黄色网址| 激情综合色五月六月婷婷| 你懂的在线视频网站| 第一章岳婿之战厨房沈浩| 冬日恋歌国语版20集中文版| 网站大全黄免费|