eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.misc.elektronikaVHDL - checa przy symulacji › Re: VHDL - checa przy symulacji
  • Path: news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!newsfeed2.atman.pl!newsfeed.
    atman.pl!.POSTED!not-for-mail
    From: Jakub Rakus <s...@o...pl>
    Newsgroups: pl.misc.elektronika
    Subject: Re: VHDL - checa przy symulacji
    Date: Sat, 23 May 2015 14:12:31 +0200
    Organization: ATMAN - ATM S.A.
    Lines: 42
    Message-ID: <mjpqrf$iu9$1@node1.news.atman.pl>
    References: <9...@g...com>
    NNTP-Posting-Host: staticline-31-182-81-175.toya.net.pl
    Mime-Version: 1.0
    Content-Type: text/plain; charset=utf-8; format=flowed
    Content-Transfer-Encoding: 8bit
    X-Trace: node1.news.atman.pl 1432383151 19401 31.182.81.175 (23 May 2015 12:12:31
    GMT)
    X-Complaints-To: u...@a...pl
    NNTP-Posting-Date: Sat, 23 May 2015 12:12:31 +0000 (UTC)
    User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101
    Thunderbird/31.7.0
    In-Reply-To: <9...@g...com>
    Xref: news-archive.icm.edu.pl pl.misc.elektronika:681668
    [ ukryj nagłówki ]

    On 23.05.2015 10:31, s...@g...com wrote:
    > Napisałem kawałek kodu do obliczania C=|A-B|, gdzie A,B,C to 11 bitowe liczby bez
    znaku. Liczy dobrze, ale przy symulacji behawioralnej wynik pojawia się na opadającym
    zboczu zegara.Za cholerę nie wiem dlaczego?! Poniżej kod:
    >
    > library IEEE;
    > use IEEE.STD_LOGIC_1164.ALL;
    >
    > library UNISIM;
    > use UNISIM.VComponents.all;
    >
    > entity amod is
    >
    > Port ( A : in STD_LOGIC_VECTOR (10 downto 0);
    > B : in STD_LOGIC_VECTOR (10 downto 0);
    > CLK : in STD_LOGIC;
    > C : out STD_LOGIC_VECTOR (10 downto 0));
    > end amod;
    >
    > architecture Behavioral of amod is
    > signal Cs:std_logic_vector(11 downto 0);
    > begin
    >
    > process(CLK,A,B)
    > begin
    > if CLK'event and CLK='1' then
    > Cs<=std_logic_vector(to_unsigned(abs(to_integer(sign
    ed('0'&A))-to_integer(signed('0'&B))),12));
    > end if;
    > C<=Cs(10 downto 0);
    > end process;
    >
    > end Behavioral;
    >

    Jeśli działanie jest synchronizowane zegarem to po co na liście czułości
    procesu dajesz A i B?
    Zamiast CLK'event and CLK='1 daj rising_edge(CLK). Gdzieś czytałem, że
    wbrew pozorom nie zawsze to zadziała tak samo.
    C<=Cs(10 downto 0); wywal poza proces. Albo Cs zrób jako variable
    wewnątrz procesu.

    --
    Pozdrawiam
    Jakub Rakus

Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj


Następne wpisy z tego wątku

Najnowsze wątki z tej grupy


Najnowsze wątki

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: