新聞中心

        EEPW首頁 > EDA/PCB > 設計應用 > 基于CPLD/FPGA的USB讀寫控制器

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

        作者: 時間:2011-06-27 來源:網絡 收藏

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

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


        關鍵詞: CPLD FPGA USB 讀寫

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 宁晋县| 那坡县| 布尔津县| 彭水| 龙井市| 天台县| 连南| 公主岭市| 米林县| 平定县| 岳西县| 蓝田县| 南皮县| 长泰县| 湖州市| 双牌县| 安仁县| 公安县| 新宁县| 玉山县| 泽州县| 海晏县| 秀山| 红河县| 千阳县| 万年县| 观塘区| 合阳县| 雅安市| 呼和浩特市| 高台县| 石首市| 微博| 洪江市| 马公市| 松溪县| 娄底市| 区。| 东乡族自治县| 东山县| 社旗县|