《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 可編程邏輯 > 設(shè)計(jì)應(yīng)用 > CY7C68013與FPGA接口的Verilog HDL實(shí)現(xiàn)
CY7C68013與FPGA接口的Verilog HDL實(shí)現(xiàn)
摘要: USB(通用串行總線)是英特爾,、微軟,、IBM,、康柏等公司1994年聯(lián)合制定的一種通用串行總線規(guī)范,,它解決了與網(wǎng)絡(luò)通信問題,而且端口擴(kuò)展性能好,、容易使用,。最新的USB2.0支持3種速率:低速1.5 Mbit/s,全速12 Mbit/s,,高速480 Mbit/s,。這3種速率可以滿足目前大部分外設(shè)接口的需要。
關(guān)鍵詞: FPGA CY7C68013 Verilog HDL Virtex-Ⅱ
Abstract:
Key words :

0 引 言

USB(通用串行總線)是英特爾,、微軟,、IBM、康柏等公司1994年聯(lián)合制定的一種通用串行總線規(guī)范,,它解決了與網(wǎng)絡(luò)通信問題,,而且端口擴(kuò)展性能好、容易使用,。最新的USB2.0支持3種速率:低速1.5 Mbit/s,全速12 Mbit/s,,高速480 Mbit/s,。這3種速率可以滿足目前大部分外設(shè)接口的需要。

本文介紹了目前使用較多的USB2.0控制器CY7C68013芯片與FPGA(現(xiàn)場(chǎng)可編程門陣列)芯片接口的Verilog HDL(硬件描述語言)實(shí)現(xiàn),。本系統(tǒng)可擴(kuò)展,,完全可用于其他高速數(shù)據(jù)采集系統(tǒng)中。

1 系統(tǒng)構(gòu)成

本系統(tǒng)主要是由FPGA和USB2.0控制器CY7C268013組成,,系統(tǒng)框圖及其信號(hào)連接關(guān)系如圖1所示,。可以根據(jù)實(shí)際系統(tǒng)的需要,,用FPGA實(shí)現(xiàn)預(yù)定功能,,如數(shù)據(jù)采集卡、控制硬盤讀寫等,。
 

1.1 控制器CY7C68013

Cypress公司的EZ-USB FX 2是第一個(gè)包含USB2.0的集成微控制器,,它內(nèi)部集成了1個(gè)增強(qiáng)型的8051、1個(gè)智能USB串行接口引擎、1個(gè)USB數(shù)據(jù)收發(fā)器,、3個(gè)8位I/O口,、16位地址線、8.5 kB RAM和4 kBFIFO等,。增強(qiáng)性8051內(nèi)核完全與標(biāo)準(zhǔn)8051兼容,,而性能可達(dá)到標(biāo)準(zhǔn)8051的3倍以上。其框圖如圖2所示,。

1.1.1 CY7C68013結(jié)構(gòu)特點(diǎn)

EZ-USB FX2提供了一種獨(dú)持架構(gòu),,使USB接口和應(yīng)用環(huán)境直接共享FIFO,而微控制器可不參與數(shù)據(jù)傳輸,,但允許以FIFO或RAM的方式訪問這些共享FIFO,,這種被稱之為"量子FIFO"的處理架構(gòu),較好地解決了USB高速模式的帶寬問題,。

FX2芯片在數(shù)據(jù)傳輸時(shí)主要利用了4 kB的FIFO,,分為7個(gè)端點(diǎn):EPOIN&OUT、EP1IN,、EP1OUT,、EP2、EP4,、EP6和EP8,。其中EPO、EPlIN和EP1OUT是3個(gè)64 B的緩存,,只能被固件訪問,,EP0是一個(gè)默認(rèn)的數(shù)據(jù)輸入輸出端口緩存;EP1IN和EP1OUT是單獨(dú)的64 B緩存,,呵以配置這些端點(diǎn)為塊傳輸,、中斷傳輸或同步傳輸;端點(diǎn)2,、4,、6、8是大容量高帶寬的數(shù)據(jù)傳輸端點(diǎn),,可以配置為各種帶寬以滿足實(shí)際需要,,端點(diǎn)2、4是輸出端點(diǎn),,端點(diǎn)6,、8是輸入端點(diǎn)。值得注意的是,,端點(diǎn)4,、8能配置為每幀512 B,而端點(diǎn)2、6卻能配置為每幀512 B或1 024 B,,并可配置為2,、3、4級(jí),,這樣EP2或EP6最大能配置為4 kB的緩存,。

