IcE1usb » History » Version 3
laforge, 01/06/2020 04:14 PM
1 | 1 | tnt | h1. iCE40 E1 USB interface |
---|---|---|---|
2 | |||
3 | This page is the main entry point for the E1 Software defined interface using the iCE40 FPGA as the core. |
||
4 | |||
5 | |||
6 | h2. Architecture |
||
7 | |||
8 | 2 | laforge | This approach tries to implement as much as possible inside an iCE40 FPGA |
9 | 1 | tnt | |
10 | 2 | laforge | Particularly, the iCE40 FPGA |
11 | * contains the E1 PHY. There is no external LIU*, reducing the BOM cost significantly. Instead, the comparators of the FPGA are used. In practice, this has shown to work on short E1 links of a few meters. We'd expect some problems in terms of long-haul E1 links, but those are not really the target use case here. |
||
12 | * contains the E1 framer, including frame alignment |
||
13 | * contains a USB softcore (no external USB PHY needed) |
||
14 | * contains a PicoRISCV softcore to implement USB protocol handling and to connect the E1 softcore with the USB softcore |
||
15 | |||
16 | So all-in-all, we can build a USB-E1 interface from little more than an iCE40 FPGA and an E1 line transformer! |
||
17 | |||
18 | 1 | tnt | h2. Current stack |
19 | |||
20 | 2 | laforge | * The hardware is currently not documented, only few prototypes exists and have been half hand-wired. They are currently based off iCEBreaker and iCEBreaker-bitsy iCE40 dev boards. ( https://github.com/icebreaker-fpga/icebreaker ) as well as iCEpick by @tnt. |
21 | 1 | tnt | * The gateware is temporarily hosted in the 'e1' branch of this repo : https://github.com/smunaut/ice40-playground/tree/e1/projects/riscv_usb |
22 | * The embedded software is in the same repository as above, in the 'fw' sub-directory : https://github.com/smunaut/ice40-playground/tree/e1/projects/riscv_usb/fw |
||
23 | 2 | laforge | * The userspace daemon that handles the USB communication is hosted at: https://git.osmocom.org/osmo-e1d |
24 | * The support for this daemon interface to the rest of the cellular stack is in a 'tnt/e1d' branch of the libosmo-abis repo : https://git.osmocom.org/libosmo-abis/log/?h=tnt/e1d |
||
25 | 1 | tnt | |
26 | h2. Presentations |
||
27 | |||
28 | * Talk from OsmoCon 2018 about the Software Defined E1 project as a whole : attachment:osmocon_2018_e1.pdf |
||
29 | * Talk from OsmoDevCon 2019 about the iCE40 based solution specifically: attachment:osmodevcon_2019_e1.pdf |
||
30 | 2 | laforge | |
31 | "video recording of the iC40 based approach / OsmoDevCoon 2019":https://media.ccc.de/v/osmodevcon2019-97-software-defined-e1 |
||
32 | 3 | laforge | |
33 | h2. Status |
||
34 | |||
35 | The full stack from hardware/gateware through firmware and host software has shown to be functional, but hasn't yet been used/tested extensively. |