Jak řešit úlohu ve VHDL?

Jackie22

Jak řešit úlohu ve VHDL?
« kdy: 17. 12. 2014, 06:57:46 »

Zdravím,

ve škole jsme dostali tento úkol, bohužel jsem asi 2týdny chyběl a teď jsem trošku pozadu , potřeboval bych poradit , jak aspoň začít řešit takovýto příklad vůbec nevím , kde a jak začít.
Děkuji za jakékoliv rady :-/

Vyřešte simulátor zastavování chemické výrobní linky s následující funkcí.
Operátor má pro ovládání k dispozici sedm spínačů a informaci o stavu linky (vstup „stav“ v úrovni log 1 při havárii, jinak v log 0).  Informace o stavu linky je zobrazována pomocí dvou LED. Zelená svítí, když je linka v běhu, červená, když došlo k havárii. Zpětnou informaci o postupu vypínání dostává operátor na sedmisegmentovém displeji.
Úkolem operátora je změnit polohu spínače, jehož pozice odpovídá zobrazené číslici. Spínače jsou v řadě a jsou číslovány od 1 do 7 z pravé strany. Na začátku jsou čtyři spínače zprava v poloze logická nula, zbývající tři spínače v poloze logická jednička.
Postup vypínání se liší, jestli je linka v režimu „OK“ nebo „Havárie“.
Pokud je stav „OK“ displej zobrazuje číslici 3 a úkolem operátora je přepnout příslušný spínač (třetí zprava). Po přepnutí správného spínače se zobrazí číslice 7. Další pořadí spínačů je 7, 3, 1, 5, 7, 2, 6 a 4.
Pokud je stav „Havárie“ displej zobrazuje číslici 5 a úkolem operátora je přepnout příslušný spínač (pátý zprava). Po přepnutí správného spínače se zobrazí číslice 6. Další pořadí spínačů je 6, 4, 1, 2.
Při každém kroku, pokud dojde k přepnutí chybného spínače, nechť se zobrazí znak E (Error). Při správném ukončení všech kroků se zobrazí číslice 0. Pro správnou funkci je možné v jednu chvíli přepnout pouze jediný spínač.

1.    pomocí integrovaných obvodů
2.    pomocí jazyka VHDL



« Poslední změna: 17. 12. 2014, 09:41:01 od Petr Krčmář »


Re:VHDL - pomoc
« Odpověď #1 kdy: 17. 12. 2014, 07:19:19 »
1. e-mail na cvicici mas? Pokud ano, napis jim. Pokud ne, dal necti. Sezen ho a napis jim.
2. Jak bys to resil v Jave/C++/&c.? Misto spinacu a 7-segmentovky bys pouzil textovy vstup a vystup. V momente, kdy vis jak na to, tak tu logiku pouzijes ve VHDL.
3. s integracema nevim, jak na to
4. na anglickem internetu toto nebo neco podobneho nekdo uz resil, zkus se podivat tam.

Program

Re:Jak řešit úlohu ve VHDL?
« Odpověď #2 kdy: 17. 12. 2014, 12:09:17 »
To je triviální úloha. Budeš potřebovat kodér na display, FSM, asi nějaký registr. To je vše. Najdi si šablony, jak ty komponenty psát, budou ve skriptech. Nic víc nepotřebuješ. Hlavně zapomeň na rady styl java, c++, jakýkoli imperativní jazyk (nic ve zlém, ale takhle fakt ne to, co z těch lidí pak leze, nemá s HW nic společnýho) a pamatuj, že každý proces beží paralelně.

Jackie22

Re:Jak řešit úlohu ve VHDL?
« Odpověď #3 kdy: 17. 12. 2014, 12:57:55 »
Děkuji pánové za rady, zatím mám pravdivostní tabulku  , a teď vůbec nevím co dál.. Je ještě zapotřebí udělat nějaké logické funkce??

Program

Re:Jak řešit úlohu ve VHDL?
« Odpověď #4 kdy: 17. 12. 2014, 13:14:52 »
Tady není moc místa na nějakou složitou kombinační logiku (k čemu?). Základ je nějaká posloupnost stavů, takže se pusť do FSM.


Karel (jiný)

Re:Jak řešit úlohu ve VHDL?
« Odpověď #5 kdy: 17. 12. 2014, 16:43:08 »
Děkuji pánové za rady, zatím mám pravdivostní tabulku  , a teď vůbec nevím co dál.. Je ještě zapotřebí udělat nějaké logické funkce??

To není ani tak úloha na kombinační logiku, jako spíše na sekvenční obvody. Jak píše "Program", tohle je stavový stroj. Je k tomu hodně materiálů. Jakmile zvládnete řídit vnitřní stavy, tak buzení displaye a diod už bude snadné.