基于USB總線(xiàn)的ADSP-TS101S鏈路口加載
3.3 LINK口發(fā)送模塊與USB接口模塊之間的接口
USB接口除用于加載TS101外,還可用于TS101正常工作時(shí)與PC機的數據傳輸,故對于不同意義的下行信息,需要根據其功能做不同處理。
上位機向FX2LP發(fā)送數據時(shí),是通過(guò)將需要發(fā)送的數據打包(每包的大小由固件程序決定),每隔固定一段時(shí)間向下發(fā)送一包實(shí)現的。在這里,每包數據包含512個(gè)字節,其中前8個(gè)字節用來(lái)當幀頭,后504個(gè)為需要下傳的數據??赏ㄟ^(guò)幀頭的不同來(lái)區分下行信息的不同意義。其具體含義如表1所示。本文引用地址:http://dyxdggzs.com/article/202238.htm
FPGA輪詢(xún)每包數據的幀頭,如果是TS101與PC機交互數據,則送到雙口RAM中;如果是TS101加載數據,則送到LINK口發(fā)送模塊中;如果是/BMS拉高(低)指令,則通過(guò)相應的管腳拉高(低)/BMS;如果是復位TS101指令,則通知復位邏輯對TS101進(jìn)行復位,同時(shí)復位數據緩沖FIF O。
在實(shí)現基于USB總線(xiàn)的TS101的LINK加載時(shí),上位機將DSP加載文件(.ldr文件)打包后,通過(guò)USB線(xiàn)纜向FX2LP發(fā)送。.ldr文件的大小不一定為504字節的整倍數,因此最后一包數最后可能有很多0。必須把這些0去掉,否則可能在加載TS101時(shí)導致其死機。為解決該問(wèn)題,在幀頭定義中,用幀頭2來(lái)區分是否為最后一包數,如果不是最后一包數,上位機打包時(shí),幀頭2賦為01F8(即504),如果是最后一包數,則把將有效數據長(cháng)度賦給幀頭2。FPGA不斷將TS101加載數據送到LINK口發(fā)送模塊中,當發(fā)現是最后一包數據時(shí),讀取有效數據的長(cháng)度,并啟動(dòng)一個(gè)計數器,當計到該長(cháng)度時(shí),讓FIFO讀使能失效,則只有ldr文件的有效數據被加載到TS101中。
4 TS101程序在線(xiàn)重加載和固化的實(shí)現
首先通過(guò)上位機發(fā)送/BMS拉高指令,讓FPGA將TS101的/BMS管腳拉高,然后發(fā)送復位TS101指令,復位TS101和FIFO;之后,發(fā)送/BMS拉低指令,讓FPGA將TS101的/BMS管腳拉低,最后,將ldr文件打包為T(mén)S101加載數據包并向下發(fā)送。發(fā)送完畢后,TS101即可運行該程序。
若要實(shí)現TS101程序的固化,則可將要燒寫(xiě)的程序生成為ASCII格式的ldr文件,轉化為.dat格式,通過(guò)include指令編譯到EPROM(FLASH)的燒寫(xiě)程序中,生成為L(cháng)ink加載ldr文件,通過(guò)USB總線(xiàn)進(jìn)行加載。燒寫(xiě)完成后,可通過(guò)閃燈或通過(guò)USB總線(xiàn)上傳狀態(tài)信息來(lái)指示燒寫(xiě)結果。
5 結束語(yǔ)
文中提出的基于USB的TS101鏈路口加載方法成功應用于某雷達信號處理平臺的程序加載,其功能驗證是通過(guò)使用本方法加載各種DSP應用程序并進(jìn)行功能測試來(lái)完成的。使用該方案能穩定可靠的實(shí)現TS101程序的重加載,并且能對與之相連的FLASH芯片AT29LV040A進(jìn)行成功燒寫(xiě)。
評論