Komentator Napisano Listopad 7, 2017 Udostępnij Napisano Listopad 7, 2017 Bramki logiczne i multipleksery, które poznaliśmy w poprzednim artykule to niezbędne podstawy. Pora poznać kolejny, nowy element układanki, którym są rejestry przesuwne.Po krótkim wstępie teoretycznym przejdziemy do implementacji jednej z wersji rejestru w VHDL. UWAGA, to tylko wstęp! Dalsza część artykułu dostępna jest na blogu.Przeczytaj całość »Poniżej znajdują się komentarze powiązane z tym wpisem. Cytuj Link do komentarza Share on other sites More sharing options...
marek1707 Listopad 7, 2017 Udostępnij Listopad 7, 2017 Hm, a czy nie są to rejestry przesuwające? Nie wiem jaka jest oficjalna, polska nomenklatura na shift registers, ale chyba przesuwamy informację w rejestrach a nie je same? One nie są przesuwne jak np. regał. Cytuj Link do komentarza Share on other sites More sharing options...
Treker (Damian Szymański) Listopad 7, 2017 Udostępnij Listopad 7, 2017 marek1707, przyznam, że mam/miałem ten sam dylemat i do tej pory nie wiem, która wersja jest poprawna. Obie nazwy można znaleźć w Internecie bez problemu. Przykładowo w TME jest kategoria "Rejestry przesuwne": https://www.tme.eu/pl/katalog/rejestry-przesuwne_113431/ Jak ktoś zna jedną, słuszną wersję, to będę wdzięczny za sygnał 🙂 Cytuj Link do komentarza Share on other sites More sharing options...
Gieneq Listopad 9, 2017 Udostępnij Listopad 9, 2017 Na Politechnice Gdanskiej używany był i pewnie dalej jest termin "rejestr przesuwny". Choć pewnie na innej uczelni można spotkać się z innym tłumaczeniem. Cytuj Link do komentarza Share on other sites More sharing options...
Polecacz 101 Zarejestruj się lub zaloguj, aby ukryć tę reklamę. Zarejestruj się lub zaloguj, aby ukryć tę reklamę. Produkcja i montaż PCB - wybierz sprawdzone PCBWay! • Darmowe płytki dla studentów i projektów non-profit • Tylko 5$ za 10 prototypów PCB w 24 godziny • Usługa projektowania PCB na zlecenie • Montaż PCB od 30$ + bezpłatna dostawa i szablony • Darmowe narzędzie do podglądu plików Gerber Zobacz również » Film z fabryki PCBWay
PiotrLenarczyk Listopad 25, 2017 Udostępnij Listopad 25, 2017 FPGA nie jest stosowalne zazwyczaj, gdyż: -float nie istnieje w wydajnej formie, to samo się dotyczy emulowanych rdzeni np. ARM i innych,-obliczenia całkowitoliczbowe są wydajniejsze, ale nie spotkałem jeszcze rozbudowanej biblioteki obliczeń fixed point na FPGA (na DSP udostępnia za darmo Texas Instruments),-problemy przepływów danych, -brak znanych mi narzędzi automatycznych do poszukiwania hazardów,-często kończy się na średniej wydajności kosztem dużej ilości pracy,-interlink - czy jak tam się nazywa matryca połączeń Logic Cells (2 do 8TBps) wypada o wątpliwej wydajności wzgledem łatwości oprogramowania rejestrów GPU (GTX1080ti za 3.3kPLN to 3.5k rdzeni i 7MB FPR ze sporym zakresem instrukcji jednocyklowych). Rejestry zgaduję, że mają przepływności ok. 1TBps,-FPGA nie posiada dużej pamięci masowej o dużej przepustowości za rozsądna cenę,-nie jestem przeciwnikiem FPGA-po prostu zrobiłem research przed straceniem ileś tam czasu,-FPGA jako przetwornik dla GPU jest gdzieniedzie (SETI@HOME) wydajnie używane, to samo dotyczy urządzeń sieciowych,-wypadają najlepiej jeśli chodzi o pobieraną moc - więc większość mobilnych zastosowań powinno zawierać (a o dziwo typowo nie zawiera) FPGA, -są przydatne, żeby zrobić prototyp nowego typu urządzenia,-nie znam się na FPGA, tak tylko podpowiadam dla osób szukających wydajności, aby zainteresowali się już posiadanymi kartami graficznymi Cytuj Link do komentarza Share on other sites More sharing options...
Treker (Damian Szymański) Listopad 26, 2017 Udostępnij Listopad 26, 2017 PiotrLenarczyk, witam na forum i dziękuję za ciekawy komentarz. Zawsze warto poczytać o doświadczeniach związanych z doborem platform 😉 Cytuj Link do komentarza Share on other sites More sharing options...
radek04 Sierpień 5, 2018 Udostępnij Sierpień 5, 2018 Próbuję zrobić rejestr, w którym dane nie wracają na początek. Aby program był bardziej zwarty, użyłem pętli (choć w kursie jeszcze ich nie przerabiałem). Myślałem, że wpadłem na dobry pomysł dopisywania zer w pozostałe miejsca rejestru i użyłem takiej instrukcji: for i in 6 downto 0 loop rej_przesuwny <= rej_przesuwny(i downto 0) & (others => '0'); end loop; Otrzymuję jednak 2 błędy: Can not determine the "others" values in aggregate. (LRM 7.3.2.2) Can not determine the "others" values in aggregate. (LRM 7.3.2) Dlaczego nie mogę użyć takiej konstrukcji i czym mogę ją zastąpić? Edit. Czy samo wykorzystanie "others" jest tutaj dobre? Cytuj Link do komentarza Share on other sites More sharing options...
Treker (Damian Szymański) Sierpień 6, 2018 Udostępnij Sierpień 6, 2018 Czy samo wykorzystanie "others" jest tutaj dobre? Najprościej sprawdzić to w praktyce. Spróbuj stworzyć program bez "others" i zobacz jak wtedy zadziała. Zastanawiam się jednak czy faktycznie coś sobie tą pętlą tutaj ułatwiłeś? Taki sam rejestr (bez przenoszenia wartości na początek) można uzyskać bazując na programie z kursu. Będzie to nawet chyba łatwiejsze. Cytuj Link do komentarza Share on other sites More sharing options...
radek04 Sierpień 6, 2018 Udostępnij Sierpień 6, 2018 Domyślam się, że wystarczy przenieść zero zamiast wartości z rejestru (w wolnej chwili oczywiście przetestuję). Ale ja jestem uparty i zastanawiam się, dlaczego to "others" nie działa. Edit: bez pętli i bez "others" działa. Ale... Czy "others" odnosi się zawsze do wszystkich elementów wektora, czy też jak nazwa wskazuje - do pozostałych. Cytuj Link do komentarza Share on other sites More sharing options...
TheZioMeK Kwiecień 28, 2019 Udostępnij Kwiecień 28, 2019 Mam mały problem z działaniem układu. Wszystko działa, ale rejestr przesuwa się odwrotnie niż na gifach. Z czego to wynika? Coś się zmieniło w samej i płytce i przypisaniu diod? Cytuj Link do komentarza Share on other sites More sharing options...
Treker (Damian Szymański) Kwiecień 28, 2019 Udostępnij Kwiecień 28, 2019 @TheZioMeK, witam na forum 😉 Widzę, że to Twoje pierwsze kroki na Forbocie, oto najważniejsze informacje na start: Chcesz przywitać się z innymi członkami naszej społeczności? Skorzystaj z tematu powitania użytkowników. Opis najciekawszych funkcji, które ułatwiają korzystanie z forum znajdziesz w temacie instrukcja korzystania z forum - co warto wiedzieć? Poszczególne posty możesz oceniać (pozytywnie i negatywnie) za pomocą reakcji - ikona serca w prawym dolnym rogu każdej wiadomości. 11 minut temu, TheZioMeK napisał: Mam mały problem z działaniem układu. Wszystko działa, ale rejestr przesuwa się odwrotnie niż na gifach. Z czego to wynika? Coś się zmieniło w samej i płytce i przypisaniu diod? Nic mi na ten temat nie wiadomo. Czy nie wykryłeś podobnych problemów podczas wcześniejszych ćwiczeń? Masz zieloną czy pomarańczową wersję płytki? Cytuj Link do komentarza Share on other sites More sharing options...
TheZioMeK Kwiecień 29, 2019 Udostępnij Kwiecień 29, 2019 21 godzin temu, Treker napisał: Nic mi na ten temat nie wiadomo. Czy nie wykryłeś podobnych problemów podczas wcześniejszych ćwiczeń? Masz zieloną czy pomarańczową wersję płytki? Z poprzednimi ćwiczeniami nie było problemów. Płytka jest pomarańczowa. Cytuj Link do komentarza Share on other sites More sharing options...
FlyingDutch Kwiecień 29, 2019 Udostępnij Kwiecień 29, 2019 (edytowany) 32 minuty temu, TheZioMeK napisał: Z poprzednimi ćwiczeniami nie było problemów. Płytka jest pomarańczowa. Cześć, z tego co pamiętam to chyba na stronie producenta w przykładowym pliku ucf kolejność diód była zamieniona (i switchy też). Według mnie ta prawidłowa to : #################################################################################################### # LED #################################################################################################### NET "LED[8]" LOC = P46 | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 12; NET "LED[7]" LOC = P47 | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 12; NET "LED[6]" LOC = P48 | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 12; NET "LED[5]" LOC = P49 | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 12; NET "LED[4]" LOC = P50 | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 12; NET "LED[2]" LOC = P51 | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 12; NET "LED[2]" LOC = P54 | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 12; NET "LED[1]" LOC = P55 | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 12; #################################################################################################### # DP Switches #################################################################################################### NET "DPSwitch[8]" LOC = P70 | PULLUP | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 12; NET "DPSwitch[7]" LOC = P69 | PULLUP | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 12; NET "DPSwitch[6]" LOC = P68 | PULLUP | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 12; NET "DPSwitch[5]" LOC = P64 | PULLUP | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 12; NET "DPSwitch[4]" LOC = P63 | PULLUP | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 12; NET "DPSwitch[3]" LOC = P60 | PULLUP | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 12; NET "DPSwitch[2]" LOC = P59 | PULLUP | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 12; NET "DPSwitch[1]" LOC = P58 | PULLUP | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 12; #################################################################################################### # Switches #################################################################################################### NET "Switch[1]" LOC = P80 | PULLUP | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 12; NET "Switch[2]" LOC = P79 | PULLUP | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 12; NET "Switch[3]" LOC = P78 | PULLUP | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 12; NET "Switch[4]" LOC = P77 | PULLUP | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 12; NET "Switch[5]" LOC = P76 | PULLUP | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 12; NET "Switch[6]" LOC = P75 | PULLUP | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 12; #################################################################################################### # Reszta by6ła bez błędów. Oczywiście numeracja od zero a nie od jeden, ale ta kolejność jest OK. Pozdrawiam Edytowano Kwiecień 29, 2019 przez FlyingDutch 1 1 Cytuj Link do komentarza Share on other sites More sharing options...
TheZioMeK Kwiecień 29, 2019 Udostępnij Kwiecień 29, 2019 Być może w tym był problem. Dzięki! 🙂 Teraz natomiast mam problem z zamianą kodu, tak aby rejestr działał w drugą strone. Po zmianie na rej_przesuwny <= rej_przesuwny(7) & rej_przesuwny(0) & rej_przesuwny(1) & rej_przesuwny(2) & rej_przesuwny(3) & rej_przesuwny(4) & rej_przesuwny(5) & rej_przesuwny(6); podświetlanie diod zamiast przesuwać się po każdej z kolei skacze po dwóch pozycjach Cytuj Link do komentarza Share on other sites More sharing options...
Rogal Luty 7, 2020 Udostępnij Luty 7, 2020 Dnia 29.04.2019 o 19:44, FlyingDutch napisał: z tego co pamiętam to chyba na stronie producenta w przykładowym pliku ucf kolejność diód była zamieniona (i switchy też). Ano tak właśnie jest. W trakcie ćwiczenia pisałem swój własny ucf na podstawie dokumentacji i wszystko mi działało jak powinno ale porównując później pliki z tym z kursu faktycznie zauważyłem, że są piny na odwrót. Dnia 29.04.2019 o 20:06, TheZioMeK napisał: podświetlanie diod zamiast przesuwać się po każdej z kolei skacze po dwóch pozycjach Wszystko jest zgodne z logiką tego co napisałeś. Najpierw bit zerowy(najmłodszy bit) jest ustawiany na 6 bicie a później to co jest na 6 bicie jest ustawiane na zerowym i tak w kółko. Przypuszczam, że chodziło Ci o inny efekt i wtedy bity powinieneś łączyć tak: 0 & 7 & 6 & 5 & 4 & 3 & 2 & 1 o ile rejestr ma się przesuwać w prawo albo 6 & 5 & 4 & 3 & 2 & 1 & 0 & 7 jeżeli w lewo. Oczywiście można to zrobić krócej - tak jak jest napisane w kursie ale może rozbicie tego na pojedyncze bity faktycznie jest lepsze pod względem dydaktycznym. 1 Cytuj Link do komentarza Share on other sites More sharing options...
Pomocna odpowiedź
Dołącz do dyskusji, napisz odpowiedź!
Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!