summaryrefslogtreecommitdiff
path: root/Example/combinational_logic/counter
diff options
context:
space:
mode:
authorsaurabhb172019-12-18 15:13:23 +0530
committersaurabhb172019-12-18 15:13:23 +0530
commiteb95026ab9007631eb8e2a1c54dcd38fabcb60ad (patch)
tree8695e410cfe16a3b2e37600cd64b3f0b9a5673e2 /Example/combinational_logic/counter
parent04d9c666b4bb19936dfa469f536fb38107e631eb (diff)
downloadnghdl-eb95026ab9007631eb8e2a1c54dcd38fabcb60ad.tar.gz
nghdl-eb95026ab9007631eb8e2a1c54dcd38fabcb60ad.tar.bz2
nghdl-eb95026ab9007631eb8e2a1c54dcd38fabcb60ad.zip
Examples Restructered
Diffstat (limited to 'Example/combinational_logic/counter')
-rw-r--r--Example/combinational_logic/counter/counter.vhdl30
-rw-r--r--Example/combinational_logic/counter/updown_counter.vhdl32
2 files changed, 62 insertions, 0 deletions
diff --git a/Example/combinational_logic/counter/counter.vhdl b/Example/combinational_logic/counter/counter.vhdl
new file mode 100644
index 0000000..ba14df8
--- /dev/null
+++ b/Example/combinational_logic/counter/counter.vhdl
@@ -0,0 +1,30 @@
+library ieee;
+
+use ieee.std_logic_1164.all;
+use ieee.numeric_std.all;
+
+entity counter is
+port(C : in std_logic;
+ CLR : in std_logic;
+ Q : out std_logic_vector(3 downto 0));
+end counter;
+
+architecture bhv of counter is
+
+ signal tmp: std_logic_vector(3 downto 0);
+ begin
+ process (C, CLR)
+
+ begin
+ if (CLR='1') then
+ tmp <= "0000";
+
+ elsif (C'event and C='1') then
+ tmp <= std_logic_vector(to_unsigned(1+to_integer(unsigned(tmp)), tmp'length));
+
+ end if;
+
+ end process;
+ Q <= tmp;
+
+end bhv; \ No newline at end of file
diff --git a/Example/combinational_logic/counter/updown_counter.vhdl b/Example/combinational_logic/counter/updown_counter.vhdl
new file mode 100644
index 0000000..922ee67
--- /dev/null
+++ b/Example/combinational_logic/counter/updown_counter.vhdl
@@ -0,0 +1,32 @@
+library IEEE;
+use IEEE.STD_LOGIC_1164.ALL;
+use IEEE.numeric_std.ALL;
+
+
+entity updown_counter is
+ Port ( clk: in std_logic;
+ reset: in std_logic;
+ up_down: in std_logic;
+ counter: out std_logic_vector(3 downto 0)
+ );
+end updown_counter;
+
+architecture Behavioral of updown_counter is
+signal tmp: std_logic_vector(3 downto 0);
+begin
+
+process(clk,reset)
+begin
+ if(reset='1') then
+ tmp <= "0000";
+ elsif(clk'event and clk='1') then
+ if(up_down='1') then
+ tmp <= std_logic_vector(to_unsigned(to_integer(unsigned(tmp)-1), tmp'length));
+ else
+ tmp <= std_logic_vector(to_unsigned(to_integer(unsigned(tmp)+1), tmp'length));
+ end if;
+ end if;
+end process;
+ counter <= std_logic_vector(tmp);
+
+end Behavioral; \ No newline at end of file