Vhdl 将1秒时钟转换为0.1秒时钟
我有一个50兆赫时钟的fpga板,我有这个功能将信号转换成1秒的时钟。我想知道我应该做哪些调整以获得0.1秒而不是1秒的输出Vhdl 将1秒时钟转换为0.1秒时钟,vhdl,fpga,Vhdl,Fpga,我有一个50兆赫时钟的fpga板,我有这个功能将信号转换成1秒的时钟。我想知道我应该做哪些调整以获得0.1秒而不是1秒的输出 use ieee.std_logic_1164.all; use ieee.numeric_std.all; entity clk_gen is port( clk_50M: in std_logic; clk_1s: out std_logic ); end clk_gen; architecture arch of clk_gen is si
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
entity clk_gen is
port(
clk_50M: in std_logic;
clk_1s: out std_logic
);
end clk_gen;
architecture arch of clk_gen is
signal p_reg: unsigned(31 downto 0);
constant PHA: unsigned(31 downto 0):= x"00000056";
begin
-- ddfs for 1-sec pulse (based on 50 MHz clk)
process(clk_50M)
begin
if (clk_50M'event and clk_50M='1') then
p_reg <= p_reg + PHA;
end if;
end process;
clk_1s <= p_reg(31);
end arch;
使用ieee.std_logic_1164.all;
使用ieee.numeric_std.all;
实体clk_gen是
港口(
时钟50米:标准逻辑;
时钟1:输出标准逻辑
);
完九龙根;;
clk_gen的建筑拱门是
信号p_reg:无符号(31至0);
常数PHA:无符号(31到0):=x“00000056”;
开始
--1秒脉冲的ddfs(基于50 MHz时钟)
工艺(clk_50M)
开始
如果(clk_50M'事件和clk_50M='1'),则
p_reg50Mhz FPGA时钟意味着每秒有50000000(50e6)个时钟边缘
因此,如果你想要1/10秒,只需将你的50 Mhz时钟除以10,就可以得到需要通过的时钟边缘总数,从而获得0.1秒的延迟
50000000/10=5000000时钟边缘
我不确定你的VHDL做什么;没有计数器或值更改
简单描述一下应该做什么
process(50_Mhz)
begin
if rising_edge(50_Mhz) then
if counter < 5000000 then
counter <= counter + 1;
else
counter <= 0; -- when it get's here .1 seconds have passed
end if;
end if;
过程(50_Mhz)
开始
如果上升沿(50兆赫兹),则
如果计数器<5000000,则
计数器您是否了解算法,即此代码的作用?如果是,请向我解释一下,我相信你会的。因为如果你这样做了,你应该能够自己解决这个问题,如果你不这样做,你有很多东西要学。你不能期望我们为你做你的工作。我认为你的代码什么都做不了,因为p_reg(其他=>'U')会一直保持(其他=>'U')。。。你需要的是一个频闪发生器。