ブログ - ModelSim LOOP文の怪

ModelSim LOOP文の怪

カテゴリ : 
ツール
執筆 : 
dohi 2008-10-3 1:18
先日「ダウンロード」にUPした、mwire.vhdをシミュレーションしていて発見した現象です。 例えば、こんなのをシミュレーションします。
library IEEE;
use IEEE.std_logic_1164.all;
use IEEE.std_logic_unsigned.all;

entity  mtest is
end mtest;

architecture testbench of mtest is

signal	RESn : std_logic; -- RESET(low active)
signal	CLK  : std_logic; -- CLOCK(10MHz 50%duty)
signal	CTR  : std_logic_vector(7 downto 0); -- binary counter
signal	s_A  : std_logic_vector(7 downto 0); -- copy of CTR
signal	s_B  : std_logic_vector(7 downto 0); -- copy of CTR
signal	s_C  : std_logic_vector(7 downto 0); -- copy of CTR


begin

-- CLK generation
process begin
    loop
        CLK <= '0';
        wait for 50 ns;
        CLK <= '1';
        wait for 50 ns;
    end loop;
end process;

-- RESn generaton
process begin
    RESn <= '0';
    wait until(CLK'event and CLK = '1');
    wait until(CLK'event and CLK = '0');
    RESn <= '1';
    wait;
end process;

-- counter
process (RESn, CLK) begin
    if (RESn = '0') then
        CTR <= "00000000";
    elsif (CLK'event and CLK = '1') then
        if (CTR = "11111111") then
            CTR <= "00000000";
        else
            CTR <= CTR + 1;
        end if;
    end if;
end process;

-- good case 問題ない場合
process (CTR) begin
    s_A(0) <= CTR(0);
    s_A(1) <= CTR(1);
    for i in 2 to 7 loop
        s_A(i) <= CTR(i);
    end loop;
end process;

-- bad case BIT0とBIT1がおかしくなる
s_B(0) <= CTR(0);
s_B(1) <= CTR(1);
process (CTR) begin
    for i in 2 to 7 loop
        s_B(i) <= CTR(i);
    end loop;
end process;

-- good case これは問題ない
s_C(0) <= CTR(0);
s_C(1) <= CTR(1);
process (CTR) begin
    s_C(2) <= CTR(2);
    s_C(3) <= CTR(3);
    s_C(4) <= CTR(4);
    s_C(5) <= CTR(5);
    s_C(6) <= CTR(6);
    s_C(7) <= CTR(7);
end process;

end;
s_A や s_C は、正しく CTR がコピーされるのですが、 s_B の下位bitは、不定になってしまいます。どうも、process文中の、loopの解釈が、うまくできないみたいです。





本来、loopを開けば、s_B と s_C は、全く同じことになるはずですが・・・ ModelSimは、QuatusII Web Editionにバンドルされている、ALTERA WEB EDITION 6.1gというVersionで試しています。

トラックバック

トラックバックpingアドレス http://www.bedesign.jp/modules/d3blog/tb.php/4

新しくコメントをつける

題名
ゲスト名   :
投稿本文
より詳細なコメント入力フォームへ

コメント一覧