Posts

VHDL arbiters - part III

This is the third part of a series of articles on VHDL arbiters. In the  first part , we commented on what a VHDL arbiter is. In the  second part , we saw the VHDL code for a fixed-priority VHDL arbiter. When I talked about what a VHDL arbiter is, I gave the example of the single car we have at home, and how I have to decide who gets to use the car next Friday evening. In a typical situation, if both children ask for the car, the first thing they will account for is, who got the car the last time. Continue reading…

Newer updates

FPGASite is alive and kicking! (We just changed our website address). The new blog has several new articles and features, in addition to actualizations of articles that were hosted in the past on this website. Examples: A series of  articles and projects for Digilent’s Basys 3 board (using an Artix-7 FPGA from Xilinx) New technical articles and code snippets , among them: AXI-Lite registers bank Xilinx AXI Chip2Chip for multi-FPGA designs … and many more! And a selection of legally free books on FPGAs, VHDL, Machine Learning, Verification, etc.

Innovate FPGA contest

Image
Add captio A global FPGA design contest held by Intel and Terasic, starting tomorrow! All FPGA developers can join the contest as teams and compete or join as a community member and vote! "The Innovate Asia, Nordic, and North America contests have inspired thousands of aspiring engineers to design, create, and innovate. This year, these regional events have been combined into a single global contest – Innovate FPGA – where teams from around the world compete as they invent the future of embedded compute with Terasic and Intel. The competition is open to everyone including students, professors, makers, and industry. Teams can showcase their creativity and innovation with actual results and real-world designs. Eligible teams will receive a FREE DE10-Nano development kit!"

Understanding Machine Learning - free book

Image
This post is now hosted here

Organizing your tasks, and design files

Image
Men marry women wishing they will never change, but they do. Women marry men wishing they will be able to change them, but they don't. When I was young, even during my University studies, I was a real disaster in anything related to order and tidiness. My room was always a mess. Whenever my mother or any other would try to change my ways (even a little bit), I would say what many like me love to say: - "In the disorder, I know where everything is. When my mother makes some order, I can't find anything". And to demonstrate that the half-joke at the beginning of this article is not true, I must say that I changed a lot since I married. My home won't appear in a decoration magazine, but it is not close at all to my young-days' complete-mess room. The other reason I have to train me all the time to be a more tidy person is that I work in FPGA design. So if you are rolling your eyes thinking that order has nothing to do with design, and I'd better publi...

Giant Hovercrafts - past and future

Image

VHDL arbiters - part II

Image
In the  first article of this series , we defined what an HW arbiter is. In this entry of the tutorial, we will see a simple implementation of a VHDL arbiter. The arbiter of this example has three request inputs and three grant outputs. It has a fixed priority for the masters. The lower the master number, the higher its priority. The block also has a  busy  signal. Arbitration of the bus is done only while it is inactive. If the bus has already been granted to an agent, even if a bigger priority master requests the bus, the current transaction must complete before the arbiter grants the bus to another master. Continue reading…

FPGA for dummies - free book

Image
This post is now hosted here

MIF_Gen - A Matlab Utility

Image
Many times I find myself in the need of generating data for testing. We need data for verification, either done on simulation or on the real target. One easy way to test our system is to generate data vectors on RAM. Altera RAM IP includes the ability to initialize RAM contents during power-up by means of a .hex file. One problem of the .hex file format is that it is quite unreadable for humans. Altera came to our rescue with the .mif format, which is text based and very easy to understand. The application I present below initializes a memory (generating an .hex file). The size and width of the memory are parameters. The Matlab application generates both a init_mem.mif and a init_mem.hex file. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 %------------------------------------------- % Generate Parameters ram_size = 256 ; % In words word_size = 16...

VHDL arbiters

Image
What is an arbiter? What is an arbiter? An arbiter is a very common block used on HW designs. I think I can find the best example of an arbiter at home. When my two kids were teenagers, I had only one car. On Friday and Saturday evenings, there was usually a conflict over who got to use the car. Usually, it was on me to decide (arbiter) who got the car. Not an easy task. (I still have only one car. It just happens that my kids are not teenagers anymore, and praise the Lord, they have their own cars). Continue reading...  

FPGAs and Deep Machine Learning

