- Pulsing LED
- LFSR random pulsing LEDs
- GTKWave testing
- Two integer binary multiplicatio
- Tiny Encryption Algorithm
- UART connection between Icestick and Arduino
-
Install apio from
https://apiodoc.readthedocs.io/en/stable/source/installation.html
-
Follow steps in
https://apiodoc.readthedocs.io/en/stable/source/quick_start.html#create-a-project
apio init --icestick
apio build
apio upload
chmod +x install_ice40_toolchain_mac.sh
./install_ice40_toolchain_mac.sh
-
Write Verilog Code
- Create your design in a
.v
file
nano blinky.v
- Create your design in a
-
Synthesize Design
- Run synthesis tool (Yosys)
yosys -p "synth_ice40 -top module_name -json output.json" input.v
-
Create Constraints File
- Define pin mappings in a
.pcf
file
nano pinout.pcf
- Define pin mappings in a
-
Place and Route
- Run place and route tool (nextpnr)
nextpnr-ice40 --hx1k --package vq100 --json input.json --pcf pinout.pcf --asc output.asc
-
Generate Bitstream
- Convert ASCII to binary bitstream
icepack output.asc output.bin
-
Upload to FPGA
- Connect FPGA board
- Use upload tool to program FPGA with bitstream
iceprog output.bin
-
Verify
- Check if design works as expected on FPGA
Notes:
- Replace
module_name
,input.v
,output.json
, etc., with your actual file names. - The
--hx1k --package vq100
options in the nextpnr command are specific to the iCE40-HX1K in a VQ100 package. Adjust these for your specific FPGA model. - Ensure all necessary tools (Yosys, nextpnr, icestorm) are installed and in your system PATH.