-
Data: 2011-05-03 18:36:57
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:15, ToTylkoJa pisze:
> Użytkownik Michoo napisał:
> [ciach]
>
>>
>>> input in,
>>> output [3:0] out,
>> Jesteś pewien, że in i out nie powinny mieć takiej samej szerokości?
> Wstyd sie przyznac błąd przy przepisywaniu książki. Już poprawiłem in
> oraz out mają tą samą szerokość ale błąd jest nadal generowany. Tym
> razem tak jak w moim liczniku dla wszystkich wyjść od out<3> do out<0>
> nadal jest:'Xst:528 - Multi-source in Unit <licz_ksiazka> on signal
> <out<3>>; this signal is connected to multiple drivers.' i tak jeszcze 3
> linijki dla out<2> ,... aż do out<0>
>
>> Powyżej masz dwa "procesy" w których przypisujesz out_data (a więc
>> pośrednio out) - w pierwszym całe out(3 downto 0) a w drugim samo
>> out(3). Coś takiego się nie syntetyzuje bo kompilator nie wie co zrobić
> Już to poprawiłem. Wychodzi mi że kompilator nie chce przyjąć dwóch
> procesów (always @). Zaremowanie linijek od resetu asynchronicznego lub
> właściwego zlicznia pomaga.
Jak już pisałem - albo robisz dodatkowe sygnały, albo musisz zrobić
jeden proces i odpowiednio rozłożyć if-else:
PSEUDOKOD:
if(!reset asynchroniczny){
if(zbocze)
licz;
}else{
resetuj
}
> Poza tym ktoś w książce podał zły
> (niekompilowalny) przykład?
A co? książki piszą ludzie.
> Zastanawiam się czy ten web ISE nie ma jakiś
> ograniczeń, lub ja go źle skonfigurowałem.
Z tego co wiem to po prostu sprzęt nie doczekał się ciągle porządnego
języka do programowania. Mam teraz na studiach magisterskich na trzech
przedmiotach VHDL i jak odkrywam (albo słyszę o) kolejne "ciekawe"
zjawiska i niespójności pomiędzy symulacją a syntezą tego samego kodu to
człowiek się może załamać.
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;
--
Pozdrawiam
Michoo
Następne wpisy z tego wątku
Najnowsze wątki z tej grupy
- Położyłem dwa telefony obok siebie
- Przekaźnik na szynę DIN (?)
- Taśma LED
- Jak odróżnić myjki wibrujące od ultradźwiękowych.
- Ledy na wyłączniku czasowym błyskają
- Re: Kompensacja mocy biernej przy 230VAC
- Re: Kompensacja mocy biernej przy 230VAC
- RCD wybija
- Re: Kompensacja mocy biernej przy 230VAC
- Łożysko ślizgowe - jaki olej
- Re: Kompensacja mocy biernej przy 230VAC
- Re: Kompensacja mocy biernej przy 230VAC
- Współczesny falomierz
- Zasilacz 7V na szynę DIN
- Waga z legalizacją
Najnowsze wątki
- 2025-04-09 [przegląd prasy] - raport mniejszosci
- 2025-04-09 [przegląd prasy] - wypadek autobusu w Warszwie - wyrok (prawomocny)
- 2025-04-09 [przegląd prasy] - przejścia na drogach rowerowych
- 2025-04-09 Czy blokowanie sali obrad Sejmu przez PO-opozycje pod rządami PiS już się przedawniło? [mecenas Giertych dołki kopie?]
- 2025-04-09 Koniec produkcji Leapmotor T03
- 2025-04-09 Pruszków => Specjalista ds. public relations <=
- 2025-04-09 Rzeszów => International Freight Forwarder <=
- 2025-04-09 Ryga => Konsultant Wdrożeniowy Comarch XL/Optima (Księgowość i Kad
- 2025-04-09 Poznań => Konsultant wdrożeniowy Comarch XL/Optima (Księgowość i
- 2025-04-09 Chrzanów => Spedytor Międzynarodowy (handel ładunkami/prowadzenie f
- 2025-04-09 Warszawa => JavaScript / Node / Fullstack Developer <=
- 2025-04-09 Warszawa => Senior Product Manager <=
- 2025-04-09 Warszawa => Starszy Konsultant SAP FICO <=
- 2025-04-09 Warszawa => NMS System Administrator <=
- 2025-04-07 C++. Podróż Po Języku - komentarz