Multi-Range Programmable DC Power Supplies

B&K9115_leftB&K Precision expanded its 9115 series with the addition of two new multi-range programmable DC power supplies: the 9115-AT and the 9116. Similar to the 9115, the new models deliver full 1,200-W output power in any combination of voltage and current within the rated limits. The models offer the same features as the 9115, but with a few differences.

The 9115-AT provides unique built-in automotive test functions that can simulate common test conditions to ensure reliability of electrical and electronic devices installed in automobiles. The 9116 offers a higher voltage range up to 150 V. Both models are suitable for automotive and a variety of benchtop or automated test equipment (ATE) system applications.

B&K9116_rearThe 9115-AT and the 9116 include a high-resolution vacuum fluorescent display (VFD), independent voltage and current control knobs, cursors, and a numerical keypad for direct data entry. Both models also provide internal memory storage to save and recall up to 100 different instrument settings, sequence (list mode) programming, and configurable overvoltage and overpower protection limits. The 9115 series offers remote control software for front-panel emulation, generation and execution of test sequences, and logging measurements via a PC.

The 9115-AT and 9116 cost $2,345 and $1,995, respectively.

B&K Precision Corp.

July Issue Offers Data-Gathering Designs and More

The concept of the wireless body-area network (WBAN), a network of wireless wearable computing devices, holds great promise in health-care applications.

Such a network could integrate implanted or wearable sensors that provide continuous mobile health (mHealth) monitoring of a person’s most important “vitals”—from calorie intake to step count, insulin to oxygen levels, and heart rate to blood pressure. It could also provide real-time updates to medical records through the Internet and alert rescue or health-care workers to emergencies such as heart failures or seizures.

Data Gathering DesignsConceivably, the WBAN would need some sort of controller, a wearable computational “hub” that would track the data being collected by all the sensors, limit and authorize access to that information, and securely transmit it to other devices or medical providers.

Circuit Cellar’s July issue (now available online for membership download or single-issue purchase)  features an essay by Clemson University researcher Vivian Genaro Motti, who discusses her participation in the federally funded Amulet project.

Amulet’s Clemson and Dartmouth College research team is prototyping pieces of “computational jewelry” that can serve as a body-area network’s mHealth hub while being discreetly worn as a bracelet or pendant. Motti’s essay elaborates on Amulet’s hardware and software architecture.

Motti isn’t the only one aware of the keen interest in WBANs and mHealth. In an interview in the July issue, Shiyan Hu, a professor whose expertise includes very-large-scale integration (VLSI), says that many of his students are exploring “portable or wearable electronics targeting health-care applications.”

This bracelet-style Amulet developer prototype has an easily accessible board.

This bracelet-style Amulet developer prototype has an easily accessible board.

Today’s mHealth market is evident in the variety of health and fitness apps available for your smartphone. But the most sophisticated mHealth technologies are not yet accessible to embedded electronics enthusiasts. (However, Amulet has created a developer prototype with an easily accessible board for tests.)

But market demand tends to increase access to new technologies. A BCC Research report predicts the mHealth market, which hit $1.5 billion in 2012, will increase to $21.5 billion by 2018. Evolving smartphones, better wireless coverage, and demands for remote patient monitoring are fueling the growth. So you can anticipate more designers and developers will be exploring this area of wearable electronics.

In addition to giving you a glimpse of technology on the horizon, the July issue provides our staple of interesting projects and DIY tips you can adapt at your own workbench. For example, this issue includes articles about microcontroller-based strobe photography; a thermal monitoring system using ANT+ wireless technology; a home solar-power setup; and reconfiguring and serial backpacking to enhance LCD user interfaces.

We’re also improving on an “old” idea. Some readers may recall contributor Tom Struzik’s 2010 article about his design for a Bluetooth audio adapter for his car (“Wireless Data Exchange: Build a 2,700-lb. Bluetooth Headset,” Circuit Cellar 240).

In the July issue, Struzik writes about how he solved one problem with his design: how to implement a power supply to keep the phone and the Bluetooth adapter charged.

“To run both, I needed a clean, quiet, 5-V USB-compatible power supply,” Struzik says. “It needed to be capable of providing almost 2 A of peak current, most of which would be used for the smartphone. In addition, having an in-car, high-current USB power supply would be good for charging other devices (e.g., an iPhone or iPad).”

Struzik’s July article describes how he built a 5-V/2-A automotive isolated switching power supply. The first step was using a SPICE program to model the power supply before constructing and testing an actual circuit. Struzik provides something extra with his article: a video tutorial explaining how to use Linear Technology’s LTspice simulator program for switching design. It may help you design your own circuit.

This is Tom Struzik's initial test circuit board, post hacking. A Zener diode is shown in the upper right, a multi-turn trimmer for feedback resistor is in the center, a snubber capacitor and “stacked” surface-mount design (SMD) resistors are on the center left, USB D+/D– voltage adjust trimmers are on top center, and a “test point” is shown in the far lower left. If you’re looking for the 5-V low dropout (LDO) regulator, it’s on the underside of the board in this design.

