2011-01-14 23 views
1

私は数日前に初心者のためのVHDLコースから始めました。VHDLの説明

私はコード(下)を持っていますが、私はそれがどのような回路を示し、どのように異なるステップが機能しているのかを理解しようとしています。 私は今インターネットを見てきましたが、実際に何ができるのか分かりません。だから私はこれで今誰かが私に説明を与えるかもしれないと思った? :-)

私はそれがバッファを持つ "加算器"のタイプだとは思いますがわからないのですか?バッファは2ビット(Cs-1 downto 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; 
+5

正しくインデントできますか?インデントの補助なしで読むのは難しいです。 –

答えて

9

私はあなたの実体がない多くは、より明確にするべきSigasi HDTであなたのエンティティの入力と出力と改名(およびいくつかの構文エラーを修正)。私は、名前の変更を次のようでした:アサートされを有効にしてcount_up結果R)はクロックの立ち上がりエッジでインクリメントされますが、本当です

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

場合。 count_upがfalseの場合、が有効になると、クロックの立ち上がりエッジでが真の場合、結果はデクリメントされます。

  • このアーキテクチャは、非推奨のライブラリを使用しているように見える:このコードスニペットを使用した場合
    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を加えるには、何を意味するのでしょうか?代わりに署名されたデータ型を使用してください。この方法では、ゼロを減らすと何が起こるかは予測できます。
  • このエンティティは、オーバーフローを警告しません。
+0

今すぐ見るのが簡単です。 – John

+0

これは、 "count_up"の値に応じて上下に計算できる "2bit全加算器"の一種ですか? それはカウンターの一種ですか? よろしくお願いします。 /John – John

+1

こんにちはJohnさん、このサイトで特に助けを求めるのはいいアイデアです。それでもVHDLを本当に学びたいのであれば、自分でコードを見てみてください。テストベンチを作成し、それをシミュレータ上で実行したいかもしれません。あなたは、封筒の裏に手でいくつかの波の痕跡を描くかもしれません。この方法で、あなたはすぐに学び、すぐにあなたはこのフォーラムでの質問になります。しかし、あなたの質問に答えるには:はい、それはカウントアップまたはカウントダウンのカウンターです。 – Philippe