Altium Circuit Studio review part 1

Disclaimer:
I was given a license of Altium CircuitStudio in exchange for my opinion. I’d like to think I’m not biased, but the fact is that I was given free stuff. So I’m going to present facts in the hope that you’ll find it useful. You should use your own judgement where applicable.

I did not agree to, nor was I asked to provide positive feedback about any product in exchange for goods.

Altium Circuit Studio review Part 1

I will try to answer questions related to how an individual would value Circuit Studio vs. Altium Designer in their small-shop business.

First I want to give you an idea of my experience so you know where I’m coming from.

I started using EDA software in 2001 with Eagle, then made by cadsoft. Actually I started a little earlier by using Protel EasyTrax when there was a free version of that. But I had no idea what I was doing then. I was pretty young.

I used Eagle up until around 2012 when I was designing a VME board for a real-time control system. It was the largest and most complicated PCB I had ever designed. Eagle simply could not do it. It became bogged down. Routing traces was an absolute mess because it was so slow it would crash. The manual router had no online intelligence of design rules so you had to guess about where you were placing traces and cross your fingers when running the DRC check. It was OK for small boards, but I had moved in scope and complexity. I was designing boards with high speed buses and controlled impedance.

VME board designed in Eagle 6.
VME board designed in Eagle 6. Do you like pain?

I was able to get my employer to pony-up for a license of Altium Designer after significant research and watching how-to videos on YouTube.

I use Altium to this day at my current day job. They have a single license of Altium but for “official” designs I have to use Mentor Graphics DxDesigner.

 

Enough of that for now. Let’s get on with it.

 

Installation and first impressions

01-install

[ any image can be clicked to view a larger version ]

CircuitStudio has an installer downloader – 8 MB initial download. Full install is around 530 MB. I didn’t have any trouble downloading the installer. I am not sure if you can acquire a standalone download of the software.

Installation went along without a hitch. I have to say – at least Altium has figured out installers. If you’ve installed Dassault or Autodesk or Mentor Graphics software lately you might realize how wrongly it can work out.

Schematic Editor

 

The color scheme for CircuitStudio is a little different than Altium. Altium is heavy on the yellows and CircuitStudio has a much larger panel with logos. Here they are next to each other:

07-ribbon-circuitstudio

08-ribbon-altium16

 

Circuit studio is new and flashy looking, but who cares? DxDesigner looks like it was designed in 1995 and it still works fine.

I’m starting to get the feeling at this point that Altium is going to be less frustrating for the professional CAD types out there. I don’t look at the toolbar when I’m using Altium, after all, I’ve been using it almost every day for a couple years. Most of my work is done through shortcut keys.

On the other hand I think the designers made a good effort of reducing the confusing user interface features of AD. They appear to have reduced the options (and features) to what they think the price point justifies.

Making a new project

One of the first things I noticed about CircuitStudio is that it doesn’t have Workspaces.

Note the lack of Workspaces
Note the lack of Workspaces
09-altium-projects
Altium Designer has workspaces

 

Fortunately you are still able to open more than one project at a time. This would have been a serious limitation. It’s common to have several projects open at the same time. I often have several libraries open at minimum.

The libraries panel is very similar to Altium:

11-libraries-panel
CircuitStudio libraries panel

 

Look familiar?

Fortunately CS had no problem loading my existing AD libraries. If you’re like me, you’ve been creating your own part models for years. The sweat equity should not be discounted.

In doing some backup research for this review I noticed that Altium seems to have gone back and forth on features that they would allow in CS. I noticed some people complaining about old Altium libraries not working in CircuitStudio. I can confirm that I opened all of my Altium Designer libraries in CircuitStudio and they worked just fine.

11-librariesaltium
Altium Designer libraries panel. I find this design less confusing but perhaps it’s just because I’ve been staring at it for years.

 

Making a simple board – impressions

Schematic Entry

Drawing the schematic for this simple design seemed like no big deal. The schematic editor in CS appears to be identical to AD.