其在內(nèi)部的傳輸控制是通過full(滿)和empty(空)兩個(gè)控制信號(hào)來完成的,當(dāng)full為真時(shí)不能再寫數(shù)據(jù),,當(dāng)empty為真時(shí)不能再對(duì)FIFO進(jìn)行讀,,其內(nèi)部數(shù)據(jù)傳輸示意圖如圖3所示。

如圖3所示,,USB執(zhí)行OUT傳輸,,將EP2端點(diǎn)設(shè)成512 B四重FIFO。在USB端和外部接門端都并不知道有四重FIFO,。USB端只要有1個(gè)FIFO為"半滿",,就可以繼續(xù)發(fā)送數(shù)據(jù)。當(dāng)操作的FIFO寫"滿"時(shí),,F(xiàn)X2自動(dòng)將其轉(zhuǎn)換到外部接口端,,排隊(duì)等候讀取,;并將USB接口隊(duì)列中下一個(gè)為"空"的FIFO轉(zhuǎn)移到USB接口上,,供其繼續(xù)寫數(shù)據(jù)。外部接門端與此類似,,只要有1個(gè)FIFO為"半滿",,就可以繼續(xù)讀取數(shù)據(jù)。當(dāng)前操作的FIFO讀"空"時(shí),,F(xiàn)X2自動(dòng)將其轉(zhuǎn)換到USB接口端,,排隊(duì)等候?qū)懭耄徊⑼獠拷涌陉?duì)列中下一個(gè)為"滿"的FIFO轉(zhuǎn)移到外部接口上,,供其繼續(xù)讀取。
 

1.1.2 Fx2接口方式

FX2有Slave FIFO和GPIF兩種接口方式,。

Slave FIFO是從機(jī)方式,,即FX的CPU不直接參與USB數(shù)據(jù)處理,而是簡(jiǎn)單地把FX作為USB和外部數(shù)據(jù)處理邏輯(如ASIC,、DSP和IDE(串行接口引擎)控制器)之間的通道,,數(shù)據(jù)流并不經(jīng)過CPU,而是通過FX的FIFO直接傳輸,。FIFO通過外部主機(jī)控制,,同時(shí),F(xiàn)IFO提供所需的時(shí)序信號(hào)、握手信號(hào)(滿,、空等)和輸出使能等,。

可編程接口GPIF是主機(jī)方式,GPIF作為內(nèi)部主機(jī)控制端點(diǎn)FIFO,,其core是一個(gè)可編程狀態(tài)機(jī),,可以生成多達(dá)6個(gè)控制輸出信號(hào)和9個(gè)地址輸出信號(hào),能外接6個(gè)外部Ready輸入信號(hào)和2個(gè)內(nèi)部Ready輸入信號(hào),。通過用戶自定義的波形描述符來控制狀態(tài)機(jī),,使用軟件編程讀寫控制波形,幾乎可以對(duì)任何8/16 hit接口的控制器,、存儲(chǔ)器和總線進(jìn)行數(shù)據(jù)的主動(dòng)讀寫,,非常靈活。

2 接口的Verilog HDL編程實(shí)現(xiàn)

在本設(shè)計(jì)巾采用Slave FIFO從機(jī)方式實(shí)現(xiàn)FPGA對(duì)FX的控制,,通過Verilog HDL編程實(shí)現(xiàn),。FPGA可以根據(jù)實(shí)際情況選定。我們?cè)谠O(shè)計(jì)時(shí)選用Xilinx公司的Virtex-Ⅱ設(shè)備(XC2V10004FG456C),。

2.1 異步FIFO讀數(shù)據(jù)

FX讀數(shù)據(jù)也就是數(shù)據(jù)從FX傳到FPGA的過程,,其過程如下:

