新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 基于FPGA與ADSP TS201的總線接口設計方案

        基于FPGA與ADSP TS201的總線接口設計方案

        作者: 時間:2012-03-27 來源:網絡 收藏

        本文引用地址:http://www.104case.com/article/257618.htm

        2 設計

        由于DSP的協議是相對固定的,只需按照協議進行設計即可,下面以DSP訪問內部寄存器為例詳細介紹。筆者建議采用同步設計,主要信號、輸出信號都由時鐘沿驅動,可以有效避免毛刺。

        為了使所設計的模塊通用化,可設流水深度、數據總線位寬、寄存器位寬、寄存器地址可設。筆者建議采用參數化設計,使用參數傳遞語言GENERIC將參數傳遞給實體,在實體內部使用外if…else結構,這樣在一個程序中可以包含各種情況,但不會增加邏輯的使用量。下面以個別情況為例,詳細介紹。 function ImgZoom(Id)//重新設置圖片大小 防止撐破表格 { var w = $(Id).width; var m = 650; if(w

        2.1 32位數據總線,32位寄存器,寫操作

        前面提過,DSP采用流水協議寫FPGA時,流水深度固定為1,FPGA在前一時鐘沿采到地址、WRx信號有效,在下一時鐘沿就鎖存數據,如圖3所示,FPGA在時鐘沿1采到地址總線上的地址與寄存器地址一致,WRx信號為低,寫標志信號S_W_FLAG置高,由于采用同步設計,FPGA只有在時鐘沿2才能采到S_W_FLAG為高,一旦采到S_W_FLAG為高,FPGA就鎖存數據總線上的數據,即在時鐘沿2鎖存數據。

        2.2 32位數據總線,32位寄存器,讀操作

        與寫寄存器不一樣,讀寄存器時流水深度在1到4之間可設,需要注意的是,為避免總線沖突,DSP不讀時,FPGA數據總線應保持三態。

        如果流水深度設置為1,FPGA在前一時鐘沿采到地址、RD信號有效,應確保在下一時鐘沿數據已經穩定的出現在數據總線上,否則DSP不能正確讀取數據,如圖3所示,在時鐘沿1采到地址總線上的地址與寄存器地址一致,RD信號為低,驅動數據總線,在時鐘沿2數據已穩定出現在數據總線上,DSP可以讀取。

        如果流水深度設置為2,FPGA在前一時鐘沿采到地址、RD信號有效,應確保隔一時鐘周期后,數據穩定的出現在數據總線上,這樣就像寫操作一樣,需要加一個標志,當條件滿足,標志為高,一旦標志為高,輸出數據,如圖4所示。

        綜上所述,流水深度加深一級,FPGA就晚一個時鐘周期驅動數據總線。可以看出,雖然流水深度在1~4之間可設,但是總能保證一個時鐘周期傳輸一個數據。 function ImgZoom(Id)//重新設置圖片大小 防止撐破表格 { var w = $(Id).width; var m = 650; if(w

        2.3 32位數據總線,64位寄存器

        前面提到,突發流水協議與普通流水協議數據傳輸機制是一樣的,只是多了一個指示信號BRST,當寫操作時,FPGA如果在前一時鐘沿采到地址、WRx、BRST信號有效,在下一時鐘沿就鎖存數據到寄存器低位,而如果在前一時鐘沿采到地址、WRL有效,而BRST信號無效,在下一時鐘沿就鎖存數據到寄存器高位。同樣,當讀操作時,FPGA如果采到地址、RD、BRST信號有效,就將寄存器低位驅動到數據總線上,而如果采到地址、RD有效,BRST而信號無效,就將寄存器高位驅動到數據總線上,具體在哪個時鐘沿驅動,由流水深度決定。

        3 DSP設置

         TS201與FPGA通信時,DSP是否采用流水協議,數據總線位寬,以及流水深度都可以通過系統配置寄存器SYSCON進行設置,SYSCON詳細設置見文獻[3],以32位數據總線訪問64位寄存器為例,一級流水,SYSCON設置為

        4 結束語

        文中實現了DSP通過外部總線接口訪問FPGA內部寄存器,但是如果需要傳輸的數據量很大,或者DSP與FPGA的時鐘不同步,就不能用寄存器來實現,需要借助于雙口RAM或者FIFO,讀者可以在本文的基礎上加以改進。


        上一頁 1 2 下一頁

        關鍵詞: FPGA ADSP TS201總線

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 休宁县| 宾阳县| 民县| 嘉定区| 偏关县| 璧山县| 眉山市| 乌什县| 天水市| 寿阳县| 长顺县| 仲巴县| 含山县| 泌阳县| 镇赉县| 大同县| 三门峡市| 肥西县| 炎陵县| 阿拉善盟| 楚雄市| 大安市| 阳朔县| 石嘴山市| 宾阳县| 洛扎县| 朝阳县| 屯昌县| 吉木萨尔县| 三明市| 鄱阳县| 马山县| 陇川县| 萨迦县| 九寨沟县| 乐业县| 宾阳县| 奉化市| 襄汾县| 孟村| 益阳市|