Jorge Jesse Cantu
Junior Member level 1
- Joined
- Mar 3, 2014
- Messages
- 16
- Helped
- 0
- Reputation
- 0
- Reaction score
- 0
- Trophy points
- 1
- Activity points
- 167
Hello fellow engineers/enthusiasts! I wrote the following program for an 8-bit modula N-bit counter, where N was a specified constant. I had to alter it a little bit due to my friend helping me, but what he altered I am confused about.
My question is, why does he assign my cout to din within my for loop? Din isn't counting, so I am confused on what sort of value din would have and/or assign to cout.
Also I'd be interested to see what a timing diagram for the din input and cout output would look like, but if you guys do not feel like drawing one up for me that is fine, I just want to get rid of my confusion.
Here is my code:
My question is, why does he assign my cout to din within my for loop? Din isn't counting, so I am confused on what sort of value din would have and/or assign to cout.
Also I'd be interested to see what a timing diagram for the din input and cout output would look like, but if you guys do not feel like drawing one up for me that is fine, I just want to get rid of my confusion.
Here is my code:
HTML:
----------------------------------------------------------------------------------
-- Company:
-- Engineer:
----------------------------------------------------------------------------------
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
-- Uncomment the following library declaration if using
-- arithmetic functions with Signed or Unsigned values
--use IEEE.NUMERIC_STD.ALL;
-- Uncomment the following library declaration if instantiating
-- any Xilinx primitives in this code.
--library UNISIM;
--use UNISIM.VComponents.all;
entity nmod is
port( clear: in std_logic;
load: in std_logic;
arst_l: in std_logic; --make it active low
clk: in std_logic;
din: in std_logic_vector(7 downto 0);
count: out std_logic_vector(7 downto 0)
);
end nmod;
architecture Behavioral of nmod is
constant N: std_logic_vector(7 downto 0) := X"C0";
signal cout: std_logic_vector(7 downto 0);
signal arst: std_logic;
signal dain: std_logic;
begin
count <= cout; --output signal, output on left side
arst <= arst_l; --input signal, input on right side
process(clk, arst)
begin
if(arst = '1')then
cout <= '0';
elsif(clk'event and clk = '1')then
if(clear = '1' or cout = 'N') then
cout <= din;
else
cout <= cout +1;
end if;
end if;
end process;
end Behavioral;