Originally, this blog post was going to be about how Linux works with its kernel and everything. That turned out to be extremely dry, and it was a jumbled mess to try to fit everything into a blog post. Just check out the Linux wiki page for all that stuff. Instead this post is going to be more about parts of Linux that people should know about. Linux is used widely for developing software and embedded systems. One example is the Zybot, partially developed by Kaitlyn and me!
Inter-integrated-circuit, more commonly known as I²C (generally pronounced I-squared-C), is a communication style originally developed by Phillips Semiconductor (now NXP Semiconductor). Its design allows multiple components to be able to talk to each other on the same data line, making it widely used in a variety of systems, including Pmods. As a fan of Pmods, I’m in favor of learning how you can communicate with them and get them what you want to do. Let’s find out more.
Welcome back to the Digilent Blog! When we were working in C, we learned about the data structure called a “linked list”. Now, we’re going to go over two new data structures — stacks and queues. In this post, we’re going to make classes for stacks and queues to help show some of the capabilities of OOP (object-oriented programming)!
For those of you that have been coding for awhile, you likely have heard about both interrupts and polling. These are both techniques that can be used to alert your system board, such as a chipKIT microcontroller, when an input has occurred. But what is the difference between these two methods? Is one better than the other? Let’s find out.
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.
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!
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.
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!
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?
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.
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.
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.
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!
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.
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.
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.