<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 基于A(yíng)RM+FPGA的1394總線(xiàn)在TFT-LCD檢測系統中的應用

基于A(yíng)RM+FPGA的1394總線(xiàn)在TFT-LCD檢測系統中的應用

作者: 時(shí)間:2013-10-31 來(lái)源:網(wǎng)絡(luò ) 收藏
IEEE1394是最初由Apple公司提出的高速串行總線(xiàn),1995年IEEE(電氣和電子工程師協(xié)會(huì ))將其認可為IEEE1394-1995規范[1]。但是在IEEE1394-1995中存在一些模糊定義[2],為了解決這些問(wèn)題,又提出了IEEE1394a規范和IEEE1394b規范。1394作為一種成熟的總線(xiàn),具有傳輸速率高(傳輸速率可達1.6 Gb/s,采用塑料光纖時(shí)可達3.2 Gb/s)、支持熱插熱拔、即插即用、拓撲方便等優(yōu)點(diǎn)。被廣泛應用于軍事和航空業(yè),更被美國航天局NASA確定為未來(lái)航天器的高速數據總線(xiàn)[9]。隨著(zhù)1394技術(shù)的推廣和應用,將其應用到工業(yè)控制系統中更是一種趨勢,而國內對1394總線(xiàn)在工業(yè)系統中的應用研究還不深入。本文主要介紹1394總線(xiàn)在檢測系統中的應用,通過(guò)實(shí)驗證明了方案的可行性。

1 1394通信模塊的硬件結構

1394通信模塊的主要功能為采集激光光斑的圖像數據,負責圖像采集板和Z-軸控制器以及PC之間的通信。它包括1394芯片(LLC和PHY)、、7和2片SRAM。
7的主要功能是對1394芯片初始化,根據1394協(xié)議對經(jīng)過(guò)轉發(fā)的1394指令進(jìn)行解析,控制1394鏈路層(LLC)芯片的數據接收和發(fā)送,以及通過(guò)鏈路層芯片間接地控制物理層(PHY)芯片。幾乎所有的地址線(xiàn)、數據線(xiàn)和控制信號線(xiàn)都和相連,因此FPGA在整個(gè)1394通信模塊中起著(zhù)非常重要的作用,其實(shí)現的主要功能包括:(1)通過(guò)1394LLC芯片的“主機接口”配置ROM、初始化寄存器、設置中斷、自標識和異步數據傳輸。(2)借助“DM端口”進(jìn)行等時(shí)/異步數據的傳輸。(3)控制1394總線(xiàn)上數據的接收和存儲。為了方便檢測1394通信模塊對指令的具體執行情況,在1394通信模塊上擴展了一個(gè)串口,通過(guò)它與PC連接,即可在PC上通過(guò)軟件實(shí)時(shí)監控1394通信模塊的運行情況,也可以通過(guò)軟件發(fā)送指令控制1394通信模塊執行相應的動(dòng)作。

相機的圖像數據經(jīng)過(guò)1394物理端口發(fā)送到1394總線(xiàn)上,經(jīng)過(guò)1394鏈路層芯片和物理層芯片的處理,在7和FPGA的控制下,通過(guò)乒乓操作的方式將其寫(xiě)入擴展的SRAM中。為了驗證采集的圖像數據是否正確,在1394通信模塊上擴展了VGA接口。FPGA通過(guò)乒乓的方式讀取SRAM中的圖像數據,再通過(guò)VGA接口將數據輸出到顯示器上直觀(guān)顯示。

1394通信模塊要與PC進(jìn)行正常通信,必須先強制PC做為1394總線(xiàn)上的根節點(diǎn)。因此1394通信模塊在接入1394網(wǎng)絡(luò )后必須檢測PC是否為根節點(diǎn),否則要一直進(jìn)行強制復位,直至PC為根節點(diǎn)。在PC為根節點(diǎn)后,兩者之間就可以進(jìn)行數據和指令的傳輸。另外,Z軸控制器可以通過(guò)1394總線(xiàn)接收來(lái)自PC或者1394通訊模塊的運動(dòng)控制指令。
ARM7芯片選用NXP公司的增強型LPC2200系列的LPC2292。FPGA選用Altera公司的Cyclone系列的EP1C6Q240C8。SRAM選用ISSI公司的IS61LV51216,用于緩存采集的圖像數據,在后期進(jìn)行圖像處理或者顯示。1394芯片選用TI公司的TSB12LV32(LLC)和TSB41AB3(PHY),這兩款芯片兼容IEEE1394-1995和IEEE1394a-2000規范,并集成了3個(gè)支持400 MB/s傳輸速率的物理端口,TSB12LV32提供了8/16位可選擇的MCU接口,支持異步傳輸和等時(shí)傳輸。


