?

基于CY7C68013A的FPGA配置和通信接口設計

2013-12-07 06:17劉志華郭付才彭新偉陳吉東
電子技術應用 2013年2期
關鍵詞:固件驅動程序端點

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

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

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

目前,軟件無線電技術越來越成熟,FPGA的應用也更加廣泛。一塊配備了USB接口的FPGA數據處理模塊可以應用到各種高速數據采集、處理和傳輸場合。而在項目研發過程中,隨時都需要對FPGA進行編程調試?;诖?,本文研究和設計了一種可以同時實現對FPGA進行配置和數據通信的USB接口。

1 系統總體設計

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

2 系統硬件設計

2.1 CY7C68013A器件

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

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

2.2 硬件電路

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

3 系統軟件設計

3.1 CY7C68013A 固件程序設計

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

表1 固件框架文件

用戶在編寫固件程序時,只需對bulkllop.c和dscr.51兩個文件根據具體設計需求修改相應的代碼。固件框架內主要使用的函數如下:

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

TD_Poll()函數:是用戶調度程序,在設備運行時被重復調用,編寫需要反復執行的代碼。其主要功能是對各個端點的狀態進行查詢,實現端點間數據的交互。

TD_suspend()函數:在設備進入掛起狀態前調用,在其中加入適當的代碼,配置設備的工作狀態,可使設備處于低功耗狀態并返回真值。改動TD_Suspend的程序代碼,使其返回為假,可使CY7C68013A不進入掛起狀態。

DR_VendorCmnd()函數:是自定義命令代碼的書寫處。fw.c固件會自動調用函數里的代碼。

ISR_Ep0in()interrupt 0~ISR_Ep8inout()interrupt 0 函數:是當使用端點中斷傳輸時的中斷代碼書寫處。

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

針對本文提出的采用CY7C68013A芯片設計USB接口,以實現對FPGA的配置和通信功能,其相關的設置如表2所示。

表2 CY7C68013A端點配置表

在TD_Init()中對端點的設置如下:

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

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

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

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

此外,在中斷程序中,要添加中斷標志清除的語句,但在EP6的中斷中,由于設置了AUTOIN=1,則不需要。

3.2 設備驅動程序

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

3.3 主機應用程序

主機應用程序包括對FPGA配置程序用的下載軟件和通信用的數據接收軟件。下載軟件用VC6.0進行開發,它將ISE軟件開發的FPGA配置文件(.bit文件)通過CY7C68013A芯片下載到FPGA中實現對FPGA的配置,并返回配置狀態信息[7]。下面是下載軟件與CY7C68013A芯片的通信過程與格式:

(1)下載軟件對CY7C68013A芯片控制的命令發往pipeNum=1,結構為:

數據接收軟件可以根據實際需要進行編寫,本設計采用通用的USB調試助手軟件接收FPGA發送的二進制信息。

4 系統功能測試

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

本文介紹了一種利用CYPRESS公司的USB控制器CY7C68013A芯片設計USB2.0接口的設計方案,并進行了實驗驗證。由于方案同時可對FPGA進行配置和數據通信,因此它可以為開發人員實時調試FPGA帶來方便,同時也方便系統在后期的更新換代。

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

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

[3]劉森,趙明生.通過 USB接口實現 FPGA的 SelectMap配置[J].微計算機信息,2009,25(4-2):1-2,269.

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

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

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

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

猜你喜歡
固件驅動程序端點
非特征端點條件下PM函數的迭代根
不等式求解過程中端點的確定
計算機硬件設備驅動程序分析
基于UEFI固件的攻擊驗證技術研究*
基于固件的遠程身份認證
基丁能雖匹配延拓法LMD端點效應處理
提取ROM固件中的APP
基于MPC8280的CPU單元與內部總線驅動程序設計
多路手機固件升級工具設計
妙用鼠標驅動
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合