基于FPGA的串行外圍接口SPI設(shè)計(jì)與實(shí)現(xiàn)(2)

2012年05月23日 10:18 來(lái)源:互聯(lián)網(wǎng) 作者:秩名 我要評(píng)論(0)

標(biāo)簽:FPGA(1769)SPI(65)串行外圍(1)

  為了實(shí)現(xiàn)對(duì)模塊的控制,除了clk、cs、sck、miso、mosi 這些信號(hào)之外,還需要一些其他信號(hào)。其中,rst 是復(fù)位信號(hào),用于SPI 模塊的初始化。en 是模塊的使能信號(hào),當(dāng)en=1 時(shí)模塊開始工作。

  data_i 是待發(fā)送數(shù)據(jù)的8 位并行輸入端。data_o 是用于接收和發(fā)送數(shù)據(jù)的移位寄存器, 也是數(shù)據(jù)傳輸完成時(shí)已接收數(shù)據(jù)的8位并行輸出端,圖4 是所設(shè)計(jì)的SPI 主機(jī)模塊的框圖。

  圖4 SPI 模塊框圖

  圖4 SPI 模塊框圖

  下面是用Verilog HDL 設(shè)計(jì)的SPI 主機(jī)模塊(CPOL =0,CPHA=1)的主要程序,程序中省去了變量的聲明,并在注釋中對(duì)這些變量作了說(shuō)明。

  

  

  

  

  3 設(shè)計(jì)的仿真、綜合與實(shí)現(xiàn)

  通過(guò)編寫測(cè)試平臺(tái),并使用Mentor Graphics 公司的仿真工具M(jìn)odelSim SE PLUS 6.1f 對(duì)該SPI 模塊進(jìn)行仿真,得到的仿真波形如圖5 所示。

  圖5 SPI 模塊的仿真波形

  圖5 SPI 模塊的仿真波形

  從圖中可以看出,sck 的空閑電平IDLE=0,接收數(shù)據(jù)時(shí)刻是下降沿即ACTIVE-IDLE 邊沿, 故該SPI 模塊的工作模式是CPOL=0,CPHA=1,與設(shè)計(jì)一致。當(dāng)en=0 時(shí),cs=1,SPI 總線處于空閑狀態(tài)。當(dāng)en=1 時(shí),在下降沿cs=0,sck 輸出時(shí)鐘信號(hào),總線數(shù)據(jù)傳輸開始。同時(shí),data_o=data_i, 移位寄存器存入待發(fā)送數(shù)據(jù)11010111.在第1 個(gè)周期上升沿,主機(jī)通過(guò)mosi 發(fā)送data_o 最高位1 至從機(jī)。在第1 個(gè)周期下降沿,data_o 左移一位,多出一個(gè)空閑位data_o[0],主機(jī)通過(guò)miso 接收從機(jī)發(fā)送的數(shù)據(jù)最高位1,并將其存入data_o[0],data_o=10101111.依此類推,后面7 個(gè)周期的數(shù)據(jù)傳輸過(guò)程與第1 個(gè)周期類似。8 位數(shù)據(jù)全部傳輸完成之后,cs=1,一個(gè)完整的SPI 總線傳輸過(guò)程結(jié)束??梢园l(fā)現(xiàn),data_o中的數(shù)據(jù)被一個(gè)一個(gè)從主機(jī)發(fā)送到從機(jī),同時(shí)data_o 也被用來(lái)存儲(chǔ)從機(jī)發(fā)送的數(shù)據(jù)。8 個(gè)周期完成之后,data_o 中存儲(chǔ)的數(shù)據(jù)正是從機(jī)發(fā)送的數(shù)據(jù)10101101.綜合以上分析,該SPI 模塊的功能是正確的。

  通過(guò)實(shí)驗(yàn),在Xilinx ISE 9.1i 中完成了對(duì)該模塊的綜合與實(shí)現(xiàn),并下載到Digilent 公司的FPGA 開發(fā)板Spartan-3E Starter 上進(jìn)行驗(yàn)證,實(shí)驗(yàn)結(jié)果正確。綜合工具使用ISE 自帶的XST,下載工具使用ISE 自帶的iMPACT.

  4 結(jié)語(yǔ)

  本文用Verilog 硬件描述語(yǔ)言設(shè)計(jì)了一個(gè)符合SPI 總線規(guī)范的SPI 主機(jī)模塊,使用仿真工具M(jìn)odelSim 對(duì)其進(jìn)行仿真并給出了仿真波形。在Xilinx ISE 中對(duì)該模塊進(jìn)行綜合與實(shí)現(xiàn),并在FPGA 上完成了下載與驗(yàn)證。該SPI 主機(jī)模塊的功能正確,工作穩(wěn)定,可擴(kuò)展性強(qiáng)。由于SPI 總線應(yīng)用范圍很廣,利用FPGA 可重復(fù)配置的優(yōu)點(diǎn),該模塊可以很方便地應(yīng)用于各種場(chǎng)合。本文作者創(chuàng)新點(diǎn):根據(jù)SPI 總線規(guī)范,用Verilog HDL 設(shè)計(jì)并實(shí)現(xiàn)了一個(gè)帶有移位寄存器的SPI 總線模塊,具有簡(jiǎn)潔高效、便于修改、可擴(kuò)展性強(qiáng)等特點(diǎn)。

上一頁(yè)12