15-draw-schematic
CircuitStudio schematic editor

One positive for Altium is that their schematic entry is easy to read by default. I use Mentor Graphics software at my day job and it uses that horrible stroke font that is designed for pen plotters. It’s not 1998. Nobody should be using pen plotters!

Anyway I’ve always been reasonably impressed with Altium (and hence CircuitStudio) schematic editor because it’s right there at the top, as good as or better than the most expensive tools.

Component Parameters

I took some screenshots of common schematic editor windows so you could see that they’re almost direct copies.

13-edit-component-parameters-on-sch
Component parameters

 

14-sch-annotation
Part annotation

 

Update PCB / Forward annotation

 

CircuitStudio has a slightly different feel than Altium Designer. The flow is a bit different but the underlying concepts are the same so I’m hesitant to say the process is fundamentally any different.

The basic flows is:

  1. Draw the schematic
  2. Annotate parts
  3. Run ERC
  4. Add a PCB to your project
  5. Update PCB Document (also known as Forward Annotation)

17-schem-show-differences

In Altium a lot of the design flow process was spread out over several different menus. CircuitStudio has condensed a lot of this into primary drop-down menus from the UI. It actually stresses me out a little seeing how much functionality from AD is packed into one menu in CS. Generate Outputs is in the same menu as adding new files. It just seems odd, that’s all!

Inconsequential complaining aside, like I said, a lot of the underlying functionality is nearly identical in AD and CS. For example here is the forward annotation / ECO window in CS:

18-forward-annotation

 

For those of you playing along at home, you might notice I’m designing a very simple little microcontroller PCB here. After updating the PCB I get the parts on the layout which, no surprise, looks exactly like Altium Designer:

20-pcb-parts

One thing I notice here is that CS does not know about the concept of Rooms. That’s fine with me. They always get in my way anyway. Maybe you like Rooms if you’re designing highly compartmentalized and complicated designs.

I haven’t completely explored the shortcut/hot keys yet, but I have to say I don’t understand why they changed them. In Altium you hit ‘Z’ on the keyboard to bring up the Zoom context menu:

21-altium-zoom-menu
Altium Designer hotkey context menus make a lot of sense. CircuitStudio – doesn’t have them at all.

Pressing ‘Z’ in CS does nothing at all. Interesting. I have to remember the illogical keypress Ctrl+PgDn to “zoom all” which is the extremely easy to remember keypress sequence: Z,A in Altium.

 

The default layer coloring for a board in CS is thus:

22-layer-colors

Ouch! That’s rough. You’re going to want to know how to change the layer rendering color if you want to have any chance of understanding what’s on what layer. Fortunately it is pretty easy to change layer colors. Right click on any layer tab on the bottom of the PCB editor and select “Layer Colors…”

23-change-layer-colors

I can’t find the PCB List panel.

In Altium you can select several components, for example the 4 mounting holes on this board:

27-simple-pcb-design

And it would allow you to edit properties of all four components in spreadsheet form. It’s a really handy tool. I’m not very happy that it’s missing.

The 3D view still works in CS:

28-simple-pcb-3d

Obviously this stupidly simple design I made here would be easy in any EDA CAD software. I just wanted to get started and show you the “unboxing” and first impressions.

A few questions I plan on answering for my own edification in future posts:

  1. How sophisticated are the PCB rules?
    1. Can I constrain trace impedance?
    2. Can I define differential pairs?
  2. Does the software limit me to through-vias?
  3. What other signal integrity features exist?
  4. What export formats exist?
  5. Can I import DXF to the layout?
  6. Does the push-shove manual router work like it does in Altium Designer?

I will go into more depth in Part 2 when it goes live. I would like to hear feedback from you – what would you like to know? I have access to several different tools so I can compare features. What do you care about?

 

Mooshimeter – a bluetooth multimeter

I just received my Mooshimeter from a kickstarter that I backed a while ago.

