Hello all. I've been coding a Johnson Counter like the following:
1 | library IEEE;
|
2 | use IEEE.STD_LOGIC_1164.ALL;
|
3 | use IEEE.STD_LOGIC_ARITH.ALL;
|
4 | use IEEE.STD_LOGIC_UNSIGNED.ALL;
|
5 |
|
6 | entity johnson is
|
7 | generic (n : natural := 4);
|
8 | port (clk, enable : in std_logic;
|
9 | count : out std_logic_vector (n-1 downto 0));
|
10 | end johnson;
|
11 |
|
12 | architecture behavioural of johnson is
|
13 | signal reg_john, nxt_john : std_logic_vector (n-1 downto 0);
|
14 | begin
|
15 | process (clk)
|
16 | begin
|
17 | if (clk'event and clk='1') then
|
18 | if (enable='1') then
|
19 | reg_john<=nxt_john;
|
20 | end if;
|
21 | end if;
|
22 | end process;
|
23 | process (reg_john)
|
24 | begin
|
25 | nxt_john<=reg_john (n-2 downto 0) & not reg_john (n-1);
|
26 | end process;
|
27 | count<=reg_john;
|
28 | end behavioural;
|
The synthetization was OK. The thing is when I tried to simulate the
code, all the outputs from the count were having the letter 'U'.
Please, take a look at the attached screenshot.
Note that "habilitacion" = "enable" and "cuenta" = "count".
What are those 'U's? How can I fix the simulation in order to work?
Thanks a lot.