a)反復(fù)檢測(cè)控制線狀態(tài),當(dāng)讀事件發(fā)生時(shí),,即控制線con_out_z=0和RD_disk=10時(shí),,轉(zhuǎn)到 b;

b)分配FIFOADR[1:0]=00,,這時(shí)FIFO指針會(huì)指向輸出端點(diǎn),,表明使用端點(diǎn)EP2;

c)檢查FIFO是否空,,當(dāng)empy=1時(shí)表示FIFO不空,,轉(zhuǎn)到狀態(tài)d,否則保持在狀態(tài)C,;

d)賦值SLOE=0,,使雙向數(shù)據(jù)線FD在輸出狀態(tài),采樣FD數(shù)據(jù)線上的數(shù)據(jù),,并在SLRD的上升沿使FIFO指針門動(dòng)加1,,跳轉(zhuǎn)到e;

e)假如有更多的數(shù)據(jù)需要讀,,轉(zhuǎn)到狀態(tài)b,,否則轉(zhuǎn)到狀態(tài)a。

對(duì)讀數(shù)據(jù)編程如下:



用Mentor軟件Modelsim進(jìn)行仿真驗(yàn)證,,其仿真波形如圖4所示,。在此過程中,,SLRD信號(hào)特別重要,在SLRD的下降沿把FlFO中的數(shù)據(jù)放到FD數(shù)據(jù)線上,;在SLRD的上升沿把FIFO指針加1,,并指向下一個(gè)單元。
 

2.2 異步FIFO寫數(shù)據(jù)

向FIFO寫數(shù)據(jù)是讀數(shù)據(jù)的逆過程,,也就是把FP-GA數(shù)據(jù)寫入FX的FIFO,,其編程過程如下:

a)查詢控制信號(hào)線con_out_z和WR_disk,看是否有讀事件發(fā)生,,如果有,,就轉(zhuǎn)移到狀態(tài)b,否則保持在狀態(tài)a,;

b)分配FIFOAFR[1:0]=10,,F(xiàn)IFO指針指向輸入端點(diǎn),轉(zhuǎn)向狀態(tài)c,;

c)檢查FIFO的滿標(biāo)志是否為1,,假如fuIl=1,表示FIFO不滿,,轉(zhuǎn)到狀態(tài)d,,否則保持在狀態(tài)c;

d)把外部數(shù)據(jù)indata放在FD上,,同時(shí)把SLWR拉高,,以使得FIFO指針自動(dòng)加1,然后轉(zhuǎn)到狀態(tài)e,;

e)假如有更多的數(shù)據(jù)要傳輸,,轉(zhuǎn)到狀態(tài)b,否則轉(zhuǎn)到狀態(tài)a,。

其程序與寫FIFO數(shù)據(jù)時(shí)一樣,,只是在生成SLWR信號(hào)時(shí),需要注意控制信號(hào)之間的保持延時(shí)時(shí)間約束,,這可以通過仿真結(jié)果進(jìn)行適當(dāng)修改,。



讀數(shù)據(jù)信號(hào)仿真波形如圖5所示。但必須注意的是,,在SLWR的下降沿把indata數(shù)據(jù)線上的數(shù)據(jù)放到FD數(shù)據(jù)線上,;在SLWR的上降沿把FD數(shù)據(jù)線上的數(shù)據(jù)放人FIFO,并同時(shí)使FIFO指針加1,,指向下一個(gè)緩存單元。
 

3 結(jié)束語

現(xiàn)在USB2.O控制器CY7C68013已經(jīng)應(yīng)用到許多數(shù)據(jù)傳輸領(lǐng)域,,由于此芯片靈活的接口和可編程特性簡(jiǎn)化了外部硬件的設(shè)計(jì),,提高了系統(tǒng)可靠性,,也利于PCB(印制電路板)的制作與調(diào)試。本設(shè)計(jì)可擴(kuò)展性好,,因此可用于需要處理大容量的數(shù)據(jù)采集系統(tǒng)中,。本設(shè)計(jì)已經(jīng)用于對(duì)IDE硬盤的讀寫控制中,實(shí)現(xiàn)了對(duì)IDE硬盤的快速讀寫,。

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