2015-01-28 11.42.182015-01-28 11.43.262015-01-28 11.43.35

The Mooshimeter is a small battery powered multimeter that talks to your smartphone or iPad over Bluetooth LE. Not all devices have BLE so you should check before jumping to buy this.

The bluetooth IC is the CC2540 which is an integrated MCU + bluetooth system. The analog front-end is the ADS1292 dual 24-bit delta-sigma converter. As far as delta-sigma goes, it seems to be a very nice part with a maximum sample rate of 8kHz.

I wanted to try out my new Mooshimeter so I clamped a beam-type load cell to my workbench:

2015-01-28 11.34.52

The load cell is a super inexpensive (cheap) beam cell that I bought on Amazon for about $25. A load cell uses a resistive bridge strain gauge to measure the small amount of deflection in a calibrated beam. The deflection follows the strain linearly. Using this relationship you can use a load cell to measure force such as gravity.

2015-01-28 11.35.24

Load cells are rated in (volts full scale) per (volt input)

This means if the input is 10 volts (typical maximum) the output of this particular load cell will be 20 millivolts when a force of 5kg (49 Newtons) is applied. This is a difficult value to measure with a multimeter. The Mooshimeter claims 24 bit resolution which should give us plenty of bits even with this small maximum scale of 20 mV.

I hooked up the strain gauge and measured 1.43 mV. This value is a combination of the gravity pulling on the load cell (aka the weight of the load cell) and mismatch in the strain gauge. I didn’t pay much for this load cell so I suppose I can’t expect great performance.

2015-01-28 16.32.21

I put a roll of solder on the load cell and measured 2.65 volts. In case you’re unsure: the polarity of the voltage is relative to whether you are pushing or pulling on the load cell. Many are bidirectional (but not all.)

2015-01-28 16.32.12

If we subtract the values, the solder weighs 1.22 millivolts. Previously we calculated that the full scale of 5 kg (49 Newtons) is 20 millivolts. So according to my load cell and Mooshimeter, my roll of solder weighs 1.22mV/20mV * 49 N = 2.99 N. This is 0.67 pounds. That sounds pretty good to me. My cheap OXO food scale says 0.675 pounds which corresponds surprisingly well!

The Mooshimeter app will show a graph vs. time of voltage (and current) I made a short video of me pushing on the load cell with my finger to demonstrate this.

2015-01-28 12.11.58I haven’t had a lot of time to play with the Mooshimeter but I think it will definitely show it’s usefulness as time goes by. Of particular interest to me will be long-term data logging which at the time of this writing is a feature that has not been finished.

 

Temperature compensated MOSFET biasing

A class AB MOSFET amplifier circuit is shown below:

MOSFET AB AMP

The MOSFET, in class-AB operation has a positive DC bias provided by voltage source V1. The purpose of the bias is to bring the transistor into it’s linear operating region, as shown by a datasheet graph of drain current vs. gate voltage:

IRF540 forward transconductance

The graph here begins at about 4 volts. The threshold voltage of the IRF540 (which I’m just using as an example) is somewhere around 4 volts.

Once you get beyond 4 volts, you can see that the drain current increases in a nice sweeping (exponential) arc.

Now imagine you are building a high power class-AB amplifier with V2 = 48v and quiescent current = 60mA. The power dissipated by the transistor is 2.88 Watts.

2.88 Watts will heat the transistor up a bit, depending on how nice your heatsink is. The transistor gate threshold voltage temperature coefficient is between -2 and -4 mV / C (millivolts per degree celsius)

So if the transistor heats up by 10C, the threshold voltage drops by about 30 mV. This could have a significant effect on the quiescent current, causing the transistor to get even hotter!

One way of dealing with this issue is to use a temperature compensated bias circuit:

rf_amp TL431 ckt
MOSFET bias temperature compensation circuit. The output voltage is on the cathode of U4 (pin 1) and for these values results in about 3.7 volts at room temperature.

