Skip to content

morph pca9545 into a supporting 16 mux channels at one target ID. #388

@nathanaelhuffman

Description

@nathanaelhuffman

After discussion the semantics with @mkeeter we think we'd like to turn our multiple virtual PCA9545 emulations into a single, custom 16bit mux. Right now, hubris treats each of these 9545s as individual, but we need them to be thought of logically as 1 bigger mux since enabling multiples can cause address conflicts (why we have the muxes in the first place!).

On gimlet, when buying commodity parts we didn't have this option and have had some bugs due to address conflicts such as oxidecomputer/hubris#1413.

On cosmo, and relevant to this IP, we prevent this from happening in a given FPGA with custom logic that links the muxes, but we're going to re-tool hubris to treat these as 1 bigger mux per FPGA.

On an RTL side, we're going to generally deal with things similarly to the PCA9545 designs, but will increase the command register space to 2 bytes to then support 16 mux channels.

Since we have it working, we may well just leave the PCA9545 design alone and make a 2nd one with a larger address space.

Metadata

Metadata

Type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions