aboutsummaryrefslogtreecommitdiffstats
path: root/icezum
diff options
context:
space:
mode:
authorobijuan <juan@iearobotics.com>2017-02-16 20:03:03 +0100
committerobijuan <juan@iearobotics.com>2017-02-16 20:03:03 +0100
commitbedecee054b7dc8db5a1dfa265696665f4270c67 (patch)
tree0bb239f5913d4623406e7d3f6bc85ed59f980529 /icezum
parent6e6b67b9ea316b64c22027082b160c41b26a7ac5 (diff)
downloadghdl-yosys-plugin-bedecee054b7dc8db5a1dfa265696665f4270c67.tar.gz
ghdl-yosys-plugin-bedecee054b7dc8db5a1dfa265696665f4270c67.tar.bz2
ghdl-yosys-plugin-bedecee054b7dc8db5a1dfa265696665f4270c67.zip
Icezum Alhambra board example: 8-bit counter displayed on leds
Diffstat (limited to 'icezum')
-rw-r--r--icezum/counter-8bits/Makefile32
-rw-r--r--icezum/counter-8bits/README.md16
-rw-r--r--icezum/counter-8bits/counter8.pcf9
-rw-r--r--icezum/counter-8bits/counter8.vhdl38
4 files changed, 95 insertions, 0 deletions
diff --git a/icezum/counter-8bits/Makefile b/icezum/counter-8bits/Makefile
new file mode 100644
index 0000000..c618b42
--- /dev/null
+++ b/icezum/counter-8bits/Makefile
@@ -0,0 +1,32 @@
+PROJ = counter8
+PIN_DEF = counter8.pcf
+DEVICE = hx1k
+
+all: $(PROJ).rpt $(PROJ).bin
+
+%.blif: %.vhdl
+ ghdl -a $(PROJ).vhdl
+ yosys -m ../../ghdl.so -p 'ghdl $(PROJ); synth_ice40 -blif $@'
+
+
+%.asc: $(PIN_DEF) %.blif
+ arachne-pnr -d $(subst hx,,$(subst lp,,$(DEVICE))) -o $@ -p $^
+
+%.bin: %.asc
+ icepack $< $@
+
+%.rpt: %.asc
+ icetime -d $(DEVICE) -mtr $@ $<
+
+prog: $(PROJ).bin
+ iceprog $<
+
+sudo-prog: $(PROJ).bin
+ @echo 'Executing prog as root!!!'
+ sudo iceprog $<
+
+clean:
+ rm -f $(PROJ).blif $(PROJ).asc $(PROJ).rpt $(PROJ).bin work-obj93.cf
+
+.SECONDARY:
+.PHONY: all prog clean
diff --git a/icezum/counter-8bits/README.md b/icezum/counter-8bits/README.md
new file mode 100644
index 0000000..e61330b
--- /dev/null
+++ b/icezum/counter-8bits/README.md
@@ -0,0 +1,16 @@
+A hello world example for the **Icezum Alhambra board**
+It just blinks all the leds
+
+Execute
+
+```sh
+$ make
+```
+
+for synthesizing the example and
+
+```sh
+$ make prog
+```
+
+for programing the board
diff --git a/icezum/counter-8bits/counter8.pcf b/icezum/counter-8bits/counter8.pcf
new file mode 100644
index 0000000..9d25064
--- /dev/null
+++ b/icezum/counter-8bits/counter8.pcf
@@ -0,0 +1,9 @@
+set_io --warn-no-port led0 95 # output
+set_io --warn-no-port led1 96 # output
+set_io --warn-no-port led2 97 # output
+set_io --warn-no-port led3 98 # output
+set_io --warn-no-port led4 99 # output
+set_io --warn-no-port led5 101 # output
+set_io --warn-no-port led6 102 # output
+set_io --warn-no-port led7 104 # output
+set_io --warn-no-port clk 21
diff --git a/icezum/counter-8bits/counter8.vhdl b/icezum/counter-8bits/counter8.vhdl
new file mode 100644
index 0000000..4c5017e
--- /dev/null
+++ b/icezum/counter-8bits/counter8.vhdl
@@ -0,0 +1,38 @@
+library ieee;
+use ieee.std_logic_1164.all;
+use ieee.numeric_std.all;
+
+entity counter8 is
+ port (clk : in std_logic;
+ led0, led1, led2, led3, led4, led5, led6, led7 : out std_logic);
+end counter8;
+
+architecture synth of counter8 is
+
+ signal clk_6hz : std_logic;
+
+begin
+
+ -- Presscaler
+ prescaler: process(clk)
+ variable timer : unsigned (20 downto 0):=(others=>'0');
+ begin
+ if rising_edge(clk) then
+ timer := timer + 1;
+ clk_6hz <= timer(20);
+ end if;
+ end process;
+
+ -- 8 bits counter
+ process (clk_6hz)
+ variable temp : unsigned (7 downto 0);
+ begin
+ if rising_edge(clk_6hz) then
+ temp:= temp + 1;
+
+ -- Show the counter on the icezum Alhambra leds
+ (led7, led6, led5, led4, led3, led2, led1, led0) <= temp;
+ end if;
+ end process;
+
+end synth;