cores/spi/spi_bone: Cosmetic cleanups on FSM (rename states).
This commit is contained in:
parent
bdfb032be9
commit
4e8e97a22a
|
@ -188,13 +188,13 @@ class SPIBone(Module, ModuleDoc, AutoDoc):
|
||||||
|
|
||||||
# Signals.
|
# Signals.
|
||||||
# --------
|
# --------
|
||||||
count = Signal(8)
|
count = Signal(8)
|
||||||
offset = Signal(5)
|
offset = Signal(5)
|
||||||
command = Signal(8)
|
synchro = Signal(8)
|
||||||
address = Signal(32)
|
command = Signal(8)
|
||||||
value = Signal(32)
|
address = Signal(32)
|
||||||
write = Signal()
|
data = Signal(32)
|
||||||
sync_byte = Signal(8)
|
write = Signal()
|
||||||
|
|
||||||
# FSM.
|
# FSM.
|
||||||
# ----
|
# ----
|
||||||
|
@ -203,10 +203,10 @@ class SPIBone(Module, ModuleDoc, AutoDoc):
|
||||||
self.submodules += fsm
|
self.submodules += fsm
|
||||||
self.comb += fsm.reset.eq(cs_n)
|
self.comb += fsm.reset.eq(cs_n)
|
||||||
|
|
||||||
# Connect the Wishbone bus up to our values.
|
# Connect the Wishbone bus up to our datas.
|
||||||
self.comb += [
|
self.comb += [
|
||||||
bus.adr.eq(address[2:]),
|
bus.adr.eq(address[2:]),
|
||||||
bus.dat_w.eq(value),
|
bus.dat_w.eq(data),
|
||||||
bus.sel.eq(2**len(bus.sel) - 1)
|
bus.sel.eq(2**len(bus.sel) - 1)
|
||||||
]
|
]
|
||||||
|
|
||||||
|
@ -224,10 +224,10 @@ class SPIBone(Module, ModuleDoc, AutoDoc):
|
||||||
miso_en.eq(0),
|
miso_en.eq(0),
|
||||||
NextValue(miso, 1),
|
NextValue(miso, 1),
|
||||||
If(clk_posedge,
|
If(clk_posedge,
|
||||||
NextValue(sync_byte, Cat(mosi, sync_byte))
|
NextValue(synchro, Cat(mosi, synchro))
|
||||||
),
|
),
|
||||||
If(sync_byte[0:7] == 0b101011,
|
If(synchro[0:7] == 0b101011,
|
||||||
NextState("GET_TYPE_BYTE"),
|
NextState("GET-COMMAND"),
|
||||||
NextValue(count, 0),
|
NextValue(count, 0),
|
||||||
NextValue(command, mosi)
|
NextValue(command, mosi)
|
||||||
)
|
)
|
||||||
|
@ -237,25 +237,25 @@ class SPIBone(Module, ModuleDoc, AutoDoc):
|
||||||
miso_en.eq(0),
|
miso_en.eq(0),
|
||||||
NextValue(miso, 1),
|
NextValue(miso, 1),
|
||||||
If(clk_posedge,
|
If(clk_posedge,
|
||||||
NextState("GET_TYPE_BYTE"),
|
NextState("GET-COMMAND"),
|
||||||
NextValue(command, mosi)
|
NextValue(command, mosi)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
# Determine if it's a read or a write
|
# Determine if it's a read or a write
|
||||||
fsm.act("GET_TYPE_BYTE",
|
fsm.act("GET-COMMAND",
|
||||||
miso_en.eq(0),
|
miso_en.eq(0),
|
||||||
NextValue(miso, 1),
|
NextValue(miso, 1),
|
||||||
If(count == 8,
|
If(count == 8,
|
||||||
# Write value
|
# Write data
|
||||||
If(command == 0,
|
If(command == 0,
|
||||||
NextValue(write, 1),
|
NextValue(write, 1),
|
||||||
NextState("READ_ADDRESS")
|
NextState("GET-ADDRESS")
|
||||||
|
|
||||||
# Read value
|
# Read data
|
||||||
).Elif(command == 1,
|
).Elif(command == 1,
|
||||||
NextValue(write, 0),
|
NextValue(write, 0),
|
||||||
NextState("READ_ADDRESS")
|
NextState("GET-ADDRESS")
|
||||||
).Else(
|
).Else(
|
||||||
NextState("END")
|
NextState("END")
|
||||||
),
|
),
|
||||||
|
@ -265,13 +265,13 @@ class SPIBone(Module, ModuleDoc, AutoDoc):
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
fsm.act("READ_ADDRESS",
|
fsm.act("GET-ADDRESS",
|
||||||
miso_en.eq(0),
|
miso_en.eq(0),
|
||||||
If(count == (32 + 8),
|
If(count == (32 + 8),
|
||||||
If(write,
|
If(write,
|
||||||
NextState("READ_VALUE"),
|
NextState("GET-DATA"),
|
||||||
).Else(
|
).Else(
|
||||||
NextState("READ_WISHBONE"),
|
NextState("BUS-MMAP-READ"),
|
||||||
)
|
)
|
||||||
),
|
),
|
||||||
If(clk_posedge,
|
If(clk_posedge,
|
||||||
|
@ -279,69 +279,69 @@ class SPIBone(Module, ModuleDoc, AutoDoc):
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
fsm.act("READ_VALUE",
|
fsm.act("GET-DATA",
|
||||||
miso_en.eq(0),
|
miso_en.eq(0),
|
||||||
If(count == (32 + 32 + 8),
|
If(count == (32 + 32 + 8),
|
||||||
NextState("WRITE_WISHBONE"),
|
NextState("BUS-MMAP-WRITE"),
|
||||||
),
|
),
|
||||||
If(clk_posedge,
|
If(clk_posedge,
|
||||||
NextValue(value, Cat(mosi, value))
|
NextValue(data, Cat(mosi, data))
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
fsm.act("WRITE_WISHBONE",
|
fsm.act("BUS-MMAP-WRITE",
|
||||||
bus.stb.eq(1),
|
bus.stb.eq(1),
|
||||||
bus.we.eq(1),
|
bus.we.eq(1),
|
||||||
bus.cyc.eq(1),
|
bus.cyc.eq(1),
|
||||||
miso_en.eq(1),
|
miso_en.eq(1),
|
||||||
If(bus.ack | bus.err,
|
If(bus.ack | bus.err,
|
||||||
NextState("WAIT_BYTE_BOUNDARY")
|
NextState("WAIT-BYTE-BOUNDARY")
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
fsm.act("READ_WISHBONE",
|
fsm.act("BUS-MMAP-READ",
|
||||||
bus.stb.eq(1),
|
bus.stb.eq(1),
|
||||||
bus.we.eq(0),
|
bus.we.eq(0),
|
||||||
bus.cyc.eq(1),
|
bus.cyc.eq(1),
|
||||||
miso_en.eq(1),
|
miso_en.eq(1),
|
||||||
If(bus.ack | bus.err,
|
If(bus.ack | bus.err,
|
||||||
NextState("WAIT_BYTE_BOUNDARY"),
|
NextState("WAIT-BYTE-BOUNDARY"),
|
||||||
NextValue(value, bus.dat_r)
|
NextValue(data, bus.dat_r)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
fsm.act("WAIT_BYTE_BOUNDARY",
|
fsm.act("WAIT-BYTE-BOUNDARY",
|
||||||
miso_en.eq(1),
|
miso_en.eq(1),
|
||||||
If(clk_negedge,
|
If(clk_negedge,
|
||||||
If(count[0:3] == 0,
|
If(count[0:3] == 0,
|
||||||
NextValue(miso, 0),
|
NextValue(miso, 0),
|
||||||
# For writes, fill in the 0 byte response
|
# For writes, fill in the 0 byte response
|
||||||
If(write,
|
If(write,
|
||||||
NextState("WRITE_WR_RESPONSE"),
|
NextState("WRITE-WR-RESPONSE"),
|
||||||
).Else(
|
).Else(
|
||||||
NextState("WRITE_RESPONSE"),
|
NextState("WRITE-RESPONSE"),
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
# Write the "01" byte that indicates a response
|
# Write the "01" byte that indicates a response
|
||||||
fsm.act("WRITE_RESPONSE",
|
fsm.act("WRITE-RESPONSE",
|
||||||
miso_en.eq(1),
|
miso_en.eq(1),
|
||||||
If(clk_negedge,
|
If(clk_negedge,
|
||||||
If(count[0:3] == 0b111,
|
If(count[0:3] == 0b111,
|
||||||
NextValue(miso, 1),
|
NextValue(miso, 1),
|
||||||
).Elif(count[0:3] == 0,
|
).Elif(count[0:3] == 0,
|
||||||
NextValue(offset, 31),
|
NextValue(offset, 31),
|
||||||
NextState("WRITE_VALUE")
|
NextState("WRITE-DATA")
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
# Write the actual value
|
# Write the actual data
|
||||||
fsm.act("WRITE_VALUE",
|
fsm.act("WRITE-DATA",
|
||||||
miso_en.eq(1),
|
miso_en.eq(1),
|
||||||
NextValue(miso, value >> offset),
|
NextValue(miso, data >> offset),
|
||||||
If(clk_negedge,
|
If(clk_negedge,
|
||||||
NextValue(offset, offset - 1),
|
NextValue(offset, offset - 1),
|
||||||
If(offset == 0,
|
If(offset == 0,
|
||||||
|
@ -351,7 +351,7 @@ class SPIBone(Module, ModuleDoc, AutoDoc):
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
fsm.act("WRITE_WR_RESPONSE",
|
fsm.act("WRITE-WR-RESPONSE",
|
||||||
miso_en.eq(1),
|
miso_en.eq(1),
|
||||||
If(clk_negedge,
|
If(clk_negedge,
|
||||||
If(count[0:3] == 0,
|
If(count[0:3] == 0,
|
||||||
|
@ -363,7 +363,7 @@ class SPIBone(Module, ModuleDoc, AutoDoc):
|
||||||
if wires in [2]:
|
if wires in [2]:
|
||||||
fsm.act("END",
|
fsm.act("END",
|
||||||
miso_en.eq(0),
|
miso_en.eq(0),
|
||||||
NextValue(sync_byte, 0),
|
NextValue(synchro, 0),
|
||||||
NextState("IDLE")
|
NextState("IDLE")
|
||||||
)
|
)
|
||||||
if wires in [3, 4]:
|
if wires in [3, 4]:
|
||||||
|
|
Loading…
Reference in New Issue