This week happens to be National Library week, and although Digilent is not a library, we certainly use them! I’m not referring to public libraries, though (although I am personally a fan of them); rather, I’m talking about the C++ libraries that are widely used with our microcontrollers. Although C++ libraries are not quite the same as an IP for FPGAs, they serve a similar purpose. These libraries include a set of predefined functions that perform a specific task, such as sending and receiving a set of data over SPI, that the user can use without having to define what they do.
Back in March, we released a blog post announcing the ZYBOt. There was a set of Instructables and a video showing what the ZYBOt is all about. If you check those out, you can see that the ZYBOt is remote-controlled and has a video feed that can be displayed to a computer. The ZYBOt is a great project for people that want to dive into working with FPGAs and Linux.
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!
Now that we have Linux booted up on our computer, we can get programming. What happens if we want to create web pages? Well, we need to set-up our LAMP server. LAMP stands for Linux Apache MySQL PHP. This blog post goes in conjunction with a relevant Instructable about setting up our LAMP server, so just like the previous blog post about dual-booting Ubuntu, this is going to go over more of why we’re doing this. What the LAMP server will allow us to do it create a local host that will let us communicate with the Internet.
If you have a computer, you may have heard of Linux. Linux is a free ad open-source operating system, where the “base” code can be used and modified by anyone. Some of Digilent’s boards (like the ZYBO) use Linux. Linux is great for programming and development, but isn’t as user-friendly as other operating systems.
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)!
Robots that run around on motors are pretty sweet. These motors traditionally tend to be DC motors that are controlled through the use of an H-Bridge, which can change the flow of current so that the motor is able to run forwards or backwards. H-bridge modules, such as Digilent’s PmodHB3 or PmodHB5, also tend to have two pins labeled as Sensor A and Sensor B that measure which direction the motor is rotating. The two sensors, A and B, will be wired to the outputs of components known as Hall effect sensors. Unsurprisingly, these measure the Hall effect. But rather than having the “word in the definition” problem, let’s learn some of the practical details.
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.
If you’ve been keeping up with Digilent over that last couple of years, you may have heard about our merger with National Instruments. We’ve collaborated to create new products, and we’ve expanded our capabilities to work with more of NI’s products. One of those products is Multisim, a full-function testing and simulation environment for analog, digital, and power electronics designs.
Welcome back to the Digilent Blog! Today we’re going to go over recursion! Recursion is when a function calls itself directly, or through another function. Sometimes we can’t solve a problem using loops (iteration), so we have to use recursion. Recursion is slower than iteration, difficult to debug, and it uses up more of the stack. But recursion can also have simpler code, so in some cases, the benefits outweigh the problems.
Take a look at a circuit board and chances are you’re going to find a resistor or two. Most boards today use surface-mount device (SMD) technology, so the components are almost too small to see sometimes, but they are on there, I promise. How do engineers decide which resistors to use in the design? Sometimes it depends on how you want that portion of the circuit to perform, as in the case of an op-amp. Other times it’s to prevent too much current from passing through a given point in a circuit, which is why they are often called current-limiting resistors. Maybe you want a simple way to divide the voltage or current. The reality is that there are numerous ways to use resistors, and oftentimes, the defining the resistor value is up to you.
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.
If you’ve been around electronics for a while, you’ve probably noticed that components like resistors, capacitors, zener diodes and inductors come in some odd values. Looking at the chart above, there seems to be no clear rationale behind the values, but there is a pattern. 47kΩ resistors and 22μF capacitors are everywhere, but not 40kΩ or 50kΩ resistors, or 20μF or 30μF capacitors. So what’s the deal? It all has to do with preferred numbers.
As you probably know, one of Digilent’s major focuses is producing FPGA (field programmable gate array) boards and educating the public on FPGA design. One of the classes I was in last semester focused on FGPA design. This class is EE324 at WSU, which is taught by Digilent’s own Clint Cole. He gave a background lecture on the History of FPGA chips. Not only was it an extremely interesting lecture, but it also helped me understand the huge leaps in logic design that have been made since the 1960s. This is the history that led to the development of FPGA chips. The chips are the parts that Xilinx makes that we use on our FPGA boards.
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!