The device I built this for is an RF power amplifier that uses the MRF6V2010 N channel MOSFET. The threshold voltage is around 2.3v for this device.

The output of the above circuit is fed to a potentiometer that sets the gate bias voltage:

MOSFET AB bias control

The TL431 is a dirt cheap ($0.14 US) shunt voltage regulator that has a built-in voltage reference, error amplifier, and pass transistor. I used an NTC (negative temperature coefficient) resistor, R38, which increases the feedback voltage on the TL431 as the temperature increases. This causes the output voltage to decrease, following a similar temperature coefficient as the MOSFET threshold.

Because the MOSFET gate passes no current the gate bias voltage supply is only capable of around a milliamp of DC current. The bias voltage leaves the potentiometer (R18, above) where it passes through a few RC networks to filter out RF energy that would add noise to the amplifier (or radiate power.)

 

I’ve made a few calculations to show how this works in a real design. The threshold voltage of a MOSFET varies by -2 to -4 mV/C as I mentioned above. This depends on the doping level of the device.

Let’s say we’re using this circuit for generating MOSFET bias (click for larger view):

 

 

[I lost this image. It is basically the same as the above schematic with TL431, however, the part designators have changed]

 

Specifically I’m looking at the three resistors on the feedback of the TL431 (R1, R2, R3)

The voltage reference of the TL431 is 2.50v. This fixes the cathode voltage of the TL431 to be:

Vout = 2.5 * (R1+R2+R3)/R3

Looking at the datasheet for a common NTC thermistor with B=~3900 we see a chart of the resistance change vs. temperature. Of course another method would be to use the actual mathematical model in our calculation. The chart is fine for me though. I’m going to be making an estimate which will end up being near the ideal value.

NTC thermistor chart

Thermistors are commonly rated by their 25C value. If you buy a 1K NTC thermistor, it should measure about 1K ohms at 25 celsius. This chart shows that for a thermistor with a B value of about 4000, the resistance at 40C for example will be close to 80% of what it is at 25C.

So we can use this knowledge to figure out the temperature coefficient of our bias circuit:

Tempco(PPM) = (V1 – V0) / (T1 – T0) * 10^6

T1 is the higher temperature (pick a value)

T0 is the lower value (use 25C)

V1 = 2.5 * (R1+R2+R3)/R3
Where R2 is the thermistor value at T1

V0 = 2.5 * (R1+R2+R3)/R3
Where R2 is the thermistor value at T0

 

As an example

T1 = 40c

T0 = 25c

R1 = 3.3k

R2 = 1k NTC thermistor, varies with temperature (40C = ~ 800 ohms, 25C = ~ 1000 ohms)

R3 = 10k

V0 = 2.5 * (3.3k + 1k + 10k)/(10k) = 3.575v

V1 = 2.5 * (3.3k + 800 + 10k)/(10k) = 3.525v

Tempco(PPM) = (3.575 – 3.525)/(40 – 25) *10^6 = -3333

The value -3333 means that for each degree celsius, the voltage will go down by 3.3 mV. This is near the middle of the range defined by the physics of the MOSFET (-2 to -4 mV / K)

How good does it need to be?

One item I’ve neglected so far is the temperature coefficient of the internal TL431 voltage reference. According to the datasheet for the Fairchild TL431, the temperature coefficient is 4.5 mV over 110 degrees C (the temperature range of the device.) This is a tempco of +41 PPM

Using -4mV/K as an upper limit of our MOSFET threshold voltage and using -3.3mV/K from the last example, adding 41 PPM gives us (close enough to) -3.2mV/K. We subtract these together to get the resulting rate of 0.8mV/K.

We can figure out the bias current change between two temperatures given the transconductance of the MOSFET. The IRF510 has a transconductance of about 1.2 Siemens (amps per volt.)

Using the same example temperatures of 25C and 40C, we can see that the gate bias voltage will change by:

Vdelta = 0.8mV/K * (40C-25C) = 12 mV

