當前位置:成語大全網 - 漢語詞典 - spi接口的Verilog程序

spi接口的Verilog程序

組件

spi_mosi(rst,clk,rd,wr,datain,

spics、spiclk、spido、spidi、data out);

投入

rst

//設置信號,低電平有效

投入

clk

//時鐘信號

投入

rd;

//接收數據命令

投入

wr;

//發送數據命令

投入

spidi

//SPI數據輸入信號

投入

[7:0]

數據輸入;

//發送數據輸入

輸出

spics

//SPI片選信號

輸出

spiclk

//SPI時鐘信號

輸出

斯皮多;

//SPI數據輸出信號

輸出

[7:0]

dataout

//接收數據輸出

車輛註冊號

spics

車輛註冊號

spiclk

車輛註冊號

斯皮多;

車輛註冊號

[7:0]

dstate,

數據發送、數據輸出、數據接收

;//,cnt

車輛註冊號

[1:0]

spistate

參數

閑置的

=

2 ' b00

參數

發送數據

=

2 ' b 01;

參數

接收數據

=

2 ' b 10;

最初的

開始

美籍西班牙人

& lt=

1 ' b 1;

spiclk

& lt=

1 ' b 1;

斯皮多

& lt=

1 ' b 1;

結束

總是

@(posedge

時鐘)

開始

如果(!rst)

開始

spistate

& lt=

閑置;

//

(cannot)不能

& lt=

8 ' d0

美籍西班牙人

& lt=

1 ' b 1;

spiclk

& lt=

1 ' b 1;

斯皮多

& lt=

1 ' b 1;

數據狀態

& lt=

8 ' d0

結束

其他

開始

情況

(spistate)

2'b00:

開始

//

美籍西班牙人

& lt=

1 ' b 1;

//

spiclk

& lt=

1 ' b 1;

//

斯皮多

& lt=

1 ' b 1;

//

