Clock Divider Circuit - Page 1
Forum section: electronics / projects

author: jaxbird
author_rank: Frequent Contributor
timestamp: May 25, 2014, 01:04:04 pm
content: I'm working on a project where I need a clock divided in steps.I have been considering something like this:This will probably work, but I am wondering if there is an easier way to do it, without having to use this many ICs and still using common parts?Original clock signal will be around 10-12MHz.

author: dannyf
author_rank: Super Contributor
timestamp: May 25, 2014, 01:13:41 pm
content: Tons of counters out there. HC40x0 for example.

author: SeanB
author_rank: Super Contributor
timestamp: May 25, 2014, 01:25:44 pm
content: Use a ripple counter like a 4020 04 4060 and you will get the same circuit in a single or 2 package. You can then feed the 151 selector easily. Otherwise if you are only needing a few different rates use a presettable counter or three in series and you will get a much wider range of divide ratios instead of only powers of 2. Few more select lines ( or just tie to the appropriate levels) and it will at least be synchronous with the input edges.

author: jaxbird
author_rank: Frequent Contributor
timestamp: May 25, 2014, 01:59:44 pm
content: Quote from: dannyf on May 25, 2014, 01:13:41 pmQuote from: SeanB on May 25, 2014, 01:25:44 pmThanksGood call, that should save me a lot of space, I think a 74hc4040 will do the job of feeding a couple of 74hc151.I do need all the division intervals from CLK to CLK/1024.

author: dannyf
author_rank: Super Contributor
timestamp: May 25, 2014, 02:42:39 pm
content: QuoteMore output than pins. Something has to give.QuoteFind one that works for your application. If TI doesn't offer it, go somewhere else.

author: jaxbird
author_rank: Frequent Contributor
timestamp: May 25, 2014, 03:03:12 pm
content: Quote from: wilfred on May 25, 2014, 02:33:47 pmNo problem, feel welcome, I got some great suggestions giving me exactly the answers I was looking forI have not checked the TI datasheets, but the NXP datasheet indicate up to 90MHz at 5V.http://www.nxp.com/documents/data_sheet/74HC_HCT4040.pdf

author: SeanB
author_rank: Super Contributor
timestamp: May 25, 2014, 04:11:37 pm
content: Standard 40xx will only do around 10MHz, but the HCT will do a lot better and on 5V as well, which the 4000 series is only rated to 1MHz.

author: rob77
author_rank: Super Contributor
timestamp: May 26, 2014, 11:28:16 am
content: try to avoid standard 40xx for higher frequency devices, always use the 74HC(T)40xx , some of the standard 40xx devices are capable of 10Mhz , but most of them barely 8MHz - those standard 40xx are ancient CMOS technology devices compared to the 74HC devices.regarding the missing outputs on a 4020... hook up a couple of dividers (e.g. the 7474 stages in your design) to Q1 output to compensate for the missing Q2 and Q3 - i did it that way some time ago

author: Dave
author_rank: Super Contributor
timestamp: May 26, 2014, 12:50:36 pm
content: You could opt for a single chip solution: CPLD. Something like an Xilinx XC9536 would be more than enough to replace all of your logic circuitry. It's cheap, too (you do need a JTAG programmer, though, but you buy that once). This thing would also be comfortable going to 100MHz, if needed.This is a quick piece of code I typed up. It should work.Code:library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.NUMERIC_STD.ALL;entity divider isPort ( CLK : in STD_LOGIC;--Clock inputBITS : out STD_LOGIC_VECTOR (14 downto 0); --Individual bits of the counterSEL : in STD_LOGIC_VECTOR (3 downto 0);--Input for selecting which division appears on the outputDIV : out STD_LOGIC);--Divided outputend divider;architecture Behavioral of divider issignal count: unsigned(14 downto 0) := (others => '0');beginCounter: process(CLK)beginif rising_edge(CLK) thencount <= count + 1;end if;end process;BITS <= STD_LOGIC_VECTOR(count);DIV <= CLKwhen SEL = "0000" elsecount(0) when SEL = "0001" elsecount(1) when SEL = "0010" elsecount(2) when SEL = "0011" elsecount(3) when SEL = "0100" elsecount(4) when SEL = "0101" elsecount(5) when SEL = "0110" elsecount(6) when SEL = "0111" elsecount(7) when SEL = "1000" elsecount(8) when SEL = "1001" elsecount(9) when SEL = "1010" elsecount(10) when SEL = "1011" elsecount(11) when SEL = "1100" elsecount(12) when SEL = "1101" elsecount(13) when SEL = "1110" elsecount(14);end Behavioral;

author: rob77
author_rank: Super Contributor
timestamp: May 26, 2014, 02:00:48 pm
content: the XCs are perfect, but the old 5V versions are quite expensive compared to the newer versions which are 3.3 or 2.5 volts only - so it would require some level shifting circuitry.

author: jaxbird
author_rank: Frequent Contributor
timestamp: May 27, 2014, 12:45:35 am
content: Quote from: Dave on May 26, 2014, 12:50:36 pmThanks, that is an excellent suggestionI don't need faster than 10-12MHz, but I like the idea of using a CPLD, not much cost added with a XC9536XL.