The bias will change by about:

12mV * 1.2 A/V = 14mA

That’s not necessarily bad but it’s not great. One way to make this adjustable would be to add a potentiometer in parallel with R2. Decreasing the value of the pot will decrease the bias circuit tempco, increasing the pot value will increase the bias circuit tempco. This is exactly what I did in the above tempco schematic. Pot R37 changes the tempco adjustment slope. Experiments show excellent slope control capability.

 

OSH Park 4 layer stackup and impedance data

Note: If you want to use this data for designing your own PCBs, please ensure that my stackup data matches what OSH Park is currently using.

Here’s some data on the OSH Park 4 layer stackup:

osh park 4 layer stackup data from website

If you want a 50 ohm trace on the top layer and the second layer is ground (as it should be) then you want the trace width to be 14.47 thousands of an inch:

osh_park_4lyr_microstrip_top

I used Agilent LineCalc this time. It performs an actual e-mag simulation to synthesize the correct line width. I am quite confident that this is the correct value given the inputs.

 

Wideband RF preamp / GPS Preamplifier board

I started this design 2 years ago using the Hittite HMC474 MMIC. That part has since been discontinued so I redesigned the board.

wideband_amp_3d

Originally I wanted a GPS preamplifier. Another project of mine is to build a GPS receiver. But there’s nothing specific about this design that limits it to 1575 MHz. The MMIC and biasing circuitry will allow this to work from VHF to probably around 3 GHz. I haven’t tested the range yet.

This new design uses the Analog Devices ADL5611.

It’s not the cheapest MMIC out there but the features stack up well.

Here’s a schematic. Click the image for a large view:

gps_preamp_schematic

 

Parts list:

wideband preamp parts list (spreadsheet)

wideband amp simple bom

Performance:

I will test this board in the coming weeks. I promise.

Board:

I’ve shared this board on OSH Park so you can buy your own copy of the board for a reasonable sum

Revised photodiode amplifier

I designed a new photodiode amplifier. Click on the image for a larger view:

photodiode_amp2
And an associated printed circuit board:

photodiode_amp1

The printed circuit board is available to purchase from OSH Park if you like.

I will update this post after I receive the PCB and test the circuit.

 

The first part of the schematic is the power supply. VIN is +15V.
The L78L12 supplies regulated +12V to bias the photodiode. The RLC lumped element filter that follows ensures a low noise voltage source for the photodiode bias.
The filter quickly drops below the noise floor above a couple MHz. This is theoretical. Actual performance won’t be quite as nice.

The 47 Ohm resistors thrown into the filter will not measurably affect the photodiode response. The DC power will be no more than a few milliwatts maximum.

The AC power will probably be below the microwatt level, I’ll guess around -40dBm. Again, I’ll update this when I have some results.

 

The next section I’ll talk about is the photodiode itself and the amplifier.
The photodiode is an OPF432. It comes in a handy package that has an ST style fiber optic connector so you don’t have to have any bulky external mechanical parts to couple light into the diode.

The photodiode is reverse biased at +12V. According to the datasheet this should provide a rise time of about 8 microseconds. I believe this refers to the time constant. The datasheet claims this part can be used up to 100 MHz which is a period of 10ns.

The signal rises in half the period which is 5ns. If the datasheet rise time is accurate at 8 microseconds, I believe the AC output amplitude (peak) of a 100 MHz modulation will be:

Current = (5ns/8us)*50A/W = .03125 A/W

A/W is amps per watt of input power. In my application the input amplitude may be approximately 10uW. Multiplying:

31.25mA/W * 10uW = 312.5nW

This sounds very low, but let’s convert to units of dBm (decibel milliwatts):

P = 10*log10(312.5nW)+30 = -35 dBm

The GALI-74 is an MMIC that conveniently provides a 50-ohm matched input and output with +25dB of gain from low frequencies up to well above the design goal of 100 MHz.

