通過(guò)USB接口實(shí)現(xiàn)FPGA的SelectMap配置
3.配置時(shí)序的發(fā)生
配置數(shù)據(jù)需要在配置時(shí)序的配合下寫入 FPGA[5]。GPIF是一個(gè)可編程的狀態(tài)機(jī),它可以采集 5個(gè)輸入引腳(RDY)的狀態(tài),并通過(guò) 5個(gè)輸出引腳(CTL)對(duì)外產(chǎn)生任意時(shí)序,因此可用來(lái)產(chǎn)生 FPGA的配置時(shí)序。表 1說(shuō)明了 FPGA在 SelectMap模式下各配置引腳的作用[5],如圖 1所示,CCLK連接 EZ-USB提供的界面時(shí)鐘 IFCLK,D[7:0]連接端點(diǎn) FIFO,其它配置引腳連接著 GPIF狀態(tài)機(jī)的 RDY及 CTL引腳。為了確保各引腳的輸入有充足的建立時(shí)間供 FPGA采樣,F(xiàn)PGA的時(shí)鐘輸入應(yīng)與 GPIF的內(nèi)部時(shí)鐘倒相。本文引用地址:http://butianyuan.cn/article/202585.htm
本設(shè)計(jì)方案使用了一個(gè)控制端點(diǎn)(端點(diǎn) 0)和一個(gè)大端點(diǎn)(端點(diǎn) 2)傳輸數(shù)據(jù)。其中控制端點(diǎn)是所有 USB設(shè)備所必備的,它用于在設(shè)備枚舉時(shí)傳輸 USB請(qǐng)求和相關(guān)數(shù)據(jù),在本設(shè)計(jì)中,控制端點(diǎn)還用來(lái)傳輸專門設(shè)計(jì)的 USB廠商請(qǐng)求來(lái)控制配置進(jìn)程、獲取配置狀態(tài)。大端點(diǎn)用來(lái)傳輸配置數(shù)據(jù),由于配置數(shù)據(jù)需要及時(shí)、無(wú)誤的傳輸,因此使用可以同時(shí)保證傳輸準(zhǔn)確性和最大延時(shí)的中斷傳輸方式,并設(shè)置端點(diǎn)緩存為 1KB、做 4倍緩沖,最大傳輸間隔為一個(gè)微幀(125us),且每個(gè)傳輸間隔內(nèi)傳輸 3個(gè)有效載荷為 1KB的包(最后一個(gè)包的載荷可能小于 1KB),這樣配置數(shù)據(jù)在 USB通道中的傳輸速率可達(dá)到 3*1KB*(1/125us) =24000KB/s。
根據(jù)配置時(shí)序所設(shè)計(jì)的 GPIF狀態(tài)機(jī)的狀態(tài)轉(zhuǎn)移圖如圖 2所示。配置時(shí)鐘為 48MHz,所以 PROG低脈沖要維持 25個(gè)時(shí)鐘周期,狀態(tài)機(jī)會(huì)根據(jù)端點(diǎn) FIFO的空滿狀態(tài)控制 FPGA的 CS引腳,確保 FPGA在 FIFO有配置數(shù)據(jù)輸出的情況下進(jìn)行數(shù)據(jù)采樣,數(shù)據(jù)輸出在字節(jié)計(jì)數(shù)達(dá)到 FPGA配置比特流文件的字節(jié)數(shù)值時(shí)停止,500萬(wàn)門的 XC3S5000為 13271936 bit[5]。
評(píng)論