From 54a7acab9e10d84d747f09fb01baf43fcdd6b0f6 Mon Sep 17 00:00:00 2001 From: drowe67 Date: Wed, 9 Dec 2015 05:49:37 +0000 Subject: [PATCH] updated task list and block diagram git-svn-id: https://svn.code.sf.net/p/freetel/code@2500 01035d8c-6547-0410-b346-abe4f91aad63 --- sm2000/doc/sm201- Block Diagram v0.1.ppt | Bin 110080 -> 128000 bytes sm2000/doc/sm202 Task List.txt | 302 ++++++++++++++--------- sm2000/doc/sm203 gain_noise_calcs.ods | Bin 60011 -> 60003 bytes 3 files changed, 190 insertions(+), 112 deletions(-) diff --git a/sm2000/doc/sm201- Block Diagram v0.1.ppt b/sm2000/doc/sm201- Block Diagram v0.1.ppt index 91c46febebf1e85a8408ade90430026b942b5988..80f40c28909c11802b7bb61ff03bb62fea22c629 100644 GIT binary patch delta 6863 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 delta 1952 zcmZuy3v5(H6rKD2yM4=Ux7*!Ef3z#mrKPmgl7hb=RQ^JN0!2YuLja5TDU}dY`TV*GT0V^fPfe^QKR@FHejkIr~y~NAJO7{yO3<6FF7;wX3pHXbMAfb z)?86*dX@SdxDXsULzMb&-@eV)i@Gf2_3*7)Ie?$b_K$>_?Tj%eW1&{+8B;=q)QYK$ z*{E+OXapdr1cBfnh=h>@iQp&5gdBoGkTA^=#|s>N07aPYoEMwTLe3&uVC;tIp;pC% z&O~f;>iC$`<*<&i%vg`WV_da%@m1gFye=UNM7uAApGtgG5c`!p?o3$$;%rwQuO38$ zSABW>m(+zIT({$Nzt?}nZrwr%wNanSw2Gkch$ zU@+Z>N_v_3qzw$*kRAY)rfQ`gSD}IR2_Bph2!Ix5y%s2wbZshxr}bfdV2f*CykynSWq;z}T8qCN{dQ*LYl;^}V2L=FU-*6>MeCXpZU-*r+8J{&(}N}Yf}$sy6(`Q;@jqK6NtNnXU)%7 z#D84feCeW}L48|E@eT5=!uh4u;`aE#{F_o!68Zx;{euMDvShSBH9aDcLH*b}5~Yz8 zX|9MwZ9~Hn#Vu{tMN_(r!Iib*dG%#JszL^lIY#maU--c-K5NhBLpB@|#6;IL{?%)= zR0$pY^2TF;AE)U;nv1tA{tN^uJACfYrqO9bvm)oFP+xfG+-y2Go07o_&0(x=%1@n6 zIkrcS1O==#p+Jfd6Dpx$4J(+8ISUtS%i%nDq(=lSF_W-oVJBWo(J^j^oMW_kJZ)Z$3mYE5x|tLCnVkkX<=Ki8xPRATz;V0Xc&;&@fAYpkz|K8xVer(j zh0k{PVnVAMFEmwY2W8RI9Pd@}(##|ryRRKv-qtAJI}SEp=QuOtn|K|~uDj_g{FU$z?%i_f1QgE@r~XD!%N90WgpxS|Mh} zHsh~64ia$l-a6iRlok@hz8hTzB++OcB;zkVj~hGUi@Z-NVHKl%Px0Ur#l;B+V%^k)pZ^!>I{C61x zJ?eJ%4)?rBq@zx`$MWB|I!^IK{Ev>)U@Seh4$r*fM*IFMUUA$F(1i0(C1clt!I;{) zKsg6FqRoaULw;Ovw%5@a6^nHIxuZdelP=0cDBPA5SHa3zDSL*kWKR()*t4u0XPk(~ zu3is@t|?e`VgO$19f1AUyp(Xk6PqDm#lZKq{F4$1byJl2VR$iEr#0BlL$3I@ou3TF z0KR!97QIKS_{~#(fXr~5*1l`Na5A%e;6!^4W%?w$6{9Ut_s^pESNkr?Ta?nUzR_zV ztlZGz)!(H*q+Kds_I@9j1pxOAD7o_suxf~Cn419Z#j790m><&D0EXEj!y+(VS7154 z&_8mOnIOY(vkG9XS+7FAnJ>Y2W}gDXyC=x731%}^?hBADVD;28mSGhkgRxswn3^7A ztYsZz?ME1^ILg=qT^8dvXOh*CA}1W-QpTj7NR6|K5ioam?KP;T-@KI3rNgm2=;}T` z7ADxX3X*FrF~}fWPk4#Y?Ga!!*sSXM1-1ivG diff --git a/sm2000/doc/sm202 Task List.txt b/sm2000/doc/sm202 Task List.txt index 37736db1..421b8332 100644 --- a/sm2000/doc/sm202 Task List.txt +++ b/sm2000/doc/sm202 Task List.txt @@ -1,84 +1,124 @@ -[ ] Goals - [ ] Demonstrate TDMA repeater - [ ] superior weak signal performance (-135dBm) - [ ] diversity to handle multipath - + TDMA diversity, switch rx LO quickly? - + demo overcoming large fades? - [ ] wideband audio - [ ] high bit rate data - [ ] low cost - [ ] Full SDR so we can define waveform - [ ] SSB up and down converters to allow full waveform control - [ ] no SoCs - -[ ] Doc - [ ] Block diagram - [ ] Uses cases in paragraph form - [ ] Gain, NF, IP3 budget spreadsheet - [ ] Power budget spreadsheet - [ ] Current per active device - [ ] Power dissiapation per active device - [ ] Resistor power dissiapation per active device - + RF bias currents can be high - -[ ] RF Specs - + these are targets, main goals are functional, leave - others to get sparkling RF performance - [ ] spurious tx emissions -45dBC @ 1W - [ ] IP3 10dBm - [ ] Blocking 95dB - [ ] System NF 2dB - [ ] ACS 50dB, - [ ] MDS (1200Hz) -135dBm, - [ ] Tx phase noise -124dBc/Hz ?? - - -[ ] Design - [ ] LNA selected with RF switch - [ ] switchable power as well - + as power consumption is so high - [ ] AGC in rx to facilitate SSB operation - + a control line from uC DAV/PWM? - + pump up/down GPIO - [ ] LO buffer that can be bypassed by DNL - [ ] put extra 0805/603 compons in parallel for Z matchhing and dnl - + e.g. on collectors and emitters of RF amps - [ ] protection for LNA etc if RF switches get set the wrong way - [ ] xtal filter power - + limit, how many uW? - [ ] linear reg for vadc ADC and vref - + jumper select to test +Goals +===== + +To demonstrate advanced VHF/UHF Digital Voice features on an open +software and hardware platform. + +[ ] feasibility of "$100" TDMA repeater + + show our radio working as a TDMA repeater without a diplexor + + temporary mount on hill top, city wide coverage + + no split so saves spectrum, potentially low cost (to fill coverage gaps easily) +[ ] 10dB weak signal performance gain over analog FM and 1st gen DV + + "smackdown" video of current state of the art against our solution +[ ] diversity to handle multipath + + TDMA diversity, switch rx LO quickly + + demo overcoming large fades +[ ] wideband audio + + for example use 10dB gain to send 10 kbit/s Skype type audio over channel +[ ] high bit rate data + + 10 - 100 kbit/s +[ ] low cost + + several hundred $ sales price + + approx $100 BOM + +Project Workflow +================ + +Manhatten Prototype -> Sch Entry -> PCB Design -> Load and Test -> Demos + /\ /\ + || || + Proto Modem SW Modem SW + UI SW + Driver SW + +Themes +====== + ++ Full SDR so we can define waveform ++ SSB up and down converters to allow full waveform control ++ no SoCs ++ Demos of advanced DV features is "enough". We don't need + sparkling performance in other areas such as all RF specs. + +Task List +========= + + +[ ] Documentation + [X] Block diagram + [X] Uses cases in paragraph form + [X] RF design spreadsheet + [X] cascaded Gain + [X] cascaded NF + [ ] cascaded IP3 + [ ] Power budget spreadsheet + [ ] Current per active device + [ ] Power dissipation per active device + [ ] Resistor power dissiapation + + RF bias currents can be high + + don't want to smoke and SM parts + [ ] Summary for each rail + [ ] Specs + + We don't care too much about IP3, Blocking, ACS, tx phase noise, + power consumption, they can be modest, equivalent to middle of + range VHF radios. + + We do care about the following. Check off when demonstrated on + prototype of Rev A + [X] 12VDC operation + [X] NF < 2dB + [X] MDS (1200 bit/s 2FSK at BER < 0.03) of < -133dBm + [ ] MDS (1200 bit/s 2FSK at BER < 0.03) of < -130dBm (3dB de-sensitisation) + with -20dBm blocking signal outside of 144 - 148 MHz + [ ] spot check at 88, 108, 150, 200 MHz + [ ] 1W tx power with spurious emissions -45dBC + + +[ ] Remaining Manhatten Prototype Tasks + + Manhatten Style prototype used to build and test as much as possible + [ ] 1W PA + [ ] PIN diode TR switch + [ ] PA filter + [ ] Input (1st) BPF + [ ] TDMA switching + [ ] how to switch PS rails + [ ] tx and rx meet specs + [ ] Parts Selection - [ ] what constitutes a RFC? - + recc general part - + current consumption - + RF characterisistics - + e.g. for PGA 103 and RF amps + + cross off below when part selected and tested in prototype [ ] New audio amp chip + bit better, higher power than LM386 - [ ] should we add a LCD? - + how would this be used? - + Could use cheap Nokia 5110, at least in first rev. Well documented and libraried. [ ] General purpose VHF transistors + [ ] General purpose IF transistors [X] 1st mixer: ADE-1 - [ ] RF switches + [X] RF switches + Brady has suggest AS17992LF [ ] 1W PA transistor [ ] LCD + + Could use cheap Nokia 5110, at least in first rev. Well documented and libraried. [ ] encoder - [ ] first LO: Si5351 + [X] first LO: Si5351 + also 2nd LO - [ ] optional Si570 + [X] optional Si570 + low phase noise soldered in option, provide footprint + Si5351 still used as 2nd LO - [ ] how to select Si570? - + jumper 0hm resistor? + [ ] Prototype parts list to Edwin for review + + just major parts, semiconductors + + make sure they are obtainable + + look for low cost equivalents + [ ] Use Cases + + need software/test procedure to support the following use cases + [ ] test modes + + useful for devevelopment and debugging + [ ] rx BER + + prints BER on LCD when continuous 2FSK/4FSK test frames sent + [ ] tx BER + + sends continuous test frames using 2FSK/4FSK [ ] VHF FM radio - [ ] Open Source VHF DV radio - [ ] Low MDS + [ ] Open Source PTT VHF FreeDV radio + + continuous or TDMA? Can they be the same? [ ] TDMA Repeater [ ] Diversity rx + use 2nd output from 5351 @@ -91,11 +131,32 @@ to use, e.g. set a frequency [ ] Changing waveform + [ ] Software Modules + + see sm201 Block Diagram page 2 [ ] VHF Modem + + cont mode first, we can adpat to burst/TDMA mode next + [ ] ideal non-coherent 2FSK/4FSK BER versus Eb/No perf + [ ] tracks +/- 500ppm sample clock offsets with no impl loss + [ ] +/- 5kHz frequency offset acquisition in 1000ms on continuous signal + [ ] C/Octave versions + [ ] user defined symbol rate (nominal 1200, 2400), carrier freq, sample rate + [ ] can it cope with say 3000 symb/s to allow time for TDMA guard times and sync? + + e.g. a gd fit with integerat Fs/Rs ratios + + might need TDMA design at same time to answer this question + [ ] variable nin style demod C function call, approx 20ms packets + [ ] DR to review function headers + [ ] automated test script to copare C and Octave units results + + to ensure identical implementation + [ ] command line ./mfsk_tx and ./mfsk_rx + [ ] demo OTA (1200/2400/2FSK/4FSK) using SSB radios or SDR [ ] VHF protocol + + do we need two modes, cont & TDMA? + + or is there a way to combine? So one rx does both? Autobaud? + + can we optionally use FM friendly machester encoded waveform? [ ] TDMA framework around modem, burst modem - [ ] diversity + [ ] rx TDMA diversity + [ ] test frame tx/rx modes [ ] New Drivers [ ] LCD [ ] Encoder @@ -103,35 +164,80 @@ [ ] Si5351 [ ] UI for setting a frequency [ ] USB console + [ ] USB tx/rx signal streaming + [ ] Code to support running Modes + [ ] Analog FM + [ ] TDMA repeater + [ ] Diversity RX + [ ] FreeDV PTT TDMA radio + [ ] Risks - + and experiments/tasks/prototypes to mitigate - [ ] DAC and ADC tied together - + demo tx/rx switching using this approach - [ ] Can we use ADE-1 bir-directional? - + what about diplexor? - [ ] Investigate use of other mixers - + but doesnt have to be perfect? - [ ] Celestra mixer - [ ] Glens - [ ] coupled res in shielded box or cots part? - [ ] how to swithc mixer/xtal filter - [ ] what else wcould er use instead of NE602? - [ ] ADC perf + + check off when risk has been nailed, e.g. by experiment/test + [X] Can we use ADE-1 bir-directional? + + yes, use TIA and PIN diode switching + [X] coupled res in shielded box or cots part? + + make little shields out of blacnk PCB + + just make box, doesnt need lids + [X] how to switch mixer/xtal filter + + tx modulator transistor is part of rx load + + alo use of TIA + [ ] Is NE602/612 still easy to get? + [X] ADC perf + SFDR etc, which is why we run it as 100kHz + if not good enough we'll need an external ADC + test against two tone, MDS and ACR + + Result: met 135dBm spec on prototype so OK [ ] Power dissipation of active devices and resistors + easy to exceed limits in SM resistors and transistors + RF drivers draw lots of current - [ ] termination of mixer + + mitigation: power spereadhseet in doc section + [ ] IF termination of 1st mixer + + how to test if this is OK? [ ] do we need a way to bypass the LNA? + or is it OK even with strong signals + + mitigation: cascaded IP3 calculations in doc section + if this compares to current middle range radios then OK + [ ] xtal filter power + + what is the limit, how many dBm are we using at the moment? + [X] prototype RX works + + 1200 bit/s 2FSK at < -133dBm with BER < 0.03 + + theory with NFis -134dBm at 0.02 + [ ] prototype TX works + + 1200 bit/s 2FSK at 1W spurious -45dBC + + demod by SDR at high SNR with 0 BER + [ ] TDMA switching + + demonstrate design supports tx/rx switching fast enough for TDMA + -[ ] PCB layout +[ ] Sch Entry + [ ] linear reg option for vadc ADC and vref + + jumper select to test + [ ] put extra 0805 or 1206 components in parallel for Z matching and DNL + + e.g. on collectors and emitters of RF amps + + between building blocks + [ ] inductors + [ ] coil winding details if air core + [ ] tolerance + [ ] statement on Q so we know if we can subs SM or need Hi-Q air-core + [ ] alignment of coils WRT each other to prevent coupling + [ ] location of shields if rqd + [ ] how to adjust/if adjustment rqd + + e.g. adjust filter by variation in coild spacing against filter spec + [ ] 4 by 0.1 inch pin headers in a square pattern to disconnect building blocks + [ ] select Si570 with a jumper + [ ] review of foot prints for discretes + + ease of debug, e.g. if we need to add a LC filter + + power handling + +[ ] Rev A PCB Layout + [ ] footprints for all devices + [ ] block diagram showing map of building blocks + + separate analog and digital [ ] shields [ ] where do we put sheilds [ ] how to fabricate? + + try small pieces of black PCB [ ] foot prints [ ] probe points + VHF freindly with nearby grounds @@ -140,8 +246,9 @@ + can we get a 50-ohm probe for cro or spec-an? So mechanically it can sit on board? [ ] 50 ohm points for spec an? - [ ] ways to disconnect modules so we can insert tracking gen and spec an - + 0805 0 ohm jumpers + [ ] 4 pin 0.1 inch headers to disconnect building blocks so we can insert + tracking gen and spec an + [ ] Manufacture [ ] is it feasible to have 6 turn coils with one turn taps in production? @@ -149,32 +256,3 @@ [ ] can people wind toroids? [ ] How will we test and align? -Unorg notes ------------ - -What we care about: - -+ Software defined waveform (even linear ones like PSK), so must be - linear up and down conversion, eg. direct FM is out -+ TDMA so needs a uC with bare metal, no USB and Host PC type devices due - to latenecies -+ Functional demos of advanced features -+ Your idea is you are willing to roll up you sleaves and make it happen. - -What we don't care about: - -Other people are good the aspects below, we are not. So we focus -where we can make a difference, like innovateive coding, good modems, -a new codec, and open source. We are doing enough! Don't have to -a tick all boxes first time around. - -+ minimal cost -+ your favourite radio architecture - there are many ways to up and down convert a signal. -+ High RF performance, such as phase noise, blocking, ACR, high tx - power, multi-band operation, low spurious, component selection, low - power consumption. -+ Your favourite chipset -+ Your idea unless you are willing to roll up you sleeves and make it - happen. -+ gold plating - is the feature you are proposing going to add to our - schedule? Will it introduce risk? diff --git a/sm2000/doc/sm203 gain_noise_calcs.ods b/sm2000/doc/sm203 gain_noise_calcs.ods index daf010d8f4238226e51a643892a8431f455dcb51..04c7cde2e93f81fd23aa1a8fd07cbe5fb0ad55bc 100644 GIT binary patch delta 9542 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 -- 2.25.1