The output will be at about -10 dBm which corresponds to an amplitude of approximately 70 millivolts into a 50 ohm load.

 

The final section of the schematic provides a low pass filtered output which indicates the DC amplitude of the incoming light.

 

ESP8266 WiFi module

Recently I received some really cheap WiFi modules.

The Wi07C isn’t much more than a little rectangular board with a WiFi chip, flash chip, and copper trace antenna.

esp8266

 

The little board on the left is the ESP8266 board. It’s wired to a CP2102 UART to USB bridge and powered by a 5V – 3.3V buck converter I had laying around.

I bought the ESP8266 board from a store in Korea called Electrodragon

Pinout and AT command reference here

I made 5 connections for this demonstration:
VDD to +3.3v
GND to GND
RX to TX on CP2102
TX to RX on CP2102
RST to +3.3v

On my computer I ran a perl script that listens for connections on port 8001 and simply spits out data that it receives. If it receives the text “PING?” then it responds with “OK”

So I connected to the CP2102 UART bridge using Realterm. The baud rate is 57,600. The line endings are CR but CR+LF will work fine.

I sent the following commands to the module to

1. Connect to my WiFi AP
2. Establish a TCP/IP connection
3. Send data
4. Disconnect

AT+CWJAP=”myAPssid”,”passphrase”
AT+CIPSTART=”TCP”,”192.168.1.104″,8001
AT+CIPSEND=6
PING?
AT+CIPCLOSE

Here’s a screen shot of what was echoed back to me on Realterm:

ScreenClip

So I actually sent the PING twice. The last character after PING doesn’t matter in my perl script. You can see the second time I sent 7 characters. PING is 4. There’s a space you can’t see, and then CR+LF for a total of 7. The +IPD,3:OK indicates that the host (the perl script) returned 3 characters: “OK” and then a CR character.

I’m impressed that a $4.50 WiFi module does anything at all, but it actually worked without much trouble so I’m very impressed.

I then ran a command that the module didn’t like, and it’s only responding with “busy now …” to any command I send it. I’ll have to toggle the RST line or power in order to reset the device. An acceptable caveat or will this prove to be a persistent problem?

Here’s the perl script I used:

 

#!/usr/bin/perl

use IO::Socket::INET;

# auto-flush on socket
$| = 1;

# creating a listening socket
my $socket = new IO::Socket::INET (
LocalHost => '0.0.0.0',
LocalPort => '8001',
Proto => 'tcp',
Listen => 5,
Reuse => 1
);
die "cannot create socket $!\n" unless $socket;
print "server waiting for client connection on port 8001\n";

while(1)
{
# waiting for a new client connection
my $client_socket = $socket->accept();

# get information about a newly connected client
my $client_address = $client_socket->peerhost();
my $client_port = $client_socket->peerport();
print "connection from $client_address:$client_port\n";

# read up to 1024 characters from the connected client
my $data = "";
$client_socket->recv($data, 1024);
print "received data: $data\n";

print $data;
# write response data to the connected client
$client_socket->send($data);

# read up to 1024 characters from the connected client
my $data = "";
$client_socket->recv($data, 1024);
print "received data: $data\n";

if($data =~ m/PING.*/){
print("PING\n");
$data = "OK\n";
} else {
goto shdn;
}
# write response data to the connected client
print $data;
$client_socket->send($data);

# close
shdn:
shutdown($client_socket, 1);
}

$socket->close();

 

 

Capacitor impedance

Ever since I began designing circuits, I’ve read about bypass capacitor usage.

Engineers make broad statements about what you obviously have to do. Disagreeing with this advice automatically makes you a neophyte.

Common phraseology of bypass capacitor lore includes:
– You must use a mixture of low and high value capacitors to filter low and high frequency transients.
– You must use a tantalum bulk capacitor
– Sprinkling 1uF or 100nF caps around a board is stupid
and I’ve not made this one up:
– If you don’t know how to properly design capacitor bypassing, you should not be an EE.
[Of course, by “proper” they mean follow their advice]

