Atmel SAM Approach » History » Version 7
laforge, 01/13/2020 11:27 AM
1 | 1 | laforge | h1. Atmel SAM Approach |
---|---|---|---|
2 | |||
3 | This page describes a proposed approach of implementing the E1 adapter using [[osmo-e1-xcvr]] and an Atmel SAMx microcontroller, suhc as a SAM3S or SAM4S. |
||
4 | |||
5 | 3 | laforge | * "SAM3S Manual":http://ww1.microchip.com/downloads/en/DeviceDoc/Atmel-6500-32-bit-Cortex-M3-Microcontroller-SAM3S4-SAM3S2-SAM3S1_Datasheet.pdf (64 MHz Cortex-M3) |
6 | 2 | laforge | * "SAM4S Manual":http://ww1.microchip.com/downloads/en/DeviceDoc/Atmel-11100-32-bit%20Cortex-M4-Microcontroller-SAM4S_Datasheet.pdf (120 MHz Cortex-M4) |
7 | |||
8 | 1 | laforge | h2. Overview |
9 | |||
10 | * the SAM controls the LIU via SPI |
||
11 | * the SAM attaches to the host via USB |
||
12 | * The SAM *SSC Peripheral* is used to interface to the receive + transmit bit-streams of the LIU |
||
13 | * The SAM3 *TC Peripheral* is used for Rx frame alignment |
||
14 | |||
15 | h2. Serializing/Deserializing |
||
16 | |||
17 | * SSC can receive/transmit synchronous serial bit streams with external or internal clock |
||
18 | * SSC supports DMA operation between the (de)serializer and RAM using PDC (peripheral DMA controller) |
||
19 | * SSC can run either |
||
20 | ** continously (frame alignment done in software [possibly using bit-banding], as no octet alignment of frames), or |
||
21 | ** triggered by RF input, which we supply from SSC (see below) with hardware-assisted frame alignment |
||
22 | |||
23 | h2. Frame Alignment using TC (Timer/Counter) |
||
24 | |||
25 | The idea is to use one of the TC units to perform hardware-assisted frame alignment and this way prevent us from having to do tons of bit-shifting in software in order to align the start of the 256 bit E1 frame with an octet boundary. |
||
26 | |||
27 | * received clock is fed into TCLKx |
||
28 | * internal 16-bit counter is set to count up to 256 (one frame duration) |
||
29 | * TC is operated in WAVEFORM mode |
||
30 | * TIOA or TIOB are operated as output routed to the SSC RF (receive frame) input |
||
31 | * Ra/Rb/Rc registers are used to shift the rising and falling edge of the TIOA/TIOB signal within the 256bit frame |
||
32 | 4 | laforge | |
33 | h2. Transmit side |
||
34 | |||
35 | The transmit side is rather simple: |
||
36 | * use either recovered Rx clock or locally-generated clock (from GPS-DO) |
||
37 | * serialize the bits with no particular alignment requirements, as it's entirely up to the receiver to align to the frames we send |
||
38 | 5 | laforge | |
39 | h2. Eval boards |
||
40 | |||
41 | 6 | laforge | For initial development and evaluation of this approach, we used SAM4S evaluation boards connected to the [[osmo-e1-xcvr]] board. |
42 | |||
43 | 5 | laforge | We need access to PA16 (TK), PA17 (TD), PA18 (RD), PA19 (RK). |
44 | |||
45 | * "SAM4S-XPRO":http://ww1.microchip.com/downloads/en/DeviceDoc/Atmel-42075-SAM4S-Xplained-Pro_User-Guide.pdf |
||
46 | ** exposes SSC I/O (stated above) signals on external headers |
||
47 | ** contains built-in JTAG/SWD debugger for development + flashing |
||
48 | ** exposes SPI on external header (control of [[osmo-e1-xcvr]]) |
||
49 | 6 | laforge | |
50 | 7 | laforge | This is a picture from a development prototype using the [[osmo-e1-xcvr]] connected to a SAM4-XPRO: |
51 | |||
52 | !{width:50%}e1-xcvr-xpro.jpg! |
||
53 | |||
54 | 6 | laforge | h2. Circuit board design |
55 | |||
56 | @vogelchr has done a circuit board design, it can be found at https://github.com/vogelchr/e1_sam4_usb |
||
57 | 7 | laforge | |
58 | !{width:50%}usb-e1-interface.jpg! |
||
59 | 6 | laforge | |
60 | h2. Firmware |
||
61 | |||
62 | @vogelchr has done firmware development at https://github.com/vogelchr/e1_sam4_usb_fw, while @laforge has also done similar developments at http://git.osmocom.org/atmel-asf-projects/ |
||
63 | |||
64 | h2. Status |
||
65 | |||
66 | Both the evalboard and the @e1_sam4_usb@ circuit board design have been validated. The firmware has been validated with some PRBS tests. |