diff options
author | Rahul P | 2019-11-19 12:32:39 +0530 |
---|---|---|
committer | GitHub | 2019-11-19 12:32:39 +0530 |
commit | a6c0b36fcaba6c1f2d366432b2386122674b4782 (patch) | |
tree | 18a02155e45110fd6419139e48f6d9b277ab9870 /Example/counter | |
parent | 2fe70dd26008b0f4920928d592290614bf47ce5d (diff) | |
parent | 6e12269c0681dcfb0d1ec927670fb9d69464af9c (diff) | |
download | nghdl-a6c0b36fcaba6c1f2d366432b2386122674b4782.tar.gz nghdl-a6c0b36fcaba6c1f2d366432b2386122674b4782.tar.bz2 nghdl-a6c0b36fcaba6c1f2d366432b2386122674b4782.zip |
Merge pull request #29 from rahulp13/master
Updated nghdl
Diffstat (limited to 'Example/counter')
-rw-r--r-- | Example/counter/counter.vhdl | 30 | ||||
-rw-r--r-- | Example/counter/updown_counter.vhdl | 32 |
2 files changed, 62 insertions, 0 deletions
diff --git a/Example/counter/counter.vhdl b/Example/counter/counter.vhdl new file mode 100644 index 0000000..ba14df8 --- /dev/null +++ b/Example/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/counter/updown_counter.vhdl b/Example/counter/updown_counter.vhdl new file mode 100644 index 0000000..922ee67 --- /dev/null +++ b/Example/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 |