mode 00, write from slave to master works
This commit is contained in:
parent
c4f401cff2
commit
10b9b756c6
34
spi_master.v
34
spi_master.v
|
@ -65,6 +65,23 @@ task write_data();
|
||||||
`endif
|
`endif
|
||||||
endtask
|
endtask
|
||||||
|
|
||||||
|
task setup_bits();
|
||||||
|
/* at Mode 00, the transmission starts with
|
||||||
|
* a rising edge, and at mode 11, it starts with a falling
|
||||||
|
* edge. For both modes, these are READs.
|
||||||
|
*
|
||||||
|
* For mode 01 and mode 10, the first action is a WRITE.
|
||||||
|
*/
|
||||||
|
if (POLARITY == PHASE) begin
|
||||||
|
mosi <= to_slave[WID-1];
|
||||||
|
send_buf <= to_slave << 1;
|
||||||
|
state <= CYCLE_WAIT;
|
||||||
|
end else begin
|
||||||
|
send_buf <= to_slave;
|
||||||
|
state <= ON_CYCLE;
|
||||||
|
end
|
||||||
|
endtask
|
||||||
|
|
||||||
always @ (posedge clk) begin
|
always @ (posedge clk) begin
|
||||||
case (state)
|
case (state)
|
||||||
WAIT_ON_ARM: begin
|
WAIT_ON_ARM: begin
|
||||||
|
@ -72,22 +89,7 @@ always @ (posedge clk) begin
|
||||||
idle_state();
|
idle_state();
|
||||||
finished <= 0;
|
finished <= 0;
|
||||||
end else begin
|
end else begin
|
||||||
/* at Mode 00, the transmission starts with
|
setup_bits();
|
||||||
* a rising edge, and at mode 11, it starts
|
|
||||||
* with a falling edge. For both modes,
|
|
||||||
* these are READs.
|
|
||||||
*
|
|
||||||
* For mode 01 and mode 10, the first
|
|
||||||
* action is a WRITE.
|
|
||||||
*/
|
|
||||||
if (POLARITY == PHASE) begin
|
|
||||||
mosi <= to_slave[WID-1];
|
|
||||||
send_buf <= to_slave << 1;
|
|
||||||
state <= CYCLE_WAIT;
|
|
||||||
end else begin
|
|
||||||
send_buf <= to_slave;
|
|
||||||
state <= ON_CYCLE;
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
ON_CYCLE: begin
|
ON_CYCLE: begin
|
||||||
|
|
17
spi_slave.v
17
spi_slave.v
|
@ -44,6 +44,21 @@ task write_data();
|
||||||
`endif
|
`endif
|
||||||
endtask
|
endtask
|
||||||
|
|
||||||
|
task setup_bits();
|
||||||
|
/* at Mode 00, the transmission starts with
|
||||||
|
* a rising edge, and at mode 11, it starts with a falling
|
||||||
|
* edge. For both modes, these are READs.
|
||||||
|
*
|
||||||
|
* For mode 01 and mode 10, the first action is a WRITE.
|
||||||
|
*/
|
||||||
|
if (POLARITY == PHASE) begin
|
||||||
|
miso <= to_master[WID-1];
|
||||||
|
send_buf <= to_master << 1;
|
||||||
|
end else begin
|
||||||
|
send_buf <= to_master;
|
||||||
|
end
|
||||||
|
endtask
|
||||||
|
|
||||||
always @ (posedge clk) begin
|
always @ (posedge clk) begin
|
||||||
sck_delay <= sck;
|
sck_delay <= sck;
|
||||||
ss_delay <= ss;
|
ss_delay <= ss;
|
||||||
|
@ -53,6 +68,8 @@ always @ (posedge clk) begin
|
||||||
bit_counter <= 0;
|
bit_counter <= 0;
|
||||||
finished <= 0;
|
finished <= 0;
|
||||||
err <= 0;
|
err <= 0;
|
||||||
|
|
||||||
|
setup_bits();
|
||||||
end
|
end
|
||||||
2'b10: begin // falling edge
|
2'b10: begin // falling edge
|
||||||
finished <= 1;
|
finished <= 1;
|
||||||
|
|
Loading…
Reference in New Issue