全功能SPI接口的設計與實(shí)現
當分頻時(shí)鐘用于產(chǎn)生SPICLK時(shí),異或門(mén)XOR1的一個(gè)輸入端來(lái)自配置寄存器的Polarity端,用于控制時(shí)鐘極性。節點(diǎn)Y3作為D觸發(fā)器MTN1的輸出端,輸出方程為:

S0為0,D觸發(fā)器上升沿觸發(fā)。S0為1,D觸發(fā)器保持原狀態(tài)。通過(guò)MTN1后的分頻時(shí)鐘,其高電平時(shí)間和低電平時(shí)間相等或相差一個(gè)系統時(shí)鐘周期,這個(gè)時(shí)鐘即為主模式下產(chǎn)生的SPICLK,通過(guò)Phase和Polarity端的選擇將會(huì )有四種不同時(shí)鐘模式。
當分頻時(shí)鐘用于產(chǎn)生SPI控制器的內部時(shí)鐘時(shí),MUX2的選擇端S來(lái)自配置寄存器的主/從模式選擇端,選擇內部時(shí)鐘還是外部時(shí)鐘通過(guò)。輸出端LANCLK用于SPI控制器的數據輸入/輸出鎖存時(shí)鐘。其方程為:

這里的DICLKn為通過(guò)MUX2后的分頻時(shí)鐘。由于時(shí)鐘極性對傳輸協(xié)議沒(méi)有影響,所以上式將使四種時(shí)鐘模式轉變成2種,即上升沿無(wú)延遲和下降沿有延遲,而后在用于控制數據的輸入/輸出鎖存。通過(guò)節點(diǎn)Y2的分頻時(shí)鐘經(jīng)過(guò)控制邏輯傳送到輸出端CNTCLK和DATCLK,這兩個(gè)時(shí)鐘分別用于SPI控制器內部計數器的計數時(shí)鐘和移位寄存器的控制時(shí)鐘。
以上分析均是在SPI控制器工作在主模式的情況,當SPI控制器工作在從模式時(shí),外部時(shí)鐘來(lái)自與門(mén)AND1的一個(gè)輸入,通過(guò)控制邏輯分別到達CNTCLK和DATCLK端。
在時(shí)鐘生成模塊里同時(shí)具有相應控制功能:Reset引腳,模塊的復位端,低有效。SPISTE引腳,SPI控制器的使能端,低有效。Susp_free和Susp_soft引腳,決定了當仿真器突然中斷時(shí)SPI模塊將采取何種動(dòng)作,在時(shí)鐘生成模塊里,Susp_free和Susp_soft被置為00時(shí),將關(guān)斷SPI CLK,使正在傳送的數據立即停止。
3 SPI控制器的仿真實(shí)現
SPI控制器的仿真使用Mentor公司的ModelSim軟件,該軟件可在windows,Linux平臺上使用,支持VHDL或Verilog硬件描述語(yǔ)言(HDL)仿真。它支持所有器件的行為級仿真、VHDL或Verilog仿真激勵。為了測試設計的正確性,編寫(xiě)了testbench模塊,包括產(chǎn)生時(shí)鐘信號,控制寄存器的配置,收發(fā)的數據,產(chǎn)生的中斷等。
3.1 SPI控制器時(shí)鐘仿真驗證
當SPI工作在主模式下,全功能SPI控制器根據從控制器的時(shí)序要求會(huì )提供具有4種不同極性和相位的時(shí)鐘。圖6為SPI控制器內部時(shí)鐘生產(chǎn)模塊的仿真驗證,輸入DICLK為分頻后時(shí)鐘,其對系統時(shí)鐘進(jìn)行了14分頻。時(shí)鐘生產(chǎn)模塊對DICLK進(jìn)行處理,產(chǎn)生LANCLK,CNTCLK,DATCLK和4種不同極性和相位的SPICLK。本文引用地址:http://dyxdggzs.com/article/153493.htm
3.2 SPI控制器工作在主模式下的驗證測試
通過(guò)配置寄存器選擇SPI工作在主模式,此時(shí)主SPI通過(guò)引腳SPICLK提供整個(gè)串行網(wǎng)絡(luò )的串行時(shí)鐘。SPI波特率寄存器決定發(fā)送和接收的傳輸速率。發(fā)送數據時(shí),主控制器先發(fā)送SPICLK信號,然后向SPIDAT和SPITXBUF寄存器寫(xiě)入數據C00F和8FF,寫(xiě)入這兩個(gè)寄存器都可以啟動(dòng)SPISIMO引腳上的數據發(fā)送(先發(fā)送最高有效位)。同時(shí)從控制器通過(guò)引腳SPISIMO將接收到的數據移入SPIDAT的最低位,當選定量的位發(fā)送完時(shí),整個(gè)數據發(fā)送完畢,數據按照右對齊的格式存入SPIRXBUF中,以備系統讀取(一般為cpu),同時(shí)中斷標志位被置為1,當系統發(fā)出指令,讀取存在SPITXBUF的數據時(shí),SPI中斷標志位被清零,仿真結果如圖7所示。
4 結束語(yǔ)
文中提出了一種全功能硬件SPI接口設計方法,實(shí)現了4種具有不同極性和相位的時(shí)鐘,它吸取了傳統軟硬件的優(yōu)點(diǎn),具有速度快、結構簡(jiǎn)單的特點(diǎn),并已通過(guò)功能仿真和FPGA驗證,結果證明本設計是可靠的,可直接用于FPGA中或者作為硬件電路嵌入具體芯片內。
評論