Skip to the content
4 layers96 × 70 mmTedium x8, the printed circuit board in 3D

TDM telephony experimentation

Size
96 × 70 mm
Copper layers
4
Thickness
1.6 mm
Parts
283
Nets
290
Pads
1,498
Tracks, vias
3,270, 978
Pours
47
Routed
Yes
KiCad
KiCad 5 (file 20210824)
Created
23 Jul 2019
Updated
11 Jul 2022

Overview

Tedium x8 is an open-source printed circuit board by jboone, from the jboone/tedium repository on GitHub, published under the BSD-3-Clause licence. It is a 4-layer board of 96 × 70 mm with 283 parts on 290 nets, routed with 3,270 tracks and 978 vias.

It is built around the LFE5U-85F-8BG381I, USB3317C-CP-TR and TPS62823DLC, with the 93LC46C-I/P, ADM7171ACPZ-1.8-R7 and ADM7171ACPZ-3.3-R7 among its other parts. Its parts include 138 capacitors, 77 resistors, 18 ICs, 11 inductors and 6 connectors. It belongs with the FPGA and CPLD boards of this library.

Main components

9

README

README.md

tedium

TDM telephony experimentation

Dependencies

  • oss-cad-suite: open-source digital design and verification tools, with nightly binary builds.
  • poetry: Python dependencies and packaging management tool.
  • g++-riscv64-linux-gnu
  • rustup toolchain install stable -t riscv32i-unknown-none-elf

Installation

Clone this repository, and generally follow these steps:

bash
$ cd tedium
# Grant access through `udev` to the FTDI JTAG interface on the Tedium board.
$ sudo ln -sf ./99-tedium.rules /etc/udev/rules.d/
$ sudo udevadm control --reload-rules && sudo udevadm trigger
#
$ pip3 install poetry --user
# Might need to log out and in to get ~/.local/bin in PATH.
# Or, `source ~/.profile`.
# Set up virtual environment, download and install dependencies
$ poetry install
# Enter poetry shell
$ poetry shell
# Include OSS CAD Suite tools in PATH
$ export PATH="/home/jboone/src/fpga/oss-cad-suite/bin:$PATH"
# Build and download FPGA bitstream
# LUNA_AVOID_BLOCKRAM required for reliable USB enumeration as of 2022/May/02.
$ LUNA_AVOID_BLOCKRAM=1 applets/tedium-fpga
# After the bitstream is generated, you can inspect the results in the `build` directory.
# Initialize the framer/LIU
$ cargo run --release --bin tedium-tool -- init
# Run the host-side audio and event engine
$ cargo run --release --bin tedium-tool -- monitor

NOTE: My Tedium .venv got weird when I had the "OSS CAD Suite" environment already enabled. Poetry would download dependencies on poetry install or poetry update, but would then delete them when running poetry run or poetry shell.

Testing

Unit tests may be run like this:

bash
$ python3 -m unittest tests.hdl.tx_usb_to_fifo
# Or the name of any other HDL test module you want to run/simulate.

USB Debugging

bash
$ sudo cat /sys/kernel/debug/usb/devices
$ sudo cat /sys/kernel/debug/dynamic_debug/control | grep "snd_usb_audio"
$ sudo echo 'file sound/usb/* +p' >/sys/kernel/debug/dynamic_debug/control
$ sudo sysctl -w kernel.printk=7 # debug-level messages
$ sudo sysctl kernel.printk

Using Wireshark

bash
$ sudo modprobe usbmon
$ sudo wireshark
# Capture stuff

Wireshark filters that might be of use:

text
# Find USB IN on endpoint 1, where the frame of completed inbound URBs is not the typical length.
# This helps find where the async audio input FIFO level is wrapping around.
usb.endpoint_address.number==1 && usb.endpoint_address.direction==IN && usb.urb_type=='C' && frame.len != 1728
# Set the time reference at an interesting record in Wireshark, disable view filtering, and work from there.
# Note that "marked" records appear regardless of whether they match the view filter, which is very handy.
# Now match on USB OUT records that have been submitted (pending transmission)
usb.endpoint_address.number==1 && usb.endpoint_address.direction==OUT && usb.urb_type=='S'

However, it seems like Wireshark isn't showing complete URB buffer contents?

Trouble With Real-Time Kit

bash
# Is there an `rtkit` user?
$ getent passwd rtkit
# Is there an `rtkit*` user?
$ ps ax | grep -i rtkit
# Check that RTKit is actually changing our process/thread priority:
$ journalctl -e -t rtkit-daemon
# `ulimit` values:
$ ulimit -a

Use

See the software README for information on how to use tedium-tool to interact with the hardware over USB.

License

This software and gateware in this project is licensed under the BSD 3-Clause License.

The hardware is licensed under the CERN Open Hardware Licence Version 2 - Permissive.

Parts

