2020-10-11 23:44:14 +00:00
|
|
|
|
.. _HDLs:VHDL:
|
|
|
|
|
|
2020-10-05 06:38:33 +00:00
|
|
|
|
VHDL on Fomu
|
|
|
|
|
------------
|
|
|
|
|
|
2021-05-20 11:14:47 +00:00
|
|
|
|
.. HINT:: Component declarations for instantiating hard cores (such as the ones in
|
|
|
|
|
:repo:`hdl/sb_ice40_components.vhd <hdl/sb_ice40_components.vhd>`) are found in the installation of
|
2020-10-05 06:38:33 +00:00
|
|
|
|
`iCEcube2 <http://www.latticesemi.com/iCEcube2>`_.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
“Hello world!” - Blink a LED
|
|
|
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
|
|
2021-05-20 11:14:47 +00:00
|
|
|
|
The canonical “Hello, world!” of hardware is to blink a LED.
|
|
|
|
|
The directory :repo:`hdl/vhdl/blink <hdl/vhdl/blink>` contains a VHDL example of a blink project.
|
|
|
|
|
This takes the 48 MHz clock and divides it down by a large number so you get an on/off pattern.
|
2020-10-05 06:38:33 +00:00
|
|
|
|
|
2021-05-20 11:14:47 +00:00
|
|
|
|
Enter the :repo:`hdl/vhdl/blink <hdl/vhdl/blink>` directory and build the demo by using ``make``:
|
2020-10-05 06:38:33 +00:00
|
|
|
|
|
|
|
|
|
**Make sure you set the** ``FOMU_REV`` **value to match your hardware!** See :ref:`required-hardware`.
|
|
|
|
|
|
|
|
|
|
.. session:: shell-session
|
|
|
|
|
|
|
|
|
|
$ make FOMU_REV=$FOMU_REV
|
|
|
|
|
...
|
|
|
|
|
Info: Max frequency for clock 'clk': 70.39 MHz (PASS at 12.00 MHz)
|
|
|
|
|
|
|
|
|
|
Info: Max delay posedge clk -> <async>: 3.15 ns
|
|
|
|
|
|
|
|
|
|
Info: Slack histogram:
|
|
|
|
|
Info: legend: * represents 1 endpoint(s)
|
|
|
|
|
Info: + represents [1,1) endpoint(s)
|
|
|
|
|
Info: [ 69127, 69680) |**
|
|
|
|
|
Info: [ 69680, 70233) |**
|
|
|
|
|
Info: [ 70233, 70786) |
|
|
|
|
|
Info: [ 70786, 71339) |**
|
|
|
|
|
Info: [ 71339, 71892) |**
|
|
|
|
|
Info: [ 71892, 72445) |**
|
|
|
|
|
Info: [ 72445, 72998) |**
|
|
|
|
|
Info: [ 72998, 73551) |
|
|
|
|
|
Info: [ 73551, 74104) |**
|
|
|
|
|
Info: [ 74104, 74657) |**
|
|
|
|
|
Info: [ 74657, 75210) |**
|
|
|
|
|
Info: [ 75210, 75763) |**
|
|
|
|
|
Info: [ 75763, 76316) |
|
|
|
|
|
Info: [ 76316, 76869) |**
|
|
|
|
|
Info: [ 76869, 77422) |**
|
|
|
|
|
Info: [ 77422, 77975) |**
|
|
|
|
|
Info: [ 77975, 78528) |
|
|
|
|
|
Info: [ 78528, 79081) |***************************
|
|
|
|
|
Info: [ 79081, 79634) |**
|
|
|
|
|
Info: [ 79634, 80187) |***
|
|
|
|
|
22 warnings, 0 errors
|
2021-05-17 05:08:12 +00:00
|
|
|
|
docker run --rm -v //t/fomu/fomu-workshop/hdl/vhdl/blink/../..://src -w //src/hdl/vhdl/blink ghdl/synth:icestorm icepack blink.asc blink.bit
|
2020-10-05 06:38:33 +00:00
|
|
|
|
cp blink.bit blink.dfu
|
|
|
|
|
dfu-suffix -v 1209 -p 70b1 -a blink.dfu
|
|
|
|
|
dfu-suffix (dfu-util) 0.9
|
|
|
|
|
|
|
|
|
|
Copyright 2011-2012 Stefan Schmidt, 2013-2014 Tormod Volden
|
|
|
|
|
This program is Free Software and has ABSOLUTELY NO WARRANTY
|
|
|
|
|
Please report bugs to http://sourceforge.net/p/dfu-util/tickets/
|
|
|
|
|
|
|
|
|
|
Suffix successfully added to file
|
|
|
|
|
$
|
|
|
|
|
|
2021-05-20 11:14:47 +00:00
|
|
|
|
You can then load ``blink.dfu`` onto Fomu by using ``make load`` or the same ``dfu-util -D`` command we’ve been using so
|
|
|
|
|
far.
|
|
|
|
|
You should see a blinking pattern of varying color on your Fomu, indicating your bitstream was successfully loaded.
|