Binary Search Trees

The binary search tree (BST) is a data structure that is much different from the other structures that we’ve gone over so far. Unlike stacks, queues, and lists, a BST’s struct is not a “straight-line”. Each node in a BST has a left and right child node.

Read More

What Is an IP and How Do You Create One?

The acronym IP probably means a lot of things to a lot of different people. But to those of us in the world of FPGAs, it’s something special. IP stands for intellectual property. Intellectual property can be a lot of things, but when I say intellectual property I’m talking about the libraries of HDL (hardware design language) modules that are available for your use. Users and companies build IPs for use, so that designs are easier and faster to build.

Read More

Number Systems

Today, we are going to learn about number systems. A “number system” is defined here as “any notation for the representation of numerals or numbers.” We naturally use the decimal (base 10) system, meaning we use the numbers 0-9 to represent all the other numbers. The three types of number systems that we are going to talk about today are decimal, binary, and hexadecimal, but there are many more!

Read More

True or False: Boolean Is a Data Type?

True! Boolean is a data type. However, it’s also a term that gets thrown around in the electronics world by programmers presuming that everybody else knows what they are talking about; I can personally attest that this is not always the case. In light of this, let’s go over some of the data types that are commonly used in programming.

Read More

What Are “Pointers”?

This blog post will cover the basics of pointers, a programming tool that is used in languages like C and C++. In this post, we will be using C as our primary language. Pointers are variables that contain a memory address (a concept used to access the computer’s primary storage memory). Variables normally contain a value such as 1 or ‘a’, but pointers contain an address of the value. When we reference a variable through pointers, this is called indirection. Each link goes to a text file of C code. This code can be run as is and will help show us the power of pointers!

Read More

What Are Muxes and Demuxes?

A huge part of FPGA design is using logic blocks in design. With logic blocks, you can compartmentalize your design, rather than trying implement everything in one shot. Designing without smaller blocks would be like trying to design a car without subsystems like the braking system or engine. About half of the way through the course there is a project that covers a variety of basic logic blocks, including multiplexers (muxes) and demultiplexers (demuxes). So what are muxes and demuxes?

Read More

Reloading the Bootloader on chipKIT Boards

The other day I decided to program my chipKIT PRO MX4 board using MPIDE. Long story short, it wasn’t working and I couldn’t figure out why. So I posted my question to the forum and waited for somebody else to find the answer. I got impatient because the answer didn’t come within the next hour, so like a good boy, I started digging into the reference manuals. Come to find out, if you use the chipKIT boards with MPLAB X, the bootloader will be overwritten and must be reloaded if you want to use the board with MPIDE. Since I had done some programming with MPLAB X in assembly language, that was clearly my problem. Should be a simple fix, right? Well, it is.

Read More

Who is LabVIEW Hacker?

So what exactly is LabVIEW? LabVIEW is National Instruments’ program development environment. The name is short for “laboratory virtual instrument engineering workbench”. NI created LabVIEW to enable domain experts to focus on building systems by abstracting the hardware and software. For example, their hardware and software allows a chemist to focus on chemistry and not get bogged down with analog signal conditioning for thermal couples or advanced programming techniques.

Read More

Pulse-Width Modulation

Pulse-width modulation (PWM) is a technique that takes advantage an electronic device’s capability to rapidly “pulse” one of its digital pins between logic high and logic low voltage states. The idea is that the switching between the two voltage states in a desired pattern will produce an “average” voltage somewhere between the high and low voltage inputs. If, within a given period, the pin is at a high voltage level more often than a low one, an overall higher voltage (but less than the full strength input voltage) will be observed.

Read More

Pmod Communication: Serial Peripheral Interface

A while ago, we learned that one of the ways that Pmods are able to communicate with their host board is through SPI. We learned then that serial peripheral interface is a type of communication protocol where the “master” board and the “slave” device (in this case, a Pmod) are able to send bits of data to each other at the same time with the host board controlling the timing of the communication. Although this is a nice overview, it is my personal experience that theoretical overviews are not the most helpful in actually implementing what we are learning. This begs the question: how do you use SPI? Lets find out!

Read More

Proximity-Sensing LEDs Part 1: On a Breadboard

Who doesn’t love interactive LEDs? This project started because I wanted to make a simple circuit that I could later move on to a printed circuit board (PCB) that I designed myself. (The original goal was to learn PCB design and layout.) This idea was given to me by my manager, Larissa, and was inspired by Evil Mad Science’s Octolively. Being an analog enthusiast, I came up with my own design that doesn’t use any ICs.

Read More

3D Modeling with Blender

We have made a few posts showing off our 3D printers and some of the classes on 3D printing that we have done here at Digilent. Garrett Mace from macetech.com showed us some of the basics on how to use various 3D modeling software like AutoDesk Inventor, Autodesk 123D Design, OpenSCAD, MeshMixer, and SketchUp. Today, I’m going to introduce some of the basic modeling tools available in the free but robust Blender.

Read More

Tools for the Electronics Hobbyist

In 2010, I decided to go back to school and earn my degree. After a few semesters of class and a few months working part time retail at RadioShack, I had learned a few things and decided to start building. At the time, all I had were some Craftsman screwdrivers that my dad had given me for Christmas, a few pliers, some wire cutters, and a hammer. Basically the kind of stuff you would find in an all-in-one homeowner’s tool kit. Needless to say, those tools weren’t really helpful when it came to building a motion sensing AC switch, or soldering together some under-cabinet lighting. I needed to get the right tools for the job at hand.

Read More

Shift Registers

Earlier, I made a post on how a shift register is operated in practice. But what exactly can a shift register be used for and how does it work? As always, the answer will depend on what you are trying to do (yes, we do have to play by reality’s rules).

Read More