283
QtyValueFootprintReferences
67100Nipc_capc:IPC_CAPC60X30X33L15NC10, C11, C13, C14, C101, C102, C103, C104, C107, C108, C109, C110, C113, C114, C115, C116 +51
20100Nipc_capc:IPC_CAPC100X50X55L25NC30, C35, C36, C100, C106, C112, C120, C121, C122, C123, C124, C125, C130, C131, C132, C138 +4
1710Uipc_capc:IPC_CAPC160X80X90L35NC1, C2, C28, C29, C31, C32, C33, C34, C56, C91, C92, C93, C105, C111, C117, C118 +1
1510Kipc_resc:IPC_RESC100X50X40L25NR1, R29, R31, R37, R41, R42, R43, R44, R52, R53, R59, R60, R62, R65, R69
114K7ipc_resc:IPC_RESC100X50X40L25NR21, R32, R34, R38, R40, R46, R47, R48, R50, R68, R72
10100Kipc_resc:IPC_RESC100X50X40L25NR3, R6, R7, R9, R23, R25, R28, R56, R57, R58
104U7ipc_capc:IPC_CAPC160X80X90L35NC17, C18, C19, C81, C82, C83, C86, C87, C88, C136
6GNDtp:TP_1MMTP11, TP12, TP13, TP14, TP15, TP16
6L_Smallipc_beadc:IPC_BEADC160X80X95L40NL1, L7, L8, L9, L10, L11
50R1ipc_resc:IPC_RESC320X160X89L51NR4, R5, R49, R51, R55
510Ripc_resc:IPC_RESC100X50X40L25NR16, R17, R54, R63, R64
52K2ipc_resc:IPC_RESC100X50X40L25NR33, R35, R36, R61, R67
5DNPipc_resc:IPC_RESC100X50X40L25NR14, R15, R18, R20, R22
41Uipc_capc:IPC_CAPC160X80X90L35NC12, C20, C129, C137
45K1ipc_resc:IPC_RESC100X50X40L25NR73, R74, R75, R76
4INA180B2ti:TI_DBV_SOT-23-5U13, U15, U16, U18
4MountingHoleMountingHole:MountingHole_3.2mm_M3H1, H2, H3, H4
4TestPointtp:TP_1MMTP7, TP8, TP9, TP10
310Nipc_capc:IPC_CAPC100X50X55L25NC90, C119, C127
31Kipc_resc:IPC_RESC100X50X40L25NR13, R19, R30
322Uipc_capc:IPC_CAPC320X160X180L55NC133, C134, C135
3LEDipc_ledc:IPC_LEDC1608X90L40ND1, D2, D3
3Polyfuse_Smallipc_fussc:IPC_FUSSC257X321X120L50NF1, F2, F3
2100Nipc_capc:IPC_CAPC160X80X90L35NC126, C128
2100Nipc_capc:IPC_CAPC200X125X135L45NC21, C25
2100Uipc_capc:IPC_CAPC320X160X180L55NC26, C80
2120Pipc_capc:IPC_CAPC100X50X55L25NC23, C24
222Uipc_capc:IPC_CAPC160X80X90L35NC27, C38
230Kipc_resc:IPC_RESC100X50X40L25NR8, R10
2330Ripc_resc:IPC_RESC160X80X55L25NR39, R70
2470Nwurth:WE-HCI_7050L2, L3
2?ipc_capc:IPC_CAPC100X50X55L25NC84, C85
2INA180B3ti:TI_DBV_SOT-23-5U12, U17
2L_Smallipc_beadc:IPC_BEADC200X125X105L50NL5, L6
2Q_PMOS_GSDipc_sot:IPC_SOT23-3P95_237X112L50X42NQ2, Q3
2TPS62823ipc_son:IPC_SON8P50_200X150X100L35X25NU3, U4
2USB_Camphenol:12401610E4#2AP1, P2
10R01ipc_resc:IPC_RESC320X160X89L51NR2
1100Ripc_resc:IPC_RESC100X50X40L25NR77
1100Ripc_rescax:IPC_RESCAXS8P80_320X160X60L30X45NRN1
112Kipc_resc:IPC_RESC100X50X40L25NR66
112Mipc_osccc:IPC_OSCCC320X250X120L75X100NX2
116M384abracon:ASVMBX1
11N2ipc_capc:IPC_CAPC160X80X90L35NC22
11Ucoilcraft:SER1590L4
126Mipc_oscsc:IPC_OSCSC4P254_500X320X140L100X120NX3
1280Kipc_resc:IPC_RESC100X50X40L25NR27
1432Ripc_resc:IPC_RESC100X50X40L25NR12
147Uipc_capc:IPC_CAPC320X160X180L55NC16
150Ripc_resc:IPC_RESC100X50X40L25NR26
1536Kipc_resc:IPC_RESC100X50X40L25NR24
168K1ipc_resc:IPC_RESC100X50X40L25NR11
17K68ipc_resc:IPC_RESC100X50X40L25NR45
18K06ipc_resc:IPC_RESC100X50X40L25NR71
193LC46Cipc_soic:IPC_SOIC8P127_490X600X175L83X41NU9
1ADM7171ACPZ-1.8-R7ipc_son:IPC_SON9P50_300X300X80L40X25T244X160NU8
1ADM7171ACPZ-3.3-R7ipc_son:IPC_SON9P50_300X300X80L40X25T244X160NU6
1ADP150AUJZ-2.5-R7ipc_sot:IPC_SOT23-5P95_280X100L45X40NU7
1BARREL_JACKcui:PJ-102AHCON1
1BC817ipc_sot:IPC_SOT23-3P95_237X112L50X42NQ1
1Conn_02x20_Odd_EvenConnector_PinHeader_2.54mm:PinHeader_2x20_P2.54mm_VerticalJ1
1Conn_ARM_JTAG_SWD_10Connector_PinHeader_1.27mm:PinHeader_2x05_P1.27mm_VerticalJ5
1DNPConnector_PinHeader_1.27mm:PinHeader_2x05_P1.27mm_VerticalJ3
1FT2232Hipc_qfp:IPC_QFP64P50_1200X1200X160L60X22NU10
1LFE5U-85F-8BG381lattice:LATTICE_BGA_CABGA381U1
1QSPI8ipc_soic:IPC_SOIC8P127_528X790X216L65X41NU14
1TPS53318ipc_son:IPC_SON23P50_600X500X150L50X27T547X324NU2
1USB3317C-CPipc_qfn:IPC_QFN25P50_400X400X100L40X24T250NU11
1V1P1_Itp:TP_1MMTP1
1V1P8_Itp:TP_1MMTP6
1V2P3_Itp:TP_1MMTP3
1V2P5_Itp:TP_1MMTP5
1V3P3_Itp:TP_1MMTP4
1V3P8_Itp:TP_1MMTP2
1XRT86VX38ipc_bga:IPC_BGA256CP100_16X16_1700X1700X178B55NU5

