Temat: Programowanie sprzętu dla laika
Bartosz Serocki:
Grzegorz Roszak:
Heh... kolejny skutecznie zniechęcony ;)
niekoniecznie :)
musiałem po prostu zebrać myśli, nie tak łatwo będzie mnie odciągnąć od tego :)
jak na moje oko dobrze rokujesz ;)
Na początęk dziękuję za odzew!!
proszę bardzo
Jak na razie to załatwiłem sobie książkę pana Kalisza - dzięki za cynk. Wygąda na fajnie napisaną.
Wracająć do pytania nr 1, to rozumie, że jest tak głupie, że nie ma na nie ... prostej odpowiedzi. szkoda :(
dzisiaj zauważyłem, że się rozpisałem i zapomniałem odpowiedzieć na Twoje pytanie, wybacz, odpowiadam teraz.
W bloku always można umieszczać ... wszystko :) (czasem będą to maszyny stanów na kilkaset linii) oczywiście w ramach pewnych ograniczeń wynikających ze specyfiki modelowania w sprzęcie. No niestety dalsza częśc pytania sugeruje że skręcasz w złym kierunku (stąd był ten mój rozpasiony wykłąd nt. różnic programowania i modelowania).
Czy można tam umieścić jakąś długą pętlę lub skomplikowanego taska?
jeszcze raz powtarzam: to nie jest program! pętla w sprzęcie Ci się nie będzie wykonywać x razy, gdzie x wynika z jakiegoś iteratora. Jedyne pętle które możesz zawierać w RTLu (Register Transfer Level - poziom przesłań między rejestrowych - dość sugestywna nazwa - poziom w którym modeluje się elementy syntezowalne) to takie które będą robiły przypisywania do poszczególnych bitów wektora, albo poszczególnych elementów tablicy rejestrów. To tak w skrócie ;)
Jakie są ograniczenia, które mogą zostać wykonane w jednym ticku zegara?
znów elementarny błąd... zapis
always@(posedge clk)
nie oznacza ze ten kod będzie wykonywany w jednym "ticku zegara" (o ile Cię dobrze zrozumiałem) - to nie program, tylko że proces reaguje na dodatnie zbocze zegara. W skrócie: za "always" znajduje się tzw. lista czułości. 'posedge
nazwa_sygnału_zegarowego' czy też 'negedge
nazwa_sygnału_zegarowego' powoduje że narzedzia do syntezy rozpoznają w tym procesie model rejestru (przerzutnik D) lub kilku rejestrów - jeśli tak zamodelujesz, zapisywanych odpowiednim zboczem zegara (narastającym lub opadającym).
W przypadku procesów modelujących sygnały kombinacjne (asynchroniczne), na liście czułości znajdują się nazwy sygnałów które wpływają na proces, czyli mogą spowodować zmianę na sygnale(-łach) modelowanym przez proces. Co ważne, muszą to być wszystkie takie sygnały, żeby zachowanie układu w trakcie symulacji RTL jak i po syntezie było takie samo.
Napewno jeszcze dużo niejasności będziesz miał w tym zakresie...
pytaj, będziemy na bieżąco korygować :)
Zapytam trochę przewrotnie, czy jak przeczytam tą książkę, będę umiał na nie odpowiedzieć?
możliwe, tym bardziej że o ile pamiętam, są tam rozdziały o modelowaniu w HDL, ale na przykładzie VHDLa. Ale raczej odradzałbym Ci czytanie tej książki od deski do deski. Czytanie w ten sposób takich książek to mordęga. Jeśli chcesz to w najbliższym czasie ją przejrzę i podsunę Ci propozycje z czym się zapoznać najpierw.
Acha, doskonale zdaję sobie sprawę, że modelowanie sprzętu to zupełnie inna bajka niż Java i C#, ale chciałem się po prostu przedstawić, żeby było wiadomo skąd przychodzę.
no to mamy jasność ;)
Pozdrawiam
pzdr
Paweł Duc edytował(a) ten post dnia 26.02.09 o godzinie 00:18