《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 可編程邏輯 > 設(shè)計應(yīng)用 > 基于ARM+FPGA的1394總線在TFT-LCD檢測系統(tǒng)中的應(yīng)用
基于ARM+FPGA的1394總線在TFT-LCD檢測系統(tǒng)中的應(yīng)用
來源:電子技術(shù)應(yīng)用2011年第2期
黃 帥,,程良倫,姜 鈞
廣東工業(yè)大學(xué) 自動化學(xué)院,,廣東 廣州510006
摘要: 介紹了IEEE1394總線在TFT-LCD檢測系統(tǒng)中的應(yīng)用,,通過IEEE1394總線實(shí)現(xiàn)TFT-LCD檢測系統(tǒng)的光斑數(shù)據(jù)采集以及圖像采集板和Z軸控制器之間的通信,。給出了1394通信模塊的軟硬件設(shè)計。
關(guān)鍵詞: FPGA ARM 1394總線 1394通信模塊 TFTLCD
中圖分類號: TP393.04
文獻(xiàn)標(biāo)識碼: A
文章編號: 0258-7998(2011)02-0029-04
Application of 1394 bus in TFT-LCD detecting system based on ARM+FPGA
Huang Shuai,,Cheng Lianglun,,Jiang Jun
Faculty of Automation, Guangdong University of Technology, Guang Zhou 510006,China
Abstract: This paper introduces an application of IEEE1394 bus in TFT-LCD detecting system, realizing laser image’s data collection and communication between image grabbing card and Z-axis controller. Both the hardware and software of 1394 communication module are described.
Key words : 1394 bus,;1394 communication module,;TFT-LCD

 


 

 

    IEEE1394是最初由Apple公司提出的高速串行總線,1995年IEEE(電氣和電子工程師協(xié)會)將其認(rèn)可為IEEE1394-1995規(guī)范[1],。但是在IEEE1394-1995中存在一些模糊定義[2],,為了解決這些問題,又提出了IEEE1394a規(guī)范和IEEE1394b規(guī)范,。1394作為一種成熟的總線,,具有傳輸速率高(傳輸速率可達(dá)1.6 Gb/s,采用塑料光纖時可達(dá)3.2 Gb/s),、支持熱插熱拔,、即插即用,、拓?fù)浞奖愕葍?yōu)點(diǎn)。被廣泛應(yīng)用于軍事和航空業(yè),,更被美國航天局NASA確定為未來航天器的高速數(shù)據(jù)總線[9],。隨著1394技術(shù)的推廣和應(yīng)用,將其應(yīng)用到工業(yè)控制系統(tǒng)中更是一種趨勢,,而國內(nèi)對1394總線在工業(yè)系統(tǒng)中的應(yīng)用研究還不深入,。本文主要介紹1394總線在TFT-LCD檢測系統(tǒng)中的應(yīng)用,通過實(shí)驗(yàn)證明了方案的可行性,。
