Make timing assumptions explicit
Parameterize clock and baud settings. Document input synchronization, start-bit qualification, sample positions, and the acceptable timing mismatch before building the state machine.
Entry 06 / Digital design
Receiving a byte is only the beginning.
Planned · not startedPROPOSED ARCHITECTURE / UART
DEFINE → IMPLEMENT → VERIFY → DOCUMENT
01 / The work
My coursework includes digital logic and computer architecture. I want to develop an original UART receive block that makes timing, buffering, and error handling visible in both the RTL and the tests. The first milestone is a written interface specification; no implementation or simulation results exist yet.
Parameterize clock and baud settings. Document input synchronization, start-bit qualification, sample positions, and the acceptable timing mismatch before building the state machine.
Preserve unread data when the FIFO is full, drop the newest incoming byte, and report overflow. Specify empty reads, simultaneous push/pop, error clearing, and reset during a frame. Framing errors and buffer overflow need separate reporting.
Use a Python transmitter and scoreboard instead of deriving the expected result from the receiver’s internal state. Keep reproducible seeds and waveforms when a test fails.
Archive simulator commands, tool versions, and a synthesis report for a named target. An FPGA demonstration would be a later milestone with its own clock, pin, and hardware checks.
Proposed validation / no tests run yet
Recover all 256 byte values and back-to-back frames without unintended loss or reordering.
Vary start phase and transmitter timing; state the baud-error range actually tested.
Inject a low stop bit, a false start, prolonged low input, and reset during reception.
Exercise FIFO full/empty boundaries and verify exactly which data is retained or discarded.
Run reproducible randomized traffic against the independent scoreboard and archive failures.
Synthesize for a named target and preserve scripts and resource reports.
Technical references
Microchip: UART frame formatcocotb: Writing testbenchesYosys: Synthesis example