Newsgroup: it.hobby.elettronica.digitale
Titolo: FPGA cyclone II altera

Ciao a tutti, devo realizzare un circuito che visualizzi le cifre 0 a 9 in 
un display 7seg con tempo di visualizzazione circa 1 secondo.
Devo usare un contatore che ho gia fatto e usare il clock 50MHz presente 
nella scheda. Come faccio a far incrementare i numeri ad intervalli di 1 
secondo se posso usare solo il clock 50MHz?
Grazie mille

 secondo se posso usare solo il clock 50MHz?
Con un contatore che conti fino a 50 milioni :-)

"Axeman" <m...@dont.think.so.invalid> ha scritto nel messaggio 
news:4bbc9279$1...@extreme.x-privat.org...

:-) gia!
queste sono le richieste, magari ho capito male io:
Design and implement a circuit that successively flashes digits from 0 to 9 
on the 7-segment display HEX0. Each digit
should be displayed for about one second. Use a counter to determine the 
one-second interval. The counter should be
incremented by the 50 MHz clock signal provided on the DE2 board (CLOCK_50 
input signal, to be managed as a clock
input coming from the external world). Do not derive any other clock signals 
in your design; make sure that all the flipflops
in your circuit are clocked directly by the 50 MHz clock signal.

 >
ho fatto una cosa analoga sulla demoboard di Xilinx,con contatore driver per
il 7 segm,convertitore binario BCD ecc,non sarà un esempio avanzato di
codice ma funziona,se vuoi mando,solo che la cadenza è una frazione di
secondo,non ricordo bene

"blisca" <bliscachiocciolinatiscalipuntoit> ha scritto nel messaggio 
news:4bbc9b45$0$820$4faf...@reader5.news.tin.it...

Se il codice è VHDL non ci sono problrmi, postalo pure qui.
Nessuno sa come posso risolvere il problema?
Grazie ancora ciao 

 :-) gia!
Non stavo scherzando... dovrai implementare un contatore con ciclo di 
50M... (o un divisore per 50M, è la stessa cosa).
Sono solo 26 bit ;-)
L'uscita sarà il tuo segnale a 1Hz che darai in pasto all'ingresso del 
secondo contatore (che conterà da 0 a 9)
(non è tanto differente da come lo faresti nel mondo reale :-) )

 ha scritto nel messaggio
news:4bbca1f8$0$1119$4faf...@reader2.news.tin.it...

a meno che tu possa usare dei PLL interni all'FPGA dovrai implementare un
contatore che utilizzerà almeno 26 FF,ma sicuramente nel tuo PGA vi saranno
dei cores,dei blocchi già preposti a fare sto lavoro
questo è il codice del divisore,vengono tirati fuori anche altri clock per
altre parti
----------------------------------------------------------------------------
------
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
---- Uncomment the following library declaration if instantiating
---- any Xilinx primitives in this code.
--library UNISIM;
--use UNISIM.VComponents.all;
entity Clock_Dividers is
    Port ( MainCLK : in  STD_LOGIC;
     RstMainCLK : in  STD_LOGIC;
     countOUT : out  STD_LOGIC_VECTOR(7 downto 0);--per fare prove e
verifiche con oscilloscopio
     strobeOUT  : out  STD_LOGIC;
           ScanSegCLK : out  STD_LOGIC;
     ADCLKout : out  STD_LOGIC);-- countertest_CLK : out  STD_LOGIC_VECTOR
(3 downto 0)
end Clock_Dividers;
architecture Behavioral of Clock_Dividers is
 signal s_clkdiv  : std_logic_vector(27 downto 0);
 --signal cclk    : std_logic;
begin
 process (MainCLK,RstMainCLK)--processo conteggio principale
  begin
     if RstMainCLK='0' then
      s_clkdiv<="0000000000000000000000000000";
   else
     if rising_edge( MainCLK )then --divide per 2^24
     s_clkdiv <= s_clkdiv + 1;
     end if;
   end if;
  end process;
 --cclk <= clkdiv(22);--16
 ADCLKout<= s_clkdiv(6);--19
 ScanSegCLK<=s_clkdiv(12); --15
   countOUT<=s_clkdiv(27 downto 20);
 strobeOUT<=s_clkdiv(19);
