新聞中心

        EEPW首頁 > 測試測量 > 設計應用 > 一種基于CY7C68013的納米粒度

        一種基于CY7C68013的納米粒度

        作者: 時間:2016-10-18 來源:網絡 收藏

        USB 2.0特點

        本文引用地址:http://www.104case.com/article/201610/308762.htm

        USB全稱是Universal Serial Bus,中文簡稱通用串行總線,是應用在計算機上的一種新型的接口技術。USB 最早于 1994 年底由Intel、IBM、Compad、DEC、NEC、Microsoft、Northern Telecom等7家公司聯合提出。其目的就是為了通過取代現有計算機接口,解決當前外部設備通信中存在的各種問題,同時通過簡化計算機與外圍設備的連接,從而更大程度上實現對計算機的擴展。

        在USB產生之前,計算機接口技術已經有一定程度的發展,已經出現了一系列的通信接口,如RS 232、RS 485、ISA、PCI和并行接口等接口,這些老式的接口存在種類繁多、體積大、規范不統一、不支持熱插拔等缺陷,使用不方便,不適合現今接口通信技術的發展需求。因此,越來越多的設備都開始使用USB接口來實現,如鼠標、USB鍵盤、MP3、數碼相機、打印機、印刷機等。在實際設計工作當中,也越來越多地采用了USB技術,如數據采集、圖像采集等。

        USB接口芯片CY7C68013A

        在實際電路中,我們使用的USB接口芯片是CY7C68013A,實現FPGA和PC機的通信。CY7C68013A是賽普拉斯公司的EZ-USB FX2LP系列芯片。這個系列的芯片是世界上第一個集成USB 2.0協議的微處理器,同時向下兼容USB 1.1。此兼容USB通信協議的處理器既可以作為普通處理器一樣對設備進行控制,又可以實現與上位機的通信,這樣設計的好處可以簡化硬件電路,降低成本。該芯片包括1個增強型8051、串行引擎(SIE)、16KB的RAM、4KB的FIFO、多組標準I/O口、數據總線、地址總線、1個USB 2.0 收發器及1個通用可編程接口。

        EZ-USB FX2LP枚舉和重枚舉

        每個USB設備都有自己獨有的VID與PID,不同的ID可用來區分不同的USB設備,這樣能夠避免不同USB產品造成混亂。USB芯片都有默認的VID、PID,但實際使用中我們需要定義自己的VID與PID,它們一般存儲在外接的EEPROM中,這個步驟是USB產品開發所必須經歷的階段。

        CY7C68013A芯片工作時程序與數據都是放在片內的RAM中的,當芯片上電后,固件程序與數據會自動下載到RAM中,當芯片掉電后,RAM 中的所有程序和數據都會消失。當芯片剛剛上電時,USB設備被按照缺省的設備進行配置,默認的固件代碼被加載到芯片的RAM中,這個自動配置USB設備的過程被稱為“枚舉”。

        對EZ-USB來說,枚舉過程就是USB上電復位到加載固件前這段過程,此時USB設備地址號為默認的0號,枚舉完成后,驅動為cypress...eeprom...missing。然后加載固件,進行重枚舉,重枚舉完成后,顯示驅動為cypress...ez-usb...example或其他自定義設備。

        固件系統框圖

        整個系統的硬件框圖如圖1所示。可以看出USB控制系統在整個系統中起到橋梁作用,用于連接上位機和外部設備。

        圖1 系統硬件框圖

        上位機發送控制指令給USB設備,信息處于下行狀態,解碼后用來控制外圍設備執行相應功能。上位機需要從外設獲得信息(如數據采集),信息處于上行狀態,由USB設備負責控制外設并將數據傳送到上位機,由上位機分析、顯示。

        本設計采用FPGA同步控制和SlaveFIFO接口模式。圖2為USB與FPGA模塊的硬件設計框圖。

        圖2 USB芯片與FPGA接口連接框圖

        USB芯片工作在Slave FIFO時,FPGA模塊和USB模塊直接接口,通過并行數據線和控制線實現數據交互。本設計采用27根信號線,分別是16根數據線 DATA[15:0],3根標志狀態線FLAGA、FLAGB和FLAGC,還有7根控制線IFCLK、USB_FIFOADR[1:0]、USB_SLCS、USB_SLOE、USB_SLWR和USB_SLRD。FPGA 模塊控制整個數據流。FPGA模塊在向USB模塊控制發送數據的時候,通過控制線FIFOADR[1:0]選擇輸出到USB模塊內 FIFO的地址線。圖3為FPGA模塊同步向USB寫數據時序圖。

        圖3 FPGA模塊同步向USB寫數據時序圖

        驅動程序

        對于USB設備,Windows操作系統要想對其實現操作,必須借助于驅動程序來實現。主機和驅動程序直接通信,交換數據,而驅動程序則和硬件資源進行通信,從而很好地控制USB設備。Cypress提供的開發環境中自帶了相關的驅動程序CyLoad.sys和CyUSB.sys,可以直接使用,縮短了系統的開發周期。其中CyLoad.sys用于主機向USB設備下載固件程序,CyUSB.sys實現主機和固件程序通信。為了在CyLoad.sys的幫助下實現固件的自動下載,固件程序CyLoad.HEX必須轉換為適合自動下載的CyLoad.spt文件,并且與CyLoad.sys一起放在CyLoad文件夾下,拷貝到系統system32目錄下。在安裝文件CyUSB.inf中設置的PID,VID必須和描述符中的一致,才能夠自動加載對應固件。

        上位機界面設計

        界面程序在VC++6.0環境下開發,該環境具有編程簡單、快捷等的特點,便于開發可視化程序。Cypress公司為EZ_USB系列芯片提供了開發庫CyAPI.lib,使用其中的控制函數類,可以在VC++6.0環境下開發界面程序。建立MFC工程后,在工程中加入CyAPI.lib,并且在主文件頭部添加EZ-USB開發環境中提供的CyAPI.h頭文件。利用庫中的控制函數,如VendorID、ProductID等,可以獲取USB設備的描述信息,同時也可以編寫相關的控制功能程序。

        USB主機程序可以使用Cypress提供的CyAPI.lib庫來進行編程,CyAPI.lib對應Cypress提供的驅動程序CyUsb.sys,為其提供了簡單而且功能強大的C++編程接口,通過CyAPI.lib庫提供的函數,可以對USB設備進行讀寫操作,這些函數主要是Open、Close和XferData。

        界面中的CheckoutEquipment分類框中為USB描述相關信息,由主機通過標準請求獲得。上位機向FPGA發送命令后,通過接收按鍵,上位機可以接收到FPGA內部的數據,并在編輯框中顯示出來。

        圖4 數據接收界面



        關鍵詞:

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 柳河县| 乐业县| 社会| 枣阳市| 沂水县| 涞水县| 郧西县| 仙游县| 乌鲁木齐县| 弥渡县| 黄浦区| 石河子市| 南昌县| 新化县| 衡山县| 南澳县| 卫辉市| 望奎县| 湘乡市| 南城县| 临邑县| 连云港市| 武鸣县| 五大连池市| 新干县| 龙游县| 灵寿县| 小金县| 胶州市| 家居| 呈贡县| 淮滨县| 唐海县| 资兴市| 襄汾县| 宁国市| 永仁县| 通化市| 佳木斯市| 琼海市| 西安市|