2 1394通信模塊的軟件設計

1394通信模塊的軟件設計主要包括ARM7-LPC2292和FPGA-EP1C6Q240C8的軟件設計。根據功能的不同,ARM7的軟件設計可以細化為ARM7的初始化、對LLC芯片指令的解析、對FPGA的讀寫(xiě)操作以及和PC的串口通信。FPGA的軟件設計可以分為對LLC芯片的讀寫(xiě)操作、與ARM7的通信、控制VGA輸出以及對SRAM的操作。

2.1 1394的初始配置

系統要正常運行,上電后的初始化配置非常重要。初始配置的作用為:(1)正確初始化配置ROM的內容,這是PC識別1394通信模塊并正確安裝對應驅動(dòng)的前提。(2)如果是與PC通信,將PC設置為根節點(diǎn)。(3)TSB12LV32相關(guān)寄存器的初始化。主要包括DM Control寄存器(設置DM口的狀態(tài)和一些參數),Interrupt(使能所有中斷),Isochronous Port(等時(shí)傳輸的狀態(tài),設置每個(gè)物理端口的狀態(tài),等時(shí)數據包的事務(wù)標簽等)。

2.2 ARM7對TSB12LV32中斷的響應

確保ARM7對TSB12LV32芯片指令正確響應的重要因素就是準確檢測到TSB12LV32芯片的中斷信號,并能夠讀取CFR寄存器的中斷寄存器數值,根據具體的數值判斷具體發(fā)生了哪種中斷,清除掉中斷位后,再根據中斷類(lèi)型決定要做出的反應。例如在檢測到TSB12LV32的中斷信號后,讀取偏移地址為0x0C的中斷寄存器數值,判斷出bit9為1,即Data Mover packet received,則表明從DM口接收到了一個(gè)數據包。ARM7只需要清除該中斷位即可。但是并不是所有的中斷只對其中斷位進(jìn)行清除即可,而不需要做出其他響應。例如:bit18,FIFO acknowledge interrupt,表明先前從ATF傳輸的數據被1394接收節點(diǎn)成功接收,此時(shí)ARM7除了要清除中斷位,還需要讀取ACK代碼的數值來(lái)確認1394接收節點(diǎn)是否做出了正確的響應。

2.3 LLC芯片配置ROM的實(shí)現

配置ROM的格式有最小格式和正常格式兩種。執行事務(wù)的1394串行總線(xiàn)節點(diǎn)都應該實(shí)現配置ROM,它為配置和診斷與設備相關(guān)的問(wèn)題提供了必要信息。一些1394控制芯片(如TSB43AA82A)可以對讀取配置ROM的讀請求自動(dòng)響應,編程人員只要把配置ROM放在預先設定的區域內即可。但是本方案中選取的LLC芯片不具備這種功能,因此需要人為地對主機發(fā)送的讀配置ROM請求做出正確的響應,以使配置ROM可以正確讀到主機中。

1394通信模塊需要充當總線(xiàn)管理器、循環(huán)控制器或者等時(shí)資源管理器,因此必須對其進(jìn)行正常格式下的配置ROM。配置ROM的正常格式中主要配置項包含根目錄(Root Directory)和總線(xiàn)信息塊(Bus_Info_Block)。根目錄提供了用來(lái)識別驅動(dòng)程序和診斷軟件的值,同時(shí)也提供了指向其他目錄和數據結構的可選指針,這些指針指向的地址和根目錄有相同的結構??偩€(xiàn)信息塊用來(lái)制定與總線(xiàn)相關(guān)的功能[2]。ARM7設置配置ROM的具體步驟如下:

