<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 基于SOC的SPI接口設(shè)計與驗證

          基于SOC的SPI接口設(shè)計與驗證

          作者: 時間:2014-03-18 來源:網(wǎng)絡(luò) 收藏

          這部分設(shè)計作為的從設(shè)備與主機(jī)進(jìn)行數(shù)據(jù)交換,與spi_shift模塊時鐘同步。通信開始后,從機(jī)數(shù)據(jù)最高位開始串行輸入到MISO,主機(jī)發(fā)出的數(shù)據(jù)從最低位串行輸出到MOSI。

          本文引用地址:http://www.ex-cimer.com/article/234922.htm

          3 接口的功能仿真

          本設(shè)計采用Verilog HDL編寫Testbench,使用ModelSim軟件進(jìn)行功能仿真,并用Debussy軟件聯(lián)合調(diào)試并觀察波形。為了實現(xiàn)主從設(shè)備通信的仿真,編寫了一個p_master模塊并例化到測試代碼里面來模擬主機(jī)SoC對spi_master的操作,主要包括一個數(shù)據(jù)寫task、一個數(shù)據(jù)讀task、一個數(shù)據(jù)比較task。分別測試了1 b,8 b,16 b,32 b,64 b,128 b的數(shù)據(jù)。仿真全部通過,局部仿真波形如圖5所示。

           

           

          以第一次傳輸為例進(jìn)行分析,傳輸時調(diào)用寫任務(wù),分別向寄存器DIVIDER、TX_0、CTRL寫入32’h01、32’h5a、32’h308,設(shè)定spi_sla ve.data為32’ha5967e5a。由波形看出,數(shù)據(jù)在ss[0]有效傳輸,傳輸完成后MIS0=8’b10100101(即32’ha5),MOSI=8’b01011010(即32’h5a),滿足了上升沿發(fā)送下降沿接收及高位先開始的數(shù)據(jù)傳輸時序。在100 MHz的主時鐘頻率下,得到串行時鐘頻率25 MHz,為4分頻,符合式(1)的計算。

          4 接口的SoC平臺驗證

          驗證用SoC平臺具有良好的可重用性和通用性,可以方便的掛接帶有AHB/APB總線接口的IP核,并通過內(nèi)部寄存器對其進(jìn)行配置和驗證,避免了對不同IP設(shè)計需要不同的Testbench平臺,提高了IP驗證的效率。本設(shè)計用到的SoC驗證平臺如圖6所示,驗證環(huán)境為Linux操作系統(tǒng),仿真工具為VCS。

           

           

          在SoC驗證平臺中,SPI接口作為外設(shè)連接在APB總線的Slave4端口上,地址空間為0xA400_0000~0XA4FF_FFFF。用C測試程序向Tx0寫32’h67,spi_slave.data=32’h0,局部仿真波形如圖7所示,MOSI=8’b01100111(即32’h67),MISO=8’b0,結(jié)果表明符合要求。

           

           

          5 結(jié)語

          本文實現(xiàn)了基于AMBA 2.0總線的、可作為IP核用于SoC設(shè)計的SPI接口的設(shè)計,并且經(jīng)過全面的仿真驗證,可以看出本設(shè)計滿足性能要求。


          上一頁 1 2 下一頁

          關(guān)鍵詞: SOC SPI

          評論


          相關(guān)推薦

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

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();