Areas of Expertise

Low-noise analog

We understand the design and measurement of low noise circuits, and when they are needed. Whether your application requires a low noise low impedance voltage amplifier, or a low noise current source, we will choose an appropriate topology and simulate potential circuit designs. When assemblies are available we have the tools to verify that the performance has been met. We use various preamplifiers and data acquisition boxes to capture data. For lower frequency samples we might use SigView to analyze the data on a PC. For higher frequency and broadband data we maintain and use a range of high quality and wide dynamic range spectrum analyzers.

ADC,DAC, mixed signal

Many projects use ADCs, and often DACs too. Today there is a complete spectrum of data converters available to the designer. Sometimes the peripherals that come with the microcontroller are sufficient. For more demanding applications it is common to use one or more external parts. The next step up would be to add one or more data converters on a SPI or I2C bus. As speed goes up, an FPGA can coordinate one or more SPI converters and ensure good timing precision. An FPGA with a parallel interface to a data converter can reach into the low 100s of MHz data rates.

We have a lot of experience mixing sensitive analog circuits with digital logic and know how to keep the analog signals clean through careful layout. Sometimes a PCB mounted shield is helpful, but almost never do the circuits need to be separated onto two or more boards just for this reason.

Two Agilent mixed-signal oscilloscopes greatly assist development of mixed signal systems. A 9000-series scope also adds 4GHz bandwidth capability, 20G sampling, and a wealth of waveform computations.

FPGA

An FPGA can be integrated to satisfy many time critical or higher speed applications. We primarily use Xilinx FPGAs, sometimes Altera or Lattice, and write logic in Verilog. The great majority of projects can be satisfied with lower cost devices, especially when paired with a general purpose microcontroller such that each does what they do best. When we have an FPGA and a microcontroller, we let the micro manage the FPGA configuration to allow for easy updates and to reduce or eliminate the chance of the firware and FPGA getting out of sync.

When appropriate, even a small FPGA can greatly increase performance by providing a custom bit of logic to satisfy a system's need. In some cases this allows use of a smaller and less powerful microcontroller than would otherwise be required. It frequently simplifies the software and makes a system more maintainable by eliminating demanding constraints on software timing. The net effect can result in a significant savings of development time and system cost.

ARM-based microprocessors and microcontrollers

Many projects require or benefit from a microprocessor. At this time we primarily use devices from the ARM Cortex family, which includes cores ranging from very small and low power, to medium scale parts integrated with ethernet, USB, DDR memory and more. All the parts keep evolving to lower power and higher performance. Today it is not unusual to find double-precision floating point hardware on the higher end microcontrollers, which can provide a welcome boost in compute-intensive applications. The more powerful cores like the A series tend to integrate fewer non-compute peripherals like DACs and ADC, but have MMUs and memory controllers and higher clock speeds. Most include gigabit ethernet. These are the ones that one might choose to run embedded Linux, though it is not the only option. The downside to using these parts is that they often require more layers and higher tech circuit boards, have more power supply requirements, and generally require more external support. The A5 bridges the gap between the A8 and up, and the M4 and M7 microcontroller families. Of the latter, we've recently designed with the STM32F746 and ATSAME70, btoh M7 parts, and have done many projects with the M4/M4F parts such as the NXP ( formerly Freescale ) K60 and K64, and the STM32F4 series.

One of the benefits to having a micro in your otherwise analog system is the ability to perform diagnostics and self-calibration. For example, at startup the system might sequence through a series of tests to verify that the power supplies are all up and at normal levels, and perhaps verify the offset on the output of an amplifier stage is within reasonable bounds. If so, then the offset could be stored and subtracted from the measured results to produce a more accurate result. More elaborate tests are also practical, such as to verify that noise is below a certain level. With a little more effort, test signals can be generated and injected into the circuit to allow end to end validation of a signal chain. Best of all, these checks and calibrations do not require any action by a user or technician. The tests would likely be performed every time the system is started and usually run to completion very quickly.

Many engineers worry about digital noise corrupting a sensitive analog signal. This is less of a problem now than it used to be, especially when designing with the single chip parts that don't have external buses. With some care in design, placement, and layout we find that the majority of mixed-signal systems can be implemented on 4-6 layer boards with good results, assuming some flexibility in board shape. Once in a while it may be necessary to make provision for a shielding can. A few boards can be assembled without the shield, and tested to see if it is really necesasary in production. It is more common to require a shield when trying to protect against external sources of noise.

Operating Systems

We use an RTOS ( real-time operating system ) on almost all projects that have a microcontroller. Choice of RTOS frequently depends on the microcontroller. We have used many different RTOS over the years, but currently favor Segger's embOS, FreeRTOS, and MQX. All have a good track record and are royalty-free. Firmware is written in C or C++. Clients may want to develop their own firmware. In this case we often will do just enough firmware development to bring up and test the hardware, and can then deliver a fully working development environment running on known good hardware. When firmware updates are anticipated we typically provide an easy means to upload an update over USB, and over ethernet when available.