This is Tom Struzik’s initial test circuit board, post hacking. A Zener diode is shown in the upper right, a multi-turn trimmer for feedback resistor is in the center, a snubber capacitor and “stacked” surface-mount design (SMD) resistors are on the center left, USB D+/D– voltage adjust trimmers are on top center, and a “test point” is shown in the far lower left. If you’re looking for the 5-V low dropout (LDO) regulator, it’s on the underside of the board in this design.


Webinar Will Bring the ActivityBot to Life

ActivityBot componentsOn Thursday, June 26th, the Elektor Academy, in collaboration with element14, will present its latest webinar. The webinar will show you how to bring the Parallax ActivityBot to life in 30 minutes, from start to finish.

Elektor Labs moderator Jaime González Arintero will demonstrate what makes the ActivityBot such a nifty little self-navigating automaton. The webinar is free, and will include time for your questions. Click here for more information and to register.


Temperature-Compensated Crystal Oscillators

TRX1890.TIFThe IQXT-210 series of temperature-compensated crystal oscillators (TCXOs) offers frequency stabilities down to ±0.14 ppm over a –40°C-to-85°C full industrial temperature range. The small-footprint oscillators are encased in miniature eight-pad 5-mm × 3.2-mm package.

Powered from a 3.3-V supply, the IQXT-210 has a typical 12-A current draw depending on the frequency, which can be specified at 10 to 50 MHz. The TCXOs initially offer 11 standard frequencies, including 12.8, 19.2, and 26 MHz.

The IQXT-210s’ output can include various pulling range options, which enables the frequency to be adjusted by a fixed amount for various applications. This also provides remote usage capabilities. The TCXOs are primarily designed for low-power consumption applications (e.g., femtocells, smart wireless devices, fiber-optic networking, microwave satellite communications, LTE/4G base stations, backhaul infrastructure, packet transport network, computer networking, RF modules, Wi-Fi, and test and measurement equipment).

Contact IQD Frequency Products for pricing.

IQD Frequency Products, Ltd.

