VHDL-Forum

 
You are not logged in.
LoginLogin Join for freeJoin for free
MessagesMessages MembersMembers SearchSearch HelpHelp
VotesVotes FilesFiles CalendarCalendar BookmarksBookmarks
Schaltung

First   Previous   Next   Last
Author Message
SilverDragon666
Neuling


Messages: 6

New PostCreated: 2007-01-08, 08:25 PM CET  Subject: Schaltung  print  print thread  recommend Reply with Quotation  

Eve und der letzte Engländer
Hallo,

bin neu auf dem Gebiet der VHDL und versuche mich gerade ein wenig einzuarbeiten.

Habe ein Beispiel von einem Studienkollegen aufgegriffen, in dem es um eine Ampelschaltung geht.

Über die Architektur wird dem Signal phase dür den Ablauf eine Zählsteuerung realisiert.


ENTITY ampel IS

PORT (reset : IN BIT; red, yellow, green : INOUT BIT);

END ampel;


ARCHITECTURE zaehler OF ampel IS
SIGNAL clock : BIT :='0' ;
SIGNAL phase : BIT_VECTOR(2 DOWNTO 0) :="000";
BEGIN
clock <= NOT clock AFTER 50 ns;
phase <= "001" WHEN (clock'event AND phase="000") ELSE
"010" WHEN (clock'event AND phase="001") ELSE
"011" WHEN (clock'event AND phase="010") ELSE
"100" WHEN (clock'event AND phase="011") ELSE
"101" WHEN (clock'event AND phase="100") ELSE
"000" WHEN (clock'event AND phase="101") ;
END zaehler;


Nun möchte ich gerne das ganze so ergänzen, dass Ausgaben an red, yellow und green erfolgen.

Es gibt insgesamt 6 Phasen.

Phase 0 green=1 yellow=0 red=0
Phase 1 green=1 yellow=0 red=0
Phase 2 green=1 yellow=1 red=0
Phase 3 green=0 yellow=0 red=1
Phase 4 green=0 yellow=1 red=1
Phase 5 green=0 yellow=1 red=0

Wie bekomme ich dies am schnellsten hin?

Für eure Hilfe wäre ich sehr dankbar!

back to top
Show user's profile Send private message to this member
DaMicha
Stammgast


Messages: 27
Location: Rostock

New PostCreated: 2007-01-09, 07:06 AM CET  Subject: Re: Schaltung  print  recommend Reply with Quotation  

Hallo.

Im Prinzip genauso wie bei der Statezuweisung:

green <= '1' when (phase = "000" or phase = "001" or phase = "010") else '0';

yellow und red dann analog nach Deiner Tabelle.

Gruß DaMicha.

back to top
Show user's profile Send private message to this member
SilverDragon666
Neuling


Messages: 6

New PostCreated: 2007-01-09, 08:25 AM CET  Subject: Re: Schaltung  print  recommend Reply with Quotation  

Vielen Dank erst einmal für die nette Erklärung.

Ich probiere es gerade einzubauen, aber scheitere immer daran, dass ich es nicht so recht hinbekomme, deine Zuweisung in meinen bisherigen Code zu bekommen. Kannst du mir vielleicht mal den Anfang erklären?

back to top
Show user's profile Send private message to this member
SilverDragon666
Neuling


Messages: 6

New PostCreated: 2007-01-09, 08:34 AM CET  Subject: Re: Schaltung  print  recommend Reply with Quotation  

Ok, habe es jetzt selbst hinbekommen!

War ja eigentlich auch nicht mehr so schwer nach deinen Erklärungen!

Danke!

ARCHITECTURE fifth OF ampel IS TYPE states IS
SIGNAL clock : BIT :='0' ;
SIGNAL phase : BIT_VECTOR(2 DOWNTO 0) :="000" ;
BEGIN
clock <= NOT clock AFTER 50 ns;
phase <= "001" WHEN (clock'event AND phase="000") ELSE
"010" WHEN (clock'event AND phase="001") ELSE
"011" WHEN (clock'event AND phase="010") ELSE
"100" WHEN (clock'event AND phase="011") ELSE
"101" WHEN (clock'event AND phase="100") ELSE
"000" WHEN (clock'event AND phase="101") ;

green <= '1' WHEN (phase = "000" OR phase = "001" OR phase = "010") ELSE '0';
yellow <= '1' WHEN (phase = "010" OR phase = "100" OR phase = "101") ELSE '0';
red <= '1' WHEN (phase = "011" OR phase = "100") ELSE '0';
END fifth;


[edited: 2007-01-09, 08:35 AM CET by SilverDragon666]
back to top
Show user's profile Send private message to this member
SilverDragon666
Neuling


Messages: 6

New PostCreated: 2007-01-09, 08:41 AM CET  Subject: Re: Schaltung  print  recommend Reply with Quotation  

So, jetzt ist mir eingefallen, dass es ja noch eine Reset-Funktion geben sollte.

Wie könnte man diese realisieren?

RESET müsste dann ja auf jeden Fall "green" ergeben.

back to top
Show user's profile Send private message to this member
SilverDragon666
Neuling


Messages: 6

New PostCreated: 2007-01-09, 10:21 AM CET  Subject: Re: Schaltung  print  recommend Reply with Quotation  

Habe jetzt folgendes versucht:

ARCHITECTURE fifth OF ampel IS
SIGNAL clock : BIT :='0' ;
SIGNAL phase : BIT_VECTOR(2 DOWNTO 0) :="000" ;
BEGIN
clock <= NOT clock AFTER 50 ns;
phase <= "001" WHEN (clock'event AND phase="000") OR (clock'event AND reset = '1') ELSE
"010" WHEN (clock'event AND phase="001") ELSE
"011" WHEN (clock'event AND phase="010") ELSE
"100" WHEN (clock'event AND phase="011") ELSE
"101" WHEN (clock'event AND phase="100") ELSE
"000" WHEN (clock'event AND phase="101") ;
green <= '1' WHEN (phase = "000" OR phase = "001" OR phase = "010") ELSE '0';
yellow <= '1' WHEN (phase = "010" OR phase = "100" OR phase = "101") ELSE '0';
red <= '1' WHEN (phase = "011" OR phase = "100") ELSE '0';
END fifth;

Kann ich die Reset-Funktion so mit einbringen? Wie kann ich reset zum Testen mal auf 1 bringen?

back to top
Show user's profile Send private message to this member
SilverDragon666
Neuling


Messages: 6

New PostCreated: 2007-01-09, 10:49 AM CET  Subject: Re: Schaltung  print  recommend Reply with Quotation  

Habe jetzt alles selbst hinbekommen. DANKE an alle!

back to top
Show user's profile Send private message to this member
Sortierung ändern:  
First   Previous   Next   Last
Page 1 of 1
Go to:   
Search

powered by carookee.com - group communication for you

Design © trevorj