クロック分周器の作成方法でこのコードを見つけました。カウンターを使用して仕切りを作成する方法については一般的な理解がありますが、このコードが何をしているのか、なぜそれをしているのかはわかりません。
entity clkdiv is
Port ( mclk : in STD_LOGIC;
clr : in STD_LOGIC;
clk190 : out STD_LOGIC;
clk48 : out STD_LOGIC);
end clkdiv;
architecture clkdiv of clkdiv is
signal q: std_logic_vector(23 downto 0);
begin
--clock divider
process(mclk,clr)
begin
if clr ='1' then
q <= X"000000";
elsif mclk'event and mclk = '1' then
q <= q+1;
end if;
end process;
clk48 <= q(19);
clk190 <= q(17);
end clkdiv;
この例は基本 2 ボード上にあり、入力クロックは 50MHz であることがわかっています。このコードは、48hz クロック信号と 190hz クロック信号を作成することになっています。