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

          新聞中心

          EEPW首頁 > EDA/PCB > 設(shè)計(jì)應(yīng)用 > 基于FPGA的帶寄存器尋址SPI接口設(shè)計(jì)

          基于FPGA的帶寄存器尋址SPI接口設(shè)計(jì)

          作者: 時間:2013-05-20 來源:網(wǎng)絡(luò) 收藏

          2.2 接口軟件實(shí)現(xiàn)
          在設(shè)計(jì)中,采用100 MHz的內(nèi)部時鐘_CLK,而輸出的接口時鐘SCLK為25 MHz。主機(jī)控制SPI從機(jī)實(shí)現(xiàn)讀操作和寫操作的主模式程序流程圖如圖4所示。

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

          d.jpg


          在寫時序和讀時序中可使用同步有限狀態(tài)機(jī)(FSM)實(shí)現(xiàn)其設(shè)計(jì),其狀態(tài)轉(zhuǎn)移圖如圖5所示。Idle為空閑狀態(tài)時,將檢測寫使能信號Write_ En和讀使能信號Read_En。

          e.jpg


          當(dāng)Write_En有效時,進(jìn)入寫操作時序狀態(tài)。在_CLK時鐘上升沿的控制下,由Idle狀態(tài)進(jìn)入SI狀態(tài),再進(jìn)入S2狀態(tài),接著進(jìn)入S3狀態(tài)。從S3狀態(tài)開始,有限狀態(tài)機(jī)進(jìn)入16次循環(huán)狀態(tài),循環(huán)經(jīng)過S3、S4、S5和S6狀態(tài)。在S3狀態(tài)時,SPI主機(jī)SCLK輸出低電平,CS輸出低電平,MOSI輸出SPI主機(jī)16位移位的最高位,而移位左移一位,最低位補(bǔ)0;在S4狀態(tài)時,SPI主機(jī)SCLK、CS和MOSI輸出保持;在S5狀態(tài)時,SPI主機(jī)SCLK輸出高電平,CS和MOSI輸出保持,16位移位的最低位鎖存MISO上的電平;在S6狀態(tài)時,SPI主機(jī)SCLK、CS和MOSI輸出保持。當(dāng)16次循環(huán)結(jié)束時,SPI主機(jī)MOSI有效輸出和MISO有效輸入也分別結(jié)束。有限狀態(tài)機(jī)依次進(jìn)入S17、S18、S19、S20,最后回到Idle狀態(tài),寫操作時序結(jié)束。
          當(dāng)Read_En有效時,進(jìn)入讀操作時序狀態(tài)。由Idle狀態(tài)進(jìn)入S7狀態(tài),再進(jìn)入S8狀態(tài),接著進(jìn)入S9狀態(tài)。從S9狀態(tài)開始,有限狀態(tài)機(jī)進(jìn)入8次循環(huán)狀態(tài),循環(huán)經(jīng)過S9、S10、S11和S12狀態(tài)。在S9狀態(tài)時,SPI主機(jī)SCLK輸出低電平,CS輸出低電平,MOSI輸出SPI主機(jī)16位移位寄存器的最高位,而移位寄存器左移一位,最低位補(bǔ)移位寄存器的最高位數(shù)據(jù);在S10狀態(tài)時,SPI主機(jī)SCLK、CS和MOSI輸出保持;在S11狀態(tài)時,SPI主機(jī)SCLK輸出高電平,CS和MOSI輸出保持;在S12狀態(tài)時,SPI主機(jī)SCLK、CS和MOSI輸出保持。當(dāng)8次循環(huán)結(jié)束時,SPI主機(jī)MOSI有效輸出結(jié)束,而MISO開始有效輸入。從S13狀態(tài)開始,有限狀態(tài)機(jī)進(jìn)人下一個8次循環(huán)狀態(tài),循環(huán)經(jīng)過S13、S14、S15和S16狀態(tài)。在S13狀態(tài),SPI主機(jī)SCLK、CS和MOSI輸出低電平,16位移位寄存器左移一位,最低位補(bǔ)0;在S14狀態(tài)時,SCLK、CS和MOSI輸出保持;在S15狀態(tài)時,SPI主機(jī)SCLK輸出高電平,CS和MOSI輸出保持,16位移位寄存器的最低位鎖存MISO上的電平;在S16狀態(tài)時候,SCLK、CS和MOSI輸出保持。當(dāng)8次循環(huán)結(jié)束時,SPI主機(jī)MISO有效輸入結(jié)束。有限狀態(tài)機(jī)依次進(jìn)入S17、S18、S19、S20,最后回到Idle狀態(tài),讀操作時序結(jié)束。

          3 SPI接口設(shè)計(jì)的仿真和綜合
          根據(jù)上述SPI主機(jī)接口的設(shè)計(jì)方案,可采用Altera公司的Quartus II 8.1軟件對其進(jìn)行Verilog編程,并在Modelsim SE 6.5軟件中進(jìn)行時序仿真。SPI接口寫操作和寫操作時序仿真圖如圖6所示。可以看出,當(dāng)Write_En為高電平時,將1 b讀/寫位、1 b保留位、6 b地址和8 b數(shù)據(jù)送入SPI主機(jī)串行發(fā)送緩沖器中。或者當(dāng)Read_En為高電平時,將1 b讀/寫位、1 b保留位和6 b地址分別送入SPI主機(jī)串行發(fā)送緩沖器的高8位和低8位中。當(dāng)下一個FPGA_CLK時鐘的上升沿到來時,將SPI主機(jī)串行發(fā)送緩沖器的內(nèi)容送入SPI主機(jī)16 b移位寄存器中,接著在FPGA_ CLK時鐘的控制下,進(jìn)入正常的SPI接口寫操作或讀操作時序過程。當(dāng)CS為高電平時,產(chǎn)生SPI串行通信結(jié)束提示信號SPI_Done_Sig,并將從MISO接收的數(shù)據(jù)送入SPI串行接收緩沖器。

          f.jpg


          從以上仿真結(jié)果可以看出,本設(shè)計(jì)可以滿足SPI總線協(xié)議的設(shè)計(jì)要求,且該SPI模塊功能是可以正常工作的。在Quartus II 8.1中完成該模塊的綜合并下載到FPGA開發(fā)板上進(jìn)行驗(yàn)證。結(jié)果表明,本設(shè)計(jì)可以實(shí)現(xiàn)FPGA芯片和從設(shè)備間的同步串行通信。

          4 結(jié)語
          本文用Verilog HDL語言以有限狀態(tài)機(jī)的形式設(shè)計(jì)了一種符合SPI總線規(guī)范的主機(jī)模塊,并在仿真軟件Modelsim SE 6.5中進(jìn)行了仿真,得到的仿真波形符合設(shè)計(jì)要求。同時,通過在Quartus II 8.1中進(jìn)行綜合并下載到FPGA芯片中實(shí)現(xiàn)了SPI接口功能,也驗(yàn)證了設(shè)計(jì)的正確性。該接口可實(shí)現(xiàn)SPI主機(jī)和帶指定地址控制寄存器的SPI從機(jī)間的同步串行通信,具有一定的實(shí)用價值。

          fpga相關(guān)文章:fpga是什么



          上一頁 1 2 下一頁

          關(guān)鍵詞: FPGA 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); })();