原创 用cpld做波特率发生器

2008-3-13 15:16 4234 12 12 分类: FPGA/CPLD

--用于将主频分为16倍波特率的频率
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;


entity maxii_clk is
  port(
  clk_in   : in  std_logic;     --22.1184
  clk_uart : out std_logic
      );
end maxii_clk;


architecture a of maxii_clk is
 CONSTANT d1 : integer :=72; 
 CONSTANT d2 : integer :=143;
 CONSTANT d3 : integer :=71; 
 signal cnt  : std_logic_vector(7 downto 0);
 signal con_o: std_logic;
begin
--以下实现分频达到波特率16倍对应的频率
  process (clk_in)
  begin
 if clk_in'event and clk_in='1' then
     
  if cnt < d1 then
   con_o <= '0';
   cnt<=cnt+1;
  elsif cnt < d2 and cnt > d3 then
   con_o <= '1';
   cnt<=cnt+1;
  else
   con_o <= '0';
   cnt(7 downto 0) <= "00000000"; 
  end if;
    end if;
  end process;
  clk_uart <= con_o;
end a;
-------------------------------------------------------------------------
-- 主频率   |  波特率 |  16倍  |  d1  |  d2    |  d3  --
-------------------------------------------------------------------------
-- 22.1184  |  9600 |  153600 |  72  |  143 |  71  --
-- 22.1184  |  19200 |  307200 |  36  |  71 |  35  --
-- 22.1184  |  38400 |  614400 |  18  |  35 |  17  --
-- 22.1184  |  57600 |  921600 |  12  |  23 |  11  --
-- 22.1184  |  115200 |  1843200 |  6   |  11 |  5   --
-------------------------------------------------------------------------
-------------------------------------------------------------------------
-- 主频率   |  波特率 |  16倍  |  d1  |  d2    |  d3  --
-------------------------------------------------------------------------
-- 11.0592  |  9600 |  153600 |  36  |  71 |  35  --
-- 11.0592  |  19200 |  307200 |  18  |  35 |  17  --
-- 11.0592  |  38400 |  614400 |   9  |  17 |   8  --
-- 11.0592  |  57600 |  921600 |   6  |  11 |   5  --
-- 11.0592  |  115200 |  1843200 |   3  |   5 |   2  --
-------------------------------------------------------------------------


点击看大图

文章评论0条评论)

登录后参与讨论
我要评论
0
12
关闭 站长推荐上一条 /2 下一条