end Behavioral;


Non ho capito...abbi pazienza ma non sono molto pratico.
Faccio un contatore a 26 bit che ogni secondo scorre tutti quei numeri... 
poi cosa do al secondo contatore? e perche?
grazie 

 secondo contatore (che conterà da 0 a 9)
Forse ora ho capito, per uscita intendi il bit piu significativo di tutto il 
conteggio che vale 0 fino a meta ciclo(circa mezzo secondo) e vale 1 nel 
restante. Quindi questo bit diventa il mio nuovo clock per il secondo 
contatore giusto?
Grazie ancora

      if rising_edge( MainCLK )then --divide per 2^28



Io ho appena cominciato a studiare elettronica digitale :-)
Comunque il tuo codice non lo posso usare, non rispetta le specifiche 
didattiche(ma ti ringrazio molto ugualmente)!
Credo di aver capito cosa devo fare.
Prendo il bit piu siglificativo in uscita al contatore da 26bit 50MHz clock, 
lo mando come clock nel secondo contatore a 4 bit e ottengo in uscita i 
numeri 0-15 che ciclano all'infinito. giiusto?
Il drive per il display non fa visualizzare i numeri > 9 quindi dovrei aver 
risolto. Ci sara una pausa di 6 secondi tra ogni ciclo ma pazienza...
grazie ancora
ciao ciao

 contatore giusto?
Ni. Questo ti darebbe un periodo di 0.7 secondi... ti puoi accontentare, 
oppure fare effettivamente un contatore "fino a 50M"... ovvero un 
contatore a 26bit + un comparatore con una costante pari a 50M: quando 
il conteggio arriverà a 50M, il comparatore alzerà la sua uscita. Questa 
uscita la userai per incrementare il secondo contatore (da 0 a 9) e per 
resettare il primo (quello da 50M)
Stessa tecnica per resettare il secondo contatore quando arriva ad "A" 
ed evitare il buco da "A" a "F"

 contatore giusto?
Si:
50 MHz -> contatore 26 bit -> 1 Hz -> contatore [0..9] -> display
Ovviamente dovrai predisporre il reset arrivato a 50M.
Marco

 risolto. Ci sara una pausa di 6 secondi tra ogni ciclo ma pazienza...
ma no...basta che nel processo del tuo VHDL relativo a quel contatore scrivi
qualcosa tipo:
if rst_questocontatore='0' then--azzera tutto
                       mio_contatore<="0000";
elsif rising_edge(clockin )  then
                       mio_contatore<= mio_contatore+ 1;--  e fino a qui c'è
già
                       if mio_contatore(3 downto 0) ="1010" then
                                       mio_contatore<="0000";
  ecc ecc
giusto?


I contatori hanno gia l'ngresso per il reset, ma io l'ho settato a 0 fisso!
Non avevo pensato a un if...
Faccio un if che quando in uscita al secondo contatore ho un numero maggiore 
di 9 porta il valore del ingresso reset a 1 nel primo contatore...almeno 
credo. Che ne pensi?
Grazie ancora! ciao 

"Axeman" <m...@dont.think.so.invalid> ha scritto nel messaggio 
news:4bbcb2ff$1...@extreme.x-privat.org...

Mi accontento di 0.7s! Leggi se il controllo per i numeri da A a F che ho 
scritto a blisca va bene secondo te...
Grazie ciaooo 

 ha scritto nel messaggio 
news:hpibug$a4o$3...@tdi.cu.mi.it...

Come dicevo ad axeman, non mi interessa arrivare al secondo netto... lo 
scopo è riuscire a vedere i numeri, 0.7 secondi vanno bene...inoltre per 
fare quel controllo dovrei fare un comparatore a 26 bit giusto?
grazie 

 ha scritto:

Guarda qui:
http://www.fpga4fun.com/Opto3.html

 
http://www.fpga4fun.com/Opto3.html
Quello schedino ï¿œ parente stretto delle mie Pluto3 :-)