1 1394通信模塊的硬件結(jié)構(gòu)
    1394通信模塊的主要功能為采集激光光斑的圖像數(shù)據(jù),,負(fù)責(zé)圖像采集板和Z-軸控制器以及PC之間的通信。它包括1394芯片(LLC和PHY),、FPGA,、ARM7和2片SRAM。系統(tǒng)總體框圖如圖1所示,。

 


    ARM7的主要功能是對1394芯片初始化,,根據(jù)1394協(xié)議對經(jīng)過FPGA轉(zhuǎn)發(fā)的1394指令進(jìn)行解析,控制1394鏈路層(LLC)芯片的數(shù)據(jù)接收和發(fā)送,,以及通過鏈路層芯片間接地控制物理層(PHY)芯片。幾乎所有的地址線,、數(shù)據(jù)線和控制信號線都和FPGA相連,,因此FPGA在整個1394通信模塊中起著非常重要的作用,其實(shí)現(xiàn)的主要功能包括:(1)通過1394LLC芯片的“主機(jī)接口”配置ROM,、初始化寄存器,、設(shè)置中斷、自標(biāo)識和異步數(shù)據(jù)傳輸,。(2)借助“DM端口”進(jìn)行等時/異步數(shù)據(jù)的傳輸,。(3)控制1394總線上數(shù)據(jù)的接收和存儲。為了方便檢測1394通信模塊對指令的具體執(zhí)行情況,,在1394通信模塊上擴(kuò)展了一個串口,,通過它與PC連接,即可在PC上通過軟件實(shí)時監(jiān)控1394通信模塊的運(yùn)行情況,,也可以通過軟件發(fā)送指令控制1394通信模塊執(zhí)行相應(yīng)的動作,。
    相機(jī)的圖像數(shù)據(jù)經(jīng)過1394物理端口發(fā)送到1394總線上,經(jīng)過1394鏈路層芯片和物理層芯片的處理,,在ARM7和FPGA的控制下,,通過乒乓操作的方式將其寫入擴(kuò)展的SRAM中。為了驗(yàn)證采集的圖像數(shù)據(jù)是否正確,,在1394通信模塊上擴(kuò)展了VGA接口,。FPGA通過乒乓的方式讀取SRAM中的圖像數(shù)據(jù),,再通過VGA接口將數(shù)據(jù)輸出到顯示器上直觀顯示。
    1394通信模塊要與PC進(jìn)行正常通信,,必須先強(qiáng)制PC做為1394總線上的根節(jié)點(diǎn),。因此1394通信模塊在接入1394網(wǎng)絡(luò)后必須檢測PC是否為根節(jié)點(diǎn),否則要一直進(jìn)行強(qiáng)制復(fù)位,,直至PC為根節(jié)點(diǎn),。在PC為根節(jié)點(diǎn)后,兩者之間就可以進(jìn)行數(shù)據(jù)和指令的傳輸,。另外,,Z軸控制器可以通過1394總線接收來自PC或者1394通訊模塊的運(yùn)動控制指令。
    ARM7芯片選用NXP公司的增強(qiáng)型LPC2200系列的LPC2292,。FPGA選用Altera公司的Cyclone系列的EP1C6Q240C8,。SRAM選用ISSI公司的IS61LV51216,用于緩存采集的圖像數(shù)據(jù),,在后期進(jìn)行圖像處理或者顯示,。1394芯片選用TI公司的TSB12LV32(LLC)和TSB41AB3(PHY),這兩款芯片兼容IEEE1394-1995和IEEE1394a-2000規(guī)范,,并集成了3個支持400 MB/s傳輸速率的物理端口,,TSB12LV32提供了8/16位可選擇的MCU接口,支持異步傳輸和等時傳輸,。
    ARM7,、FPGA、SRAM以及1394芯片(LLC+PHY)之間的連接如圖2所示,。

 


2 1394通信模塊的軟件設(shè)計
    1394通信模塊的軟件設(shè)計主要包括ARM7-LPC2292和FPGA-EP1C6Q240C8的軟件設(shè)計,。根據(jù)功能的不同,ARM7的軟件設(shè)計可以細(xì)化為ARM7的初始化,、對LLC芯片指令的解析,、對FPGA的讀寫操作以及和PC的串口通信。FPGA的軟件設(shè)計可以分為對LLC芯片的讀寫操作,、與ARM7的通信,、控制VGA輸出以及對SRAM的操作。
2.1 1394的初始配置
   系統(tǒng)要正常運(yùn)行,,上電后的初始化配置非常重要,。初始配置的作用為:(1)正確初始化配置ROM的內(nèi)容,這是PC識別1394通信模塊并正確安裝對應(yīng)驅(qū)動的前提,。(2)如果是與PC通信,,將PC設(shè)置為根節(jié)點(diǎn)。(3)TSB12LV32相關(guān)寄存器的初始化。主要包括DM Control寄存器(設(shè)置DM口的狀態(tài)和一些參數(shù)),,Interrupt(使能所有中斷),,Isochronous Port(等時傳輸?shù)臓顟B(tài),設(shè)置每個物理端口的狀態(tài),,等時數(shù)據(jù)包的事務(wù)標(biāo)簽等),。
    1394配置流程如圖3所示。

 


