clk_uart:process(clk,rst)<br />constant CntOne : std_logic_vector(CNTR_SIZE-1 downto 0) := CONV_STD_LOGIC_VECTOR(1,CNTR_SIZE);<br />variable Cntr : std_logic_vector(CNTR_SIZE-1 downto 0);<br /> begin<br /> if Rising_Edge(clk) then<br /> if rst = '1' then<br /> Cntr := (others => '0');<br /> s_uart_clk <= '0';<br /> else<br /> Cntr := Cntr + CntOne;<br /><br /> if Cntr = CONV_STD_LOGIC_VECTOR(BAUD_DIVIDER,CNTR_SIZE) then <br /> s_uart_clk <= not s_uart_clk;<br /> Cntr := (others => '0');<br /> else <br /> s_uart_clk <= s_uart_clk;<br /> end if;<br /> end if;<br /> end if;<br /> end process;<br />CONV_STD_LOGIC_VECTOR(1,CNTR_SIZE)是啥意思?是0000000........1还是32个1?<br />其中BAUD_DIVIDER=1,<br />这是别人的程序,我的理解是这样:Cntr为<br />0000.......................1<br />0000......................10<br />..........................11<br />.<br />.<br />.<br />这样好像不是二分频了<br /> |
|