Wpis z mikrobloga

UART, ciągle UART. Przyczynę poprzedniego problemu znalazłem, zawiniło txIdle które było w stanie wysokim przez dwa cykle i dwukrotnie zwiększyło indeks po pierwszym znaku, przeskakując na trzeci. Wynikało to ze złego przekazywania zmiennej w procesie do sygnału - wołam @olewales

Problem rozwiązałem rozszerzając kod UART.vhd tak, aby przy dłuższym czasie trwania txIdle, nie przeskakiwało do kolejnego znaku. I fajnie, niby powinno działać.

Przy okazji nauczyłem się obsługiwać symulator ModelSim - jakie to fajne! Zdecydowanie potrzebne narzędzie przy testowaniu, dodatkowo pozwala wykryć pewne błędy już w działającym programie, które kompilator przepuści (co mu się dziwić).

Po modyfikacjach mój przebieg wygląda tak jak na załączonym obrazku. Bardzo zgrabnie, że tak powiem :)

Ale niestety na tym kończy się radość, bo pomimo sensownego przebiegu w symulatorze, w rzeczywistości.. Otrzymywany napis ma podwojoną pierwszą literkę, tj. "HHello darkness my old friend!".

I ni kij wiadomo dlaczego... Teraz by dopiero się przydał oscyloskop. Ktoś ma jakieś pomysły?

Kod:
UART.vhd: http://pastebin.com/bmkV2brB
TX.vhd: http://pastebin.com/v4cAs1wc

Spam @syn_admina

#visherdev przede wszystkim - zapraszam
#fpga #synteza #maximator #vhdl #altera #elektronika
Visher - UART, ciągle UART. Przyczynę poprzedniego problemu znalazłem, zawiniło txIdl...

źródło: comment_Uttil5ouGIUCZP1dJIAxofc3OqMllhy7.jpg

Pobierz
  • 12
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@Visher: Bez oscyloskopu zawsze zostaje SignalTap - zamiast obserwować przebiegi w symulatorze patrzysz na przebiegi w działającym układzie.

To wygląda na coś w rodzaju race condition. Bardzo dziwne, że problem dotyczył tylko drugiego znaku, skoro nie jest on traktowany w żaden sposób inaczej niż trzeci, czwarty, itd.
Z pierwszym już trochę inaczej ale i tak podejrzewam, że jest to związane z zachowaniem z przed "poprawki".

Tak daleko w FPGA nigdy
  • Odpowiedz
Błąd dotyczący Rapid Recompile nie powinien być krytyczny.

Rapid Recompile is an advanced design flow in the Quartus II software that instructs the compiler to reuse the results from a previous compilation to reduce compilation time.


A "instance not found" wygląda tak jakbyś próbował uruchomić SignalTap bez zsyntetyzowania jego funkcjonalności w hardware. (signaltap potrzebuje trochę LE dla siebie). Spróbuj to odpalić według jakiegoś tutoriala.
  • Odpowiedz
@olewales: no bo taki błąd robiłem, że po skonfigurowaniu tego SignalTapa nie kompilowało mi się od nowa z jego wgranymi blokami. Dopilnowałem tej kompilacji, wgrałem z nim i poszło. Teraz ogarniam to tak, żeby wyciągnąć z tego dane..
  • Odpowiedz