Witaj, w książce "Układy programowalne dla początkujących" pana Andrzeja Pawluczuka, był opisany podobny dzielnik częstotliwości do tego o który pytasz. Przykłady od tej książki można pobrać za darmo w Internecie. Tutaj akurat stopień podziału jest stały i wynosi 2^8, jest też jedno wyjście a nie 3 jak w układzie LS292, ale raczej bez problemu to przerobisz na swoje potrzeby. Poniżej wklejam kod:
--
-- **************************************************************************
-- **************************************************************************
-- ** **
-- ** "Układy CPLD w praktyce" **
-- ** **
-- ** Module: FDivider (przydatny komponent) **
-- ** Target device: XILINX CPLD **
-- ** Tool versions: ISE WebPACK 9.2i **
-- ** Date: BIAŁYSTOK, styczeń 2009 **
-- ** **
-- ** Napisał : Andrzej Pawluczuk **
-- ** **
-- **************************************************************************
-- **************************************************************************
--
-----------------------------------------------------------------------------
library IEEE ;
use IEEE.STD_LOGIC_1164.ALL ;
use IEEE.STD_LOGIC_ARITH.ALL ;
use IEEE.STD_LOGIC_UNSIGNED.ALL ;
entity FDivider is generic ( constant CntSize : integer := 8 ) ;
port ( Clk : in std_logic ;
Reset : in std_logic ;
FDiv : out std_logic ) ;
end FDivider ;
architecture Behavioral of FDivider is
signal FDivCnt : std_logic_vector ( CntSize - 1 downto 0 ) ;
begin
FDividerInstance : process ( Clk , Reset )
begin
if Reset = '0' then
FDivCnt <= ( others => '0' ) ;
else
if Clk'event and Clk = '0' then
FDivCnt <= FDivCnt + 1 ;
end if ;
end if ;
end process ;
FDiv <= FDivCnt ( FDivCnt'left ) ;
end Behavioral ;