aboutsummaryrefslogtreecommitdiff
path: root/sem6/dig/m4
diff options
context:
space:
mode:
Diffstat (limited to 'sem6/dig/m4')
-rw-r--r--sem6/dig/m4/Makefile2
-rw-r--r--sem6/dig/m4/ex2.vhdl28
2 files changed, 29 insertions, 1 deletions
diff --git a/sem6/dig/m4/Makefile b/sem6/dig/m4/Makefile
index 0b35d0c..53c83b2 100644
--- a/sem6/dig/m4/Makefile
+++ b/sem6/dig/m4/Makefile
@@ -1,4 +1,4 @@
-INPUTFILES=ex1 dflip
+INPUTFILES=ex1 ex2
include ../common.mk
diff --git a/sem6/dig/m4/ex2.vhdl b/sem6/dig/m4/ex2.vhdl
new file mode 100644
index 0000000..76883ad
--- /dev/null
+++ b/sem6/dig/m4/ex2.vhdl
@@ -0,0 +1,28 @@
+-- TEST_START{"inputs": ["sw0"], "outputs": ["o,3,0"], "clk": "bt0", "testin": "000111001001"}TEST_STOP
+library ieee;
+use ieee.std_logic_1164.all;
+
+entity ex2 is
+ port (
+ sw0: in std_logic;
+ bt0: in std_logic;
+ o: out std_logic_vector(3 downto 0)
+ );
+end ex2;
+
+architecture impl of ex2 is
+ signal state: std_logic_vector(3 downto 0) := "0000";
+ signal next_state: std_logic_vector(3 downto 0) := "0000";
+begin
+ -- Implement shifting
+ next_state(3 downto 1) <= state(2 downto 0);
+ next_state(0) <= sw0;
+ o <= state;
+
+ process (bt0)
+ begin
+ if (bt0'event and bt0 = '1') then
+ state <= next_state;
+ end if;
+ end process;
+end impl;