(1)根據需要提供的信息填寫(xiě)配置ROM表,并根據IEEE1394-1995協(xié)議中提到的CRC校驗算法計算校驗值。

(2)對異步讀請求數據包進(jìn)行解析,分析到其為讀事務(wù),并且讀的目標地址在配置ROM范圍之內,則將分析的目標地址的數據填寫(xiě)到讀響應數據包中,對讀請求做出響應。

上位機正確地讀取到配置ROM的內容后就會(huì )提示發(fā)現新的硬件,識別出1394通信模塊后自動(dòng)為其安裝相應的驅動(dòng)程序。

2.4 IEEE1394等時(shí)數據傳輸的實(shí)現

實(shí)現等時(shí)數據傳輸,需要先做以下準備工作:具有兩個(gè)或兩個(gè)以上的1394節點(diǎn),至少有一個(gè)節點(diǎn)具有充當等時(shí)資源管理器的資格,將要發(fā)送等時(shí)數據的節點(diǎn)DM口模式設置為傳輸模式(transmit mode),同時(shí)將接收等時(shí)數據的節點(diǎn)DM口模式設置為接收模式(receive mode)。等時(shí)數據傳輸分為自動(dòng)插入包頭和手動(dòng)插入包頭兩種;等時(shí)數據接收分為自動(dòng)去除包頭和包尾以及包頭和包尾一起接收兩種情況。為了方便后期的數據處理,將等時(shí)數據發(fā)送節點(diǎn)的等時(shí)模式設置為自動(dòng)插入包頭和包尾,而將等時(shí)數據接收節點(diǎn)的等時(shí)模式設置為自動(dòng)去除包頭和包尾。
自動(dòng)插入包頭的等時(shí)數據傳輸流程如下:

(1)接收到DMREADY一個(gè)周期的高脈沖信號。
(2)DMDONE置為低電平。
(3)DM口讀取自動(dòng)存儲在38h地址的包頭信息,并向鏈路核請求將要發(fā)送的數據讀取到1394總線(xiàn)上。
(4)鏈路核獲得header0寄存器存儲的頭信息。
(5)DMPRE產(chǎn)生一個(gè)周期的高脈沖。
(6)DMRE為高電平時(shí),開(kāi)始獲取要發(fā)送的數據。
(7)鏈路核讀取到最后一個(gè)數據時(shí),DM口開(kāi)始檢查是否向控制寄存器所定義的通道發(fā)送了數據。如果已經(jīng)向所有的通道發(fā)送完畢,則在經(jīng)過(guò)一個(gè)小間隙后將DMDONE置為高電平,此時(shí)等時(shí)傳輸結束;否則DM口繼續插入頭信息,進(jìn)行數據傳輸,直至向所有的通道發(fā)送完數據。

自動(dòng)去除包頭和包尾的等時(shí)數據接收流程如下:

(1)包頭中的sysc位如果和等時(shí)接口寄存器(地址為0x18h)的ISYNCRCVN信息相同,DMPRE置高一個(gè)周期。
(2)在接收完包頭后,DMDONE置高一個(gè)周期。在后面有數據通過(guò)時(shí)DMRW置高。
(3)在接收完所有的數據后,DMRW置低,則DMD數據線(xiàn)不接收包尾。

3 通信測試

對1394通信模塊的通信實(shí)驗分為兩部分:對1394協(xié)議所規定的通信功能的測試;對采集到的數據正確性進(jìn)行驗證。實(shí)驗步驟如下:

(1)將1394通信模塊和PC連接起來(lái),模塊加電后,首先進(jìn)行總線(xiàn)配置、樹(shù)標識和自標識。在整個(gè)網(wǎng)絡(luò )形成后,已經(jīng)確定根節點(diǎn),各個(gè)節點(diǎn)的地址也就確定了。在1394總線(xiàn)執行上述動(dòng)作時(shí),同時(shí)通過(guò)擴展的串口輸出自標識數據包的內容,包括當前網(wǎng)絡(luò )中的節點(diǎn)數、當前節點(diǎn)為第幾個(gè)節點(diǎn)、是否為根節點(diǎn)、是否具有等時(shí)資源管理的功能。至此,1394通信模塊已和PC建立連接。
(2)通過(guò)PC讀取1394通信模塊的配置ROM,看其是否能進(jìn)行正確響應。
(3)進(jìn)行異步讀和異步寫(xiě)的測試,分為對字節的異步讀寫(xiě)和對數據塊的異步讀寫(xiě)兩種。
(4)進(jìn)行等時(shí)數據傳輸的測試??碢C是否能接收到1394通信模塊發(fā)出的等時(shí)數據包。
(5)連接相機,通過(guò)等時(shí)傳輸將相機的圖像數據存入到1394通信模塊的SRAM中,并由VGA接口輸出到顯示器上顯示。

