Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Moved the memories spi block back into the pinmux. #326

Merged
merged 4 commits into from
Nov 6, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions data/pins_sonata.xdc
Original file line number Diff line number Diff line change
Expand Up @@ -291,6 +291,7 @@ set_property -dict { PACKAGE_PIN C10 IOSTANDARD LVCMOS33 } [get_ports appspi_d1]
set_property -dict { PACKAGE_PIN A10 IOSTANDARD LVCMOS33 } [get_ports appspi_d2]
set_property -dict { PACKAGE_PIN A9 IOSTANDARD LVCMOS33 } [get_ports appspi_d3]
set_property -dict { PACKAGE_PIN D10 IOSTANDARD LVCMOS33 } [get_ports appspi_cs]
set_property PULLTYPE PULLUP [get_ports appspi_d1]
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm wondering if we should add pull ups to all of the CIPO lines. If it makes sense here it makes sense everywhere.

Copy link
Member Author

@HU90m HU90m Nov 6, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The microsd card lines appear to be pulled high on the board. Ethernet MAC chip (KSZ8851SNL/SNLI) is high impedance by default, so may make sense to pull high. I don't know what the behavior of the LCD is. And the LCD doesn't have a CIPO line.

What would you like me to do for this PR?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@alees24 🪣 (passing the buck on the ethmac CIPO)


## Ethernet MAC
set_property -dict { PACKAGE_PIN J5 IOSTANDARD LVCMOS18 } [get_ports ethmac_rst]
Expand Down
145 changes: 89 additions & 56 deletions data/top_config.toml
Original file line number Diff line number Diff line change
Expand Up @@ -44,14 +44,14 @@ xbar = { pipeline = "true", req_fifo_pass = "false", rsp_fifo_pass = "false" }

[[blocks]]
name = "spi"
instances = 2
instances = 3
ios = [
{ name = "cipo", type = "input", default = 0 },
{ name = "copi", type = "output" },
{ name = "sclk", type = "output" },
{ name = "cs", type = "output", length = 4 },
]
memory_start = 0x80303000
memory_start = 0x80302000
memory_size = 0x00001000

# UARTS
Expand Down Expand Up @@ -85,6 +85,15 @@ block_ios = [{ block = "uart", instance = 2, io = "tx" }]
name = "rs232_rx"
block_ios = [{ block = "uart", instance = 2, io = "rx" }]

[[pins]]
name = "rs485_rx"
block_ios = [{ block = "uart", instance = 2, io = "rx" }]

[[pins]]
name = "rs485_tx"
block_ios = [{ block = "uart", instance = 2, io = "tx" }]
no_default_out = true

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I did put them at the end intentionally to avoid altering other mappings. In particular the UART 2 RX input selector. Previously RS485 sat at the end so anything else that wanted to mux a pin to the UART 2 RX input wouldn't now need to change which input it selected.

The real issue here was lack of constants for the actual selectors being generated by the pinmux generator, though maybe we do have that and I haven't noticed!

Certainly this change will need a fix in the rs485 check at least.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I appreciate wanting to avoid breaking other mappings, but I believe the RS485 check is the only software that is affected by this change. So I guess it's a question of what's preferred.

What register mapping do you prefer?

## QWIIC (Sparkfun) buses
[[pins]]
name = "scl0"
Expand All @@ -102,7 +111,6 @@ block_ios = [{ block = "i2c", instance = 1, io = "scl" }]
name = "sda1"
block_ios = [{ block = "i2c", instance = 1, io = "sda" }]


## Raspberry Pi HAT
[[pins]]
name = "rph_g0"
Expand Down Expand Up @@ -145,37 +153,37 @@ name = "rph_g6"
block_ios = [{block = "gpio", instance = 0, io = "ios", io_index = 6}]

[[pins]]
name = "rph_g7_ce1"
name = "rph_g7"
block_ios = [
{block = "spi", instance = 0, io = "cs", io_index = 1},
{block = "spi", instance = 1, io = "cs", io_index = 1},
{block = "gpio", instance = 0, io = "ios", io_index = 7},
]

