-
our RP2350 Stamp XLs and Stamp carrier boards arrived! they look to all be in
good condition
- working on transposing my journal from Discord over to the team website
-
i talked a bit with seth, and we agreed that to reduce the amount of time that
journals take to transpose (hours sometimes), we want to switch over to using
Notion for our journals.
- this journal transition will happen next week
-
i am also iterating through the more specific PSDR descriptions. I'm following
the recommendation to create a PSDR for each card implementation.
- please refer to the team website for the PSDR changes
==== Mini-summary ====
What did you work on?
I worked on transposing my journal from Discord over to the journal website. I
also started writing functional descriptions for our boards (to be used in PSDRs).
How did you work on it?
I mostly copy over my Discord notes with their relevant timestamps, and then
add/modify an additional mini summary of what happened in that entry to be more
clear.
What was the result and what did you learn from it?
That this journal transposing process takes way too long, we need to find some
other way of publishing project journals.
How did this contribute to the project progress?
Now that my journals are up on the website, me and my team can now reference them
on the site, instead of having to go to the Discord server.
What are the next steps that must be taken?
Seth and I came up with a plan to transition all of our team journals over to
Notion, this plan will be enacted during next week, where we'll migrate all of our
journals.
remark: ugh the pullup resistors for the two different MCP23017's nReset are duped
they're different nets but they could be the same one
hi, good morning
-
after some discussion in ManLab, looks like we should get all of our PSDR ducks
in a row.
-
since i'm the one who is most familiar with our design requirements, i'll start
to work on iterating the different design requirements of our system
-
hopefully we can pluck out some descriptions to use as better and more complete
PSDRs
here's some of my notes about what i think is some functionality not currently
described in PSDRs we can use.
-
this computer is something that requires a lot of different boards to talk to
each other
-
we want design 3 boards: the front panel, the backplane, and the generic card
-
the backplane is responsible for converting some unregulated voltage source into
3.3V power, which can then be distributed to the rest of the system
-
let's lock this in, let's take 5V 3A power from a USB-C port on the back of the
backplane board, which we then need to distribute throughout the backplane
-
remark: we may need multiple voltage regulator blocks throughout the backplane,
because of the distance that power and signals will need to traverse (we'd like
to step 5V to 3.3V as close to the module connector as possible, but this is
mutually exclusive from having multiple module connectors. the solution?
multiple voltage regulators across the backplane)
our bus is inspired by the Altair 8800's original 8080-based bus, but with some
changes for ease of implementation
on the bus, we map:
- 8 data signals DATA{0-7}
- 16 address signals ADDR{00-15}
-
36 bus control signals BUS{00-25} (bus control signals {04-07, 20-23} are always
mapped to the same PIOs, the others can be swapped depending on the use case)
remark: elaborate
-
32 non-real time signals (16 managed by 1 I/O expander, 16 managed by another
I/O expander)
there's a couple of non-trivial interfaces that we care about:
-
since we have so many UI elements (more than 20 switches and LEDs each), the
front panel should use expanders to address LEDs, and matrices to detect switch
presses.
-
the front panel must be able to throw the correct instruction onto the bus in
sequence to both jump and modify the 8080 CPU's program counter
-
the front panel must be able to perform both glitchless clock
activation/deactivation, and be able to assert signals for single-stepping mode.
the CPU and memory boards must be able to understand these signals
-
when the CPU talks to memory, the CPU must be able to understand memory ready,
I/O ready, and memory WAIT signals with memory strobes to allow for I/O
operations to complete
10:23 AM
remark, i did mention to the course staff about possible supply issues with the
RP2350B chips. we may need to consider a backup plan
writing down here that setsuna did recommend possibly using multiple time steps of
some lines to assert bus control signals, essentially serializing the bus control,
something we can do with the RP2040's pin count.
if it comes to that, that's an avenue we can pursue, since ripping chips off of
evaluation boards in undesireable.
10:01 AM
Logical connections (for PSDRs):
-
CPU <-> RAM (memory strobe messages, memory ready messages, memory WAIT
messages)
-
Panel <-> CPU (assert bus control [via interrupt acknowledge message], set jmp
instruction, set program counter)
-
Panel <-> CPU (drive clock signal, receive clock signal, receive single-step
mode, drive single-step mode)
- Panel <-> LEDs (LEDs driven via I/O expansion [I2C])
- Panel <-> Switches (Switches polled via matrix)
these can all be validated regardless of if the other feature works
I ended up talking to Dr. Walter, and he made a very good point about the fact
that we are basically designing 3 different boards.
if we create detailed enough functional specifications for each board, then they
could all constitute a PSDR. I will work on this.
==== Mini-summary ====
What did you work on?
I worked on coming up with ideas for our PSDRs, and also coming up with an initial
backup plan for if RP2350 supply doesn't work out.
How did you work on it?
I talked with course staff (primarily Setsuna, and Dr. Walter) about what changes
we should make to our PSDRs, and ideas of what to do if we only have RP2040s
available.
What was the result and what did you learn from it?
I think we have a stronger plan of what to do for the PSDR changes, and a good
idea for our backup plan.
How did this contribute to the project progress?
Our PSDRs need to be revamped, since they're too simple right now. I've taken
charge of rewriting them, and this is a good brainstorming session towards that.
What are the next steps that must be taken?
I need to formalize our PSDRs and write detailed functional descriptions of each
of our cards that we can use as PSDRs.
good morning
going to start laying out the RP2350 (card DIMM board schematic), based on the
info from previous sessions
i'm most interested in seeing how this validates my priors, and also this should
pave the way to PCB design, where we can validate the height of the DIMM
5:30 AM
- rp2350 QFN 80 is not in the base kicad std lib
- imported the symbol from the reference design
5:52 AM
on the topic of decoupling:
-
section 2.2.1 of the
hardware
design guide
recommends 11 100 nF decoupling caps for each VDD
-
they say 53,54 and 68,69 can be doubled up to use the same cap in case of space
constraints on single sided population boards, so i've done that
-
i've also added a 10 uF bulk cap to the schematic (not in guidance) to be place
close, but slightly farther away from the chip
-
we do not use the ADC so i will not be making specific consideration to a
filtered power plane a la 3V3A filtered w/ ferrite bead etc.
6:09 AM
misc internal voltage regulation design (referenced)
6:40 AM
misc wiring for the W25Q128JVS QSPI chip
the reference board allows for 2 QSPI chips, with the chip select determined by
GPIO0
we dont need this, so while reference has a lot of optionality w/ DNF (do not fit)
jumpers, this design can be simpler is this case
6:57 AM
external oscillator (referenced)
7:16 AM
USB C CC line passive Rd resistor specification (see 4.5.1.2.1 on
usb-c
specification
USB CC 5.1k pulldown (NOTE: do not short CCs prior to pulldown! was an issue on
rpi4 launch to
great
publicity)
8:18 AM
- working on GPIO mapping
-
4 pins can jumper to either exposed signals (2 I2C buses, or 1 I2C bus and 1
UART tx/rx), or straight to bus
- 12 other pins can be configured between bus lines
8:33 AM
initial schematic without external connectors
things to review:
-
check NCP1117 handling in the case where the 3V3 side isnt passive (situation
where USB is plugged in while entire device is under external [other] power
source..)
-
check edge board substrate thickness, pitch, etc.... is it easy to route? can we
fit the jumper vias with the current pitch? swap from DDR4?
- find proper JST connector for GPIO pins 0-3
remarks:
-
check errata... do we need bias on GPIO40-GPIO47 due to weak/faulty internal
tri-state?
- reel supply of RP2350A/B not reliable, look for options
-
4.7u guidance assumes pin 32 is far away from voltage regulation... check this
assertion later
- consider making the 12 latter jumpers have copper trace defaults
- cutting/scoring as an exception may be less annoying than jumping always
9:14 AM
- digi key doesnt have footprint for the ZTE connector we were looking at
-
might switch over to
this
connector
b/c i really really cannot find these symbols and footprints
9:22 AM
-
DIMMs have a weird outline (for insertion/rocking reasons, whatever), but will
need to create the outline for this
-
likely easier to make a sketch in a CAD tool and import the generated DXF solve
into KiCAD for the final board outline later
-
remark: i thought there would ne 288 available signals on a DIMM, but it seems
only 77 are available? i guess some are doubled up
-
i've done the schematic generously (36 bus signals, 32 extended signals, 16
address signals, 8 data signals, totaling 92 signals). this might be too much
for the current connector choice
-
i really like DIMMs because they're locking connectors, if this isnt possible
we'll need to find another locking connector form factor
9:32 AM
- yeah like... i cant find documentation supporting the "77 pins" idea
- maybe the symbol is just weird?
-
remark: i need to find a symbol from another DDR4 DIMM connector to compare.
maybe molex's makes more sense
i'm really happy with the work i've done so far with the schematic.
in terms of further work on this, i need to connect all the I/O nets to the
appropriate edge board connector (i may need to make a custom symbol for this)
i also need to figure out parts for our other connectors like the USB-C connector
and the JST connector for our UART functionality
==== Mini-summary ====
What did you work on?
I made a good first pass on the schematic, setting up all the decoupling caps, the
voltage regulator support circuits, the QSPI flash, the I/O expanders, the USB-C
port, the development voltage regulator, and followed all their design
requirements.
How did you work on it?
For working on the RP2350B, I referenced the
Hardware
design with RP2350 manual, and the
RP2350
datasheet. I also heavily referenced the
reference KiCAD
design.
For setting up the pull-down CC lines on the USB port, I referenced the
USB-C
specification.
For writing up of the MCP23017 I/O expanders, I referenced
its
datasheet.
What was the result and what did you learn from it?
The core of the schematic is done! I learned a lot about the specifics of
designing with the RP2350B, since I've only designed boards for the STM32F0 series
previously.
How did this contribute to the project progress?
This is a big step to getting the schematic completely finished! A good stepping
stone to that juicy PCB layout.
What are the next steps that must be taken?
I need to recheck all the remarks I made, the voltage regulators handling if the
other side isn't passive, recheck edge board constraints, find proper connectors
(for UART), check the GPIO40-47 errata, check the chip supply, check the 4.7u
capacitor placement guidance, try making the solder jumpers have defaults. I also
need to add connectors to the schematic, and I may need to make a custom symbol
for our edge connector.
hi all, good evening
im working on a schematic for our Card Board
this is because i want to confirm my priors that we actually have all of the
parts/pins we need
this should also allow us to make a PCB layout, which can help confirm sizing
(height) of the DIMMs
i dont want us to commit to buying an enclosure if it wouldnt be able to fit the
height of our DIMMs.
-
ABM8-272-T3 (reference oscillator) and W25Q128JVS (reference QSPI flash) are
chosen
- GPIO pins 0 and 1 are reserved for board specific functionality
-
(above screenshot from Table 3 (Section 1.2.3) of the
RP2350
datasheet)
-
notionally, if an MCP23017 (I2C) is populated on the board, then the 16 I/O
expander signals on the board are active
-
otherwise if a JST connector is populated, those two pins are connected to the
JST connector
-
this can determine of a board will use those pins for additional lanes (F3 on 0
and 1), or as a UART transceiver (F2 on 0 and 1)
-
providing this flexibility will reduce the total number of boards that will need
to be designed
- we are intending on keeping this number at 3 (front, backplane, card)
5:23 PM
-
according to
JEDEC
MO-309E, the nominal board thickness is 1.2 milimeters. it also has a bevy
of other
details about the board outline. i'll use this when setting up the board outline
during PCB layout
-
for convenience, I've obtained a copy of the standard using my JEDEC account,
and shared it with my team members
5:41 PM
- for the 22 other pins im consider routing 20 of them into vias
-
where you can either jumper them to the front or rear contact of the board
-
and for the last 2 pins to also have the design optionality to jumper those two
into a 2nd I/O expander for... reasons (let's call it prototype flexibility)
-
shouldnt be an issue with signalling but ill need to do some minimal modelling
at least
5:56 PM
- remark: how mountable are ddr4 dimm connectors?
-
would choosing a connector with a higher pitch be nicer? we dont need 200+
connections
did some research on the part selection and some other additional design decisions
id need for the schematic. next step is to actually start putting the art down
==== Mini-summary ====
What did you work on?
I made a sketch to get a rough idea of what size and layout I want the card PCB
DIMM to have. I made some part selections for our schematic, based on the
RP2350B's reference hardware design. Additionally, I also made some design
decisions, such as including solder jumpers, and allowing for a second I/O
expander to be populated, to increase our I/O flexibility, and allow for the same
board design to be used for different purposes.
How did you work on it?
I referenced the
Hardware
design with RP2350 manual, the
RP2350
datasheet
itself, and
JEDEC MO-309E
for details on DDR4 DIMMs.
What was the result and what did you learn from it?
I finalized some additional design decisions related to part selection and solder
jumpers, and learned about some specifics to hardware design with the RP2350B,
since I've only designed boards for the STM32F0 series previously.
How did this contribute to the project progress?
With this done, I pretty much have all the information I need to start laying out
the schematic uninterrupted.
What are the next steps that must be taken?
The very next step? Work on the schematic! finally! and i would love to get the
PCB layout, and at least some of the routing done soon.
hi all, good afternoon
real quickly going to finish mapping out the pin allocations based on the work
already done
since we'd like to get the card schematics etc. done as soon as we can, i need to
finish this mapping as soon as possible
i'm laying out the final strategy ill be using to determine the pin count: 16
address pins, 8 data pins, up to 20 pins for timing critical bus control, and 4
pins for SPI control of a MCP23S17 I/O expander for U/I and non timing critical
pins
1:58 PM
- switch to MCP23017 for SCL/SDA 2 pin
- A0-A15 (16 pins)
- D0-D7 (8 pins)
- XRDY (memory ready) (1 pin)
- PWAIT (mem/IO wait) (1 pin)
- PRDY (IO ready) (1 pin)
- PINTE (interrupt enable) (1 pin)
- ~PINT (interrupt request) (1 pin)
- SINTA (interrupt acknowledge) (1 pin)
- ~CLOCK (bus clock) (1 pin)
- ~PRESET (reset) (1 pin)
- ~PHOLD ("hold" bus control) (1 pin)
- UNPROT (memory protection unprotect) (1 pin)
- SM1 (first machine cycle of instruction flag) (1 pin)
- SOUT (ouput IO cycle) (1 pin)
- SINP (input IO cycle) (1 pin)
- SMEMR (memory read strobe) (1 pin)
- SHLTA (halt) (1 pin)
- MWRT (memory write strobe) (1 pin)
- ~PWR (write strobe) (1 pin)
- PDBIN (data bus in) (1 pin)
- SWO (write-out) (1 pin)
- SSTACK (stack operation) (1 pin)
- ~POC (clear state) (1 pin)
this looks good. at least, it's flexible enough that i think we have the means to
go forward.
looks like I can start to work on schematic and layout soon.
==== Mini-summary ====
What did you work on?
I finalized work on our initial pin mappings (what specific function we assign to
each of the RP2350's 48 GPIO pins).
How did you work on it?
I cross-referenced against older notes I made, and continued to make use of the
8800's
Theory
of Operation Manual.
What was the result and what did you learn from it?
All of our initial pin mappings are done, and now I have a clearer idea about
which processor status lines are critical for real time operation, and which
status lines are really only useful for the front panel.
How did this contribute to the project progress?
Now that the pin mapping are done, I can go forward and set up the schematic for
the card, which is the hardware design that I'd like to start with. Making the
schematic for the card will also help with the schematics of the front panel
board, which also needs a RP2350B chip.
What are the next steps that must be taken?
The very next step is to work on the schematic and PCB layout for the card board
hi all, good evening
just checking in for a short bit...
i'd like to get some additional work done on the pin mapping, for which pins we'd
actually want taking up PIO pins
6:26 PM
- i went ahread and dropped all of the VI (vectored interrupt) lines
-
it wasn't entirely clear to me whether these lines are ever actually used by the
CPU in the original Altair
-
cross referencing the original
Theory
of Operation Manual, I genuinely cannot find any mention of VI0 through VI7
in any of the
schematics, so I can only assume that it's the role of some sort of programmable
interrupt controller like the 8259A series
6:49 PM
-
remark: the 8259A is mentioned in the
Manual
for MCS-80/MCS-85, which, from what I understand was a new branding scheme
that intel used to
group all their existing microcomputer component portfolios together.
-
the MCS-80 descriptions on that manual are genuinely quite useful for timing/bus
information, and may serve as a good future reference.
goodbye all, going to set finish some final bus pin research work next time, and
then i can go forward on getting a bus layout done.
==== Mini-summary ====
What did you work on?
I did additional research on the pins that we need for the bus.
How did you work on it?
I consulted with the Altair 8800's
Theory
of Operation Manual
and the intel
Manual
for MCS-80/MCS-85.
What was the result and what did you learn from it?
We made some additional changes (like dropping the VI lines), and I learned about
the role of the 8259 in a more general MCS-80 system.
How did this contribute to the project progress?
In order to progress on creating the schematic for any of the boards, we need to
get our communication bus defined. This pin research helps finalize some of that.
What are the next steps that must be taken?
We need to finish up the initial bus pin mapping, such that we can get to the
schematic, and eventually PCB design.