Design a divide-by-3 sequential circuit with 50% duty circle?



Design a divide-by-3 sequential circuit with 50% duty circle?..

Answer / vikas lakhanpal

Hi guys,
This is code u r looking for.I have made it generic
based.Give any Odd value in the genric.u will get same
divide by clock.if u need ckt u can make it easily frm
it.Is not guys?
---------
------------------------------------------------------------
-----------
--Designer Vikas Lakhanpal;vikas_lakhanpal27@yahoo.com
--Module description : This modules is dividing the
incoming clock by ODD value as assigned in genric
CLK_DIV_BY generic with

50% duty cycle
------------------------------------------------------------
-----------


library IEEE;
USE ieee.std_logic_1164.all;
USE ieee.std_logic_arith.all;
USE ieee.std_logic_unsigned.all;

entity FDIV is

generic(
CLK_DIV_BY : INTEGER :=15; --Give the
odd value with which you want to divide the clock i.e.
3,5,7,9
COUNTVALUE : INTEGER :=4 --Give the bit
count of division ratio value.Ex upto 3= 2 bits; 5 to 7 =
3; 9 to 15 = 4 and so on..
);

port(
CLK : in std_logic;
CLR : in std_logic;
DIV: out std_logic
);
end FDIV;
--------------------------------------------------
Architecture beh of FDIV is
signal DIV_pos, DIV_neg :std_logic;
signal posedgecounter :std_logic_vector((COUNTVALUE - 1)
downto 0);
signal negedgecounter,test :std_logic_vector((COUNTVALUE -
1) downto 0);
begin
-----------------------------
PROCESS(CLK,CLR)
begin
IF ( CLR = '0') THEN
posedgecounter <= (others =>'0');
ELSIF RISING_EDGE(CLK) THEN
posedgecounter <= posedgecounter + 1;
if posedgecounter = conv_std_logic_vector((CLK_DIV_BY -
1),(COUNTVALUE)) then
posedgecounter <= (others =>'0');
end if;
if posedgecounter <= conv_std_logic_vector(((CLK_DIV_BY -
1)/2),(COUNTVALUE)) then
DIV_pos <= '1';
else
DIV_pos <= '0';
end if;
END IF;
END PROCESS;
------------------------------
PROCESS(CLK,CLR)
begin
IF ( CLR = '0') THEN
negedgecounter <= (others =>'0');
ELSIF FALLING_EDGE(CLK) THEN
negedgecounter <= negedgecounter + 1;
if negedgecounter = conv_std_logic_vector((CLK_DIV_BY -
1),(COUNTVALUE)) then
negedgecounter <= (others =>'0');
end if;
if negedgecounter <= conv_std_logic_vector
(((CLK_DIV_BY -1)/2),(COUNTVALUE)) then
DIV_neg <= '1';
else
DIV_neg <= '0';
end if;
END IF;
END PROCESS;
----------------------------------------
DIV<= DIV_pos and DIV_neg;
----------------------------------------
end beh;

Is This Answer Correct ?    3 Yes 10 No

Post New Answer

More 86 Family Interview Questions

What are the total number of input and output ports in 8085?

1 Answers  


Which interrupt in the 8086 has the highest priority?

1 Answers  


What all does a microprocessor comprise of?

1 Answers  


What is segment address in 8086?

1 Answers  


What are the four distinct types of memory in 8051?

1 Answers  


Which bit of the flag register is set when output overflows to the sign bit?

1 Answers  


How the stack is initialized?

1 Answers  


Define edge or level sensitive interrupts?

1 Answers  


what is program counter?

1 Answers   Wipro,


explain about the characters of internal interrupts?

1 Answers  


State the type of addressing modes supported by the 8086?

1 Answers  


State the differences between a procedure and a macro.

1 Answers  


Categories