[[pins]]
name = "rph_g8_ce0"
name = "rph_g8"
block_ios = [
{block = "spi", instance = 0, io = "cs", io_index = 0},
{block = "spi", instance = 1, io = "cs", io_index = 0},
{block = "gpio", instance = 0, io = "ios", io_index = 8},
]

[[pins]]
name = "rph_g9_cipo"
name = "rph_g9"
block_ios = [
{block = "spi", instance = 0, io = "cipo"},
{block = "spi", instance = 1, io = "cipo"},
{block = "gpio", instance = 0, io = "ios", io_index = 9},
]

[[pins]]
name = "rph_g10_copi"
name = "rph_g10"
block_ios = [
{block = "spi", instance = 0, io = "copi"},
{block = "spi", instance = 1, io = "copi"},
{block = "gpio", instance = 0, io = "ios", io_index = 10},
]

[[pins]]
name = "rph_g11_sclk"
name = "rph_g11"
block_ios = [
{block = "spi", instance = 0, io = "sclk"},
{block = "spi", instance = 1, io = "sclk"},
{block = "gpio", instance = 0, io = "ios", io_index = 11},
]

Expand Down Expand Up @@ -208,47 +216,47 @@ block_ios = [
]

[[pins]]
name = "rph_g16_ce2"
name = "rph_g16"
block_ios = [
{block = "spi", instance = 1, io = "cs", io_index = 2},
{block = "spi", instance = 2, io = "cs", io_index = 2},
{block = "gpio", instance = 0, io = "ios", io_index = 16},
]

[[pins]]
name = "rph_g17"
block_ios = [
{block = "spi", instance = 1, io = "cs", io_index = 1},
{block = "spi", instance = 2, io = "cs", io_index = 1},
{block = "gpio", instance = 0, io = "ios", io_index = 17},
]

[[pins]]
name = "rph_g18"
block_ios = [
{block = "spi", instance = 1, io = "cs", io_index = 0},
{block = "spi", instance = 2, io = "cs", io_index = 0},
{block = "gpio", instance = 0, io = "ios", io_index = 18},
{block = "pwm", instance = 0, io = "out", io_index = 2},
]

[[pins]]
name = "rph_g19_cipo"
name = "rph_g19"
block_ios = [
{block = "spi", instance = 1, io = "cipo"},
{block = "spi", instance = 2, io = "cipo"},
{block = "gpio", instance = 0, io = "ios", io_index = 19},
{block = "pwm", instance = 0, io = "out", io_index = 3},
]

[[pins]]
name = "rph_g20_copi"
name = "rph_g20"
block_ios = [
{block = "spi", instance = 1, io = "copi"},
{block = "spi", instance = 2, io = "copi"},
{block = "gpio", instance = 0, io = "ios", io_index = 20},
{block = "pwm", instance = 0, io = "out", io_index = 4},
]