Image
The concept of machine learning is not new. Attempts at systems emulating intelligent behavior, like expert systems, go as far back as the early 1980's. And the very notion of modern Artificial Intelligence has a long history. The name itself was coined at a Dartmouth College conference (1956), but the idea of an "electronic brain" was born together with the development of modern computers. AI as an idea accompanies us from the dawn of human history. Three latest development are pushing forward "Machine Learning": Powerful distributed processors Cheap and high volume storage High bandwidth interconnection to bring the data to the processors As in many other fields, development of Machine Learning is also seeing development on algorithms that take advantage of the new hardware capabilities. There are four types of algorithms used in machine learning: Supervised - The vast majority of systems today. These systems are 'trained' based on past d...

Guinness - GUI based Neural Network Synthesizer

Image
Guinness is a GUI based framework that includes both a training on a GPU, and a bitstream generation for an FPGA using the Xilinx SDSoC. This tool uses the Chainer deep learning framework to train a binarized CNN. Also, it uses optimization techniques for an FPGA implementation. Compared with the conventional FPGA realizations, although the classification accuracy is 6.5% decayed, the performance is 2.45 times faster, the power efficiency is slightly better, and the area efficiency is 2.68 times better. Compared with the ARM Cortex-A57, it is 136.8 times faster, it dissipates 3.1 times much power, and its performance per power efficiency is 44.7 times better. Also, compared with the Maxwell embedded GPU, it is 4.9 times faster, it dissipates 1.3 times much power, and its performance per power efficiency is 3.8 times better.  Details are shown in following papers: [Nakahara IPDPSW2017] H. Yonekawa and H. Nakahara, "On-Chip Memory Based Binarized Convolutional Dee...

SETI's FPGAs

Image
FPGAs and GPUs: a Tour of SETI's Computer Hardware David MacMahon is a research astronomer with Berkeley SETI Research Center. Dave works on several projects at BSRC, including Breakthrough Listen, designing many of the computer systems we use to process data collected from our telescopes. If you've ever been curious what hardware is required to search for ET, check out this tour of Berkeley SETI behind the scenes.

Slight Street Sign Modifications Can Completely Fool Machine Learning Algorithms

Image
Image Source: Linked In Machine Learning is a hot I+D topic. One of the strategies used in Machine Learning is to learn by means of neural networks. You can get a free introduction to neural networks here . I also warmly recommend Andrew Ng's introductory course to Machine Learning on Coursera . Machine Learning neural networks were inspired by biological neural networks, and are easily applied but highly effective in image processing algorithms, like handwritten text recognition. More complex neural networks algorithms are being implemented on what is called Deep Machine Learning, using neural networks with many layers of complexity. Typically a neural network is trained, or it learns, from its exposure to thousands of 'good' and 'bad' examples of the image to be recognized or classfied. For example, a neural network that has to recognize handwritten numbers, will be exposed to thousands of examples of numbers written by different people, and even with...

Best FPGA development practices - Whitepaper

Image
Reusable blocks (Image source: Altium) This whitepaper  by Charles Fulk and RC Cofer is an excellent summary of several techniques, tools and design guidelines for FPGA: FPGA design process Revision control Coding guidelines Scripting automation PCB design for FPGA VHDL capture and simulation (including OS-VVM package) Project Management Design Resources The whitepaper is available here

Xilinx AXI Stream tutorial - Part 2

This post is now hosted here

Xilinx AXI Stream tutorial - Part 1

Image
Hi, In this series of articles, I am going to present the design of an AXI4-Stream master. As I often do in my tutorials, I will try to show the design procedure for the block, starting from a “bare bones” solution and gradually adding features to it. Xilinx provides a wide range of AXI peripherals/IPs from which to choose. My purpose in making my own block was to learn the protocol ‘hands-on’. As a side effect, this tutorial provides you with a (synthesizable) AXI4 Stream master which I have not seen provided by Xilinx. The closest IP provided by Xilinx, that I know of, is an AXI memory mapped to AXI stream block. Continue reading...

Spartan 7 now available

"Xilinx announced today that its Spartan-7 family of FPGAs is now available for order and shipping to standard lead times. As a key member of Xilinx's Cost-Optimized Portfolio, this device family is designed to meet the needs of cost-sensitive markets by delivering low cost and low power entry points that are I/O optimized for connectivity with industry leading performance-per-watt" For more information: Spartan-7 general availability announcement Spartan-7 device page

Match rockets

Image

Introduction to Verilog

Image
This page is now hosted here