0

私は VHDL を初めて使用し、この設計と混同しています

Acknwledgement= '1' および clk='1' の場合

count は count+1 でなければなりません。

Acknwledgement= '0' の場合、クロックの合計カウント値を 'output' に割り当て、その後 count='0' および output='0' をリセットする必要があります。

誰でもこれを手伝ってもらえますか。前もって感謝します。

編集:貼り付けられたコメントからのコード:

library IEEE;
use IEEE.STD_LOGIC_1164.all;
entity acknw is
    port (acknw  : in  std_logic;
          clk    : in  std_logic;
          output : out integer range 0 to 15);
end acknw;
architecture Behavioral of acknw is
begin
    process(clk, acknw) variable c : integer range 0 to 15;
    begin
        if(clk'event and clk = '1') then
            if(acknw = '1') then 
                 c := c+1;
                 output <= c;
            else 
                 c := 0;
                 output <= c;
            end if;
        end if;
    end process;
end Behavioral;
4

1 に答える 1

0

あなたのコメントから、非同期確認応答が必要なようです。次のようなものを試してください。

library IEEE;
use IEEE.STD_LOGIC_1164.all;
entity acknw is
    port (acknw  : in  std_logic;
          clk    : in  std_logic;
          output : out integer range 0 to 15);
end acknw;
architecture Behavioral of acknw is
begin
    process(clk, acknw) 
    begin
        if (acknw = '0') then
          output <= 0;
        elsif rising_edge(clk) then
          -- rollover
          if (output /= 15) then
            output <= output + 1;
          else
            output <= 0;
          end if;
        end if;
    end process;
end Behavioral;
于 2012-05-14T22:19:17.620 に答える