Low-Drop Series Regulator Using a TL431 (EE Tip #134)

You likely have a stash of 12-V lead acid batteries (such as the sealed gel cell type) in your lab or circuit cellar. Below is a handy tip from Germany-based Lars Krüger for a simple way to charge them.

A simple way of charging them is to hook up a small unregulated 15-V wall wart power supply. This can easily lead to overcharging, though, because the off-load voltage is really too high. The remedy is a small but precise series regulator using just six components, which is connected directly between the power pack and the battery (see schematic) and doesn’t need any heatsink.EL2009-Kruger-SeriesReg

The circuit is adequatele proof against short circuits (minimum 10 seconds), with a voltage drop of typically no more than 1 V across the collector-emitter path of the transistor.

For the voltage source you can use any transformer power supply from around 12 V to 15 V delivering a maximum of 0.5 A. By providing a heatsink for T1 and reducing the value of R1 you can also redesign the circuit for higher currents.

Resource: This tip first appeared in Elektor July/August 2009.

Engineering Consultant and Roboticist

Eric Forkosh starting building his first robot when he was a teenager and has been designing ever since. This NYC-based electrical engineer’s projects include everything from dancing robots to remote monitoring devices to cellular module boards to analog signals—Nan Price, Associate Editor

NAN: Tell us about your start-up company, Narobo.


Eric Forkosh

ERIC: Narobo is essentially the company through which I do all my consulting work. I’ve built everything from dancing robots to cellular field equipment. Most recently I’ve been working with some farmers in the Midwest on remote monitoring. We monitor a lot of different things remotely, and I’ve helped develop an online portal and an app. The most interesting feature of our system is that we have a custom tablet rig that can interface directly to the electronics over just the USB connection. We use Google’s Android software development kit to pull that off.

ERIC: The DroneCell was my second official product released, the first being the Roboduino. The Roboduino was relatively simple; it was just a modified Arduino that made building robots easy. We used to sell it online at for a little while, and there was always a trickle of sales, but it was never a huge success. I still get a kick out of seeing Roboduino in projects online, it’s always nice to see people appreciating my work.


The DroneCell is a cellular module board that communicates with devices with TTL UARTs.

The DroneCell is the other product of mine, and my personal favorite. It’s a cellular module board geared toward the hobbyist. A few years ago, if you wanted to add cellular functionality to your system you had to do a custom PCB for it. You had to deal with really low voltage levels, very high peak power draws, and hard-to-read pins. DroneCell solved the problem and made it very easy to interface to hobbyist systems such as the Arduino. Putting on proper power regulation was easy, but my biggest design challenge was how to handle the very low voltage levels. In the end, I put together a very clever voltage shifter that worked with 3V3 and 5 V, with some calculated diodes and resistors.

NAN: Tell us about your first project. Where were you at the time and what did you learn from the experience?


Eric’s Butler robot was his first electronics project. He started building it when he was still in high school.

ERIC: The Butler robot was my first real electronics project. I started building it in ninth grade, and for a really stupid reason. I just wanted to build a personal robot, like on TV. My first version of the Butler robot was cobbled together using an old laptop, a USB-to-I/O converter called Phidgets, and old wheelchair motors I bought on eBay.

I didn’t use anything fancy for this robot, all the software was written in Visual Basic and ran on Windows XP. For motor controllers, I used some old DPDT automotive relays I had lying around. They did the job but obviously I wasn’t able to PWM them for speed control.

My second version came about two years later, and was built with the intention of winning the Instructables Robot contest. I didn’t win first place, but my tutorial “How to Build a Butler Robot” placed in the top 10 and was mentioned in The Instructables Book in print. This version was a cleaner version of everything I had done before. I built a sleek black robot body (at least it was sleek back then!) and fabricated an upside-down bowl-shaped head that housed the webcam. The electronics were basically the same. The main new features were a basic robot arm that poured you a drink (two servos and a large DC motor) and a built-in mini fridge. I also got voice command to work really well by hooking up my Visual Basic software with Dragon’s speech-to-text converter.

The Butler robot was a great project and I learned a lot about electronics and software from doing it. If I were to build a Butler robot right now, I’d do it completely differently. But I think it was an important to my engineering career and it taught me that anything is possible with some hacking and hard work.

At the same time as I was doing my Butler robot (probably around 2008), I lucked out and was hired by an entertainer in Hong Kong. He saw my Butler robot online and hired me to build him a dancing robot that was synced to music. We solved the issue of syncing to music by putting dual-tone multi-frequency (DTMF) tones on the left channel audio and music on the right channel. The right channel went to speakers and the left channel went to a decoder that translated DTMF tone sequences to robot movement. This was good because all the data and dance moves were part of the same audio file. All we had to do was prepare special audio files and the robot would work with any music player (e.g., iPod, laptop, CD, etc.). The robot is used in shows to this day, and my performer client even hired a professional cartoon voice actor to give the robot a personality.

NAN: You were an adjunct professor at the Cooper Union for the Advancement of Science and Art in New York City. What types of courses did you teach and what did you enjoy most about teaching?

ERIC: I will be entering my senior year at Cooper Union in the Fall 2014. Two years ago, I took a year off from school to pursue my work. This past year I completed my junior year. I taught a semester of “Microcontroller Projects” at Cooper Union during my year off from being a student. We built a lot of really great projects using Arduino. One final project that really impressed me was a small robot car that parallel parked itself. Another project was a family of spider robots that were remotely controlled and could shrink up into a ball.

Cooper Union is filled with really bright students and teaching exposed me to the different thought processes people have when trying to build a solution. I think teaching helped me grow as a person and helped me understand that in engineering—and possibly in life—there is no one right answer. There are different paths to the same destination. I really enjoyed teaching because it made me evaluate my understanding about electronics, software, and robotics. It forced me to make sure I really understood what was going on in intricate detail.

NAN: You have competed in robotics competitions including RoboCup in Austria. Tell us about these experiences—what types of robots did you build for the competitions?


Eric worked with his high school’s robotics team to design this robot for a RoboCup competition.

ERIC: In high school I was the robotics team captain and we built a line-following robot and a soccer robot to compete in RoboCup Junior in the US. We won first place in the RoboCup Junior Northeast Regional and were invited to compete in Austria for the International RoboCup Junior games. So we traveled as a team to Austria to compete and we got to see a lot of interesting projects and many other soccer teams compete. I remember the Iranian RoboCup Junior team had a crazy robot that competed against us; it was built out of steel and looked like a miniature tank.

My best memory from Austria was when our robot broke and I had to fix it. Our robot was omnidirectional with four omni wheels in each corner that let it drive at any angle or orientation it wanted. It could zigzag across the field without a problem. At our first match, I put the robot down on the little soccer field to compete… and it wouldn’t move. During transportation, one of the motors broke. Disappointed, we had to forfeit that match. But I didn’t give up. I removed one of the wheels and rewrote the code to operate with only three motors functional. Again we tried to compete, and again another motor appeared to be broken. I removed yet another wheel and stuck a bottle cap as a caster wheel on the back. I rewrote the code, which was running on a little Microchip Technology PIC microcontroller, and programmed the robot to operate with only two wheels working. The crippled robot put up a good fight, but unfortunately it wasn’t enough. I think we scored one goal total, and that was when the robot had just two wheels working.

After the competition, during an interview with the judges, we had a laugh comparing our disabled robot to the videos we took back home with the robot scoring goal after goal. I learned from that incident to always be prepared for the worst, do your best, and sometimes stuff just happens. I’m happy I tried and did my best to fix it, I have no regrets. I have a some of the gears from that robot at home on display as a reminder to always prepare for emergencies and to always try my best.

NAN: What was the last electronics-design related product you purchased and what type of project did you use it with?

ERIC: The last product would be an op-amp I bought, probably the 411 chip. For a current project, I had to generate a –5-to-5-V analog signal from a microcontroller. My temporary solution was to RC filter the PWM output from the op-amp and then use an amplifier with a
gain of 2 and a 2.5-V “virtual ground.” The result is that 2.5 V is the new “zero” voltage. You can achieve –5 V by giving the op-amp 0 V, a –2.5-V difference that is amplified by 2 to yield 5 V. Similarly, 5 V is a 2.5-V difference from the virtual ground, amplified by 2 it provides a 5-V output.

NAN: What do you consider to be the “next big thing” in the industry?

ERIC: I think the next big thing will be personalized health care via smartphones. There are already some insulin pumps and heart monitors that communicate with special smartphone apps via Bluetooth. I think that’s excellent. We have all this computing power in our pockets, we should put it to good use. It would be nice to see these apps educating smartphone users—the patients themselves— about their current health condition. It might inspire patients/users to live healthier lifestyles and take care of themselves. I don’t think the FDA is completely there yet, but I’m excited to see what the future will bring. Remember, the future is what you build it to be.

Bit Banging

Shlomo Engelberg, an associate professor in the electronics department of the Jerusalem College of Technology, is well-versed in signal processing. As an instructor and the author of several books, including Digital Signal Processing: An Experimental Approach (Springer, 2008), he is a skilled guide to how to use the UART “protocol” to implement systems that transmit and receive data without a built-in peripheral.

Implementing serial communications using software rather than hardware is called bit-banging, the topic of his article in Circuit Cellar’s June issue.

“There is no better way to understand a protocol than to implement it yourself from scratch,” Engelberg says. “If you write code similar to what I describe in this article, you’ll have a good understanding of how signals are transmitted and received by a UART. Additionally, sometimes relatively powerful microprocessors do not have a built-in UART, and knowing how to implement one in software can save you from needing to add an external UART to your system. It can also reduce your parts count.”

In the excerpt below, he explains some UART fundamentals:

UART stands for universal asynchronous receiver/transmitter. The last three words in the acronym are easy enough to understand. “Asynchronous” means that the transmitter and the receiver run on their own clocks. There is no need to run a wire between the transmitter and the receiver to enable them to “share” a clock (as required by certain other protocols). The receiver/transmitter part of the acronym means just what it says: the protocol tells you what signals you need to send from the transmitter and what signals you should expect to acquire at the receiver.

The first term of the acronym, “universal,” is a bit more puzzling. According to Wikipedia, the term “universal” refers to the fact that the data format and the speed of transmission are variable. My feeling has always been that the term “universal” is basically hype; someone probably figured a “universal asynchronous receiver/transmitter” would sell better than a simple “asynchronous receiver/transmitter.”

Figure 1: The waveform output by a microprocessor’s UART is shown. While “at rest,” the UART’s output is in the high state. The transmission begins with a start bit in which the UART’s output is low. The start bit is followed by eight data bits. Finally, there is a stop bit in which the UART’s output is high.

Figure 1: The waveform output by a microprocessor’s UART is shown. While “at rest,” the UART’s output is in the high state. The transmission begins with a start bit in which the UART’s output is low. The start bit is followed by eight data bits. Finally, there is a stop bit in which the UART’s output is high.

Before you can use a UART to transfer information from device to device, the transmitter and receiver have to agree on a few things. First, they must agree on a transmission speed. They must agree that each transmitted bit will have a certain (fixed) duration, denoted TBIT. A 1/9,600-s duration is a typical choice, related to a commonly used crystal’s clock speed, but there are many other possibilities. Additionally, the transmitter and receiver have to agree about the number of data bits to be transmitted each time, the number of stop bits to be used, and the flow control (if any).

When I speak of the transmitter and receiver “agreeing” about these points, I mean that the people programming the transmitting and receiving systems must agree to use a certain data rate, for example. There is no “chicken and egg” problem here. You do not need to have an operational UART before you can use your UART; you only need a bit of teamwork.

Using a UART is considered the simplest way of transmitting information. Figure 1 shows the form the transmissions must always make. The line along which the signal is transmitted is initially “high.” The transmissions begin with a single start bit during which the line is pulled low (as all UART transmissions must). They have eight data bits (neither more nor less) and a single stop bit (and not one and a half or two stop bits) during which the line is once again held high. (Flow control is not used throughout this article.)

Why must this protocol include start and stop bits? The transmitter and the receiver do not share a common clock, so how does the receiver know when a transmission has begun? It knows by realizing that the wire connecting them is held high while a transmission is not taking place, “watching” the wire connecting them, and waiting for the voltage level to transition from high to low, which it does by watching and waiting for a start bit. When the wire leaves its “rest state” and goes low, the receiver knows that a transmission has begun. The stop bit guarantees that the line returns to its “high” level at the end of each transmission.

Transmissions have a start and a stop bit, so the UART knows how to read the two words even if one transmits that data word 11111111 and follows it with 11111111. Because of the start and stop bits, when the UART is “looking at” a line on which a transmission is beginning, it sees an initial low level (the start bit), the high level repeated eight times, a ninth high level (the stop bit), and then the pattern repeats. The start bit’s presence enables the UART to determine what’s happening. If the data word being transmitted were 00000000 followed by 00000000, then the stop bit would save the day.

The type of UART connection I describe in this article only requires three wires. One wire is for transmission, one is for reception, and one connects the two systems’ grounds.

The receiver and transmitter both know that each bit in the transmission takes TBIT seconds. After seeing a voltage drop on the line, the receiver waits for TBIT/2 s and re-examines the line. If it is still low, the receiver assumes it is in the middle of the start bit. It waits TBIT seconds and resamples the line. The value it sees is then used to determine data bit 0’s value. The receiver then samples every TBIT seconds until it has sampled all the data bits and the stop bit.

Engelberg’s full article, which you can find in Circuit Cellar’s June issue, goes on to explain UART connections and how he implemented a simple transmitter and receiver. For the projects outlined in his article, he used the evaluation kit for Analog Devices’s ADuC841.

“The transmitter and the receiver are both fairly simple to write. I enjoyed writing them,” Engelberg says in wrapping up his article. “If you like playing with microprocessors and understanding the protocols with which they work, you will probably enjoy writing a transmitter and receiver too. If you do not have time to write the code yourself but you’d like to examine it, feel free to e-mail me at I’ll be happy to e-mail the code to you.”

Low-Power AC Input LED Drivers

XPThe DLE25 and DLE35 series of AC input LED drivers incorporate universal input with active power factor correction in a two-power stage design to eliminate flicker while providing a high-efficiency solution. The series includes dimmable constant current versions with PWM, voltage, and resistance programming capabilities.

The DLE25 and DLE35 drivers are packaged in an IP67-rated 3.68“ × 2.89“ × 1.29“ enclosure and are waterproof to depths up to 1 m, making them suitable for use in almost any outdoor application. Typical operating efficiency is in the 78% to 83% range.

Accommodating the extended universal input voltage range from 90 to 305 VAC, the DLE series supports the 277 VAC system used in the US. The series complies with EN61347 and UL8750 safety approvals and Class B conducted and radiated noise limits as specified by EN55015.

The DLE25 series costs $21.06 in 500-piece quantities.

XP Power, Ltd.

Linux System Configuration (Part 1)

In Circuit Cellar’s June issue, Bob Japenga, in his Embedded in Thin Slices column, launches a series of articles on Linux system configuration. Part 1 of the series focuses on configuring the Linux kernel. “Linux kernels have hundreds of parameters you can configure for your specific application,” he says.

Linux system configurationPart 1 is meant to help designers of embedded systems plan ahead. “Many of the options I discuss cost little in terms of memory and real-time usage,” Japenga says in Part 1. “This article will examine the kinds of features that can be configured to help you think about these things during your system design. At a minimum, it is important for you to know what features you have configured if you are using an off-the-shelf Linux kernel or a Linux kernel from a reference design. Of course, as always, I’ll examine this only in thin slices.”

In the following excerpt from Part 1, Japenga explains why it’s important to be able to configure the kernel. (You can read the full article in the June issue, available online for single-issue purchase or membership download.)

Why Configure the Kernel?
Certainly if you are designing a board from scratch you will need to know how to configure and build the Linux kernel. However, most of us don’t build a system from scratch. If we are building our own board, we still use some sort of reference design provided by the microprocessor manufacturer. My company thinks these are awesome. The reference designs usually come with a prebuilt kernel and file system.

Even if you use a reference design, you almost always change something. You use different memory chips, physical layers (PHY), or real-time clocks (RTCs). In those cases, you need to configure the kernel to add support for these hardware devices. If you are fortunate enough to use the same hardware, the reference design’s kernel may have unnecessary features and you are trying to reduce the memory footprint (which is needed not just because of your on-board memory but also because of the over-the-air costs of updating, as I mentioned in the introduction). Or, the reference design’s kernel may not have all of the software features you want.

For example, imagine you are using an off-the-shelf Linux board (e.g., a Raspberry Pi or’s BeagleBone). It comes with everything you need, right? Not necessarily. As with the reference design, it may use too many resources and you want to trim it, or it may not have some features you want. So, whether you are using a reference design or an off-the-shelf single-board computer (SBC), you need to be able to configure the kernel.

Linux Kernel Configuration
Many things about the Linux kernel can be tweaked in real time. (This is the subject of a future article series.) However, some options (e.g., handling Sleep mode and support for new hardware) require a separate compilation and kernel build. The Linux kernel is written in the C programming language, which supports code that can be conditionally compiled into the software through what is called a preprocessor #define

A #define is associated with each configurable feature. Configuring the kernel involves selecting the features you want with the associated #define, recompiling, and rebuilding the kernel.

Okay, I said I wasn’t going to tell you how to configure the Linux kernel, but here is a thin slice: One file contains all the #defines. Certainly, one could edit that file. But the classic way is to invoke menuconfig. Generally you would use the make ARCH=arm menuconfig command to identify the specific architecture.

There are other ways to configure the kernel—such as xconfig (QT based), gconfig (GTK+ based), and nconfig (ncurses based)—that are graphical and purport to be a little more user-friendly. We have not found anything unfriendly with using the classical method. In fact, since it is terminal-based, it works well when we remotely log in to the device.

Photo 1—This opening screen includes well-grouped options for easy menu navigation.

Photo 1—This opening screen includes well-grouped options for easy menu navigation.

Photo 1 shows the opening screen for one of our configurations. The options are reasonably well grouped to enable you to navigate the menus. Most importantly, the mutual dependencies of the #defines are built into the tool. Thus if you choose a feature that requires another to be enabled, that feature will also automatically be selected.

In addition to the out-of-the-box version, you can easily tailor all the configuration tools if you are adding your own drivers or drivers you obtain from a chip supplier. This means you can create your own unique menus and help system. It is so simple that I will leave it to you to find out how to do this. The structure is defined as Kconfig, for kernel configuration.

FPGA Partial Reconfiguration

Many field-programmable gate array (FPGA) design modules have parameters, such as particular clock and I/O drive settings, that can only be adjusted during implementation, not at runtime. However, being able to make such adjustments in an FPGA design during operation is convenient.

In Circuit Cellar’s June issue, columnist Colin O’Flynn addresses how to use partial reconfiguration (PR) to sidestep such restrictions. Using difference-based PR, you can adjust digital clock module (DCM) attributes, I/O drive strength, and even look-up-table (LUT) equations, he says. O’Flynn’s article describes how he used PR on a Xilinx Spartan-6 FPGA to solve a specific problem. The article excerpt below elaborates:

Perfect Timing
The digital clock module (DCM) in a Xilinx Spartan-6 FPGA has a variety of features, including the ability to add an adjustable phase shift onto an input clock.

There are two types of phase shifts: fixed and variable. A fixed shift can vary from approximately –360° to 360° in 1.4° steps. A variable shift enables shifting over a smaller range, which is approximately ±5 nS in 30-ps steps.

Note the actual range and step size varies considerably for different operating conditions. Hence the problem: the provided variable phase shift interface is only useful for small phase shifts; any major phase shift must be fixed at design time.

To demonstrate how PR can be used to fix the problem, I’ll generate a design that implements a DCM block and use PR to dynamically reconfigure the DCM.

Figure 1—The system’s general block diagram is shown. A digital clock module (DCM) block synthesizes a new clock from the system oscillator and then outputs the clock to an I/O pin. The internal configuration access port (ICAP) interface is used to load configuration data. The serial interface connects the ICAP interface to a computer via a first in, first out (FIFO) buffer.

Figure 1—The system’s general block diagram is shown. A digital clock module (DCM) block synthesizes a new clock from the system oscillator and then outputs the clock to an I/O pin. The internal configuration access port (ICAP) interface is used to load configuration data. The serial interface connects the ICAP interface to a computer via a first in, first out (FIFO) buffer.

Streaming Bits
I used Xilinx’s ISE design suite to generate a design (see Figure 1). I did the usual step of creating the entire FPGA bitstream, which could then be programmed into the FPGA. The FPGA bitstream is essentially a completely binary blob tells you nothing about your design. The “FPGA native circuit description (NCD)” file is one step above the FPGA bitstream. The NCD file contains a complete description of the design mapped to the blocks available in your specific chip with all the routing of signals between those blocks and useful net names.

The NCD file contains enough information for you to do some edits to the FPGA design. Then you can use the NCD file to generate a new binary blob (bitstream) for programming. A critical part of PR is understanding that when you download this new blob, you can only download the difference between the original file and the new file. This is known as “difference-based PR,” and it is the only type of PR I’ll be discussing.

So what’s in the bitstream? The bitstream actually contains several different commands sent to the FPGA device, which instructs the FPGA to load configuration information, tells it the address information where the data is going to be loaded, and finally sends the actual data to load. Given a bitstream file, you can actually parse this information out. I’ve posted a Python script on that does this for the Spartan-6 device.

A frame is the smallest portion of an FPGA that can be configured. The frame’s size varies per device. (For the Spartan-6 I used in this article, it is 65 × 16-bit words, or 1,040 bits per frame.) You must reload the entire frame if anything inside it changes, which brings me to the first “gotcha.” When using PR, everything inside that “frame” will be reloaded (i.e., parts of your design that haven’t changed may become temporarily invalid because they share a configuration frame with the part of your design that has changed).

O’Flynn’s full article goes on to explain more about framing, troubleshooting challenges along the way, and completing the reconfiguration. The article is available in the June issue, now available for membership download or single-issue purchase.

To further assist readers, O’Flynn has posted more information on the website that complements his monthly Circuit Cellar column, including a video of his project running.

“You can also see an example of how I integrated PR into my open-source ChipWhisperer project, which uses PR to dynamically program a phase shift into the DCMs inside the FPGA,” he says.

Issue 286: EQ Answers

Question 1—A divider is a logic module that takes two binary numbers and produces their numerical quotient (and optionally, the remainder). The basic structure is a series of subtractions and multiplexers, where the multiplexer uses the result of the subtraciton to select the value that gets passed to the next step. The quotient is formed from the bits used to control the multiplexers, and the remainder is the result of the last subtraction.

If it is implemented purely combinatorially, then the critical path through all of this logic is quite long (even with carry-lookahead in the subtractors) and the clock cycle must be very slow. What could be done to shorten the clock period without losing the ability to get a result on every clock?

Answer 1—Pretty much any large chunk of combinatorial logic can be pipelined in order to reduce the clock period. This allows it to produce more results in a given amount of time, at the expense of increasing the latency for any particular result.

Divider logic is very easy to pipeline, and the number of pipeline stages you can use is fairly arbitrary. You could insert a pipeline register after each subtract-mux pair, or you might choose to do two or more subtract-mux stages per pipeline register You could even go so far as to pipeline the subtracts and the muxes separately (or even pipeline *within* each subtract) in order to get the fastest possible clock speed, but this would be rather extreme.

The more pipeline registers you use, the shorter the critical path (and the clock period) can be, but you use more resources (the registers). Also, the overall latency goes up, since you need to account for the setup and propagation times of the pipeline registers in the clock period (in addition to the subtract-mux logic delays). This gets multiplied by the number of pipeline stages in order to compute the total latency.

Question 2—On the other hand, what could be done to reduce the amount of logic required for the divider, giving up the ability to have a result on every clock?


Answer 2—If you don’t need the level of performance provided by a pipelined divider, you can computes the quotient serially, one bit at a time. You would just need one subtractor and one multiplexer, along with registers to hold the input values, quotient bits and the intermediate result.

You could potentially compute more than one bit per clock period using additional subtract-mux stages. This gives you the flexibility to trade off space and time as needed for a particular application.

Question 3—An engineer wanted to build an 8-MHz filter that had a very narrow bandwidth, so he used a crystal lattice filter like this:


However, when he built and tested his filter, he discovered that while it worked fine around 8 MHz, the attenuation at very high frequencies (e.g., >80 MHz) was very much reduced. What caused this?

Answer 3—The equivalent circuit for a quartz crystal is something like this:EQ-fig2-CC287-June14

The components across the bottom represent the mechanical resonance of the crystal itself, while the capacitor at the top represents the capacitance of the electrodes and holder. Typical values are:

  • Cser: 10s of fF (yes, femtofarads, 10-15F)
  • L: 10s of mH
  • R: 10s of ohms
  • Cpar: 10s of pF

The crystal has a series-resonant frequency based on just Cser and L. It has a relatively low impedance (basically just R) at this frequency.

It also has a parallel-resonant (sometimes called “antiresonant”) frequency when you consider the entire loop, including Cpar. Since Cser and Cpar are essentially in series, together they have a slightly lower capacitance than Cser alone, so the parallel-resonant frequency is slightly higher. The crystal’s impedance is very high at this frequency.

But at frequencies much higher than either of the resonant frequencies, you can see that the impedance of Cparalone dominates, and this just keeps decreasing with increasing frequency. This reduces the crystal lattice filter to a simple capacitive divider, which passes high freqeuncies with little attenuation.

Question 4—Suppose you know that a nominal 10.000 MHz crystal has a series-resonant frequency of 9.996490 MHz and a parallel-resonant frequency of 10.017730 MHz. You also know that its equivalent series capacitance is 27.1 fF. How can you calculate the value of its parallel capacitance?

Answer 4—First, calculate the crystal’s equivalent inductance, based on the series-resonant frequency:EQ-equation1-CC287-June14

Next, calculate the capacitance required to resonate with that inductance at the parallel-resonant frequency:EQ-equation2-CC287-June14

Finally, calculate the value of Cpar required to give that value of capacitance when in series with Cser:EQ-equation3-CC287-June14

Note that all three equations can be combined into one, and this reduces to:EQ-equation4-CC287-June14

Electrical Engineering Crossword (Issue 287)

The answers to Circuit Cellar’s April electronics engineering crossword puzzle are now available.287 crossword (key)


1. BEAMFORMING—Signal processing technique

7. HETERODYNERECEIVER—Converts a signal to an intermediate frequency [two words]

8. AMIGA—A high-resolution PC based on Motorola’s 6800 microprocessor family

9. NAGLING—Creates “Russian doll”-type packets to improve a TCP/IP network’s performance

10. SERVERBLADE—A thin circuit board designed for one specific application [two words]

15. FUZZING—Tests for coding and security errors

17. PHASECHANGE—Nonvolatile RAM [two words]

18. WALLEDGARDEN—Restricts access to Web content and services [two words]

19. SERIALBACKPACK—A PCB interface that goes between a parallel LCD and a microcontroller [two words]

20. SLACKWARE—Open-source, Linux-based OS


2. ROOTMEANSQUARE—Determines an AC wave’s voltage [three words]

3. ROENTGEN—IBM’s active matrix LCD

4. KERNELPANIC—Happens when a fatal error is detected [two words]

5. BIPHASEENCODING—Requires a state transition at the end of every data bit [two words]

6. PERMITTIVITY—Ability to be polarized

11. VOODOO—Helps create realistic 3-D graphics

12. FLANGING—An audio process that combines signals to create a comb filter effect

13. BREADBOARDING—Used for circuit design experimentation

14. STATOHM—Five of these equal approximately 4.5 × 1012

16. TELEDACTYL—Utilizes human speech to code


Electrical Engineering Crossword (Issue 286)

The answers to Circuit Cellar’s April electronics engineering crossword puzzle are now available.



2. SAMBA—This networking protocol enables you to write to an embedded file system from a Windows PC

7. ELECTROMAGNETICFIELD—Used for data transfer [two words]

8. CAPACITOR—These types of microphones were commonly called “condensers” until about 1970

9. HOMODYNE—A receiver with direct amplification

13. BLENDER—Contains several modeling features and an integrated game engine

15. PULSESHAPING—Used to improve wired or wireless communication link performance [two words]

17. BRILLOUINSCATTERING—Occurs when certain types of light change their frequency and route [two words]

18. CLOCKSIGNAL—Used to coordinate circuits’ actions [two words]

19. RASPBERRYPI—Designed to encourage scholastic computer science lessons [two words]


1. NONRETURNTOZERO—Typically 1s are a positive voltage and 0s are a negative voltage [four words]

3. BITARRAY—Provides compact storage for computing and digital communications [two words]

4. DOUBLEDATARATE—Coordinates the rising and falling edges of an [18 Across] to transfer data [three words]

5. ANECHOIC—Absent of sound

6. FIRSTINFIRSTOUT—Oldest requests receive priority [four words]


11. CROSSTALK—Occurs when accidental coupling causes unwanted signals

12. BINISTOR—An electronic oscillator component

14. NANCY—Receiver that intercepts or demodulates IR radiation

16. BEAGLEA good breed of analyzer for I2C and SPI designs


Nanopower Anisotropic Magnetoresistive Sensor ICs

HoneywellThe ultra-high sensitivity SM351LT and the very high sensitivity SM353LT nanopower anisotropic magnetoresistive sensor ICs provide a high level of magnetic sensitivity (as low as 7 Gauss typical) while requiring nanopower (360 nA). The high sensitivity improves design flexibility and provides application cost savings by utilizing smaller or lower-strength magnets. The nanopower enables the ICs to be used in battery-operated equipment with extremely low power requirements.

The SM351LT and the SM353LT are designed for a range of battery-operated applications including water, gas, and electricity meters; industrial smoke detectors; exercise equipment; security systems; handheld computers; and scanners. They can also be used with household appliances (e.g., dishwashers, microwaves, washing machines, refrigerators, and coffee makers), medical equipment (e.g., hospital beds, medication dispensing cabinets, and infusion pumps), and consumer electronics (e.g. notebook computers, tablets, and cordless speakers).

The ICs’ omnipolarity enables them to be activated by either a north or south pole, eliminating the need for the magnet polarity to be identified. This simplifies installation and potentially reduces the system cost. The push-pull (CMOS) output does not require external resistors, making it easier to operate. The non-chopper stabilized design eliminates electrical noise generated by the sensor. The subminiature SOT-23 surface-mount package is smaller than most reed switches and can be used in automated pick-and-place component installation.

Contact Honeywell for pricing.

Honeywell International, Inc.

What Is Emissivity? (EE Tip #133)

All objects radiate infrared energy. The warmer an object is, the faster the molecules in the object move about, and as a result the more infrared energy it radiates. The wavelength of this radiation lies roughly between 0.5 and 100 μm. This depends on the temperature: the higher the temperature, the shorter the wavelength of the radiated IR energy, as illustrated in Figure 1 for several different temperatures.Fig1-IR-Rad-Elektor

This means that an IR thermometer must be able to detect energy radiated in a specific spectrum in the IR band in order to be able to measure temperatures accurately over a wide temperature range. In addition, you should bear in mind that only perfect radiators (in technical terms, “black bodies”) actually radiate all of their thermal energy. With other types of objects, the amount of energy radiated also depends on factors other than the temperature of the object, such as the properties of the material and surface reflection. This is expressed by the emissivity or emission coefficient of the material, and it can strongly affect the accuracy of IR temperature measurements.

Emissivity (or the emission coefficient) is an indication of the extent to which the thermal infrared radiation emitted by an object is determined by the object’s own temperature. A value of 1 means that the infrared radiation is determined solely by the object’s own temperature. A value less than 1 indicates that the emitted radiation depends in part on factors other than the object’s own temperature, such as nearby objects or heat transmission.Table-Emissivity-Elektor

Simple IR thermometers usually have a fixed emission coefficient setting of 0.95. If the emissivity of the object to be measured differs from this, the resulting readings will be inaccurate. More expensive instruments have an adjustable emission coefficient setting.

The emissivity values of a number of materials are listed in the table. They have been compiled from lists provided by various manufacturers of IR thermometers. The emissivity of metals is strongly influenced by the processing undergone by the metal and the surface treatment.

When compiling the table, we noticed that every manufacturer states somewhat different values, which makes it rather difficult to derive the correct emissivity settings for an instrument from the table supplied with the instrument. The only sure way to determine the correct setting is to measure the temperature with a contact sensor.—By Harry Baggen (Elektor Netherlands Editorial), Elektor, April 2011