Vivado, an overview

Vivado is the IDE that is used for the "programming" of Xilinx FPGAs. Xilinx/AMD together with Altera/Intel are the two dominant vendors for FPGAs. Programming the device in this context means generating the configuration of the FPGA so that it implements some logic specified by the designer.

Vivado is a 70GB install and quite a piece of software. I'll try to give an orientation on how to use Vivado and give a high level conceptual and architectural overview of the system. Theand the work flows that are designed into the tools (and seem to have been widely adopted in the FPGA industry). There are many different ways for using Vivado but as I am a command line kind of person, I will of course look at how to script things as much as possible.

Read more  ↩︎

A gentle introduction to programming FPGAs

Programming an FPGA is a cool and quite unique experience when it comes to programming. Here I want to introduce you to the different concepts needed so that you can get (admittedly quite rough) barrings on how to go about programming your own logic on these pretty cool class of chips.

Read more  ↩︎

Set up GDB for flashing and debugging Microcontrollers with rust

As discussed in the last post GDB is the program between you and the chip. GDB and the underlying GDB server translate the commands into the correct electrical signaling so that the thing happens that is specified by the command. To get GDB to do what you want to do is however still a bit of a challenge which I will try to address here.

Read more  ↩︎

Setting up the tool chain for developing with embedded devices

The first thing that you need to do after maybe understanding the basics of micro controller is to set up a tool chain. The tool chain is the set of programs that help you get the code you have written onto the chip that is supposed to execute it.

Read more  ↩︎

A different kind of Introduction to Embedded

I like to understand what I am doing. As such I don't like abstractions that I don't understand even if I have (black box) model of what happens when I invoke which function. Most tutorials, that I have encountered have however relied on exactly that acceptance of black box abstractions when they introduce concepts. This is especially true for software development where many things that are done commonly are in reality teribly complicated but also sufficiently abstracted over to make it simple to use, yet not so simple to understand of course. This is where I want to differ.

Read more  ↩︎