Forum Discussion

Altera_Forum's avatar
Altera_Forum
Icon for Honored Contributor rankHonored Contributor
12 years ago

problem (?) using shared variables

Hi,

I need your kind opinion. Please, anyone explain me why the following code is not running.

VHDL code (sel-explainable)


------------------------------------------------------
entity counter_with_sharedvar is
   port (clk: in bit;
         digit1, digit2: out integer range 0 to 9);
end entity;
------------------------------------------------------
architecture counter of counter_with_sharedvar is
   shared variable temp1, temp2: integer range 0 to 9;
begin
----------------------------------
   proc1: process (clk)
   begin
      if (clk'EVENT and clk='1') then
         if (temp1=9) then
            temp1 := 0;
         else
            temp1 := temp1 + 1;
         end if;
      end if;
   end process proc1;
----------------------------------
   proc2: process (clk)
   begin
      if (clk'EVENT and clk='1') then
         if (temp1=9) then
            if (temp2=9) then
               temp2 := 0;
            else
               temp2 := temp2 + 1;  
            end if;
         end if;
      end if;
   end process proc2;
----------------------------------
   digit1 <= temp1;
   digit2 <= temp2;
end architecture;

VHDL testbench code


entity tb_cct is
end entity tb_cct;
architecture arch of tb_cct is
   constant T: time := 20 ns;
   signal t_clk: bit;
    signal t_d1: integer range 0 to 9;
    signal t_d2: integer range 0 to 9;
begin
   uut: entity work.counter_with_sharedvar(counter)
         port map(clk => t_clk, digit1 => t_d1, digit2 => t_d2);
   process
    begin
       t_clk <= '0';
        wait for T/2;
        t_clk <= '1';
        wait for T/2;
    end process;
end arch;

simulation result (50 MHz oscilator)

https://www.alteraforum.com/forum/attachment.php?attachmentid=7548

Any ideas?

Regards

Jaraqui

26 Replies