VHDL分频程序,希望大家帮帮忙,给我详细解释一下,谢谢了
library IEEE;use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity even_div1 is
port( clk: in std_logic;
clkout: out std_logic);
end even_div1;
architecture Behavioral of even_div1 is
signal temp_clk:std_logic:='0';
signal cnt:integer range 0 to 7;
begin
process(clk)
begin
if rising_edge(clk) then
cnt<=cnt+1;
if cnt=4 then
temp_clk<= not temp_clk;
cnt<=0;
else
cnt<=cnt+1;
end if;
end if;
end process;
clkout<=temp_clk;
end Behavioral;
这个是书上一个十分频的例子,我想问signal cnt:integer range 0 to 7;这句程序的的那个CNT取值范围是随便定的吗,可以写range 0 to 4吗,还有这个CNT的初值是多少?谢谢了 初始值根据芯片不同而不同,因为没有复位信号,初始值就不确定,一般为0.
cnt的宽度根据分频值确定,位宽可根据分频值调整。 硬件中不存在变量,数据均以信号线存在,那么信号线表示的值都是2的n次方减一的范围,计数用到4,写成0到4没问题,用到5,就写成0到7,因为写成0-5和0-7用的线的根数相同。简单浅显吧。:)
页:
[1]