Some systems demand embedded Linux due to the highly capable networking, USB, and storage support. But Linux is not a natural choice for a real-time application. There are a few flavors of real-time Linux, depending on how hard the real-time requirement is. For those systems that demand both Linux and hard real-time performance, it is common to use separate micros - one for Linux and another for the real-time demands. A variation on this approach would be to couple an FPGA with a micro running Linux. The project examples show a design that takes this approach.

C/C++

Motor drivers and motion control

Power supplies, linear and switching

In our designs one can find examples of almost every type of power supply. The wide range of switching controller and regulator ICs available today has helped improve efficiency and reduce size significantly. A design that, a few years ago, would have required external heat sinking can often be fully implemented on a PCB without any heat-dissipating components beyond the board itself. PoE ( power over ethernet ) techniques open up new options for connected equipment and remote sensing.

For sensitive circuits that cannot tolerate even tiny amounts of power supply ripple, a bare swiching power supply may not be a practical choice. If the power requirements are low, a linear regulator or a linear post-regulator filter may be just the thing. Sometimes nothing more than an LC filter on the output of the switcher is needed. By following a switching supply with an LC filter and low-dropout post-regulator, one can get clean DC without suffering the inefficiency that might come from a fully linear approach.

Networking and UI

Designs that have an ethernet interface can provide a lot of flexibility and extensibility. The product can present an easy to use web interface that is accessible from any modern browser, an ASCII text based interface, a Python API, or all of these at once. The web interface has strong appeal as a dashboard, including compatibility with many different browsers and operating systems, and the ability to access the device remotely. With thoughful coding we find that systems based on single-chip, M4-based microcontrollers, can give good web UI performance to one or a few users.

The ability to simultaneously connect over multiple ports greatly adds to the utility of an ethernet interface. For example, one connection can support a web-based dashboard while another could give access to a Python API, useful for machine control and scripting. Additional ports could be used to stream raw data, or an error log. We have supported FTP for firmware updates, but usually the web interface is a better solution.

The RS-232 serial port is still alive in embedded equipment because the peripherals are universally available on the microcontrollers, it has low overhead, and practically any computing device can communicate with it. Some applications don't need anything more than this. Modern PCs that don't have a RS-232 style serial port can use an inexpensive USB to serial converter, or the USB to serial converter can be built into the embedded system. A uniform set of commands can provide an interface for a human, and can also be the basis for a low-speed machine interface.

Here is an example of a web page that shows the status of power supplies and a few systems. At the bottom is a dialog to upload an update file for the system's firmware. Behind the web page is logic that validates the contents of the upload and determines the specific target.

This web page gives the user control over eight PID controllers for temperature control. The top four rows are editable fields - the user can click in a field and enter any allowable value. The two rows at the bottom show the actual temperature and the duty cycle of the heater.

Schematic capture and Layout

Schematic and PCB design with Altium can produce highly readable, smart schematics and CAD files in traditional Gerber or ODB++. Altium Designer is a strong and growing midrange tool that is modern, relatively easy to learn, and affordable. We use it and recommend it. For simple designs we may do the layout in-house. The more complicated can be farmed out to a layout designer. Having a full seat of Altium Designer allows us to do critical placement and make fine adjustments in house. We really like the 3D PDF output that can be shared with others to visualize a PC assembly before it is built, and the 3D STEP model that the software can output greatly helps integrate electronic designs with mechanical engineering. One of the examples shows a snapshot of a 3D PDF for a small board.

Altium has a good set of importers and exporters that can be handy in some circumstances. We can also draft schematics with OrCAD ( now Cadence ) Capture if necessary to match your existing standards. Clients using Capture often use Allegro, Mentor or PADS for PCB layout. For these clients, we would depend on either your in-house layout personel or a local layout house.

Pulling it all together

Show us what you want to achieve, and we will work closely with you to determine appropriate technologies, and explain why. You don't need to know anything about electronics. But if you already have skill in this area then we can discuss the particulars in detail. We have done enough projects and worked with enough different technologies that it is likely that we will have some relevant experience to bring to your particular situation. But if what you need is really outside our range of expertise, then we will tell you right away.

If it makes sense then we can pull together a rapid prototype to try with your hardware. If instead the requirements are clear then it might be more efficient to move onto the detailed design. Once the detailed design is complete, we can pull together everything needed to get a small batch of working circuit boards into your hands for test and vslidation. It is not unusual to go from a concept to having a simple but fully customized, working design in two months. Significant software/firmware, web pages, and complex components will take longer. For clients that want to manufacture their own hardware, you will receive a complete package of source documents and written documentation. Alternatively, we can coordinate everything to get the electronic assemblies built, tested and ready to drop into your product.