基于USB總線的ADSP-TS101S鏈路口加載
圖4 中的FIFO負責對輸出數據進行緩沖,當輸入數據的速率高于Link Port時鐘的頻率時,Link Port的數據可以先存在FIFO數據中,當存入一定數量以后,再以Link Port的時鐘把數據讀出。當輸入數據的速率低于Link Port的時鐘數率的時候,Link Port的數據同樣可以先存在FIFO中,當存入整數倍的4字數據量后,再以Link Port的時鐘的數率發送出去。
圖4中的控制模塊是Link Port發送模塊的關鍵模塊,主要負責產生讀FIFO的讀使能信號和Link Port的發送時鐘根據Link Port發送的時序特點,使用狀態機來實現數據流的控制。當Link Port沒有工作時,保持等待狀態。需要傳輸數據時,首先檢查LxCLKIN是否為高電平,若是,則說明接收端為接收模式并且接收緩沖器為空,可以初始化一次發送,否則要等待。開始傳輸數據時,數據首先被寫入FIFO中,當判斷
到FIFO的輸出信號EMPTY為高時,將處于默認高電平的LxCLKOUT信號拉低,在經過6個時鐘周期的低電平后(在此期間檢測LxCLKIN是否一直為高電平),LxCLKOUT拉高形成第一個LINK時鐘上升沿,這個時候應該在數據線上產生FIFO內的第一個輸出數據。LxCLKOUT下一周期拉低,第2個數據輸出,這樣經過16個時鐘周期以后表示一次4字傳輸完畢。然后檢測FIFO中剩余的數據FIFO_RDATA_COUNT,若大于4則繼續上面的傳輸操作,否則,說明FIFO中只剩最后一個4字,這次傳輸LxCLKOUT的最后一個時鐘上升沿產生以后,不再變低,一直保持高電平。然后,把本模塊中的所有臨時寄存器和FIFO復位。在產生完足夠長度脈沖長度的清零信號后狀態機重新進入等待狀態。
3.2 USB接口模塊
USB接口模塊采用FPGA控制USB協議解析芯片來實現。其實現框圖如圖5所示。本文引用地址:http://www.j9360.com/article/202238.htm
本方案中,USB2.0協議解析芯片選用CYPRESS公司的CY7C68013A,它將一個USB外設所需的所有功能集成在一塊芯片上。芯片提供了3種傳輸數據的方式,文中選擇從FIFO(SlaveFIFO)模式。在SlaveFIFO模式下,8051微控制器不在數據的傳輸通路上,只負責設備的初始化和相應主機的控制傳輸請求,高速大批量的數據傳輸通過外部的主控者通過SlaveFIFO接口直接將數據填充到FX2LP的端點中(或者從里面讀出),然后由硬件控制將數據傳輸給主機。
Slave FIFO的讀寫方式有兩種:同步讀寫以IFCLK為時鐘,IFCLK可以外部輸入,也可以使用內部的30 MHz或者48 MHz時鐘;異步讀寫時IFCLK信號無效,只需要提供讀寫信號即可進行數據讀寫。本文選擇同步讀寫。
FPGA采用Xilinx公司的XC3S1000。FPGA在其內部建立2個雙口RAM,來緩存收發數據;并與協議解析芯片的各控制信號相連,實現對其的讀寫控制。文中僅使用這個芯片的接收邏輯實現加載文件的USB總線傳輸,發送邏輯只用來做輔助調試和狀態監測。
評論