• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    基于CY7C68013A的FPGA配置和通信接口設(shè)計(jì)

    2013-12-07 06:17:58劉志華郭付才彭新偉陳吉東
    電子技術(shù)應(yīng)用 2013年2期
    關(guān)鍵詞:固件驅(qū)動(dòng)程序端點(diǎn)

    劉志華 ,郭付才 ,彭新偉 ,陳吉東

    (1.解放軍理工大學(xué) 氣象海洋學(xué)院 探測(cè)與裝備工程系,江蘇 南京 211101;2.南京軍區(qū)氣象水文中心,江蘇 南京 210016;3.南京楊辰科技有限公司,江蘇 南京 210022)

    通用串行總線(USB)因具有傳輸速度快、支持熱插拔、易于擴(kuò)展以及即插即用等優(yōu)點(diǎn),已經(jīng)成為計(jì)算機(jī)與外部設(shè)備進(jìn)行數(shù)據(jù)交換的常用接口。USB控制器是一種集成了USB總線協(xié)議的微控制器,利用USB控制器,用戶可以在不深入了解USB協(xié)議的情況下設(shè)計(jì)完整的USB接口,這也促進(jìn)了USB接口的廣泛應(yīng)用[1]。

    目前,軟件無(wú)線電技術(shù)越來(lái)越成熟,F(xiàn)PGA的應(yīng)用也更加廣泛。一塊配備了USB接口的FPGA數(shù)據(jù)處理模塊可以應(yīng)用到各種高速數(shù)據(jù)采集、處理和傳輸場(chǎng)合。而在項(xiàng)目研發(fā)過(guò)程中,隨時(shí)都需要對(duì)FPGA進(jìn)行編程調(diào)試?;诖?,本文研究和設(shè)計(jì)了一種可以同時(shí)實(shí)現(xiàn)對(duì)FPGA進(jìn)行配置和數(shù)據(jù)通信的USB接口。

    1 系統(tǒng)總體設(shè)計(jì)

    系統(tǒng)總體框圖如圖1所示,系統(tǒng)主要包括以USB控制器為控制核心的USB接口設(shè)備、PC機(jī)上的應(yīng)用軟件和驅(qū)動(dòng)程序以及相關(guān)的固件程序[2]。系統(tǒng)工作原理如下:ISE軟件生成的FPGA配置文件由下載軟件下載到USB接口設(shè)備中,由CY7C68013A控制器實(shí)現(xiàn)對(duì)FPGA芯片的被動(dòng)配置;FPGA配置成功后由CY7C68013A芯片返回配置成功信息;計(jì)算機(jī)收到配置成功信息后就可以關(guān)閉下載軟件、打開接收軟件,正常接收FPGA向計(jì)算機(jī)發(fā)送的通信數(shù)據(jù)。

    2 系統(tǒng)硬件設(shè)計(jì)

    2.1 CY7C68013A器件

    系統(tǒng)中的USB控制器選擇CYPRESS公司EZ-USB FX2LP系列的CY7C68013A單片機(jī),它主要包括USB2.0收發(fā)器、智能串行接口引擎(SIE)、增強(qiáng)型 8051微處理器、16 KB的RAM、4 KB的FIFO存儲(chǔ)器、地址和數(shù)據(jù)總線、I/O口、I2C控制器和通用可編程接口(GPIF)。

    CY7C68013A的串行接口引擎負(fù)責(zé)完成獨(dú)立串行數(shù)據(jù)的編解碼、差錯(cuò)控制、位填充等與USB協(xié)議有關(guān)的功能,簡(jiǎn)化了固件程序的開發(fā);通用可編程接口支持所有通用的總線標(biāo)準(zhǔn),可與外部ASIC、DSP等直接連接。CY7C68013A芯片內(nèi)部包含3個(gè)固定的、64 B端點(diǎn)緩沖區(qū),分別是 EP0、EP1IN和 EP1OUT。其中,EP0是默認(rèn)的控制傳輸端點(diǎn),EP1IN和EP1OUT支持快傳輸、中斷傳輸和同步傳輸,它們只能由8051內(nèi)核的固件訪問(wèn);另外還有4 KB的可配置端點(diǎn)緩沖區(qū),分別是 EP2、EP4、EP6和EP8,它們是大容量寬帶的數(shù)據(jù)傳輸端點(diǎn),無(wú)需8051固件干涉便可與外圍電路完成高速數(shù)據(jù)傳輸。這4個(gè)端點(diǎn)具有非常靈活的配置方式,可以適應(yīng)多種場(chǎng)合下的寬帶要求。

    2.2 硬件電路

    系統(tǒng)硬件電路如圖2所示。CY7C68013A控制器工作在從屬FIFO模式,I2C總線上連接一片 EEPROM芯片(24LC64)。CY7C68013A的固件程序由EEPROM燒寫器燒寫到24LC64中,上電后自動(dòng)加載到內(nèi)部RAM中。FD是雙向的數(shù)據(jù)傳輸總線。FLAGA、FLAFB、FLAGC是 FIFO標(biāo)志管腳,指示FIFO的空滿程度,保證數(shù)據(jù)的有效存取。FIFO_ADR[1:0]用于選擇與FD連接的4個(gè)端點(diǎn)緩沖區(qū)。SLRD和SLWR分別作為FIFO的讀寫選通信號(hào),SLOE用于使能數(shù)據(jù)總線FD的輸出。PKTEND是CY7C68013A向PC發(fā)送數(shù)據(jù)的控制端。IFCLK是48 MHz的接口時(shí)鐘,由芯片內(nèi)部產(chǎn)生,控制FPGA配置數(shù)據(jù)的的讀取。PE0與FPGA的PROG引腳相連,是FPGA初始化控制引腳;PE1與FPGA的RDWR引腳相連,是 FPGA配置數(shù)據(jù)的讀寫選擇端;PE2與FPGA的DONE引腳相連,是FPGA配置成功指示信號(hào)。FPGA的配置模式管腳M[2:0]=011,將FPGA設(shè)置成從機(jī)串行模式[3-4]。

    3 系統(tǒng)軟件設(shè)計(jì)

    3.1 CY7C68013A 固件程序設(shè)計(jì)

    CY7C68013A的固件程序是指在芯片內(nèi)部RAM運(yùn)行的程序代碼,它是USB接口設(shè)計(jì)的核心部分。CY7C68013A的固件程序有兩種加載方式:一種是在線下載方式,這種方式是將固件存儲(chǔ)在計(jì)算機(jī)中,在計(jì)算機(jī)上編寫一個(gè)能自動(dòng)下載以及設(shè)備從枚舉功能的固件下載驅(qū)動(dòng)程序,當(dāng)CY7C68013A連接上計(jì)算機(jī)后由驅(qū)動(dòng)程序下載固件;另一種方式是將固件程序存儲(chǔ)到片外的EEPROM芯片中,上電后自動(dòng)將固件加載到內(nèi)部RAM中。由于第二種方式有擴(kuò)展性好、操作簡(jiǎn)單等優(yōu)點(diǎn),本文采用的是第二種方式。為了簡(jiǎn)化固件編程,CYPRESS公司提供了固件編程框架,用戶只需在此框架下添加USB描述表、收發(fā)數(shù)據(jù)的通信代碼和相關(guān)的控制代碼就可以完成固件編程[1,5]。 固件框架文件如表 1所示。

    表1 固件框架文件

    用戶在編寫固件程序時(shí),只需對(duì)bulkllop.c和dscr.51兩個(gè)文件根據(jù)具體設(shè)計(jì)需求修改相應(yīng)的代碼。固件框架內(nèi)主要使用的函數(shù)如下:

    TD_Init()函數(shù):主要完成 CY7C68013A的初始化,它只會(huì)在USB啟動(dòng)后調(diào)用一次。函數(shù)里添加的初始化代碼包括CPU時(shí)鐘頻率設(shè)定、USB工作模式選擇、I/O口配置、端點(diǎn)選擇及傳輸方向設(shè)置、FIFO的配置等。

    TD_Poll()函數(shù):是用戶調(diào)度程序,在設(shè)備運(yùn)行時(shí)被重復(fù)調(diào)用,編寫需要反復(fù)執(zhí)行的代碼。其主要功能是對(duì)各個(gè)端點(diǎn)的狀態(tài)進(jìn)行查詢,實(shí)現(xiàn)端點(diǎn)間數(shù)據(jù)的交互。

    TD_suspend()函數(shù):在設(shè)備進(jìn)入掛起狀態(tài)前調(diào)用,在其中加入適當(dāng)?shù)拇a,配置設(shè)備的工作狀態(tài),可使設(shè)備處于低功耗狀態(tài)并返回真值。改動(dòng)TD_Suspend的程序代碼,使其返回為假,可使CY7C68013A不進(jìn)入掛起狀態(tài)。

    DR_VendorCmnd()函數(shù):是自定義命令代碼的書寫處。fw.c固件會(huì)自動(dòng)調(diào)用函數(shù)里的代碼。

    ISR_Ep0in()interrupt 0~I(xiàn)SR_Ep8inout()interrupt 0 函數(shù):是當(dāng)使用端點(diǎn)中斷傳輸時(shí)的中斷代碼書寫處。

    CY7C68013A的固件編程框架流程如圖3所示。

    針對(duì)本文提出的采用CY7C68013A芯片設(shè)計(jì)USB接口,以實(shí)現(xiàn)對(duì)FPGA的配置和通信功能,其相關(guān)的設(shè)置如表2所示。

    表2 CY7C68013A端點(diǎn)配置表

    在TD_Init()中對(duì)端點(diǎn)的設(shè)置如下:

    (1)EP2:用于傳輸FPGA的配置數(shù)據(jù)(XXX.bit文件)。一次傳輸數(shù)據(jù)的大小與CY7C68013A配置成USB1.1還是USB2.0有關(guān)。當(dāng)配置成USB1.1時(shí),必須保證一次只傳送64 B,不能超過(guò)該值;當(dāng)配置成 USB2.0時(shí),一次最多可以傳送512 B,也可以只傳送64 B。在void ISR_Ep2inout(void)interrupt 0中,將得到的數(shù)據(jù)對(duì)FPGA進(jìn)行配置。使用AUTO PTR可以節(jié)約時(shí)間,配置速率為6 Mb/s左右。

    (2)EP4:用于傳送控制參數(shù),其設(shè)置方法與EP2相同。在void ISR_Ep4inout(void)interrupt 0中,將從應(yīng)用軟件傳來(lái)的控制命令(包含對(duì)FPGA的配置命令)傳給FPGA。

    (3)EP6:用于采集數(shù)據(jù)。將其設(shè)置成SlaveFIFO模式,AUTOIN有效,IFCLK實(shí)現(xiàn)同步,16 bit數(shù)據(jù)寬度。在void ISR_Ep6inout(void)interrupt 0中,將FIFO中的數(shù)據(jù)發(fā)往USB。AUTOIN=1,在數(shù)據(jù)傳輸中,自動(dòng)完成傳輸,不需要單片機(jī)的參與。

    (4)EP8:用于傳送狀態(tài)數(shù)據(jù)。由于用了雙緩沖,在得到狀態(tài)數(shù)據(jù)時(shí),要多讀2次才能得到當(dāng)前的狀態(tài)信息。在void ISR_Ep8inout(void)interrupt 0中,將從FPGA得到的狀態(tài)數(shù)據(jù)發(fā)往USB。

    此外,在中斷程序中,要添加中斷標(biāo)志清除的語(yǔ)句,但在EP6的中斷中,由于設(shè)置了AUTOIN=1,則不需要。

    3.2 設(shè)備驅(qū)動(dòng)程序

    設(shè)備驅(qū)動(dòng)程序是用戶訪問(wèn)設(shè)備的接口。EZ-USB開發(fā)系統(tǒng)提供了裝載驅(qū)動(dòng)程序開發(fā)模板,利用模板開發(fā)設(shè)備驅(qū)動(dòng)比較簡(jiǎn)單。CYPRESS公司針對(duì)CY7C68013A提供了全新的驅(qū)動(dòng)程序CYUSB.SYS。安裝驅(qū)動(dòng)之前,必須先根據(jù)VID/PID正確編輯CYUSB.INF文件,在文件中添加自己的PID/VID代碼和設(shè)備描述;連接設(shè)備時(shí),將根據(jù)硬件上的PID/VID查找INF文件中對(duì)應(yīng)的驅(qū)動(dòng),如果找不到,則在設(shè)備管理器中將顯示“68013 EEPROM MISSING”的字樣。安裝驅(qū)動(dòng)時(shí),找到修改好的CYUSB.INF文件,驅(qū)動(dòng)即可被正確安裝,此時(shí)設(shè)備可以正常使用了[6]。

    3.3 主機(jī)應(yīng)用程序

    主機(jī)應(yīng)用程序包括對(duì)FPGA配置程序用的下載軟件和通信用的數(shù)據(jù)接收軟件。下載軟件用VC6.0進(jìn)行開發(fā),它將ISE軟件開發(fā)的FPGA配置文件(.bit文件)通過(guò)CY7C68013A芯片下載到FPGA中實(shí)現(xiàn)對(duì)FPGA的配置,并返回配置狀態(tài)信息[7]。下面是下載軟件與CY7C68013A芯片的通信過(guò)程與格式:

    (1)下載軟件對(duì)CY7C68013A芯片控制的命令發(fā)往pipeNum=1,結(jié)構(gòu)為:

    數(shù)據(jù)接收軟件可以根據(jù)實(shí)際需要進(jìn)行編寫,本設(shè)計(jì)采用通用的USB調(diào)試助手軟件接收FPGA發(fā)送的二進(jìn)制信息。

    4 系統(tǒng)功能測(cè)試

    主要測(cè)試系統(tǒng)實(shí)現(xiàn)對(duì)FPGA的配置和數(shù)據(jù)通信兩方面的功能。通過(guò)下載軟件的FPGA配置界面,將XC2VP4.bit配置文件下載到FPGA中。FPGA配置程序的主要功能除了完成相關(guān)的初始化配置之外,還向USB口交替發(fā)送 16 bit高電平“1”和低電平“0”。配置成功后會(huì)返回“FPGA配置成功”信息。此時(shí)關(guān)閉下載軟件,打開USB數(shù)據(jù)接收軟件,接收數(shù)據(jù)如圖4所示,表明實(shí)驗(yàn)成功。

    本文介紹了一種利用CYPRESS公司的USB控制器CY7C68013A芯片設(shè)計(jì)USB2.0接口的設(shè)計(jì)方案,并進(jìn)行了實(shí)驗(yàn)驗(yàn)證。由于方案同時(shí)可對(duì)FPGA進(jìn)行配置和數(shù)據(jù)通信,因此它可以為開發(fā)人員實(shí)時(shí)調(diào)試FPGA帶來(lái)方便,同時(shí)也方便系統(tǒng)在后期的更新?lián)Q代。

    [1]錢峰.EZ-USB FX2單片機(jī)原理、編程及應(yīng)用[M].北京:北京航空航天大學(xué)出版社,2006.

    [2]王曉麗,龍兵,李力.基于 FPGA的 USB數(shù)字 I/O設(shè)備設(shè)計(jì)[J].電子測(cè)量技術(shù),2011,34(10):57-59.

    [3]劉森,趙明生.通過(guò) USB接口實(shí)現(xiàn) FPGA的 SelectMap配置[J].微計(jì)算機(jī)信息,2009,25(4-2):1-2,269.

    [4]張俊濤,王豫瑩.基于 FPGA和 USB2.0的高速數(shù)據(jù)采集系統(tǒng)[J].儀表技術(shù)與傳感器,2011(10):46-48.

    [5]馬俊濤,李振宇.SlaveFIFO模式下CY7C68013和FPGA的數(shù)據(jù)通信[J].中國(guó)傳媒大學(xué)學(xué)報(bào)(自然科學(xué)版),2009,16(2):38-44.

    [6]Airhand.EZ-USB 68013A開發(fā)指南[EB/OL].[2009-03-13].http://forum.eepw.com.cn/thread/148408/1.

    [7]葛亮.Visual C++從入門到實(shí)踐[M].北京:清華大學(xué)出版社,2009.

    猜你喜歡
    固件驅(qū)動(dòng)程序端點(diǎn)
    非特征端點(diǎn)條件下PM函數(shù)的迭代根
    不等式求解過(guò)程中端點(diǎn)的確定
    參數(shù)型Marcinkiewicz積分算子及其交換子的加權(quán)端點(diǎn)估計(jì)
    基于固件的遠(yuǎn)程身份認(rèn)證
    基丁能雖匹配延拓法LMD端點(diǎn)效應(yīng)處理
    提取ROM固件中的APP
    電腦愛好者(2015年7期)2015-04-09 08:54:02
    一種通過(guò)USB接口的可靠固件升級(jí)技術(shù)
    奧林巴斯XZ—2新固件升級(jí)
    驅(qū)動(dòng)程序更新與推薦
    驅(qū)動(dòng)程序更新與推薦
    富顺县| 库尔勒市| 拜城县| 崇阳县| 翁源县| 大石桥市| 宣城市| 集安市| 同江市| 新巴尔虎右旗| 太湖县| 密山市| 兴山县| 乐至县| 简阳市| 襄城县| 青岛市| 同德县| 玉树县| 娱乐| 永胜县| 临泉县| 城市| 辽中县| 偏关县| 云龙县| 郎溪县| 泗阳县| 湟源县| 平定县| 微博| 丰台区| 延津县| 大邑县| 增城市| 乌拉特前旗| 胶州市| 靖远县| 邳州市| 明光市| 屏东县|