Miniconfs
Create Hardware with FPGAs, Linux and Python
Organised by Tim 'mithro' Ansell and friends.
When
Tuesday, 23 January 2018
This is an all day event, you will not be able to attend other miniconfs.
Attending
Tickets
As this Miniconf requires specialized hardware, to attend you are required to purchase a seperate ticket. Numbers are strictly limited, so get your ticket now!
All ticket include the needed hardware and lunch on the Miniconf day.
The three tickets options are;
- Basic Ticket + Kit - $150 AUD (inc GST), the basic ticket + kit includes;
- Lunch at the Miniconf
- Digilent Artix A7-35T FPGA Development Board
- Either (select the right one for your laptop);
- USB-C Ethernet and USB Hub, or
- USB-A Ethernet and USB Hub
- Short micro-USB + Ethernet cables
- Goodies Ticket + Kit - $250 AUD (inc GST), the goodies ticket + kit includes everything in the Basic Ticket plus a selection of Pmod expansion boards
- Sponsored Ticket + Kit - $0 AUD (inc GST), Digilent have provided kit so we can provide a number of free tickets to people who can not afford to pay otherwise. Please only sign up for a free ticket if you are unable to pay.
Purchasing
Tickets can be purchased on the Attend Registration Dashboard. Look under the "Add/Update Items" for the FPGA Miniconf Product Category.
Make sure you select the right kit for your laptop.
Assumed Knowledge
While this tutorial aims to be as accessible as possible, only so much can be covered in a day. For this reason attendees should have;
-
Strong programming experience. Python and C will be in heavy use.
-
Compiled and customized their own Linux kernel. (Experience with Linux Kernel development is a definite plus!)
-
Understanding of how a CPU operates. (Understanding what Config/Control Status Registers - CSRs and "memory mapped IO" are a plus.)
Pre-work
Everyone attending the tutorial must have completed the pre-work before the tutorial. The pre-work will be checked at the start of the tutorial and anyone who hasn't done the pre-work will be asked to leave, even if they have a valid ticket (no refund will be given).
The tutorial organisers will be available on Monday, 22 January 2018 to help with people stuck on the pre-work.
Other Requirements
Laptop
- A computer running one of the following 64bit Linux Distro,
- Arch Linux
- Debian "testing" as of 2017-11-11
- Fedora 26
- Ubuntu 14.04 - Trusty Tahr
- Ubuntu 16.04 - Xenial Xerus
- Ubuntu 17.10 - Artful Aardvark
- Modern CPU able to compile Linux reasonable quickly (10ish minutes)
- ~50gb of free disk space
- 8gb of RAM
Using a virtual machine may work but is not recommended.
Software
You will be required to download and instal Xilinx Vivado as part of the pre-work.
Vivado is free as in beer but not free as in freedom, this is the only non-FOSS tool used in the tutorial.
We are using "Vivado Design Suite - HLx Editions" and the 2017.3 release. You will also need the free WebPack license.
About
In 2005 the Love-Rusty 3000 was a state of the art crypto accelerator. Developed by the infamous Robert Love & Rusty Russell, it was the talk of Linux.conf.au 2005. Many intrepid kernel hackers spent much of the conference developing a Linux driver for the advanced feature set.
Sadly in 2018 the hardware is no longer available, the innovative & advanced feature set can no longer inspire new Engineers. This doesn't have to be the end thanks to the development of low cost and accessible FPGA hardware. You can help resurrect this jewel of a device to inspire the next generation! What was old is new again!
The Migen tooling developed by M-Labs when extended by EnjoyDigital's LiteX ecosystem enables creation of "System on Chip" (SoCs) that can run Linux. Using a Python based "Hardware Description Language" (HDL) combined with open CPUs cores, the complete source code available under open source licenses.
This technology has been used in everything from custom mobile phone base stations, quantum mechanics physics experiments and is even the basis for the TimVideos HDMI2USB project which is currently being used to record Linux.conf.au!
During the day we will take you through the following;
-
Creating your own SoC using Python based Migen and LiteX.
-
Running your SoC on an FPGA and booting into Linux.
-
Creating a peripheral providing the Love-Rusty 3000 feature set and adding to your SoC.
-
Controlling your new peripheral from Linux.
[3]: Like any of PicoRV32, OpenRISC 1K, LatticeMicro32 or J2 open processor.