<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

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

基于FPGA的帶寄存器尋址SPI接口設計

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

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

本文引用地址:http://dyxdggzs.com/article/189595.htm

d.jpg


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

e.jpg


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

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

f.jpg


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

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

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



上一頁(yè) 1 2 下一頁(yè)

關(guān)鍵詞: FPGA SPI 寄存器 尋址

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>