-
Data: 2011-05-03 19:20:40
Temat: Re: verilog początki co żle?
Od: Michoo <m...@v...pl> szukaj wiadomości tego autora
[ pokaż wszystkie nagłówki ]W dniu 03.05.2011 20:59, MiSter pisze:
>> Najprostszy przykład:
>> process(clk) begin
>> out<= in;
>> end process;
>> NIE działa tak jak się człowiek spodziewa - mimo, że w symulacji ładnie
>> kopiuje wejście na wyjście w takt zegara to w FPGA będzie zmieniać stan
>> wyjść gdy tylko zmienią się wejścia.
>>
>> Trzeba więc napisać:
>> process(clk) begin
>> if rising_edge(clk) then
>> out<= in;
>> end if;
>> end process;
>
>
> A co tu jest nie tak wg Ciebie?
> Wszystko działa zgodnie z zapisem.
> Na liście czułości w pierwszym przypadku masz clk więc symulator tylko
> wylicza nowy stan w chwili zmian sygnału "czułego" - clk.
> W rzeczywistości to masz współbieżne przypisanie - poprostu out jest
> połączony "kawałkiem przewodu" z in.
Właśnie. Czyli zsyntetyzowany core zachowuje się inaczej niż to wynika z
opisu. Tylko w takiej sytuacji należałoby zmienić standard języka i
dostosować symulatory a nie udawać, że wszystko jest ok.
> W drugim przypadku masz klasyczny zatrzask - czyli wyjście może zmienić się
> w takt zegara.
Mam klasyczny flip-flop (D, bez wyjścia /Q). Latch wyglądałby tak:
process(clk) begin
if clk='1' then
out<= in;
end if;
end process;
> Po prostu nie ma się co załamywać bo wszystko działa zgodnie z fizyką -
> trzeba się tej fizyki wpierw nauczyć i ją czuć.
Problemem nie jest fizyka tylko inne zachowanie symulacji i syntezy.
Takie a nie inne działanie wynika z prostego faktu - gdyby kompilator po
cichu generował sprzętowy odpowiednik if xxx'event z każdego xxx na
liście czułości (a tak by wygladała realizacja tego co opisuje standard)
to wszystko byłoby strasznie wolne i zasobożerne. Alternatywą jest
wprowadzenie do standardu, że niewymienienie na liście czułości czegoś z
prawej strony podstawienia skutkuje błędem, ale "taka zmiana w języku"
jest niedopuszczalna. Mamy więc sytuację w której symulacja sobie a
synteza sobie, mimo, że symulujemy przecież po to, żeby uzyskać
przewidywalne zachowanie po syntezie.
--
Pozdrawiam
Michoo
Następne wpisy z tego wątku
Najnowsze wątki z tej grupy
- Jaka ładowarka sieciowa do Iphona?
- Taśma izolacyjna do prac elektrycznych
- Recenzja 3.1A ;) w 6 gniazdach...
- Re: Recenzja 3.1A ;) w 6 gniazdach...
- Re: Recenzja 3.1A ;) w 6 gniazdach...
- Re: Recenzja 3.1A ;) w 6 gniazdach...
- Wkrętarki, wiertarki...
- Zasilacz impulsowy 12V 10A, coś godnego uwagi jako zamiennik akumulatora wkrętarki
- Mouser - koszt wysyłki
- [OT] Jak wycinac ksztalt w piance lub styropianie?
- FV--> ciepła woda w kranie
- Szok
- Dziwny schemat wzmacniacza m.cz.
- We Wrocławiu ruszyła Odra 5, pierwszy w Polsce komputer kwantowy z nadprzewodzącymi kubitami
- CGNAT i ewentualne problemy
Najnowsze wątki
- 2025-07-03 ROG
- 2025-07-03 OZE dały Polsce więcej prądu niż elektrownie węglowe
- 2025-07-03 Dlaczego nikt nie powiadamia służb!
- 2025-07-02 Jaka ładowarka sieciowa do Iphona?
- 2025-07-02 ,,The Plot to Get RFK" (,,Spisek, by pozbyć się RFK")
- 2025-07-02 Rozkaz 17-2025: O Zaprzestaniu Zaciągania Kredytów
- 2025-07-02 Rozkaz 16-2025: 2025-06-19 Apelacja Do Wyroku Sądu Rej. w Sprawie IVRNs 295-23
- 2025-07-02 Rozkaz 17-2025: O Zaprzestaniu Zaciągania Kredytów
- 2025-07-02 Inżynierowie... inżynierzy...
- 2025-07-02 Can you activate BMW 48V 10Ah Li-Ion battery, connecting to CAN-USB laptop interface ?
- 2025-07-02 Kto potrafi sprawdzić aku BMW 48V 10Ah Li-Ion do mini hybrydy, czy sprawny ?
- 2025-07-02 Warszawa => Senior IT Recruitment Consultant <=
- 2025-07-02 Gdańsk => Konsultant wdrożeniowy (systemy controlingowe) <=
- 2025-07-02 Warszawa => IT Hardware Specialist - Wsparcie i Konfiguracja <=
- 2025-07-02 Warszawa => Inżynier oprogramowania .Net <=