除了第(5)步,以上每一步的執行都會(huì )在串口調試助手軟件上有結果輸出。例如:1394通信模塊在上電后收到自標識包并進(jìn)行復位,并在調試界面上會(huì )輸出“SID RCVD 2 Y 0 BUS RST..”。其中“SID RCVD”表示節點(diǎn)收到自標識數據包,“2 Y 0”表示當前總線(xiàn)中存在兩個(gè)1394節點(diǎn),當前節點(diǎn)為根節點(diǎn),具有等時(shí)資源管理功能的節點(diǎn)是節點(diǎn)0?!癇US RST..”表示節點(diǎn)開(kāi)始進(jìn)行總線(xiàn)復位。當前節點(diǎn)發(fā)起讀取0x0400地址數據的異步讀請求,則在界面上會(huì )顯示“ACK00010,0x04049c44”?!癆CD00010”表示另一個(gè)節點(diǎn)接收到了異步讀請求的命令,“0x04049c44”則為返回的0x0400地址存儲的數據。兩個(gè)1394節點(diǎn)要進(jìn)行等時(shí)數據傳輸,假如數據發(fā)送方為節點(diǎn)0,數據接收方為節點(diǎn)1。按照以下步驟進(jìn)行節點(diǎn)間等時(shí)數據傳輸的測試:(1)先設置節點(diǎn)0的DM口模式為發(fā)送模式,節點(diǎn)1的DM口模式為接收模式。(2)節點(diǎn)0先讀取總線(xiàn)上的有效帶寬,上層界面接收到“0x00000f33”,它是用十六進(jìn)制表示的當前總線(xiàn)的有效帶寬。節點(diǎn)0再向等時(shí)資源管理節點(diǎn)申請一定的帶寬,上層界面接受到“ACK 00010”,表示帶寬申請成功。(3)讀取總線(xiàn)上的有效通道并且申請通道。1394總線(xiàn)的有效通道數存在兩個(gè)寄存器上,申請時(shí)按照由低到高的順序。在申請通道前需先確認當前網(wǎng)絡(luò )中使用的通道數,通信結束后再釋放該通道。發(fā)出讀取有效通道的指令后,上層界面接收到“0xffffffff”和“0xffffffff”,表示目前總線(xiàn)上所有通道均處于空閑狀態(tài)??梢陨暾埻ǖ?,申請后低位通道寄存器的值變?yōu)椤?xfffffffe”。經(jīng)過(guò)前面三步已經(jīng)建立了節點(diǎn)0和節點(diǎn)1進(jìn)行等時(shí)通信所需要的帶寬和通道。(4)發(fā)送等時(shí)傳輸的指令,看節點(diǎn)1是否接收到了指定量的等時(shí)數據包。通過(guò)中斷寄存器的bit9(Data Mover packet receive)進(jìn)行判斷。

本文分析了基于FPGA+ARM的1394總線(xiàn)在檢測系統中的應用,對于1394總線(xiàn)技術(shù)的推廣具有較強的借鑒意義。測試實(shí)驗表明,1394總線(xiàn)在進(jìn)行等時(shí)通信時(shí)分配固定的帶寬,保證了圖像數據又快又準的傳輸,同時(shí)整個(gè)檢測系統的各個(gè)模塊通過(guò)1394總線(xiàn)連接起來(lái),可以完全脫離PC單獨運行,采用異步傳輸進(jìn)行控制指令的傳輸,既方便又穩定。

LCD顯示屏相關(guān)文章:lcd顯示屏原理


lcd相關(guān)文章:lcd原理


關(guān)鍵詞: IEEE1394總線(xiàn) ARM FPGA TFT-LCD

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>