OpenCores
URL https://opencores.org/ocsvn/System09/System09/trunk

Subversion Repositories System09

[/] [System09/] [trunk/] [rtl/] [VHDL/] [BaudClock.vhd] - Diff between revs 19 and 66

Go to most recent revision | Only display areas with differences | Details | Blame | View Log

Rev 19 Rev 66
-----------------------------------------------------------------
-----------------------------------------------------------------
--
--
-- ACIA Clock Divider for System09
-- ACIA Clock Divider for System09
--
--
-----------------------------------------------------------------
-----------------------------------------------------------------
library ieee;
library ieee;
   use ieee.std_logic_1164.all;
   use ieee.std_logic_1164.all;
   use IEEE.STD_LOGIC_ARITH.ALL;
   use IEEE.STD_LOGIC_ARITH.ALL;
   use IEEE.STD_LOGIC_UNSIGNED.ALL;
   use IEEE.STD_LOGIC_UNSIGNED.ALL;
   use ieee.numeric_std.all;
   use ieee.numeric_std.all;
library unisim;
library unisim;
        use unisim.vcomponents.all;
        use unisim.vcomponents.all;
 
 
entity ACIA_Clock is
entity ACIA_Clock is
  generic (
  generic (
     SYS_Clock_Frequency  : integer;
     SYS_Clock_Frequency  : integer;
          BAUD_Clock_Frequency : integer
          BAUD_Clock_Frequency : integer
  );
  );
  port(
  port(
    clk      : in  Std_Logic;  -- System Clock input
    clk      : in  Std_Logic;  -- System Clock input
         ACIA_Clk : out Std_Logic   -- ACIA Clock output
         ACIA_Clk : out Std_Logic   -- ACIA Clock output
  );
  );
end ACIA_Clock;
end ACIA_Clock;
 
 
-------------------------------------------------------------------------------
-------------------------------------------------------------------------------
-- Architecture for ACIA_Clock
-- Architecture for ACIA_Clock
-------------------------------------------------------------------------------
-------------------------------------------------------------------------------
architecture rtl of ACIA_Clock is
architecture rtl of ACIA_Clock is
 
 
constant full_cycle : integer :=  (SYS_Clock_Frequency / BAUD_Clock_Frequency) - 1;
constant full_cycle : integer :=  (SYS_Clock_Frequency / BAUD_Clock_Frequency) - 1;
constant half_cycle : integer :=  (full_cycle / 2) - 1;
constant half_cycle : integer :=  (full_cycle / 2) - 1;
--
--
-- Baud Rate Clock Divider
-- Baud Rate Clock Divider
--
--
-- 25MHz / 27  = 926,000 KHz = 57,870Bd * 16
-- 25MHz / 27  = 926,000 KHz = 57,870Bd * 16
-- 50MHz / 54  = 926,000 KHz = 57,870Bd * 16
-- 50MHz / 54  = 926,000 KHz = 57,870Bd * 16
--
--
my_baud_clock: process( SysClk )
my_baud_clock: process( SysClk )
begin
begin
    if(SysClk'event and SysClk = '0') then
    if(SysClk'event and SysClk = '0') then
                if( BaudCount = 53 )    then
                if( BaudCount = 53 )    then
                        baudclk <= '0';
                        baudclk <= '0';
                   BaudCount <= "000000";
                   BaudCount <= "000000";
                else
                else
                   if( BaudCount = 26 ) then
                   if( BaudCount = 26 ) then
                                baudclk <='1';
                                baudclk <='1';
                        else
                        else
                                baudclk <=baudclk;
                                baudclk <=baudclk;
                        end if;
                        end if;
                   BaudCount <= BaudCount + 1;
                   BaudCount <= BaudCount + 1;
                end if;
                end if;
    end if;
    end if;
end process;
end process;
 
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.