EmbDev.net

Forum: FPGA, VHDL & Verilog Trying to divide 100Mhz clock to 25Mhz for VGA


von Darren Rodriguez (Guest)


Rate this post
useful
not useful
I came up with this but I am not sure if this will give me 25Mhz and I 
can't think of a way to test it. Can someone tell me if this is right?
1
 signal clock_25MHz : std_logic;
2
  signal counter : integer;
3
  
4
  process(clk,counter,clock_25Mhz)
5
    constant max_count : integer := 3; --divide 100 by 4 (0-3)
6
  begin
7
    if (rising_edge(clk)) then
8
      counter <= counter + 1;
9
        if (counter = max_count) then
10
          clock_25Mhz <= not clock_25Mhz;
11
          counter <= 0;
12
        end if;
13
    end if;
14
  end process;

von Ottmar (Guest)


Rate this post
useful
not useful
Darren Rodriguez wrote:
> I
> can't think of a way to test it

You may try simulation ...

von Lothar M. (Company: Titel) (lkmiller) (Moderator)


Rate this post
useful
not useful
Darren Rodriguez wrote:
> Can someone tell me if this is right?
No, it isn't. A clock is not generated by toggling a flipflop. To 
generate a real clock you must use one of the clock managers in your 
FPGA.

BTW: which one?

von ... (Guest)


Rate this post
useful
not useful
Altera Quartus will promote clock_25 automatically to the clock network
if clock_25 is used as clock for other parts. No need for BUFG.

But clock_25 should not be a part of the sensitiv list of the process.

von 'ingenieur d route (Guest)


Rate this post
useful
not useful
this is the most xxxx way to generate a clock I have ever seen.

... wrote:
> But clock_25 should not be a part of the sensitiv list of the process.
why not?

von Lothar M. (Company: Titel) (lkmiller) (Moderator)


Rate this post
useful
not useful
The only necessary signal in the sensitivity list of this synchronous 
process is clk.

: Edited by Moderator
von Achim S. (Guest)


Rate this post
useful
not useful
I don't know, if on Altera Quartus this will feed a clock network as 
...Guest states or if it will be just a toggling flip-flop.

But I'm quite sure that clk_25 will run at 12.5MHz, not at 25MHz ;-)

von ... (Guest)


Rate this post
useful
not useful
> But I'm quite sure that clk_25 will run at 12.5MHz, not at 25MHz

The TO can use a PLL to get a 200 MHz clock.

Or he divides by two only...

von Lothar M. (Company: Titel) (lkmiller) (Moderator)


Rate this post
useful
not useful
... wrote:
> Or he divides by two only...
Or he uses a binary counter and takes the third bit of it:
1
   signal cnt : unsigned( 2 downto 0) := "000";
2
 :
3
   clkcnt <= clkcnt+1 when rising_edge(clk); -- take advantage of the automatic rollover of an unsigned vector
4
   clock_25 <= clkcnt(2);

Achim S. wrote:
> I don't know, if on Altera Quartus this will feed a clock network as
> ...Guest states
And up to now its not known if it is a FPGA at all and if it is one if 
it is from Altera...

Please log in before posting. Registration is free and takes only a minute.
Existing account
Do you have a Google/GoogleMail account? No registration required!
Log in with Google account
No account? Register here.