1

数日前に初心者向けの VHDL コースを開始しました。

コード (下) があり、それが示す回路の種類と、さまざまなステップがどのように機能しているかを理解しようとしています。私はインターネットでしばらく見回してきましたが、それが何をするのか本当に理解できませんか? だから私は誰かが私にいくつかの説明を与えるかもしれないと思った. :.-)

よくわかりませんが、バッファ付きの「加算器」の一種だと思いますか?バッファは 2 ビット (Cs-1 から 0 まで) で動作していますが、Cs の意味がわかりません….実際、このコードには理解できないことがたくさんあります。

コードを言葉で理解するのに時間がかかる人がいれば、本当に感謝しています。

entity asc is
generic (CS : integer := 8)
port (k, ars, srs, e, u: in std_logic;
r: buffer std_logic_vector(Cs-1 downto 0));
end asc;
architecture arch of asc is
begin
p1: process (ars, k) begin
if ars = ‘1’ then
r <= (others => ‘0’);
elsif (k’event and k=’1’) then
if srs=’1’ then
r <= (others) => ‘0’);
elsif (e = ‘1’ and u = ‘1’) then
r <= r + 1;
elsif (e = ‘1’ and u = ‘0’) then
r <= r - 1;
else
r <= r;
end if;
end if;
end process;
end arch;
4

1 に答える 1

9

エンティティの入力と出力の名前をSigasiHDTに変更しました(そしていくつかの構文エラーを修正しました)。これにより、エンティティの名前がより明確になります。私は次の名前を変更しました:

k -> clock
ars -> asynchronous_reset
srs -> synchronous_reset
e -> enable
u -> count_up
r-> result

enableがアサートされ、count_upがtrueの場合、結果 r はクロックの立ち上がりエッジでインクリメントされます。count_upがfalseの場合、クロックの立ち上がりエッジでenableがtrueの場合、結果はデクリメントされます。

entity asc is
   generic (resultWidth : integer := 8);
   port (clock, asynchronous_reset, synchronous_reset, enable, count_up: in std_logic;
         result: buffer std_logic_vector(resultWidth-1 downto 0)
        );
end asc;

architecture arch of asc is
begin 
  p1: process (asynchronous_reset, clock) begin
     if asynchronous_reset = '1' then
        result <= (others => '0');
     elsif (rising_edge(clock)) then
        if synchronous_reset='1' then
           result <= (others => '0');
        elsif (enable = '1' and count_up = '1') then
           result <= result + 1;
        elsif (enable = '1' and count_up = '0') then
           result <= result - 1;
        else
           result <= result;
        end if;
     end if;
  end process;
end arch;

このコードスニペットを使用するときは注意してください。

  • このアーキテクチャは非推奨のライブラリを使用しているようです。std_logic_vectorに1を追加するとはどういう意味ですか?代わりに、署名されたデータ型を使用してください。このようにして、ゼロをデクリメントした場合に何が起こるかを予測できます。
  • このエンティティはオーバーフローについて警告しません
于 2011-01-14T18:57:16.750 に答える