[[pins]]
name = "rph_g21_sclk"
name = "rph_g21"
block_ios = [
{block = "spi", instance = 1, io = "sclk"},
{block = "spi", instance = 2, io = "sclk"},
{block = "gpio", instance = 0, io = "ios", io_index = 21},
{block = "pwm", instance = 0, io = "out", io_index = 5},
]
Expand Down Expand Up @@ -339,50 +347,50 @@ block_ios = [
[[pins]]
name = "ah_tmpio10"
block_ios = [
{block = "spi", instance = 0, io = "cs", io_index = 3},
{block = "spi", instance = 1, io = "cs", io_index = 3},
{block = "gpio", instance = 1, io = "ios", io_index = 10},
{block = "pwm", instance = 0, io = "out", io_index = 4},
]

[[pins]]
name = "ah_tmpio11"
block_ios = [
{block = "spi", instance = 0, io = "copi"},
{block = "spi", instance = 1, io = "copi"},
{block = "gpio", instance = 1, io = "ios", io_index = 11},
{block = "pwm", instance = 0, io = "out", io_index = 5},
]

[[pins]]
name = "ah_tmpio12"
block_ios = [
{block = "spi", instance = 0, io = "cipo"},
{block = "spi", instance = 1, io = "cipo"},
{block = "gpio", instance = 1, io = "ios", io_index = 12},
]

[[pins]]
name = "ah_tmpio13"
block_ios = [
{block = "spi", instance = 0, io = "sclk"},
{block = "spi", instance = 1, io = "sclk"},
{block = "gpio", instance = 1, io = "ios", io_index = 13},
]

# mikroBUS Click
# mb0 is reset and already connected to a general purpose output.
[[pins]]
name = "mb1"
block_ios = [{block = "spi", instance = 1, io = "cs", io_index = 3}]
block_ios = [{block = "spi", instance = 2, io = "cs", io_index = 3}]

[[pins]]
name = "mb2"
block_ios = [{block = "spi", instance = 1, io = "sclk"}]
block_ios = [{block = "spi", instance = 2, io = "sclk"}]

[[pins]]
name = "mb3"
block_ios = [{block = "spi", instance = 1, io = "cipo"}]
block_ios = [{block = "spi", instance = 2, io = "cipo"}]

[[pins]]
name = "mb4"
block_ios = [{block = "spi", instance = 1, io = "copi"}]
block_ios = [{block = "spi", instance = 2, io = "copi"}]

[[pins]]
name = "mb5"
Expand All @@ -409,14 +417,14 @@ block_ios = [{block = "pwm", instance = 0, io = "out", io_index = 0}]
name = "pmod0_1"
block_ios = [
{block = "gpio", instance = 2, io = "ios", io_index = 0},
{block = "spi", instance = 0, io = "cs", io_index = 0},
{block = "spi", instance = 1, io = "cs", io_index = 0},
]

[[pins]]
name = "pmod0_2"
block_ios = [
{block = "gpio", instance = 2, io = "ios", io_index = 1},
{block = "spi", instance = 0, io = "copi"},
{block = "spi", instance = 1, io = "copi"},
{block = "pwm", instance = 0, io = "out", io_index = 1},
{block = "uart", instance = 1, io = "tx"},
]
Expand All @@ -425,7 +433,7 @@ block_ios = [
name = "pmod0_3"
block_ios = [
{block = "gpio", instance = 2, io = "ios", io_index = 2},
{block = "spi", instance = 0, io = "cipo"},
{block = "spi", instance = 1, io = "cipo"},
{block = "i2c", instance = 0, io = "scl"},
{block = "uart", instance = 1, io = "rx"},
]
Expand All @@ -434,47 +442,47 @@ block_ios = [
name = "pmod0_4"
block_ios = [
{block = "gpio", instance = 2, io = "ios", io_index = 3},
{block = "spi", instance = 0, io = "sclk"},
{block = "spi", instance = 1, io = "sclk"},
{block = "i2c", instance = 0, io = "sda"},
]

[[pins]]
name = "pmod0_5"
name = "pmod0_7"
block_ios = [{block = "gpio", instance = 2, io = "ios", io_index = 4}]

[[pins]]
name = "pmod0_6"
name = "pmod0_8"
block_ios = [
{block = "gpio", instance = 2, io = "ios", io_index = 5},
{block = "pwm", instance = 0, io = "out", io_index = 2},
]

[[pins]]
name = "pmod0_7"
name = "pmod0_9"
block_ios = [
{block = "gpio", instance = 2, io = "ios", io_index = 6},
{block = "spi", instance = 0, io = "cs", io_index = 1},
{block = "spi", instance = 1, io = "cs", io_index = 1},
]

[[pins]]
name = "pmod0_8"
name = "pmod0_10"
block_ios = [
{block = "gpio", instance = 2, io = "ios", io_index = 7},
{block = "spi", instance = 0, io = "cs", io_index = 2},
{block = "spi", instance = 1, io = "cs", io_index = 2},
]

[[pins]]
name = "pmod1_1"
block_ios = [
{block = "gpio", instance = 3, io = "ios", io_index = 0},
{block = "spi", instance = 1, io = "cs", io_index = 0},
{block = "spi", instance = 2, io = "cs", io_index = 0},
]

[[pins]]
name = "pmod1_2"
block_ios = [
{block = "gpio", instance = 3, io = "ios", io_index = 1},
{block = "spi", instance = 1, io = "copi"},
{block = "spi", instance = 2, io = "copi"},
{block = "pwm", instance = 0, io = "out", io_index = 3},
{block = "uart", instance = 2, io = "tx"},
]
Expand All @@ -483,7 +491,7 @@ block_ios = [
name = "pmod1_3"
block_ios = [
{block = "gpio", instance = 3, io = "ios", io_index = 2},
{block = "spi", instance = 1, io = "cipo"},
{block = "spi", instance = 2, io = "cipo"},
{block = "i2c", instance = 1, io = "scl"},
{block = "uart", instance = 2, io = "rx"},
]
Expand All @@ -492,33 +500,33 @@ block_ios = [
name = "pmod1_4"
block_ios = [
{block = "gpio", instance = 3, io = "ios", io_index = 3},
{block = "spi", instance = 1, io = "sclk"},
{block = "spi", instance = 2, io = "sclk"},
{block = "i2c", instance = 1, io = "sda"},
]

[[pins]]
name = "pmod1_5"
name = "pmod1_7"
block_ios = [{block = "gpio", instance = 3, io = "ios", io_index = 4}]

[[pins]]
name = "pmod1_6"
name = "pmod1_8"
block_ios = [
{block = "gpio", instance = 3, io = "ios", io_index = 5},
{block = "pwm", instance = 0, io = "out", io_index = 4},
]

[[pins]]
name = "pmod1_7"
name = "pmod1_9"
block_ios = [
{block = "gpio", instance = 3, io = "ios", io_index = 6},
{block = "spi", instance = 1, io = "cs", io_index = 1},
{block = "spi", instance = 2, io = "cs", io_index = 1},
]

[[pins]]
name = "pmod1_8"
name = "pmod1_10"
block_ios = [
{block = "gpio", instance = 3, io = "ios", io_index = 7},
{block = "spi", instance = 1, io = "cs", io_index = 2},
{block = "spi", instance = 2, io = "cs", io_index = 2},
]


Expand Down Expand Up @@ -546,11 +554,36 @@ block_ios = [{block = "gpio", instance = 4, io = "ios", io_index = 4}]
name = "pmodc_6"
block_ios = [{block = "gpio", instance = 4, io = "ios", io_index = 5}]

# Application Flash
[[pins]]
name = "rs485_rx"
block_ios = [{ block = "uart", instance = 2, io = "rx" }]
name = "appspi_d0"
block_ios = [{ block = "spi", instance = 0, io = "copi" }]

[[pins]]
name = "rs485_tx"
block_ios = [{ block = "uart", instance = 2, io = "tx" }]
no_default_out = true
name = "appspi_d1"
block_ios = [{ block = "spi", instance = 0, io = "cipo" }]

[[pins]]
name = "appspi_clk"
block_ios = [{ block = "spi", instance = 0, io = "sclk" }]

[[pins]]
name = "appspi_cs"
block_ios = [{ block = "spi", instance = 0, io = "cs", io_index = 0 }]

# microSD Card
[[pins]]
name = "microsd_cmd"
block_ios = [{ block = "spi", instance = 0, io = "copi" }]

[[pins]]
name = "microsd_dat0"
block_ios = [{ block = "spi", instance = 0, io = "cipo" }]

[[pins]]
name = "microsd_clk"
block_ios = [{ block = "spi", instance = 0, io = "sclk" }]

[[pins]]
name = "microsd_dat3"
block_ios = [{ block = "spi", instance = 0, io = "cs", io_index = 1 }]
Loading
Loading