Hilfeeee! PLD's und Flip Flops

15/09/2007 - 11:10 von Ingo Liebe | Report spam
Hallo,

ich stehe mal wieder auf der Leitung.
Ich suche nach einer Lösung für 4 RS FF in einem 16V8. Und das ohne Clk.
Es soll im Prinzip 4 Tasten an den Eingàngen geben, welche ein
korrespondierendes Ausgangspin einschalten. Eine 5. Taste ist quasi der
Masterclear.
Die Aufgabe ist: jede Taste schaltet einen Ausgang an. Ist schon
irgendeiner an, so wird dieser rückgesetzt und der angeforderte Ausgang
eingeschaltet.

In Palasm habe ich nur eine Lösung mit Takt gefunden.

( ungefàhr so: Out1:= Taste1 * /Out2 * /Out3 */Out4 */Mclr )

Achja, die Ausgànge habe ich registered. Bei Latched gibt es
Fehlermeldungen.

Leider wird da mit jeder steigenden Flanke, wenn der Tastendruck nicht
mehr anliegt, auch der Ausgang wieder auf 0 geschaltet, da ja die
Bedingungen in der Gleichung dies so verlangen. Ich vermute fast, es
geht mit Moore - oder Mealey Automat. Aber darin bin ich überhaupt nicht
fit. Kann mir da evtl. mal jemand helfen? Eine Lösung mit µC würde mir
deutlich leichter fallen, nur möchte ich gerne (auch wegen des
Lerneffektes) Oder gibt es eine statische Lösung, welche Taktunabhàngig
funktioniert?
Manfred?...

Gruß Ingo
 

Lesen sie die antworten

#1 buchty
15/09/2007 - 18:34 | Warnen spam
In article <fcg7ii$pjb$03$,
Ingo Liebe writes:
|> Ich suche nach einer Lösung für 4 RS FF in einem 16V8. Und das ohne Clk.

Also 4 RS-Latches, keine FF...

|> Es soll im Prinzip 4 Tasten an den Eingàngen geben, welche ein
|> korrespondierendes Ausgangspin einschalten. Eine 5. Taste ist quasi der
|> Masterclear.
|> Die Aufgabe ist: jede Taste schaltet einen Ausgang an. Ist schon
|> irgendeiner an, so wird dieser rückgesetzt und der angeforderte Ausgang
|> eingeschaltet.

D.h. Highlander-Modus -- es kann nur einen geben, Selektion mehrerer
Ausgànge gleichzeitig ist unmöglich und das Aktivieren eines neuen
Ausgangs deaktiviert einen ggf. anderen aktiven Ausgang.

Mal so aus der Hüfte geschossen in low-level-VHDL da meine PALASM-Zeiten
über 10 Jahre zurückliegen (und man PALASM auch nicht mehr unbedingt
verwenden will, die alte Regel, daß VHDL nicht für kleine Bausteine geeignet
ist, gilt schon lange nicht mehr):

r1<=t5 or t2 or t3 or t4;
r2<=t5 or t1 or t3 or t4;
r3<=t5 or t1 or t2 or t4;
r4<=t5 or t1 or t2 or t2;

process(r1,r2,r3,r4,t1,t2,t3,4)

if global_rst='0' then
q1<='0';
q2<='0';
q3<='0';
q4<='0';

else
if r1='1' then q1='0' elsif t1='1' then q1='1';
if r2='1' then q2='0' elsif t2='1' then q2='1';
if r3='1' then q3='0' elsif t3='1' then q3='1';
if r4='1' then q4='0' elsif t4='1' then q4='1';
end if;
end process;

Rainer

Ähnliche fragen