Planet Linux Australia
I've had a bit of a thing about biographies recently, having just read the very good The Crossroad by Mark Donaldson. This book is a very different story, but I think still quite interesting. Kellie was a country girl with no real plans and an impulse control problem. While the book follows her formative years as she parties across Australia in a generally northern direction, I think the underlying story about growing up and finding your way in the world is quite interesting.
Is this great literature while will enlighten the masses? Probably not. Was it a fun read on a flight and mostly about a teenager with no direction finding her place in the world? Yes.
Tags for this post: book kellie_arrowsmith biography australia
Related posts: The Crossroad; Don't Tell Mum I Work On The Rigs; In Sydney!; American visas for all!; In A Sunburned Country; Melbourne Comment Recommend a book
This week I’ve been working on class A and class C amplifiers for the transmit side of the SM2000 design. Yesterday I worked up a gain budget that would take me from -20dBm at the output of the 1st mixer to +30dBm (1W) at the output of the PA. I need two 20dB (ish) driver stages and one 10dB (ish) PA, 50dB of gain in total.
The prototype amplifiers all had Z-match networks that matched to 50 ohm input and output. When combining the amplifiers I combined the Z match networks, removing the intermediate 50 ohm step. So we go from 2500 ohms at the output of the first stage to 10 ohms at the 2nd stage input. Then 250 ohms at the 2nd stage output to 10 ohms 3rd stage (PA) input.
I cranked the handle on the Z-match calculations and soldered the thing together:
In the photo you can see the extra large rectangular pads I used to give Q2 and Q3 some heatsinking. I measured and tweaked all the home made inductors using the spec-an method from the last blog post. I estimate they are within +/- 15% of the values on the schematic.
It worked first time but the overall gain was a bit low at 43dB. So I entered “experimental mode”, and started testing individual stages. To test stage 1 and stage 2 alone this meant changing the Zout network to match the 50 ohms of the spec-an.
Couple of changes:
- The 1st stage gain was a bit low. I changed L1 from 24nH (the calculated value) to 57nH, this gave me +3dB. I don’t know why, and it’s annoying me! However I appreciate that at VHF the calculations can only get you to within 20%.
- While testing stage 1 and 2 there was some instability, which went away when I rotated L2 45 degrees away from L3.
- In my first pass I use a 18 ohm resistor to bias Q3 at 0V. However when I changed this to a RF choke the output power jumped up to 1W with -20dBm drive, and I can get 0.5W with -30dBm drive.
- The power supply filtering (R7 and R8) causes about 1V of drop to the power supply of Q1 and Q2, which leads to a few dB loss of drive. This could be improved by recalculating the Q1 and Q2 bias points.
The BFQ19 is not meant for 1W so I only ran it for a few seconds there. I killed one when I raised Vcc to 14V, it’s rated at a Vce(max) of 15V and with Vcc=14V the collector would be seeing at least 2Vce = 28V. However it runs OK for a few minutes at 0.5W.
I figure this design has plenty of drive to deliver 1W with the right output transistor. Now I need to select and obtain a suitable transistor and test it. Think it will need to have a Vce(max) of 36V, 2W dissipation, and >10dB gain at 150MHz.
I need to integrate this PA with the PIN diode TR switch and come up with some switching earlier for the BPF output just after the mixer. The tx and rx chains share the 1st mixer (which is bi-directional) and BPF. So I need a way to switch between the input of this tx amplifier chain and the LNA output.
The PA has a 2nd harmonic just -38dB down so we’ll need a little more filtering, spurious 50dB down would be nice.
The book is competently written and readable. However, it regularly strays into what I would consider fantasy fiction (medieval warfare, vampires, battling Godzilla) in a way I found jarring and annoying. Overall I don't think I'll read the other books in this series.
Tags for this post: book timothy_j_gawne bolo combat ai
Related posts: Battlefields Beyond Tomorrow ; Mona Lisa Overdrive; East of the Sun, West of the Moon; Bolo Strike; Bolos 4: Last Stand; Their Finest Hour Comment Recommend a book
Over the last few days I have prototyped a few more building blocks for the SM2000, documented here for my reference.
PIN Diode Transmit/Receive Switch
These are described in quite a few places, one of the best references is the PIN Diode Handbook. Key issue for me is the receive side loss through the switch, as it adds to my noise figure, which I have put a lot of work into keeping low!
Note the switch so I can make sure the control voltage is tied to 0V in the “off position”.
The initial rx loss was a bit high at 0.5dB which I traced to the inductor value being measured as 72nH rather than the 53nH I designed for. Need to watch that with home made inductors. Reducing it to 3 turns made it bang on, and the receive loss of the TR switch is now 0.25dB, about what I expected. The transmit insertion loss is also a little high at 1dB, perhaps more drive current is required in the PIN diodes. The isolation between the tx and rx ports on transmit is just 23dB, I was hoping for more. However with 1W (30dBm) out, thats 7dBm presented to the rx LNA input which is OK.
Thanks Matt VK5ZM for discussions on the TR switch over IRC as I messed with it.
Measuring Inductor L and Q at VHF
There comes a time in every RF noob’s life where you need to measure the L and Q (or effective series or parallel inductor resistances). I started with Measuring Inductors at VHF and Above which suggests a series resonant circuit in series with a tracking generator and spectrum analyser.
This works well when the Rl of the inductors is comparable to the spectrum analyser 50 ohm impedance. However at VHF, inductors in the couple of hundred nH range are common. An air core inductor with L = 150nH may have a Q of 200 at 150MHz, giving an equivalent Rl = 2*pi*f*L/Q = 2*pi*150E6/200 = 0.7 ohms. When Rl is a fraction of an ohm, the spec-an input Z=50 ohms dominates the Q of the series tuned circuit and you don’t get much of a peak.
So I tried a few different topologies, and ended up hanging a series resonant LC circuit across the spectrum analyser input, and running some numbers as below. This gives you a nice sharp dip at resonance, so knowing C, you can work out L=1/((2*pi*f)^2)C. Then some voltage division based on the depth of the “dip” lets you work out Rl and hence Q:
While writing this post I stumbled across this blog post on Measuring Resonator Q at VHF, which uses a cool gimmick-capacitor variation on a method described in EMRFD.
Thanks also to Neil VK5KA and Matt VK5ZM for discussions on this topic.
500mW VHF Class C PA
I need a 1W PA for the SM2000. I have no PA experience so needed a way to get started. The largest VHF-capable transistor I have laying about is the BFQ19, which is rated at 1W. EMRFD suggests choosing a device whose power dissipation exceeds the desired output power, so I chose a 0.5W target output power. This transistor has a maximum collector voltage of 15V. Class C amplifiers can kick Vc to 2 or 3 times Vcc so I chose a Vcc of 5V.
“RF Circuit Design” tells me that small signal S-params don’t count for power amplifier design, and there are no large signal design parameters for this transistor (it’s designed for small signal operation). So I used the simple approach of just designing for a collector load of Rl = Vcc*Vcc/2P = 25 ohms, ignored any reactive components, and crossed my fingers.
I tried a couple of different impedances driving the base. With the conventional selection of 10 ohms I had poor gain and couldn’t reach my target output power. I think the problem was the voltage driving the base. 13dBm into 10 ohms is sqrt(2)*sqrt(0.02*10) = 0.632Vpeak, which is less than the 0.7V needed to switch on the transistor. By changing the impedance match network to 100 ohms driving the base I kicked up the base drive (albiet at a higher impedance). Now the transistor was being switched on, and I reached my power target with 13dBm of drive and a Vcc of 7.6V.
This is probably an artifact of the low power output and hence low drive of my little power amplifier. For a 1W amplifier with 100mW drive, peak base voltage would be sqrt(2)*sqrt(0.1*10) = 1.4Vpeak.
Note the 1uH inductor value in the sch photo should be 100nH. I only ran the PA for a few seconds, as I don’t have a heatsink and it’s dissipating 0.5W. A bigger piece of PCB soldered to the collector might be OK, although that might add capacitance too. At some point I’ll need to work out how to calculate the heatsink size I need.
I spent a bit of time playing with different base and collector loads in order to increase the gain. However looking at various other VHF PA designs, it appears 10dB power gain is about right, so I decided my little amplifier is working OK. I’ve learned a lot! Next step is to come up with some sort of tx power and gain budget so I make sure I have the correct drive levels for a 1W PA.
EMRFD and “RF Circuit Design” books.
The design calculations for this VHF PA are in . I’ve started collecting a bunch of little Octave functions for RF design into rfdesign.m.
Something odd just happened, so I thought I’d better screencap it for posterity.
I’ve had a Twitter account since some time in 2011. It looks a bit like this:
By blind accident, I happened to notice something resembling a clone, named @tszrong, which looks like this:
Maybe it was petty of me, but I thought it appropriate to report this account for impersonation. This resulted in the following email from Twitter Support (I’ve omitted the part at the bottom with the actual links and whatnot, but you get the idea):
Incredibly, the name on my goverment-issued photo ID does actually match the name on my Twitter account, but I will not be uploading a copy of this for Twitter to verify. Partly this is because I don’t want digital copies of my government-issued photo ID unnecessarily floating around the aether, and partly it’s because… SRSLY? Just look at the profile pages. Please.
- Children's growing use of mobile devices may hamper their learning of key technology skills: National Assessment Programme report http… 13:19:09, 2015-11-27
So this year the Percona Live conference has a new name — it is the “Data Performance Conference” (presumably for a much broader appeal and the fact that Percona is now in the MongoDB world as well). And the next new thing to note? You have to go through a process of “community voting”, i.e. the speaker has to promote their talks before via their own channels to see how many votes they can get (we tried this before at the MySQL & Friends Devroom at FOSDEM; in this case, please remember you also need to create a new account and actually vote while logged in).
I hope you vote for Sergei, Monty and my proposals!
- Using and Managing MariaDB – a tutorial, which has been referred to as The Complete MariaDB Server tutorial, I thought I will change the name up a little, in addition to the content. The most recent version of this tutorial was given at the Percona Live Conference in Santa Clara in 2015 (slides). Since then we’ve released MariaDB Server 10.1, and there’s much more new things to talk about!
- MariaDB 10.1 – What’s New? – a talk that would have Michael “Monty” Widenius (creator of MySQL and MariaDB) and me give it together. I’ve described this as a dance, and the last time we did this was at Percona Live Amsterdam. The content will of course be new, and I am creating the slide deck this time around.
- Databases in the Hosted Cloud – this is a pet talk. It costs some money to make, and if accepted I plan to also showcase who has better performing hosted databases. I did this at Percona Live Amsterdam 2015 (slides), but since then we’ve seen Amazon offering MariaDB Server as part of RDS, HPCloud being sunset, and also Rackspace upping their offering with High Availability Databases. More research to be done from now till then!
- Best Practices for MySQL High Availability – this would be another tutorial, and at Percona Live Amsterdam 2015 it had the highest registered attendance (Kortney told me the day before and I removed all practicals, since 100+ people with practicals is impossible for one person to manage – slides). I think with the changes in NDBCLUSTER (recently announced at OpenWorld), the addition of tools in the MHA world (mha-helper), this should have a lot of new information (and more importantly a lot of new things to play with).
- Choosing a MySQL HA solution today – a talk based on the above tutorial, cut short, to ensure people whom are not at tutorial day, will have solutions to think about and take home for implementation in the future.
- MariaDB/MySQL security essentials – a talk which focuses on improvements in MariaDB Server 10.1, and MySQL 5.6/5.7, including encryption at rest, easier SSL setup for replication topologies, and even external authentication plugins (eg. Kerberos is almost ready – see MDEV-4691).
- The MySQL Server Ecosystem in 2016 – a talk about MySQL and the forks around it, including the private trees that exist (some like the Twitter tree haven’t been updated in a while, but clearly have made inroads in giving us new features). Learn what to use, and what is the best one for your use case.
- MariaDB Connectors: Fast and Smart with the new protocol optimizations – a talk from Sergei Golubchik, about new protocol optimisations in MariaDB Server as well as how we optimise this from the connectors as well.
- MariaDB 10.1 Security: Validation, Authentication, Encryption – a talk from Sergei Golubchik focusing on MariaDB 10.1 security improvements; he’s got some amazing slides on encryption that I saw at Percona Live Amsterdam, and you can see a five-minute lightning version from the meetup.
Here’s to happy voting and I hope to give at least some of these talks (if not all!).
For the SM2000 I need some VHF small signal RF amplifiers, for example a driver amplifier for the transmit PA. So I figured it was about time I learned to design RF transistor amplifiers. The S-parameter method seems to be the way to go, and I have some BRF92 transistors that have S params on the data sheet.
Unless you are experienced in RF design this post may not make much sense. I estimate the eye glazing to interest ratio at 20dB. However as a RF noob I am documenting my experience to help me remember what I have learned.
I spent a day reading the small signal transistor amplifier chapters of “EMRFD” and “RF Circuit Design” by Chris Bowick, and getting my head around Smith Charts. I scratched about on a bunch of paper, complex numbers flying everywhere. Lots of errors and rework. The next morning, to cross check my manual work, I wrote s_param_rf.m to handle the tedious calculations.
I also found these helpful RF and Microwave Stuff Octave scripts, e.g. Smith Chart plotting, including stability circles.
The transistor and operating point I chose was not unconditionally stable, so I had get my head around “stability circles” and find an input and output load that would be stable, and design input and output matching networks. The “RF Circuit Design” book walked me through everything.
Here is the Smith Chart for my operating point:
The red and blue arcs are “no go” circles for the input and output impedance the transistors sees. The green is a 20dB constant gain circle. Any output reflection coefficient gammaL on the gain circle will give you an amplifier with 20dB gain. The source reflection coefficient gammaS is a function of gammaL. So I tried a few different gammaL (red star) until I found a stable gammaS (purple star).
The Smith Chart is rather “busy”. The output reflection coefficient gammaL = 0.8 – 0.4j is the same point as the load or output impedance Zo = 1 – 4j (normalised to 50 ohms which is 50 -200j without normalisation). Even though they map to identical points on the chart, they are read off different axis as different values.
Here is a sample run of the Octave script:
K = 250.5885e-003
-----Frequency: 1.00 - potentially unstable - plotting stability circles
Red is the gammaIn=1, for all loads (gammaL)
Blue is the gammaOut=1, for all sources (gammaS)
Green is the 20.0 dB constant gain circle for gammaL
Input: Zi = 67.6 + 26.9j ohms
In parallel form Rp = 78.3 Xp = 197.1j ohms
So for a conjugate match transistor input wants to see:
Rp = 78.3 Xp = -197.1j ohms
Rs = 50.0 to Rl = 78.3 ohm matching network Xs = 37.6j Xp = -104.1j
with conj match to Zi Xs = 37.6j Xp = -301.1j
matching components Ls = 0.040 uH Cp = 3.5 pF
Ls can be made from 3.1 turns on a 6.25 mm diameter air core
Output: Zo = 50.0 + -200.0j ohms
So for a conjugate match transistor output wants to see:
Rl = 50.0 Xl = 200.0j ohms
Which is a series inductor Lo = 0.212 uH
Lo can be made from 7.1 turns on a 6.25 mm diameter air core
I then designed the bias network and came up with this circuit, which I soldered together:
You can just see the little SOT-23 surface mount transistor in the centre of the photo.
Much to my surprise it worked! They say anyone can design a RF oscillator but it takes skill to design an RF amplifier. This actually works as an amplifier! Here is the gain swept between 0 and 300MHz:
Gain was 23dB, return loss at both ports about 8dB at 150MHz. I’m not sure if the return loss is a problem, it represents about 1dB loss (15%) in the reflected signal. I figure getting within 15% is OK given component and S-param tolerances at VHF.
The noise figure was measured at 4dB, and 1dB compression point around 0dBm. The compression point feels a bit low, perhaps as I used a collector resistor rather than a RF choke. I’ll read up on that next, see if I can get a 10dBm output, suitable for driving the SM2000 PA.
Version 2 with 10dBm Output
After another day of head scratching and 3 tries with different collector currents, collector loads, and finally an increased Vce (10V), I have arrived at a version that can handle 10dBm output:
Two tricks were required to get the 10dBm power output:
- Setting the load impedance for the collector Z=P/(Irms*Irms). I worked out the required impedance assuming a RMS current of 2mA, which was a reasonably “small signal” variation from the 14mA bias I selected for this version.
- Raising Vce from 4V to 10V by using an inductor in the collector rather than a resistor. This meant Vc could bounce around a bit more without being clipped. When I tried increasing the collector impedance without raising Vce the output power was still distorted at 0dBm, so this was an important step. The inductor ended up being part of the matching network and now my circuit looks like everyone else’s so I must be doing something right.
If the above doesn’t sound very convincing it’s because I don’t quite know what I’m doing. EMRFD and RF Circuit Design has a better explanation.
The output is a nice clean 10dBm sine wave, with 2nd order nasties 35dB down:
The Octave script was modified to do the calculations for this version:
K = 466.3534e-003
-----Frequency: 1.00 - potentially unstable - plotting stability circles
Red is the gammaIn=1, for all loads (gammaL)
Blue is the gammaOut=1, for all sources (gammaS)
Green is the 20.0 dB constant gain circle for gammaL
Transducer gain: 26.9 dB
Input: Zi = 8.4 + 3.2j ohms
In parallel form Rp = 9.6 Xp = 25.4j ohms
So for a conjugate match transistor input wants to see:
Rp = 9.6 Xp = -25.4j ohms
Rs = 50.0 to Rl = 9.6 ohm matching network Xs = 19.7j Xp = 24.4j
with Xs a capacitor, and Xp and inductor Xs = -19.7j Xp = 24.4j
With a conj match to Zi Xs = -45.2j Xp = 24.4j
matching components Li = 0.026 uH Ci = 23.5 pF
Li can be made from 2.5 turns on a 6.25 mm diameter air core
Output: Zo = 2500.0 + 0.0j ohms
matching network Xp = 357.1 X = 350.0 ohms
which is parallel Lo = 0.379 uH and series Co = 3.0 pF
Lo can be made from 9.4 turns on a 6.25 mm diameter air core
My “transducer gain” is somewhat off (I’m getting 21dB), I know not why. Maybe as I’m using 100MHz s-params for a 150MHz circuit. Now time to look at diode TR switching and maybe a class C 1W PA.
I was studying EMRFD to understand the collector load thing and found what looked like a small typo. I emailed the author (the legendary Wes Hayward) who replied and sure enough I was right, and it will be added to the errata. Finding even a small error in a book like EMRFD makes me feel prouder than getting this amplifier working! Just like software – debugging someone else’s well written work is a great way to learn. Also like open source “release early and often” and let the community help improve the work.
6th Floor, 200 Victoria St. Carlton VIC 3053Link: http://luv.asn.au/meetings/map
• Chelton Evans, Maxima
• Andrew Pam, Holiday gift suggestions for Linux lovers
200 Victoria St. Carlton VIC 3053 (formerly the EPA building)
Late arrivals, please call (0490) 049 589 for access to the venue.
Before and/or after each meeting those who are interested are welcome to join other members for dinner. We are open to suggestions for a good place to eat near our venue. Maria's on Peel Street in North Melbourne is currently the most popular place to eat after meetings.
Linux Users of Victoria Inc. is an incorporated association, registration number A0040056C.December 1, 2015 - 18:30
For the last month I’ve been working hard on prototyping the SM2000 – an open source VHF radio. It’s purpose is to test some advanced VHF/UHF ideas I have for FreeDV.
The SM2000 will be a small box (like the SM1000), that contains a fully functional VHF SDR Digital Voice radio. It will run advanced open source Digital Voice modes, have a 1W power output and adequate tx/rx filtering for real-world operation on the 2M band. No Host PC required. Open Hardware and Software, price TBD but a few hundreds of $. It will also run analog FM but no modes with a proprietary codec.
Just yesterday I demonstrated demodulation of 1200 bits/s 2FSK at -135dBm, right in line with predicted performance.
This is an important milestone. Analog FM and first generation digital voice (D-star/DMR/C4FM and friends) fall over at about -120dBm. One of my aims is equivalent performance to these systems at 10dB lower. With completely open hardware and software.
I need custom RF hardware to develop and demonstrate VHF DV ideas I have formed over the past year. However I am not a RF expert, am just one guy, and have limited resources. So I will focus on those areas that I can uniquely contribute to. Choose my battles. In other areas (e.g. certain aspects of RF performance), I will just shoot for acceptable.
I have a similar approach to architecture. There are many ways to build a radio, and I have chosen one that suits me at this time. Feel free to warm up your soldering iron and substitute your own favourite.
What I care about:
- I don’t trust any part of the modem being in hardware. This means software defined waveforms, and SSB style up and down conversion. Direct FM is out. And don’t get me started on data running through analog FM modems.
- TDMA needs a “bare metal” uC for hard real time, so no OS. Host PC/USB peripheral type designs won’t work.
- Functional demos of advanced features such as sub -130dBm Digital Voice, $100 TDMA repeater, diversity to handle multipath, low cost, open hardware and software.
- No chip sets or SoCs. This is open source. I need control.
- Don’t have to a tick all boxes first time around.
- Minimal cost
- Sparkling RF performance in areas such as phase noise, IP3, blocking, ACR, high tx power, frequency stability, channel spacing, multi-band operation, low spurious, power consumption. The RF Gurus can do that better than me so I’ll leave it to them.
- Gold plating – is the feature going to add to our schedule? Can anyone else implement it? Will it introduce risk? Who will step up to make it happen?
Your Suggestions Welcome
But I’ll probably ignore them. What I really want is your contribution. If you want your-favourite-must-have-feature to happen, step up and make it happen. Innovation is 1% inspiration and 99% perspiration. I get overwhelmed by well-meaning people with inspired ideas, and underwhelmed when I ask them to help implement those ideas.
Can you make my TODO list shorter, not longer? Now you have my attention.
The receiver is a dual conversion superhet, with IFs at 10.7MHz and 24kHz. It is designed primarily for constant amplitude waveforms such as FSK, so does not have an AGC.
I used this Gain and Noise Spreadsheet as a tool to design the radio. It calculates cascaded NF, the NF of the ADC, and the gain required to get the MDS we need. I also have some sub-sections that I plug numbers into as I test, e.g. for NF calculations, and tuned circuit calculations. Very useful.
I haven’t designed the first BPF yet, but anticipate it will have a low loss (to maintain system NF), and a fairly broad response.
The PGA103 is a 0.5dB NF, 20dBm input IP3, 20dB gain block which sets up the overall receiver noise figure of 1.5dB. It’s major disadvantage is high power consumption (90mA at 5V), so I am considering a discrete transistor amplifier here.
The BPF near the mixer provides attenuation of out of band signals. Through a process of slightly mystified experimentation I have settled on a double tuned circuit:
Which has a response like this:
For reasons I do not understand (parasitic capacitive coupling?) changing the position of the coils relative to each other sets the position of the notches. I’ve set up the 60dB notch on the 126MHz image frequency. I’ve built it a couple of times with the same dimensions and the response is quite predictable. Each coil is 6 turns wound on a 1/4 inch drill bit, with a tap at half a turn for the 50 ohms input and output. The other end of each coil has a 12pF trimmer cap.
A Si5351 is employed for the local oscillators. For the purists I will include a Si570 option for the first LO. The RF switch for the two Si5351 outputs is to support diversity (two channel) reception. The radio can quickly shift to a channel a few hundred kHz away to receive a packet, effectively receiving on two frequencies at the same time.
I’m using a SBL-1 mixer but will move to an ADE-1. The RF Gurus tell me that termination of the IF port of the mixer is important. So I’m using a 15dB gain Termination Insensitive Amplifier (TIA) that presents a 50 ohm load to the mixer over a wide range of frequencies. I swept the TIA input using a return loss bridge and confirmed around 20dB return loss out to 300MHz (the sum of the LO and RF signals). The TIA has bandwidth of 50MHz which should effectively filter out the LO+RF IF signal.
A 10.7MHz 15kHz wide crystal filter attenuates off channel signals (47dB down at +/- 25kHz) and performs bandpass anti-aliasing filtering for the ADC. To get a nice flat response there is some impedance matching either side of the crystal filter.
I messed around with a few 2nd mixers (sub harmonic, discrete transistor, diode). I had some problems with noise when using a transistor mixer (LO injected into emitter, RF into base) which held me up for a few days. Then I tried a NE602 and it worked really well, and provides some gain. With a good Z-match on the input the 2nd mixer noise problem was gone. So that will do for now.
The baseband amp takes the 24 kHz IF and boosts it 50dB before feeding it to the uC ADC. It’s just two transistors with emitter degeneration to set the gain. The ADC is configured to sample at 96kHz, and upload samples to a Host PC via USB. I can then use a GNU Octave script (e.g. fsk_horus.m) to demodulate the FSK signal.
I am designing for test, e.g. using 50 ohm building blocks. This allows me to break out each section and test separately, for example sweeping the crystal filter, or driving the TIA with a 10.7MHz FSK signal, or measuring NF of a section.
I have been testing the Bit Error Rate (BER) performance from the very early building block stage. This measure neatly defines the performance of a digital radio. Much better to test BER early than wait for final integration and have dozens of problems to solve. We want to know as soon as possible if there is a problem.
This block diagram shows an example of testing from the IF down:
I modified the fsk_horus modem to support 1200 bit/s and a sample rate of Fs=96kHz. This is a well tested modem that has performance bang on ideal.
The radio is implemented with garden variety transistors, the most exotic parts being the ECS M15B crystal filter, SBL-1 mixer, PGA-103 LNA, and NE602. There are no transformers. I have used some toroids to wind my own inductors however these are not critical in terms of Q or tolerance and can be replaced with off the shelf parts.
There are three trimmer capacitors that need aligning with the use of a spectrum analyser. Although it may be possible to have an alignment mode, e.g. use the Si5351 to sweep a test signal, sample the signal and display a spectrum on a Host PC.
I used Manhattan style construction:
The two PCBs in the background are a STM32F4 Discovery board and an OpenRadio which I’m just using for it’s Si5351 outputs.
I didn’t even need a printed circuit board to prototype and reach the -135dBm performance milestone. This has allowed me to remove a large chunk of risk from the project very early on – a huge benefit.
I think it’s remarkable that with rough construction, no shielding, a poor layout to the STM32F4 ADC, I can demodulate such weak signals. I guess the engineering is subtle and not related to the physical appearance. It does go crazy when I key my HT next to it though!
When we do move to a PCB the same parts in surface mount packages will result in a nice compact design.
- Build a 1W transmitter prototype. In particular deal with RF amplifiers and diode switching to make a TDMA transciever.
- Testing of the receiver, e.g. other specs apart from MDS
- Work with Rick, KA8BMA, to develop a Rev A prototype PCB version of the entire radio.
- Lots of software work
- The 1200 bit/s 2FSK modem has been used so far as it’s what I had lying around. For the final system I’m favouring 4FSK at 2400 bit/s which I estimate will work at -132dBm. So need to get 4FSK running soon.
- Work towards functional demonstration of the project goals.
I haven’t planned any further forward. I’m not sure when a SM2000 product will emerge. Some time in 2016 I guess. Sooner if you help!
I’m documenting this here so I don’t forget.
Use fsk_horus to generate modem signal at Fs=96kHz. Use hackrf_uc.m to up-convert to IQ samples at Fs=10MHz for replay by the HackRF. hackrf_uc.m also adds a 700kHz offset (IQ designs have a black hole at DC).
For testing the IF we can then play a 10.7MHz signal from HackRF using:
/codec2-dev/octave$ hackrf_transfer -t fsk_10M_EbNo80dB.iq -f 10000000 -a 1 -x 20
For testing at 146MHz input of the radio use:
~/codec2-dev/octave$ hackrf_transfer -t fsk_10M_EbNo80dB.iq -f 145300000 -a 0 -x 15
Note the 700kHz offset.
In both cases adjust the -a and -x options and use an attenuator to get the level you want for testing. The level can be checked on a spec-an, although this gets tricky beneath -120dBm.
Simultaneously sample by flashing the STM32F4 Discovery with adc_rec_usb.elf, and then upload Fs=96kHz samples using:
~/codec2-dev/octave$ sudo dd if=/dev/ttyACM0 of=test.raw count=10000
Then demod using fsk_horus:
Fs: 96000 Rs: 1200 Ts: 80 nsym: 1200
demod of raw bits....
centre: 23976 shift: 1272 twist: -1.4 dB
coarse offset: 1192 nerrs_min: 25 next_state: 1
frames: 13 Tbits: 14400 Terrs: 2 BER 0.000 EbNo: 12.23
Here is a plot of the STM3F4 ADC with -135dBm at the rx input:
You can see the passband of the crystal filter – the internal noise from the radio front end passed through the filter creates the trapezoidal spectral shape at the input to the ADC. The two lines in the centre are the low and high FSK tones centered on the 24kHz IF, the hump of “noise” between them are part of the FSK signal. Not sure what that line around 17kHz is all about.
The lines on the far left are harmonics of the 1.2kHz interrupt service routine on the STM32F4. I cleaned most of this noise up with some power supply filtering, it was initially 20dB higher and all over the spectrum:
A little noise goes a long way with 100dB of gain.
Measuring Noise Figure with the Rigol DSA-815
After lots of reading on NF and a few false starts, I can now reliably measure noise figures, e.g. in my LNA, mixer, BPF, and IF amplifiers. For example the TIA amplifier NF is quoted as 5 dB and I measured 5.2dB. I have also measured the single (BPF in front) and double sided NF of the SBL-1 mixer and they were 3dB apart.
You need to have noise above the noise floor of the 815. With the 815 terminated in 50 ohms I measured -162dBm/Hz, which suggests a NF of 12dB. With gains of greater than 20dB on the device or system you are measuring, the numbers from the 815 start to make sense. So plan your tests such that the measured No is higher than -140dBm/Hz.
Here are the Rigol settings I use:
- Amplitude: attenuation 0dB. Pre-amp On
- BW/Det: sample
- Trace/P/F: Power average
- Marker Function: No function (to measure gain) Noise Marker (to measure No)
The procedure is: measure the gain G using a test signal, then switch the test signal off, terminate with 50 ohms, and measure No (noise power/Hz). NF = No – G + 174.
Here is my working for an earlier LNA-Mixer-IF amp combination:
Input power -80.00
Output power -10.00
Noise pwr -102.20
My design had a calculated NF of 1.3dB, so 1.8dB is reasonable given the 1.5dB accuracy of the 815. I have a spreadsheet setup so I can just plug the numbers in.
Mel K0PFX, and Jim, N0OBG for buying me the spec-an, which has been invaluable. Neil, VK5KA, for RF advice; John VK3IC and Craig VK3CDN for cables, test equipment, and RF advice; Matt, VK5ZM and Brady for bouncing ideas off; Glen English for RF guidance and in particular explaining ADC NF.
Brady pointed me at the DSP10 2M radio from 1999 which turns out is very similar to what I have come up with! Some very similar design decisions, and a useful example for me.
I like the Chrome browser, but the memory usage is fscking ridiculous.
I have a slightly older computer at work, if I open 4 or more tabs in Chrome the computer will grind to a halt, and I gotta wait perhaps a few minutes for it to swap everything out then I can close the tabs. 150MB for a tab, that’s just way way way too much.
Personally I strongly dislike “virtual memory” in the sense of swapping to disk. I’d much rather get a (non-fatal) “out of memory” error than have the computer grind to a halt, which is what happens when a virtual memory computer goes a bit over its RAM. I don’t want to click a different window that I haven’t used for a while and have to wait for 3 minutes while the computer loads it from disk again and tries to figure out what to swap out. If we didn’t use swap, programmers (looking at you, Google) would be more careful not to waste memory.
Computers are not all that much more functional than they were in to 1990s, or even the 1980s, for regular office tasks such as wordprocessing and spreadsheets – and those computers although technically slower were actually more responsive in many cases because they did NOT grind to a halt due to swapping.
The first Mirobot v2 kits have arrived in Australia! Ben Pirt at Pirt Design & Technology in the UK has once again delivered a very neat product. OpenSTEM is the main distributor for Australia, because we regularly get in quite a few for schools and individual students anyhow.
Most of our Mirobots are extra special, because we get them un-soldered. That is, there are a few SMD (surface mounted) components, but other than that students (of all ages!) can do a bit of soldering! This is part of our Robotics Program, where Soldering and otherwise assembling a moving product from all the loose parts is a real enabler – so with the v2 coming out in pre-soldered form by default, we had a word with Ben to ensure that we can keep doing the great stuff with the classes!
This does mean that for every shipment we get, we need to prep a few extra bits before sending on the kits or using them in the classroom. So we’re working on that now for this first shipment. There’ll be more – if you want a kit (un-soldered or pre-soldered), do get your order in soon!
Newly-appointed Director of Community at GitHub, Jono Bacon, will be one of four outstanding keynotes for linux.conf.au in February 2016. Bacon, formerly Community Manager at Canonical - the company behind Linux distribution Ubuntu, and author of the best-selling ‘The Art of Community’, will deliver insights into building strong, effective, diverse and successful technical communities.
Bacon shared his enthusiasm for keynoting linux.conf.au. “I am absolutely delighted to be joining you all in Geelong in 2016. LCA is a cornerstone in the global Linux and Open Source movement and I am not only excited about speaking but also getting to know all the attendees at the event”, Bacon says.
Conference Director, David Bell, was thrilled to announce Mr Bacon as Keynote Speaker.
“Our theme for linux.conf.au 2016 is ‘Life is better with Linux’ - and the strength of our Linux and open source communities contribute significantly to that aspiration. Robust, diverse, and inclusive communities happen by design, not accident, and Jono has done an enormous amount to shape that. It’s truly an honour to be able to host him in Geelong in February.”
One of the most respected technical conferences in Australia, Linux Conference Australia (linux.conf.au) will make Geelong home between 1st-5th February 2016. The conference is expected to attract over 500 national and international professional and hobbyist developers, technicians and innovative hardware specialists, and will feature nearly 100 Speakers and presentations over five days. Deakin University’s stunning Waterfront Campus will host the conference, leveraging state of the art networking and audio visual facilities.
The conference delivers Delegates a range of presentations and tutorials on topics such as open source hardware, open source operating systems and open source software, storage, containers and related issues such as patents, copyright and technical community development.
Linux is a computer operating system, in the same way that MacOS, Windows, Android and iOS are operating systems. It can be used on desktop computers, servers, and increasingly on mobile devices such as smartphones and tablets.
Linux embodies the ‘open source’ paradigm of software development, which holds that source code – the code that is used to give computers and mobile devices functionality – should be ‘open’. That is, the source code should be viewable, modifiable and shareable by the entire community. There are a number of benefits to the open source paradigm, including facilitating innovation, sharing and re-use. The ‘open’ paradigm is increasingly extending to other areas such as open government, open culture, open health and open education.
Potential Delegates and Speakers are encouraged to remain up to date with conference news through one of the following channels;
- Website: http://lcabythebay.org.au
- Twitter: @linuxconfau, hashtag #lca2016
- Facebook: https://www.facebook.com/lcabythebay
- Google+: https://www.google.com/+LcabythebayOrgAu
- Lanyrd: http://lanyrd.com/2016/linuxconfau/
- IRC: #linux.conf.au on freenode.net
- Email: email@example.com
- Announce mailing list: http://lists.linux.org.au/mailman/listinfo/lca-announce
We warmly encourage you to forward this announcement to technical communities you may be involved in.Jono Bacon will be one of four keynotes for linux.conf.au 2016 in Geelong
- Do we really want this? https://t.co/ElXgJoHe9K 09:42:14, 2015-11-22
- School leavers 'lack the financial skills to survive': study https://t.co/fIbUfvOfkz 19:32:13, 2015-11-21
- We should be challenging kids to think about what problems they want to solve, not what they 'want to be' https://t.co/rnkZCrP5D4 09:42:01, 2015-11-21
- How equal are you? The World Economic Forum's annual Global Gender Gap report highlights inequality by country. https://t.co/GwEOkqT0w5 09:42:06, 2015-11-20
Looking over from the observatory to the Fiore summit (fullsize)
Though I had headed out solo to ride Basso Binda on the first Sunday I was there this ride I got to do with some company until the last climb and get shown one of the classic loops in the region.
My first views of Lago Maggiore and then back through Brinzio, then when we got back to Varese I decided to solo climb up to the summit past the Campo di Fiore and into the snow that was still around from the falls on the weekend. A rather pretty area for sure.
Images in my gallery from the ride ETC, Varese, Brinzio, Lago Maggiore, Brinzio, Summit Fiore ride.
Looking toward Switzerland from the top of the climb (fullsize)
I had a work trip to the European Training centre in Gavirate Italy in April 2012, while there I managed to get out for three rides and one solid run. On the rides I took my camera and was able to get some great shots. Definitely an awesome area to train in for many sports.
Recommended to me by Luke Durbridge who was at the ETC while I was there, this ride was from Gavirate over to Lago di Maggiore and then along the shores until I hit the climb and down the other side in to Switzerland than back through the valley past Lago di Lugano toward the border at Ponte Tresa above Varese. A great ride for sure and a nice climb, though I probably left it an hour too late as coming back it was dark by the time I got to Varese and I had not taken lights.
Images in my gallery from the ride Alpe di Neggia ride in Italy/Switzerland.