EmbDev.net

Forum: FPGA, VHDL & Verilog VHDL - Johnson Counter - Simulation Output with 'U's


von burami s. (Company: none) (bur85x)


Attached files:

Rate this post
useful
not useful
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.

von Klaus (Guest)


Rate this post
useful
not useful
'U'  is the value for "uninitialized". Think about, at which value your 
counter starts. You can't determine is from the source code? So the 
simulator can't either! ;-)

For the synthesiser, there is no value like 'U', only '0' and '1'. So it 
has to choose a value. Most likely it will use 0.

von burami s. (Company: none) (bur85x)


Rate this post
useful
not useful
Thanks Klaus, and I've also realized that the Xilinx Simulator has two 
kinds of options to simulate: "Behavioural Simulation" and "Post-Route 
Simulation", so I tried the last one in this case and it seemed to work.

von Lothar M. (Company: Titel) (lkmiller) (Moderator)


Rate this post
useful
not useful
Both types of simulation will "work", if you just initialize the 
counters signal with  (others =>'0')
Don't work around some problem! Try to understand what's going on...

von burami s. (Company: none) (bur85x)


Rate this post
useful
not useful
Thank you very much, Lothar, you're right.

I'm going to try it and see what happens. :)

von burami s. (Company: none) (bur85x)


Attached files:

Rate this post
useful
not useful
Here's the fixed Johnson Counter.

Please log in before posting. Registration is free and takes only a minute.
Existing account
Do you have a Google/GoogleMail account? No registration required!
Log in with Google account
No account? Register here.