I’ve been told by other reputable sources that since good MLCC [multi-layer ceramic capacitors] of high value and good electrolyte are now available, that most of these rules are exaggerated as yet another way for some engineers to claim superiority over others.

I decided to perform a few simple measurements to help me figure out for myself what I need to do when designing a circuit with bypass capacitors. Feel free to post below and offer advice as to how I’m wrong and/or what I should do with my graphs.

Test setup:
I have a simple “DG8SAQ” Vector Network Analyzer that I bought from SDR-Kits. It’s a reasonably good value and covers the range of 1kHz to 1.3 GHz. Without any fancy impedance converters, I decided that using this 50-ohm system to measure capacitor impedance would not be an unreasonable analog to what is happening when a capacitor is used for bypassing.

Bypassing for high speed digital systems is demanding. Edge slew rates can easily reach into the GHz range for FPGA designs. Even common LVCMOS digital logic can be extremely demanding – a recent comparator I used (MAX962) will drive it’s output high/low in 2.3ns (specified at 5v. It will be somewhat slower at 3.3V)

What I decided to do is solder a couple SMA connectors adjacent to each other, as in the following picture:
2014-05-27 14.23.57

I calibrated VNA and soldered a few surface mount capacitors into the open space. I used the following values:
1 nF
10 nF
100 nF
1 uF

From basic theory we know that the impedance of a capacitor is, as written in Laplace domain:
1/(sC)

Where
s = j*W [complex frequency]
and
C = capacitance value in Farads

In reality, capacitors have ESR and ESL. ESR is equivalent series resistance, and ESL is equivalent series inductance.
Alternating current by definition makes the impedance of a capacitor change.
LCR

My measurement system is not perfect for at least one reason; the ESR of a capacitor is usually << 1 ohm. My VNA is a 50 ohm system. I cannot effectively measure the ESR with this system. These plots will reflect the ESL, which I can measure.

Firstly I measured a 1nF capacitor. This plot is the magnitude of the signal that goes through the capacitor. This is called “S21”
I measured from 10kHz to 100 MHz because this seems to be a range most people would be interested in:

[click image for larger version]
1nf_cap_impedanceNext I tested a 10nF capacitor of the same size and type:

10nf_cap_impedanceLooks pretty nice to me.

Now for the 100nF cap:

100nf_cap_impedance
I continued on with a 1uF capacitor. The plot is quite boring:

1uf_cap_impedanceIf you’ll notice: these last two plots went all the way up to 300 MHz. I thought there must be something interesting going on at some point. Not really.

My conclusions are based on the measurements that I’ve done. Obviously I have not included PCB parasitics in my test setup.
My conclusion is that for point-of-load bypass capacitors, the actual value of the capacitor makes little difference. I would not hesitate to use 100nF MLC-capacitors all over my PCB. Ideally the capacitors are placed as close to the power pins of the integrated circuits as possible, in order to make the current loops as small as possible.

Bypassing requirements for real circuits are very complicated. If you just have a fundamental sine wave current, you just pick one capacitor and be done with it.

I believe what I’ve shown is that the Fourier components of your load current that exceed about 1 MHz are easily handled by 100nF MLC capacitors, and that your lower frequency bypassing can be handled by a bulk capacitor that is located elsewhere on the board. Of course this depends on the inductance of your PCB traces.

Your system probably has intermittent loads switching on and off, or perhaps you’re building a switching power supply. The best bypassing setup would be an ideal capacitor of arbitrarily large capacitance value. This would theoretically cover your Fourier components from a few Hertz up to hundreds of MHz. Recently I’ve been using MLCC as large as 100uF with the X5R rated dielectric (never use Y5V!) I believe these new enormous MLCC are nearly ideal capacitors. They are expensive but I highly recommend them, especially if your alternative is a tantalum capacitor.

Thoughts on RF spectrum analyzers

spectrum_analyzer

