Kod VHDL na podstawie symulacji

Kod VHDL na podstawie symulacji
0

Witam,

Temat kodowania układów programowalnych w VHDL jest mi praktycznie obcy, ale niestety studiując kierunek związany z IT trzeba byc wszechstronnie uzdolnionym w szeroko pojętej informatyce, a więc do rzeczy.

Mam do zaprogramowania układ Nexys™3 Spartan-6 FPGA Board. Prowadzacy zajęcia rozrysował przebiegi na tablicy, a podał także rozpiskę PINów i to wszystko.

Czy bazując jedynie na symulacji można napisać kod ?
Co przedstawiają rozrysowane dwa warianty?
Czy w każdym wariancie są po 3 czy 4 sygnały? (do czego jest podłączony sygnał DATA?)

Z góry przepraszam, jeśli temat został utworzony w niewłaściwym dziale, ale to dla mnie bardzo ważne.
Proszę o jak najprostsze wytłumaczenie :)

Dziekuję i pozdrawiam.

AL
  • Rejestracja:ponad 10 lat
  • Ostatnio:prawie 3 lata
  • Postów:1493
1

Ogólnie: tak, na podstawie przebiegów czasowych można odtworzyć tablicę przejść-wyjść i finalnie zsyntezować układ. Na moje oko to co masz na tej tablicy to jest jakiś SPI-podobny interfejs. Wstaw to w lepszej jakości bo mało widać póki co.

0

Niestety nie mam fotki w wyższej rozdzielczości. Moge jedynie załączyć przerysowany na szybko (nie do konca pokrywaja sie linie) poglądowy rysunekuser image po prawej u góry powinno byc chyba "RS"

I faktycznie, facet wspominal cos o interfejsie szeregowym.

Post pod postem, ale nie mam możliwości edycji

AL
  • Rejestracja:ponad 10 lat
  • Ostatnio:prawie 3 lata
  • Postów:1493
0

A jakieś informacje o kierunkowości poszczególnych sygnałów? Która strona dostarcza zegar?

edytowany 1x, ostatnio: alagner
Pixello
  • Rejestracja:prawie 10 lat
  • Ostatnio:4 miesiące
  • Lokalizacja:Podkarpacie
  • Postów:448
1

Wydaje mi się, że clk jest taktowaniem tego układu, prawdopodobnie drugi przebieg przedstawia wysyłanie. BCX to prawdopodobnie clk potraktowane przerzutnikiem typu t (dzielenie częstotliwości na 2).
2. Przebieg: gdy FSX(wejście, ustawia ten układ w tryb mikroproceosorwy) jest w stanie wysokim, to przy najbliższym zboczu opadającym sygnału taktującego włącza się transmisja, która wysyła dane bit po bicie(data jest wyjściem), prawdopodobnie do końca danych(?),
Pewnie ustawia WS, żeby odbiornik wiedział, kiedy kończy się jedna "porcja danych".

  1. Przebieg przy zboczu opadającym następuje zmiana odbieranego bitu na mniej znaczący (data jest wejściem), przed najmniej znaczącym stan WS zmienia się na przeciwny, wydaje mi się, że jest to po to, by układ odbierający wiedział ile bitów jest w paczce danych (teraz, patrząc na 2. przebieg przesyła chara czy innego uinta_8t), etap odbierania danych.

To są moje luźne domysły, bo dopiero w technikum jestem ;)

Zegar jest prawdopodobnie podawany z zewnątrz

edytowany 4x, ostatnio: Pixello
AL
  • Rejestracja:ponad 10 lat
  • Ostatnio:prawie 3 lata
  • Postów:1493
1
0

No dobra Panowie, a powiedzcie mi co z tymi poziomowymi liniami pod sygnalami (KL, KP, B0 i B1) ?

Pixello
To są raczej oznaczenia cykli, B0 to cykl transmisji bitu[0], b1 bitu[1], kl i kp to nie mam pojęcia
0

Dzieki wielkie za zainteresowanie :) dalbym + ale jestem gosciem

Powiedzcie mi jeszcze jedna rzecz. Na zaliczenie wystarczy zrealizować jeden przebieg, podejrzewam że pierwszy jest prostszy? I generalnie ciezkie dla początkującego do zaprogramowania w VHDL ?

AL
  • Rejestracja:ponad 10 lat
  • Ostatnio:prawie 3 lata
  • Postów:1493