2.2 ARM7對TSB12LV32中斷的響應(yīng)
    確保ARM7對TSB12LV32芯片指令正確響應(yīng)的重要因素就是準(zhǔn)確檢測到TSB12LV32芯片的中斷信號,,并能夠讀取CFR寄存器的中斷寄存器數(shù)值,,根據(jù)具體的數(shù)值判斷具體發(fā)生了哪種中斷,清除掉中斷位后,,再根據(jù)中斷類型決定要做出的反應(yīng),。例如在檢測到TSB12LV32的中斷信號后,讀取偏移地址為0x0C的中斷寄存器數(shù)值,,判斷出bit9為1,,即Data Mover packet received,則表明從DM口接收到了一個數(shù)據(jù)包,。ARM7只需要清除該中斷位即可,。但是并不是所有的中斷只對其中斷位進(jìn)行清除即可,而不需要做出其他響應(yīng),。例如:bit18,,F(xiàn)IFO acknowledge interrupt,表明先前從ATF傳輸?shù)臄?shù)據(jù)被1394接收節(jié)點(diǎn)成功接收,,此時ARM7除了要清除中斷位,,還需要讀取ACK代碼的數(shù)值來確認(rèn)1394接收節(jié)點(diǎn)是否做出了正確的響應(yīng)。
2.3 LLC芯片配置ROM的實(shí)現(xiàn)
    配置ROM的格式有最小格式和正常格式兩種,。執(zhí)行事務(wù)的1394串行總線節(jié)點(diǎn)都應(yīng)該實(shí)現(xiàn)配置ROM,它為配置和診斷與設(shè)備相關(guān)的問題提供了必要信息,。一些1394控制芯片(如TSB43AA82A)可以對讀取配置ROM的讀請求自動響應(yīng),,編程人員只要把配置ROM放在預(yù)先設(shè)定的區(qū)域內(nèi)即可。但是本方案中選取的LLC芯片不具備這種功能,,因此需要人為地對主機(jī)發(fā)送的讀配置ROM請求做出正確的響應(yīng),,以使配置ROM可以正確讀到主機(jī)中。
    1394通信模塊需要充當(dāng)總線管理器,、循環(huán)控制器或者等時資源管理器,,因此必須對其進(jìn)行正常格式下的配置ROM。配置ROM的正常格式中主要配置項(xiàng)包含根目錄(Root Directory)和總線信息塊(Bus_Info_Block),。根目錄提供了用來識別驅(qū)動程序和診斷軟件的值,,同時也提供了指向其他目錄和數(shù)據(jù)結(jié)構(gòu)的可選指針,這些指針指向的地址和根目錄有相同的結(jié)構(gòu),??偩€信息塊用來制定與總線相關(guān)的功能[2],。ARM7設(shè)置配置ROM的具體步驟如下:
    (1)根據(jù)需要提供的信息填寫配置ROM表,并根據(jù)IEEE1394-1995協(xié)議中提到的CRC校驗(yàn)算法計算校驗(yàn)值,。
    (2)對異步讀請求數(shù)據(jù)包進(jìn)行解析,,分析到其為讀事務(wù),并且讀的目標(biāo)地址在配置ROM范圍之內(nèi),,則將分析的目標(biāo)地址的數(shù)據(jù)填寫到讀響應(yīng)數(shù)據(jù)包中,,對讀請求做出響應(yīng)。
    上位機(jī)正確地讀取到配置ROM的內(nèi)容后就會提示發(fā)現(xiàn)新的硬件,,識別出1394通信模塊后自動為其安裝相應(yīng)的驅(qū)動程序,。