Note: I’m contemplating designing a spectrum analyzer. The following are a compilation of my own notes that I’m making public. They might not make a lot of sense as a coherent treatise but take the pieces for what they are.

The classical way of performing RF spectrum analysis is to mix the input with a local oscillator (FLO1) that ramps between two higher frequencies, producing IF1.

IF1 is sent through a narrow band filter which leaves you with a narrow piece of the input spectrum that has been shifted up. The ramping action gives you a sliding window of the input spectrum, shifted up to the center frequency of the narrow bandpass filter.

Stepping back, remember that the IF1 frequency is the result of nonlinear mixing of the input with the local oscillator.
Let’s make some assumptions:

– the input (Fin) is any signal between zero and 1000 MHz.
– the local oscillator (FLO1) ramps between 1050 and 2050 MHz
– the narrow bandpass filter (FBP) is 1050 MHz

Mixing the local oscillator and the input with a non-ideal mixer gives you:

IF1 = N*input +- M*LO

The strongest output spectra will be where N=1 and M=1. This gives you spectra centered at:

(a) Fin + FLO1
and
(b) Fin – FLO1

Since FLO1 is always greater than Fin, we get a nice strong first image (a) between 1050 and 2050 MHz.
The first negative image (b) is wrapped into the range of 0 to 1050 MHz. Subsequent energies are present at higher orders, however their amplitude is orders of magnitude lower than the main images.

FILTERING
After mixing, IF1 is filtered using a high-Q filter. Q, of course, is a measure of how wide the pass-band is.
Q = Fc/Fbw where Fbw is the -3dB bandwidth.

Common hobbyist spectrum analyzers[1][2] use cavity or helical filters.

A cavity filter has radiative elements (I’ll liberally call antennae) in a conductive can along with a resonator whose length can be changed. They can and often contain multiple cavities

Here’s a paper from M/A COM on cavity and helical filter design.


References

[1] Scotty’s Modularized Spectrum Analyzer
[2] Andrew Holme – Homebrew spectrum analyser

HF/VHF photodiode amplifier

photodiodeamp

Recently at work I was tasked with determining the frequency modulation of a laser beam. I designed and tested the above circuit in a couple hours.

I tested the circuit first with no photodiode in place using my DG8SAQ vector network analyzer — a very low cost network analyzer based on the highly respected (by me) AD9852 DDS chip.

The circuit showed >+20dB gain from about 4 MHz to the cutoff frequency of the RLP-137. Hooray for small victories!

For the photodiode, I had no choice because I just had one laying around here that I could find the part number for: a Melles Griot 13DSI001. This particular part has a responsivity of 0.45 Amps/Watt at 830nm, breakdown voltage of 60, and 10pF capacitance.

A photodiode is typically reverse biased as you see above, with a positive voltage on the cathode. In my case I don’t care very much about what voltage I’m using as long as I do not exceed the breakdown voltage (more about that coming up.)

As light becomes incident on the diode junction, carriers are created that allow current to flow from the high potential to the low potential. This holds true for high frequencies; a high frequency alternating current is allowed through the device.

When a current source is terminated into a resistor we get a voltage source having an impedance of the resistor value. The photodiode is terminated into a 50 ohm resistor, hence we have a fairly decent 50 ohm source that is converting light modulation into RF of a convenient impedance. The maximum frequency (as I understand) is limited by the 10pF intrinsic capacitance of D1, combined with the load resistance, R3. This gives a cutoff frequency of 1/(2*Pi*RC) of about 300 MHz. I may not have needed the lowpass filter (RLP-137), however with my shoddy perf-board construction I was worried about the GALI-74 potentially oscillating in the GHz range.

The 1k resistor R1 is to limit the maximum current that can pass through the photodiode. Combined with C3, this provides filtering from feedback or noise that could come through VCC.

I’d be happy to see your comments below if you have corrections or advice.

MMIC photodiode amplifier
MMIC photodiode amplifier