0

Skonfigurowania/zamodelowania, nie zaprogramowania. Nie, nie ciężkie, generalnie interfejs szeregowy bez żadnego wymyślnego protokołu to w zasadzie taka podstawa.
Rozpisz sobie wymogi, możesz pomóc sobie grafem, schematem blokowym itp. Jeżeli chcesz to robić zgodnie ze sztuką (oraz nauczyć się trochę więcej) to najpierw napisałbym interfejs behawioralnie, potem syntezowalnie, oczywiście od razu do tego testbench i min. kilka przypadków testowych (zwykłe działanie+corner cases). Dodatkowo możesz oba puścić równolegle i porównać wyniki (wersja wypas: robi to automat).

BTW - jakiego symulatora używasz? ActiveHDL, ModelSim, ten darmowy od Xilinxa (ISim bodajże...), jeszcze jakiś inny?

I czy musi to być VHDL? Bo do weryfikacji aż mi się tu o (System)Veriloga prosi (aczkolwiek może to kwestia tego, że znam go po prostu o wiele lepiej ;) ).

Pzdr.

EDIT: to pierwsze to jest I2S:
https://www.sparkfun.com/datasheets/BreakoutBoards/I2SBUS.pdf

Poziom trudności imho dość podobny. Kwestia tego, że pewne rzeczy w FPGA syntezują się do postaci równoległych a nie sekwencyjnych i zwyczajnie należy to wiedzieć.

EDIT2: KL i KP - kanał lewy, kanał prawy. Oba interfejsy są powiązane z dźwiękiem, więcej podpowiedzi nie daję, teraz konkrety proszę ;)

edytowany 5x, ostatnio: alagner
0

Ok jakims cudem zaliczyłem ;) temat do zamknięcia.

Kliknij, aby dodać treść...

Pomoc 1.18.8

Typografia

Edytor obsługuje składnie Markdown, w której pojedynczy akcent *kursywa* oraz _kursywa_ to pochylenie. Z kolei podwójny akcent **pogrubienie** oraz __pogrubienie__ to pogrubienie. Dodanie znaczników ~~strike~~ to przekreślenie.

Możesz dodać formatowanie komendami , , oraz .

Ponieważ dekoracja podkreślenia jest przeznaczona na linki, markdown nie zawiera specjalnej składni dla podkreślenia. Dlatego by dodać podkreślenie, użyj <u>underline</u>.

Komendy formatujące reagują na skróty klawiszowe: Ctrl+B, Ctrl+I, Ctrl+U oraz Ctrl+S.

Linki

By dodać link w edytorze użyj komendy lub użyj składni [title](link). URL umieszczony w linku lub nawet URL umieszczony bezpośrednio w tekście będzie aktywny i klikalny.

Jeżeli chcesz, możesz samodzielnie dodać link: <a href="link">title</a>.

Wewnętrzne odnośniki

Możesz umieścić odnośnik do wewnętrznej podstrony, używając następującej składni: [[Delphi/Kompendium]] lub [[Delphi/Kompendium|kliknij, aby przejść do kompendium]]. Odnośniki mogą prowadzić do Forum 4programmers.net lub np. do Kompendium.

Wspomnienia użytkowników

By wspomnieć użytkownika forum, wpisz w formularzu znak @. Zobaczysz okienko samouzupełniające nazwy użytkowników. Samouzupełnienie dobierze odpowiedni format wspomnienia, zależnie od tego czy w nazwie użytkownika znajduje się spacja.

Znaczniki HTML

Dozwolone jest używanie niektórych znaczników HTML: <a>, <b>, <i>, <kbd>, <del>, <strong>, <dfn>, <pre>, <blockquote>, <hr/>, <sub>, <sup> oraz <img/>.

Skróty klawiszowe

Dodaj kombinację klawiszy komendą notacji klawiszy lub skrótem klawiszowym Alt+K.

Reprezentuj kombinacje klawiszowe używając taga <kbd>. Oddziel od siebie klawisze znakiem plus, np <kbd>Alt+Tab</kbd>.

Indeks górny oraz dolny

Przykład: wpisując H<sub>2</sub>O i m<sup>2</sup> otrzymasz: H2O i m2.

Składnia Tex

By precyzyjnie wyrazić działanie matematyczne, użyj składni Tex.

<tex>arcctg(x) = argtan(\frac{1}{x}) = arcsin(\frac{1}{\sqrt{1+x^2}})</tex>