2.4 IEEE1394等時數(shù)據(jù)傳輸?shù)膶?shí)現(xiàn)
    實(shí)現(xiàn)等時數(shù)據(jù)傳輸,需要先做以下準(zhǔn)備工作:具有兩個或兩個以上的1394節(jié)點(diǎn),,至少有一個節(jié)點(diǎn)具有充當(dāng)?shù)葧r資源管理器的資格,,將要發(fā)送等時數(shù)據(jù)的節(jié)點(diǎn)DM口模式設(shè)置為傳輸模式(transmit mode),同時將接收等時數(shù)據(jù)的節(jié)點(diǎn)DM口模式設(shè)置為接收模式(receive mode),。等時數(shù)據(jù)傳輸分為自動插入包頭和手動插入包頭兩種,;等時數(shù)據(jù)接收分為自動去除包頭和包尾以及包頭和包尾一起接收兩種情況。為了方便后期的數(shù)據(jù)處理,,將等時數(shù)據(jù)發(fā)送節(jié)點(diǎn)的等時模式設(shè)置為自動插入包頭和包尾,,而將等時數(shù)據(jù)接收節(jié)點(diǎn)的等時模式設(shè)置為自動去除包頭和包尾。
    自動插入包頭的等時數(shù)據(jù)傳輸流程如下:
    (1)接收到DMREADY一個周期的高脈沖信號,。
    (2)DMDONE置為低電平,。
    (3)DM口讀取自動存儲在38h地址的包頭信息,并向鏈路核請求將要發(fā)送的數(shù)據(jù)讀取到1394總線上,。
    (4)鏈路核獲得header0寄存器存儲的頭信息,。
    (5)DMPRE產(chǎn)生一個周期的高脈沖。
    (6)DMRE為高電平時,,開始獲取要發(fā)送的數(shù)據(jù),。
    (7)鏈路核讀取到最后一個數(shù)據(jù)時,DM口開始檢查是否向控制寄存器所定義的通道發(fā)送了數(shù)據(jù),。如果已經(jīng)向所有的通道發(fā)送完畢,,則在經(jīng)過一個小間隙后將DMDONE置為高電平,此時等時傳輸結(jié)束,;否則DM口繼續(xù)插入頭信息,,進(jìn)行數(shù)據(jù)傳輸,直至向所有的通道發(fā)送完數(shù)據(jù),。
    自動去除包頭和包尾的等時數(shù)據(jù)接收流程如下:
    (1)包頭中的sysc位如果和等時接口寄存器(地址為0x18h)的ISYNCRCVN信息相同,,DMPRE置高一個周期。
    (2)在接收完包頭后,DMDONE置高一個周期,。在后面有數(shù)據(jù)通過時DMRW置高,。
    (3)在接收完所有的數(shù)據(jù)后,DMRW置低,,則DMD數(shù)據(jù)線不接收包尾,。