More from jboone/tedium

2
  • 2 layers106 × 158 mmTedium x8 phy, the printed circuit board in 3D

    Tedium x8 phy

    jboone/tedium

    TDM telephony experimentation

    67 parts3BSD-3-Clause
  • 4 layers109 × 46 mmBreakout xrt83l30, the printed circuit board in 3D

    Breakout xrt83l30

    jboone/tedium

    TDM telephony experimentation

    36 parts3BSD-3-Clause

Similar boards

  • 4 layers193 × 105.2 mmAFE V3, the printed circuit board in 3D

    AFE V3

    Pgr18/CELL_Z_SPECT_hardware

    Печатные платы для проекта клеточной импедансной спектроскопии

    293 parts
  • 2 layers104.1 × 74.9 mmISA8 Ethernet, the printed circuit board in 3D

    ISA8 Ethernet

    Vakon84/isa8_eth

    If EEPROM has not been programmed prior to assembly, now it is a good time to do so. The U3 EEPROM contains the following configuration for the RTL8019AS chip: MAC address ISA resources for jumperless configuration Base…

    34 partsCERN-OHL-S-2.0
  • 4 layers160 × 100 mmTransmitter, the printed circuit board in 3D

    Transmitter

    yacremann/TimeDistributionSystem

    Time distribution system for pulsed laser laboratories

    279 partsGPL-3.0
  • 4 layers130 × 106.7 mmSvga devboard, the printed circuit board in 3D

    Svga devboard

    Doomn00b/Open-SVGA

    Video-card and GPU for the PC x86 platform, including PCB reference-design

    183 parts6
  • 4 layers97.6 × 74.8 mmProject byte hamr, the printed circuit board in 3D

    Project byte hamr

    robertrico/project_byte_hamr

    Open source expansion platform for Apple IIe prototyping and development

    93 parts2
  • 4 layers129.5 × 52.3 mmPn wing prototype, the printed circuit board in 3D

    Pn wing prototype

    loxodes/phasenoise

    Prototype phase noise analyzer

    277 parts23MIT
  • 2 layers140.6 × 25.9 mmESP32 SmartGlass, the printed circuit board in 3D

    ESP32 SmartGlass

    jobitjoseph/ESP32-AI-SmartGlass

    The ESP32 AI Smartglass is an innovative wearable device that blends the power of artificial intelligence with the convenience of home automation.

    47 parts16
  • 4 layers165 × 50 mmHUB0402, the printed circuit board in 3D

    HUB0402

    jobitjoseph/All-in-one-USB-3.1-Hub-for-EE-Engineers

    311 parts8

Questions

How big is the Tedium x8 PCB?

It measures 96 × 70 mm and has 4 copper layers, 1.6 mm thick.

What parts does the Tedium x8 use?

283 parts, built around the LFE5U-85F-8BG381I, USB3317C-CP-TR, TPS62823DLC and 93LC46C-I/P. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.

Where can I download the Tedium x8 KiCad files?

From the jboone/tedium repository on GitHub, at the commit this page was made from: the board is hardware/tedium_x8/tedium_x8.kicad_pcb and its schematic hardware/tedium_x8/fpga_bank.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Tedium x8 design in my own project?

Its repository publishes it under the BSD-3-Clause licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).