--用于将主频分为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条评论)
登录后参与讨论