新聞中心

        EEPW首頁(yè) > EDA/PCB > 設(shè)計(jì)應(yīng)用 > 基于CPLD/FPGA的USB讀寫控制器

        基于CPLD/FPGA的USB讀寫控制器

        作者: 時(shí)間:2011-06-27 來(lái)源:網(wǎng)絡(luò) 收藏

        可以看出,當(dāng)令牌包是OUT包(PID為8'hE1)或SETUP包(PID為8'h2D)時(shí),數(shù)據(jù)包由主機(jī)發(fā)往設(shè)備,握手包由設(shè)備返回給主機(jī);如果令牌包是IN包(PID為8'h69)時(shí),則數(shù)據(jù)包由設(shè)備發(fā)給主機(jī),握手包由主機(jī)返回給設(shè)備。在全速模式下,只可能有4種令牌包,除了這3種包外就只可能是SOF包,而該包沒(méi)有后續(xù)的數(shù)據(jù)包和握手包,因此狀態(tài)機(jī)仍為初始狀態(tài)。如果一次傳輸事務(wù)出錯(cuò),沒(méi)有數(shù)據(jù)包或握手包,則主機(jī)和設(shè)備會(huì)通過(guò)超時(shí)來(lái)判斷是否出錯(cuò),而不會(huì)持續(xù)等待。在中,超時(shí)信號(hào)和系統(tǒng)復(fù)位信號(hào)相與之后作為本模塊的復(fù)位信號(hào)。
        2.2 CBW包識(shí)別和數(shù)據(jù)流控制模塊
        Mass Storage Device在完成枚舉之后就進(jìn)入到僅批量傳輸模式。在僅批量傳輸協(xié)議中數(shù)據(jù)傳輸分為命令、數(shù)據(jù)和狀態(tài)3個(gè)階段。主機(jī)發(fā)送的命令被封裝成CBW(Command Block Wrapper)包在命令階段發(fā)送,以定義要操作的命令以及要傳輸?shù)臄?shù)據(jù)方向和長(zhǎng)度。CBW的前4個(gè)字節(jié)是標(biāo)志位,第15個(gè)字節(jié)是操作代碼。
        在本設(shè)計(jì)中,借助序列識(shí)別的思想識(shí)別出寫命令的CBW,并在接下來(lái)的數(shù)據(jù)階段將標(biāo)志位CBW_flag置位為0,使數(shù)據(jù)流控制模塊截?cái)鄰闹鳈C(jī)發(fā)往設(shè)備的數(shù)據(jù)包。下面為狀態(tài)機(jī)的部分代碼:

        可以看出,只有在檢測(cè)到CBW包中的寫命令(操作代碼是8h2A和8hAA)時(shí)才將CBW_flg置0,其余狀態(tài)都為1。
        數(shù)據(jù)流控制模塊完成的工作比較簡(jiǎn)單,主要有3個(gè):
        ①在系統(tǒng)復(fù)位有效或失效時(shí)控制轉(zhuǎn)發(fā)器模擬拔下或插入的過(guò)程;
        ②根據(jù)當(dāng)前的傳輸方向提取總線數(shù)據(jù)以供分析;
        ③cbw_flg無(wú)效時(shí),將上游端口的VP和VM直接賦值給下游端口的VP0
        和VM0,同樣將下游端口的VP和VM賦給上游端口的VP0和VM0,否則將上游端口的VM強(qiáng)制置0,使傳輸過(guò)程失敗以阻止數(shù)據(jù)從主機(jī)向普通存儲(chǔ)設(shè)備傳送數(shù)據(jù)。


        關(guān)鍵詞: CPLD FPGA USB 讀寫

        評(píng)論


        相關(guān)推薦

        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 玛曲县| 新闻| 陇川县| 布尔津县| 固阳县| 莱州市| 牡丹江市| 溆浦县| 乐平市| 湄潭县| 新建县| 时尚| 梓潼县| 丹阳市| 东台市| 临夏县| 巫溪县| 东辽县| 渝北区| 湖北省| 垣曲县| 海盐县| 马龙县| 延川县| 盘山县| 繁峙县| 弋阳县| 新丰县| 尼勒克县| 金溪县| 博兴县| 攀枝花市| 江孜县| 永仁县| 邵阳市| 西充县| 灵璧县| 德化县| 宁阳县| 湖州市| 平定县|