请问下面的程序产生波形有什么问题吗?
entity CLKDIV is------------------------------------------
generic ( n: integer := 60 );
port (
CLK_IN : instd_logic;
CLK_RST: instd_logic;
CLK_CS : instd_logic;
CLK_OUT: out std_logic
);
------------------------------------------
end CLKDIV;
architecture Behavioral of CLKDIV is
------------------------------------------
signal CLK_CLK: std_logic;
------------------------------------------
begin
------------------------------------------
div:process ( CLK_RST,CLK_IN,CLK_CS )
variable CLK_CNT: integer range 0 to 511 := n;
begin
if ( CLK_RST = '0' ) then
CLK_CLK <= '1';
CLK_CNT :=0;
elsif ( CLK_IN' event and CLK_IN = '1' and CLK_CS = '0' ) then
CLK_CNT := CLK_CNT + 1;
if ( CLK_CNT = n ) then
CLK_CLK <= not CLK_CLK;
CLK_CNT := 0;
end if;
end if;
end process div;
CLK_OUT <= CLK_CLK;
------------------------------------------
end Behavioral;
请问上面的程序产生波形有问题吗? entity CLKDIV is
------------------------------------------
generic ( n: integer := 60 );
port (
CLK_IN : instd_logic;
CLK_RST: instd_logic;
CLK_CS : instd_logic;
CLK_OUT: out std_logic
);
------------------------------------------
end CLKDIV;
architecture Behavioral of CLKDIV is
------------------------------------------
signal CLK_CLK: std_logic;
------------------------------------------
begin
------------------------------------------
div:process ( CLK_RST,CLK_IN,CLK_CS )
variable CLK_CNT: integer range 0 to 511 := n;
begin
if ( CLK_RST = '0' ) then
CLK_CLK <= '0';
CLK_CNT :=0;
elsif ( CLK_IN' event and CLK_IN = '1' and CLK_CS = '0' ) then
CLK_CLK <= '0';
CLK_CNT := CLK_CNT + 1;
if ( CLK_CNT = n ) then
CLK_CLK <= '1';
CLK_CNT := 0;
end if;
end if;
end process div;
CLK_OUT <= CLK_CLK;
------------------------------------------
end Behavioral; 请问上面2种产生时钟的方法,那个好点!好的地方,差的地方分别在哪里? 还有个问题,我想吧这个分频电路用
UART_SampClk: CLKDIV
generic map( 60 )
port map (
CLK_IN => UART_CLKIN,
CLK_CS => UART_CS,
CLK_RST => UART_RST,
CLK_OUT => UartSampClk
);
我想通过这个方式来分频,不知道这种引用有问题吗》希望指教!
页:
[1]