process19 Δημοσ. 28 Μαρτίου 2011 Δημοσ. 28 Μαρτίου 2011 καλησπερα εχω μια εργασια εχω κανει κωδικα αλλα μαλλον χρειαζεται καποιες διορθωσεις, οποιος θελει ας μ πει να του στειλω π.μ αυτα που εχω κανει.
Dr.Fuzzy Δημοσ. 31 Μαρτίου 2011 Δημοσ. 31 Μαρτίου 2011 καλησπερα εχω μια εργασια εχω κανει κωδικα αλλα μαλλον χρειαζεται καποιες διορθωσεις, οποιος θελει ας μ πει να του στειλω π.μ αυτα που εχω κανει. Αν θες κάνε post τα σημεία που έχεις πρόβλημα για να βοηθήσουμε.
process19 Δημοσ. 1 Απριλίου 2011 Μέλος Δημοσ. 1 Απριλίου 2011 οκ,λοιπον πρεπει να υλοποιησω μια στοιβα που κανει clear τα στοιχεια της αν το επιλεξω,και μπορω να εισαγω αριθμους μεχρι να γεμισει(15 θεσεις),καθε φορα που κανω εισαγωγη πρεπει να μου εμφανιζεται ο αριθμος που εκανα εισαγωγη αλλα και ποσα στοιχεια εχω βαλει μεχρι τοτε στη στοιβα.εχω δημιουργησει την μνημη,εχω κανει ενα καταχωρητη για την αποθηκευση του αποτελεσματος και παρακατω ειναι ο κωδικας της στοιβας(που δεν ξερω κατα ποσο σωστο ειναι) > entity stack is Port ( push : in STD_LOGIC; clear : in STD_LOGIC; add : in STD_LOGIC; clk : in STD_LOGIC; N_In : in STD_LOGIC_VECTOR (7 downto 0); N_out : out STD_LOGIC_VECTOR (7 downto 0)); end stack; architecture Behavioral of stack is component MEMORY is port( clka :in std_logic; wea :in std_logic_vector(0 downto 0); addra :in std_logic_vector(3 downto 0); dina :in std_logic_vector(7 downto 0); dout :out std_logic_vector(7 downto 0) ); end component; component register8 is port( rst_n : in STD_LOGIC; clk : in STD_LOGIC; enable: in STD_LOGIC; din : in STD_LOGIC_VECTOR ( 7 DOWNTO 0 ); dout : out STD_LOGIC_VECTOR ( 7 DOWNTO 0 ) ); end component; component adder is port( A:in std_logic_vector(7 downto 0); B:in std_logic_vector(7 downto 0); Cin : in std_logic; sum_s:out std_logic_vector(7 downto 0); Cout:out std_logic ); end component; component debounce is port( clk : in std_logic; reset : in std_logic; button_in : in std_logic; button_out : out std_logic ); end component; signal write_en :std_logic_vector(0 downto 0); signal address :std_logic_vector(3 downto 0); signal reset :std_logic; signal en :std_logic; signal stack_empty :std_logic; signal stack_full :std_logic; signal tmp_out :std_logic_vector(7 downto 0); signal tmp_out1 :std_logic_vector(7 downto 0); signal ptr :std_logic(3 downto 0); signal cinin :std_logic; signal sum_signal :std_logic_vector(7 downto 0); signal coutout :std_logic; signal addout :std_logic_vector(7 downto 0); signal debounceadd_out:std_logic; signal debounceclear_out:std_logic; begin mem:MEMORY port map( clk, write_en, address, N_In, tmp_out1 ); debadd:debounce port map( clk, reset, add, debounceadd_out ); debclear:debounce port map( clk, reset, clear, debounceclear_out ); process begin ----arxika eksetazw an i stiva mas einai gemati i adeia if address="0000" then stack_empty<='1'; stack_full<='0'; elsif address="1111" then stack_full<='1'; stack_empty<='0'; else stack_empty<='0'; stack_full<='0'; end if; case push is when '0'=> Number_out<=(others=>'0'); when '1'=> Number_out<=tmp_out1; address<=address + 1;--auksanei tin dieuthnsi kata 1 when others => Number_out<=(others=>'0'); end case; end process; ptr<=address;--deiktis pou deixnei stin korufi tis stoivas ------adeiasma tis listas process begin if clear='1' and clk='1' and clk'event then address<=(others=>'0'); N_out<=(others=>'0'); ptr<=(others=>'0'); else N_out<=tmp_out1; address<=address; ptr<=ptr; end if; end process; --------prosthesi twn 2 prwtwn stoixeiwn tis stivas add:adder port map( N_out(address), N_out(address-"0001"), cinin, sum_signal, coutout ); regFile:register8 port map( reset, clk, en, sum_signal, addout ); end Behavioral;
Dr.Fuzzy Δημοσ. 3 Απριλίου 2011 Δημοσ. 3 Απριλίου 2011 Φαντάζομαι αυτό που θες να υλοποιήσεις είναι σύγχρονο κύκλωμα και όχι ασύγχρονο! >process begin if clear='1' and clk='1' and clk'event then Αυτό που κάνεις παραπάνω είναι ασύγχρονη λογική και πρέπει να αποφεύγεται διότι δημιουργεί gated clocks. Οπότε για σύγχρονο clear: >process(clk) begin if rising_edge(clk) then ... if clear='1' then ... end if; end if; end process ή για ασύγχρονο clear >process(aclear,clk) begin if aclear='1' then ... elseif rising_edge(clk) then ... end if; end process επίσης το πρώτο process που έχεις δεν έχει sensitivity list! Έτσι όπως το έχεις υλοποιήσει είναι combinational και όχι sequential. Γενικά αποφάσισε τη θες να είναι και φτιάξε το sensitivity list του.
psyneck Δημοσ. 1 Ιουνίου 2011 Δημοσ. 1 Ιουνίου 2011 Καλησπέρα! Αναλαμβάνει κανείς εργασίες VHDL επί πληρωμή;
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.