3 通信測試
    對1394通信模塊的通信實(shí)驗(yàn)分為兩部分:對1394協(xié)議所規(guī)定的通信功能的測試;對采集到的數(shù)據(jù)正確性進(jìn)行驗(yàn)證,。實(shí)驗(yàn)步驟如下:
    (1)將1394通信模塊和PC連接起來,,模塊加電后,首先進(jìn)行總線配置,、樹標(biāo)識和自標(biāo)識,。在整個網(wǎng)絡(luò)形成后,已經(jīng)確定根節(jié)點(diǎn),,各個節(jié)點(diǎn)的地址也就確定了,。在1394總線執(zhí)行上述動作時,同時通過擴(kuò)展的串口輸出自標(biāo)識數(shù)據(jù)包的內(nèi)容,,包括當(dāng)前網(wǎng)絡(luò)中的節(jié)點(diǎn)數(shù),、當(dāng)前節(jié)點(diǎn)為第幾個節(jié)點(diǎn)、是否為根節(jié)點(diǎn),、是否具有等時資源管理的功能,。至此,1394通信模塊已和PC建立連接,。
    (2)通過PC讀取1394通信模塊的配置ROM,,看其是否能進(jìn)行正確響應(yīng)。
    (3)進(jìn)行異步讀和異步寫的測試,,分為對字節(jié)的異步讀寫和對數(shù)據(jù)塊的異步讀寫兩種,。
    (4)進(jìn)行等時數(shù)據(jù)傳輸?shù)臏y試??碢C是否能接收到1394通信模塊發(fā)出的等時數(shù)據(jù)包,。
    (5)連接相機(jī),通過等時傳輸將相機(jī)的圖像數(shù)據(jù)存入到1394通信模塊的SRAM中,,并由VGA接口輸出到顯示器上顯示。
    除了第(5)步,,以上每一步的執(zhí)行都會在串口調(diào)試助手軟件上有結(jié)果輸出,。例如:1394通信模塊在上電后收到自標(biāo)識包并進(jìn)行復(fù)位,并在調(diào)試界面上會輸出“SID RCVD 2 Y 0 BUS RST..”,。其中“SID RCVD”表示節(jié)點(diǎn)收到自標(biāo)識數(shù)據(jù)包,,“2 Y 0”表示當(dāng)前總線中存在兩個1394節(jié)點(diǎn),當(dāng)前節(jié)點(diǎn)為根節(jié)點(diǎn),具有等時資源管理功能的節(jié)點(diǎn)是節(jié)點(diǎn)0,。“BUS RST..”表示節(jié)點(diǎn)開始進(jìn)行總線復(fù)位,。當(dāng)前節(jié)點(diǎn)發(fā)起讀取0x0400地址數(shù)據(jù)的異步讀請求,則在界面上會顯示“ACK00010,,0x04049c44”,。“ACD00010”表示另一個節(jié)點(diǎn)接收到了異步讀請求的命令,“0x04049c44”則為返回的0x0400地址存儲的數(shù)據(jù),。兩個1394節(jié)點(diǎn)要進(jìn)行等時數(shù)據(jù)傳輸,,假如數(shù)據(jù)發(fā)送方為節(jié)點(diǎn)0,數(shù)據(jù)接收方為節(jié)點(diǎn)1,。按照以下步驟進(jìn)行節(jié)點(diǎn)間等時數(shù)據(jù)傳輸?shù)臏y試:(1)先設(shè)置節(jié)點(diǎn)0的DM口模式為發(fā)送模式,,節(jié)點(diǎn)1的DM口模式為接收模式。(2)節(jié)點(diǎn)0先讀取總線上的有效帶寬,,上層界面接收到“0x00000f33”,,它是用十六進(jìn)制表示的當(dāng)前總線的有效帶寬。節(jié)點(diǎn)0再向等時資源管理節(jié)點(diǎn)申請一定的帶寬,,上層界面接受到“ACK 00010”,,表示帶寬申請成功。(3)讀取總線上的有效通道并且申請通道,。1394總線的有效通道數(shù)存在兩個寄存器上,,申請時按照由低到高的順序。在申請通道前需先確認(rèn)當(dāng)前網(wǎng)絡(luò)中使用的通道數(shù),,通信結(jié)束后再釋放該通道,。發(fā)出讀取有效通道的指令后,上層界面接收到“0xffffffff”和“0xffffffff”,,表示目前總線上所有通道均處于空閑狀態(tài),。可以申請通道1,,申請后低位通道寄存器的值變?yōu)?amp;ldquo;0xfffffffe”,。經(jīng)過前面三步已經(jīng)建立了節(jié)點(diǎn)0和節(jié)點(diǎn)1進(jìn)行等時通信所需要的帶寬和通道。(4)發(fā)送等時傳輸?shù)闹噶?,看?jié)點(diǎn)1是否接收到了指定量的等時數(shù)據(jù)包,。通過中斷寄存器的bit9(Data Mover packet receive)進(jìn)行判斷。
    本文分析了基于FPGA+ARM的1394總線在TFT-LCD檢測系統(tǒng)中的應(yīng)用,,對于1394總線技術(shù)的推廣具有較強(qiáng)的借鑒意義,。測試實(shí)驗(yàn)表明,1394總線在進(jìn)行等時通信時分配固定的帶寬,,保證了圖像數(shù)據(jù)又快又準(zhǔn)的傳輸,,同時整個檢測系統(tǒng)的各個模塊通過1394總線連接起來,,可以完全脫離PC單獨(dú)運(yùn)行,采用異步傳輸進(jìn)行控制指令的傳輸,,既方便又穩(wěn)定,。
參考文獻(xiàn)
[1] IEEE.IEEE standard 1394-1995A high performance serial  bus[S].1995.
[2] IEEE.IEEE Std 1394a-2000A high performance serial bus  amendment1[S].2000.
[3] TSB12LV32 data manual[Z].Texas Instruments Inc,2000(4).
[4] TSB41AB3 data manual[Z].Texas Instruments Inc,,2000(6).
[5] LPC21XX and LPC22XX User manual[Z].(2008-4-2). http://www.nxp.com.
[6] 安德森.FireWire(IEEE1394)系統(tǒng)體系[M].北京:中國電力出版社,,2000.
[7] 張大樸,王曉.IEEE1394協(xié)議及接口設(shè)計[M].西安:西安電子科技大學(xué)出版社,,2004.
[8] 華清遠(yuǎn)見嵌入式培訓(xùn)中心編著.FPGA應(yīng)用開發(fā)入門與典型實(shí)例[M].北京:人民郵電出版社出版,,2008.
[9] 周慶瑞.IEEE1394鏈路層控制芯片IP核的開發(fā)及IEEE1394總線可靠性的研究[D].北京:中國科學(xué)院研究生院,2009.
[10 ]季睿.基于PCI總線的IEEE1394接口開發(fā)[D].上海:上海交通大學(xué),,2009.

此內(nèi)容為AET網(wǎng)站原創(chuàng),,未經(jīng)授權(quán)禁止轉(zhuǎn)載。