如果(cnt

==

8'd0)

//

開始

//

(cannot)不能

& lt=

8 ' d0

如果((wr

==

1'b0)

& amp& amp

(研發

==

1'b1))

//發送數據轉換

開始

spistate

& lt=

send _ data

數據狀態

& lt=

8 ' d0

dsend

& lt=

數據輸入;

結束

其他

如果((wr

==

1'b1)

& amp& amp

(研發

==

1'b0))

//接收數據轉換

開始

spistate

& lt=

接收_數據;

數據狀態

& lt=

8 ' d0

結束

其他

開始

spistate

& lt=

閑置;

數據狀態

& lt=

8 ' d0

結束

//

結束

//

其他

//

開始

//

(cannot)不能

& lt=

(cannot)不能

+

8 ' d 1;

//

結束

結束

2'b01:

//發送數據狀態

開始

情況

(數據狀態)

8'd0:

//產生的片選信號有效。

開始

美籍西班牙人

& lt=

1 ' B0;

spiclk

& lt=

1 ' b 1;

斯皮多

& lt=

1 ' b 1;

數據狀態

& lt=

8 ' d 1;

結束

8'd1:

開始

美籍西班牙人

& lt=

1 ' B0;

spiclk

& lt=

1 ' b 1;

斯皮多

& lt=

1 ' b 1;

數據狀態

& lt=

8 ' d2

結束

8英寸d2:

開始

美籍西班牙人

& lt=

1 ' B0;

spiclk

& lt=

1 ' B0;

斯皮多

& lt=

1 ' b 1;

數據狀態

& lt=

8’D3;

結束

8英寸d3:

開始

美籍西班牙人

& lt=

1 ' B0;

spiclk

& lt=

1 ' b 1;

斯皮多

& lt=

dsend[7];

//發送數據的最高位

數據狀態

& lt=

8 ' d4

結束

8英尺4英寸:

開始

美籍西班牙人

& lt=

1 ' B0;

spiclk

& lt=

1 ' B0;

斯皮多

& lt=

dsend[7];

數據狀態

& lt=

8 ' d5

結束

8英寸d5:

開始

美籍西班牙人

& lt=

1 ' B0;

spiclk

& lt=

1 ' b 1;

斯皮多

& lt=

dsend[6];

數據狀態

& lt=

8 ' D6;

結束

8'd6:

開始

美籍西班牙人

& lt=

1 ' B0;

spiclk

& lt=

1 ' B0;

斯皮多

& lt=

dsend[6];

數據狀態

& lt=

8 ' d7

結束

8英尺7英寸:

開始

美籍西班牙人

& lt=

1 ' B0;

spiclk

& lt=

1 ' b 1;

斯皮多

& lt=

dsend[5];

數據狀態

& lt=

8 ' d8

結束

8英尺8英寸:

開始

美籍西班牙人

& lt=

1 ' B0;

spiclk

& lt=

1 ' B0;

斯皮多

& lt=

dsend[5];

數據狀態

& lt=

8 ' d9

結束

8英尺9英寸:

開始

美籍西班牙人

& lt=

1 ' B0;

spiclk

& lt=

1 ' b 1;

斯皮多

& lt=

dsend[4];

數據狀態

& lt=

8 ' d 10;

結束

8'd10:

開始

美籍西班牙人

& lt=

1 ' B0;

spiclk

& lt=

1 ' B0;

斯皮多

& lt=

dsend[4];

數據狀態

& lt=

8 ' d 11;

結束

8'd11:

開始

美籍西班牙人

& lt=

1 ' B0;

spiclk

& lt=

1 ' b 1;

斯皮多

& lt=

dsend[3];

數據狀態

& lt=

8 ' d 12;

結束

8'd12:

開始

美籍西班牙人

& lt=

1 ' B0;

spiclk

& lt=

1 ' B0;

斯皮多

& lt=

dsend[3];

數據狀態

& lt=

8 ' d 13;

結束

8'd13:

開始

美籍西班牙人

& lt=

1 ' B0;

spiclk

& lt=

1 ' b 1;

斯皮多

& lt=

dsend[2];

數據狀態

& lt=

8 ' d 14;

結束

8'd14:

開始

美籍西班牙人

& lt=

1 ' B0;

spiclk

& lt=

1 ' B0;

斯皮多

& lt=

dsend[2];

數據狀態

& lt=

8 ' d 15;

結束

8'd15:

開始

美籍西班牙人

& lt=

1 ' B0;

spiclk

& lt=

1 ' b 1;

斯皮多

& lt=

dsend[1];

數據狀態

& lt=

8 ' d 16;

結束

8'd16:

開始

美籍西班牙人

& lt=

1 ' B0;

spiclk

& lt=

1 ' B0;

斯皮多

& lt=

dsend[1];

數據狀態

& lt=

8 ' d 17;

結束

8'd17:

開始

美籍西班牙人

& lt=

1 ' B0;

spiclk

& lt=

1 ' b 1;

//發送最低有效數據

斯皮多

& lt=

dsend[0];

數據狀態

& lt=

8 ' d 18;

結束

8'd18:

開始

美籍西班牙人

& lt=

1 ' B0;

spiclk

& lt=

1 ' B0;

斯皮多

& lt=

dsend[0];

///spiclk的下降沿允許讀取最低位數據。

數據狀態

& lt=

8 ' d 19;

結束

8'd19:

//芯片選擇信號無效

開始

美籍西班牙人

& lt=

1 ' b 1;

spiclk

& lt=

1 ' b 1;

斯皮多

& lt=

1 ' b 1;

數據狀態

& lt=

8 ' d20;

結束

8'd20:

開始

美籍西班牙人

& lt=

1 ' b 1;

spiclk

& lt=

1 ' b 1;

斯皮多

& lt=

1 ' b 1;

數據狀態

& lt=

8 ' d0

spistate

& lt=

閑置;

結束

系統默認值

開始

美籍西班牙人

& lt=

1 ' b 1;

spiclk

& lt=

1 ' b 1;

斯皮多

& lt=

1 ' b 1;

spistate

& lt=

閑置;

結束

結束案例

結束

2'b10:

//接收數據狀態

開始

情況

(數據狀態)

//芯片選擇信號有效

8'd0:

開始

美籍西班牙人

& lt=

1 ' B0;

spiclk

& lt=

1 ' b 1;

斯皮多

& lt=

1 ' b 1;

數據狀態

& lt=

8 ' d 1;

結束

8'd1:

開始

美籍西班牙人

& lt=

1 ' B0;

spiclk

& lt=

1 ' b 1;

斯皮多

& lt=

1 ' b 1;

數據狀態

& lt=

8 ' d2

結束

8英寸d2:

開始

美籍西班牙人

& lt=

1 ' B0;

spiclk

& lt=

1 ' B0;

斯皮多

& lt=

1 ' b 1;

數據狀態

& lt=

8’D3;

結束

8英寸d3:

開始

美籍西班牙人

& lt=

1 ' B0;

spiclk

& lt=

1 ' b 1;

數據狀態

& lt=

8 ' d4

結束

8英尺4英寸:

開始

美籍西班牙人

& lt=

1 ' B0;

spiclk

& lt=

1 ' B0;

//讀取緊隨上升沿的下降沿數據

接收

& lt=

spidi

//接收數據的最高有效位

數據狀態

& lt=

8 ' d5

結束

8英寸d5:

開始

美籍西班牙人

& lt=

1 ' B0;

spiclk

& lt=

1 ' b 1;

數據狀態

& lt=

8 ' D6;

結束

8'd6:

開始

美籍西班牙人

& lt=

1 ' B0;

spiclk

& lt=

1 ' B0;

接收

& lt=

spidi

數據狀態

& lt=

8 ' d7

結束

8英尺7英寸:

開始

美籍西班牙人

& lt=

1 ' B0;

spiclk

& lt=

1 ' b 1;

數據狀態

& lt=

8 ' d8

結束

8英尺8英寸:

開始

美籍西班牙人

& lt=

1 ' B0;

spiclk

& lt=

1 ' B0;

接收

& lt=

spidi

數據狀態

& lt=

8 ' d9

結束

8英尺9英寸:

開始

美籍西班牙人

& lt=

1 ' B0;

spiclk

& lt=

1 ' b 1;

數據狀態

& lt=

8 ' d 10;

結束

8'd10:

開始

美籍西班牙人

& lt=

1 ' B0;

spiclk

& lt=

1 ' B0;

數據接收

& lt=

spidi

數據狀態

& lt=

8 ' d 11;

結束

8'd11:

開始

美籍西班牙人

& lt=

1 ' B0;

spiclk

& lt=

1 ' b 1;

數據狀態

& lt=

8 ' d 12;

結束

8'd12:

開始

美籍西班牙人

& lt=

1 ' B0;

spiclk

& lt=

1 ' B0;

數據接收

& lt=

spidi

數據狀態

& lt=

8 ' d 13;

結束

8'd13:

開始

美籍西班牙人

& lt=

1 ' B0;

spiclk

& lt=

1 ' b 1;

數據狀態

& lt=

8 ' d 14;

結束

8'd14:

開始

美籍西班牙人

& lt=

1 ' B0;

spiclk

& lt=

1 ' B0;

數據接收

& lt=

spidi

數據狀態

& lt=

8 ' d 15;

結束

8'd15:

開始

美籍西班牙人

& lt=

1 ' B0;

spiclk

& lt=

1 ' b 1;

數據狀態

& lt=

8 ' d 16;

結束

8'd16:

開始

美籍西班牙人

& lt=

1 ' B0;

spiclk

& lt=

1 ' B0;

dreceive[1]

& lt=

spidi

數據狀態

& lt=

8 ' d 17;

結束

8'd17:

開始

美籍西班牙人

& lt=

1 ' B0;

spiclk

& lt=

1 ' b 1;

數據狀態

& lt=

8 ' d 18;

結束

8'd18:

開始

美籍西班牙人

& lt=

1 ' B0;

spiclk

& lt=

1 ' B0;

數據接收[0]

& lt=

spidi

//接收數據的最低有效位

數據狀態

& lt=

8 ' d 19;

結束

8'd19:

開始

美籍西班牙人

& lt=

1 ' B0;

spiclk

& lt=

1 ' b 1;

斯皮多

& lt=

1 ' b 1;

數據狀態

& lt=

8 ' d20;

dataout & lt=

dreceive

結束

8'd20:

開始

美籍西班牙人

& lt=

1 ' b 1;

//芯片選擇信號無效

spiclk

& lt=

1 ' b 1;

斯皮多

& lt=

1 ' b 1;

數據狀態

& lt=

8 ' d0

spistate

& lt=

閑置;

結束

結束案例

結束

默認值:

開始

美籍西班牙人

& lt=

1 ' b 1;

spiclk

& lt=

1 ' b 1;

斯皮多

& lt=

1 ' b 1;

spistate

& lt=

閑置;

結束

結束案例

//對應以上數據傳輸情況。

結束

//對應上面RST沒有按下的情況。

結束

//始終對應於頂部@(姿勢邊緣

時鐘)

末端模塊