Project

General

Profile

GsmDevelBoardGsmDevelBoardFPGA » History » Revision 3

Revision 2 (laforge, 02/19/2016 10:48 PM) → Revision 3/5 (laforge, 02/19/2016 10:48 PM)

= The FPGA on the GSM Development Board = 

 == Functional Blocks == 

 === CLK13GEN === 
 The 13MHz master clock generator.    We feed the 26MHz clock as generated by the [wiki:TRF6151] VCTCXO into the FPGA and want a 13MHz clock as result. 

 === TPU === 
 The purpose of the TPU is to pre-configure certain events to happen synchronous to a certain time.    ''Time'' in this context means 
 a clock ticking at a rate of CLK_QBIT. 

 ==== TPU CLK_QBIT ==== 
 CLK_QBIT = CLK_13M/12 equals 923.1ns, which is a quarter of a GSM bit. 

 This clock has to be generated internally by a divider. 

 ==== Actual TPU ==== 

 In the TI DBB, the TPU is a micro-programmable engine with an instruction set of 5 instructions. 

 Each instruction takes four phases (FETCH, STORE, DECODE, EXECUTE).    As all of the phases have to complete in CLC_QBIT, 
 the engine is clocked at four times this clock, i.e. CLK_13M/3. 

 We don't really care how many phases/stages the engine has.    We simply need something that we can program to execute an event at a scheduled time. 

 ==== TPU Requirements ==== 

 The TPU needs to drive the [wiki:TimeSerialPort Time Serial Port] for the [wiki:TWL3025] and [wiki:TRF6151], as well as some parallel I/O lines. 

  * serial output 
   * CLK13M is the global 13MHz clock generated by CLK13GEN. 
    * As CLK13GEN already exports this from the FPGA, no need for the TPU to export it again 
   * TRF6151:STROBE -- the strobe signal for the [wiki:TRF6151] TSP 
   * TWL3025:TEN -- the TSP ENable signal for the [wiki:TWL3025] TSP 
   * TSP_DO -- the TSP Data Out signal, connected to TWL3025:TDR and TRF6151:DATA 

  * parallel output 
   * TSPACT0 -- connected to the [wiki:TRF6151]:RESETz signal 
   * TSPACT1 -- connected to the [wiki:ASM4532]:VC2 signal 
   * TSPACT2 -- connected to the [wiki:ASM4532]:VC1 signal 
   * TSPACT3 -- connected to the [wiki:RF3166]:BAND_SELECT signal 
   * TSPACT4 -- connected to the [wiki:ASM4532]:VC3 signal 
   * TSPACT9 -- connected to the [wiki:RF3166]:TX_ENABLE signal 

 ==== TSP of TRF6151 ==== 

 The TSP to the TRF6151 uses three wires: 
  * CLOCK (regular CLK_13M) 
  * STROBE (generated by TPU) 
  * DATA (provided by TPU at falling edge of CLOCK, TRF samples data at rising edge of CLOCK) 

 See [wiki:Rita] for a more detailed description of the TSP timings required. [[Image(Rita:trf6151_serial_1.png)]] 

 [[Image(Rita:trf6151_serial_2.png)]] 

 ==== TSP of TWL3025 ==== 

 The TSP of the TWL3025 usese three wires: 
  * CLOCK (regular CLK_13M), the TSL3025 derives an internal CLK6.5 signal of half the clock rate and uses it for the TSP) 
  * nTEN (TSP ENable) 
  * TDR (sampled by TWL3025 at rising edge of CLK6.5) 

 See [wiki:Iota] for The CLK6.5 Signal makes things a bit more detailed description complicated than we would like. The sequence of events is something like: 
  * CLK_13M is applied continuously to TSL3025 
  * nTEN is in default state of high (inactive) 
  * internal CLK6.5 is in default state low 
  * nTEN is asserted low by TPU, some 0..65ns before CLK_13M rising edge 
  * next CLK13M falling edge starts first CLK6.5 rising edge 
  * every falling edge of CLK13M toggles CLK6.5 
  * TDR is sampled at every rising edge of CLK6.5 (including the TSP timings required. first edge above) 
  * 7 bits are transferred during seven rising edges of CLK6.5 
  * TEN stays asserted for 1 CLK13M period after last bit is transferred 
  * TEN needs to be released before next CLK13M rising edge to prevent another transfer 

 [[Image(Iota:twl3025_tsp_serial.png)]]
Add picture from clipboard (Maximum size: 48.8 MB)