Kod źródłowy

Krótkie fragmenty kodu

Wszelkie jednolinijkowe instrukcje języka programowania powinny być zawarte pomiędzy obróconymi apostrofami: `kod instrukcji` lub ``console.log(`string`);``.

Kod wielolinijkowy

Dodaj fragment kodu komendą . Fragmenty kodu zajmujące całą lub więcej linijek powinny być umieszczone w wielolinijkowym fragmencie kodu. Znaczniki ``` lub ~~~ umożliwiają kolorowanie różnych języków programowania. Możemy nadać nazwę języka programowania używając auto-uzupełnienia, kod został pokolorowany używając konkretnych ustawień kolorowania składni:

```javascript
document.write('Hello World');
```

Możesz zaznaczyć również już wklejony kod w edytorze, i użyć komendy  by zamienić go w kod. Użyj kombinacji Ctrl+`, by dodać fragment kodu bez oznaczników języka.

Tabelki

Dodaj przykładową tabelkę używając komendy . Przykładowa tabelka składa się z dwóch kolumn, nagłówka i jednego wiersza.

Wygeneruj tabelkę na podstawie szablonu. Oddziel komórki separatorem ; lub |, a następnie zaznacz szablonu.

nazwisko;dziedzina;odkrycie
Pitagoras;mathematics;Pythagorean Theorem
Albert Einstein;physics;General Relativity
Marie Curie, Pierre Curie;chemistry;Radium, Polonium

Użyj komendy by zamienić zaznaczony szablon na tabelkę Markdown.

Lista uporządkowana i nieuporządkowana

Możliwe jest tworzenie listy numerowanych oraz wypunktowanych. Wystarczy, że pierwszym znakiem linii będzie * lub - dla listy nieuporządkowanej oraz 1. dla listy uporządkowanej.

Użyj komendy by dodać listę uporządkowaną.

1. Lista numerowana
2. Lista numerowana

Użyj komendy by dodać listę nieuporządkowaną.

* Lista wypunktowana
* Lista wypunktowana
** Lista wypunktowana (drugi poziom)

Składnia Markdown

Edytor obsługuje składnię Markdown, która składa się ze znaków specjalnych. Dostępne komendy, jak formatowanie , dodanie tabelki lub fragmentu kodu są w pewnym sensie świadome otaczającej jej składni, i postarają się unikać uszkodzenia jej.

Dla przykładu, używając tylko dostępnych komend, nie możemy dodać formatowania pogrubienia do kodu wielolinijkowego, albo dodać listy do tabelki - mogłoby to doprowadzić do uszkodzenia składni.

W pewnych odosobnionych przypadkach brak nowej linii przed elementami markdown również mógłby uszkodzić składnie, dlatego edytor dodaje brakujące nowe linie. Dla przykładu, dodanie formatowania pochylenia zaraz po tabelce, mogłoby zostać błędne zinterpretowane, więc edytor doda oddzielającą nową linię pomiędzy tabelką, a pochyleniem.

Skróty klawiszowe

Skróty formatujące, kiedy w edytorze znajduje się pojedynczy kursor, wstawiają sformatowany tekst przykładowy. Jeśli w edytorze znajduje się zaznaczenie (słowo, linijka, paragraf), wtedy zaznaczenie zostaje sformatowane.

  • Ctrl+B - dodaj pogrubienie lub pogrub zaznaczenie
  • Ctrl+I - dodaj pochylenie lub pochyl zaznaczenie
  • Ctrl+U - dodaj podkreślenie lub podkreśl zaznaczenie
  • Ctrl+S - dodaj przekreślenie lub przekreśl zaznaczenie

Notacja Klawiszy

  • Alt+K - dodaj notację klawiszy

Fragment kodu bez oznacznika

  • Alt+C - dodaj pusty fragment kodu

Skróty operujące na kodzie i linijkach:

  • Alt+L - zaznaczenie całej linii
  • Alt+, Alt+ - przeniesienie linijki w której znajduje się kursor w górę/dół.
  • Tab/⌘+] - dodaj wcięcie (wcięcie w prawo)
  • Shit+Tab/⌘+[ - usunięcie wcięcia (wycięcie w lewo)

Dodawanie postów:

  • Ctrl+Enter - dodaj post
  • ⌘+Enter - dodaj post (MacOS)