PDA

Επιστροφή στο Forum : vhdl προγραμμα-car parking



elisa_123
29-08-10, 12:02
τωρα αρχιζω να μαθαινω την vhdl, και επειδη ειμαι σχετικα καινουρια χρειαζομαι καποια βοηθεια σχετικα με το παρακατω προγραμμα.
Το προγραμμα ονομαζεται car park monitoring system.
Ενα παρκινγκ αυτοκινήτων μετράει τον αριθμό των αυτοκινήτων που βρισκονται μεσα στο παρκινγκ με max 1024 αυτοκίνητα.
το παρκινγκ βγάζει ενα signal error αν ενα αυτοκινητο φυγει και το μετρημα ειναι 0 ή εαν μπει ενα αυτοκίνητο και το μέτρημα ειναι στο 1024.
αναφέρει την ωρα που ενα αυτοκίνητο φεύγει η έρχεται σε ώρες και λεπτά. Υπαρχουν αισθητήρες στην εισοδο του παρκινγκ που ενημερώνει το σύστημα οτι ενα αυτοκίνητο βρίσκεται στην είσοδο.
ειναι πιθανό να βγαίνει και να φεύγει ενα αυτοκίνητο την ίδια στιγμή.
Υπαρχει ενα external MIDNIGHT SYNC signal που ενημερώνει το σύστημα οταν ειναι μεσάνυχτα -χρήσιμο για να συνχρονίζει την ώρα.
υπαρχουν 2 inputs reset/clear.
υπαρχουν 2 οutputs full/empty που δηλώνουν ποτε το παρκινγκ ειναι γεμάτο ή άδειο.
υπαρχει 1 output CAR COUNT που δηλώνει πόσα αυτοκίνητα βρίσκονται στο παρκινγκ
Υπαρχρει 1 clock input με clock period of 1ms is available.

ευχαριστώ :001_smile:

leosedf
29-08-10, 13:18
Θα ήταν επίσης χρήσιμο να αναφέρεις τί είδους βοήθεια χρειάζεσαι (soft/hardware κλπ) ωστε κάποιος που ξέρει να μπορέσει να σου δώσει λύση πιό γρήγορα γιατί έτσι θα φάμε πολύ χρόνο προσπαθώντας να μάθουμε τί ακριβώς θέλεις.

elisa_123
29-08-10, 15:39
i voitheia pou xreiazomai einai sxetiki me to software:
mexri stigmis exw kanei ta parakatw:

einai to kommati pou exei na kanei me to na emfanizei ta lepta kai tin wra pou ena autokinito vgainei i erxetai.
process(reset,clk)
if reset ...
elsif(rising_edge(clk))then
if msec_count /= 999 then
msec_count <= msec_count + 1;
else
msec_count <= 0;
if sec_count /= 59 then
sec_count <= sec_count + 1;
else
sec_count <= 0;
if min_count /= 59 then
min_count <= min_count + 1;
else
min_count <= 0;
if hr_count /= 23 then
hr_count <= hr_count + 1;
else
hr_count <= 0;
end if;
end if;
end if;
enf if;
end if;

και αυτό ειναι το counter:

library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity counter is
generic (n:natural:=1024);
port ( c, clk:in std_logic;
reset;in std_logic;
cout: out std_logic_vector( 1023 downto 0);
end counter
architecture behv of counter is
begin
process (clk, reset, cout)
begin
if (reset='1') then
cout<=(others=>'0');
elsif ( rising_edge(clk)) then
if (up_down='1') then
count <=count+1
else
count<=count-1
end if;
end if;
end process;
cout<=count;
end architecture;