【发布时间】:2020-07-28 15:29:43
【问题描述】:
我正在使用 10M50 FPGA 通过 MIPI-CSI2 从摄像头读取数据,但我在板上的时钟运行速度不够快。所以现在我正在尝试使用 PLL 来生成更快的时钟信号。
我正在使用以下代码来测试生成的时钟信号是否正确,方法是手动设置 v1 变量,以便我的 LED 每秒闪烁一次。在本例中,PLL(由 Quartus IP 目录中的 ALTPLL 向导生成)被设置为接收 100MHz 时钟信号,并且应该显示 400MHz 时钟信号,但是没有任何反应。
library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
LIBRARY altera_mf;
USE altera_mf.all;
-- debut entity --
entity test is
port(
CLK : in std_logic;
LED0 : out std_logic -- leds are ON for '0' and OFF for '1'
);
end test;
-- debut architecture --
architecture test_led of test is
signal s_led0 : std_logic :='1';
signal c0 : std_logic;
component pll400
port( inclk0 : IN STD_LOGIC := '0';
c0 : OUT STD_LOGIC
);
end component;
begin
clk1:pll400
port map(inclk0 => CLK,
c0 => c0
);
p:process(c0,s_led0)
variable v1 : integer range 0 to 800000000 :=0;
begin
if c0'event and c0 = '1' then
v1 := v1 + 1;
if v1 = 400000000 then
s_led0 <='0';
end if;
if v1 = 800000000 then
s_led0 <='1';
v1 := 0;
end if;
end if;
LED0 <= s_led0;
end process;
end test_led;
我能够使用它来生成和测试高达 320MHz 的信号,但它似乎无法更高,尽管我没有找到任何文件说这是不可能的。 (我的资料主要是 10M50 用户指南和 Intel Max10 时钟和 PLL 用户指南)
我也尝试过级联使用 PLL,将 100 -> 200Mhz PLL 的输出时钟输入到 200 -> 400MHz PLL 但我得到了相同的结果,这意味着我的 LED 不会闪烁。
那么我是否缺少某些东西,或者我目前的电路板不可能产生这样的信号?
编辑:我用作参考的数据表: MAX10 Clocking and PLL 10M50 User Guide
【问题讨论】:
-
这个问题在电子部分更常见。但我怀疑你会在那里得到相同的答案:通常 PLL 的最大频率在数据表中。如果它不在那里,我会非常惊讶。但是了解 FPGA 可能需要一段时间才能找到正确的数据表。
-
10M 数据表表明 -8 速度等级部件应达到 402 MHz,但也指出性能可能会受到参考时钟抖动的限制。您的问题没有提供足够的信息,也似乎与编程无关。 (您可以预期第一个 PLL 的输出抖动超过第二个输入的抖动限制。请参阅数据表。)
-
@Oldfart 它应该在电子部分你是对的,对不起,这是我在这里的第一个问题。我在数据表中发现最大 VCO 频率为 1300MHz(我将在帖子中链接它)但我不知道这是否可用。
-
@user1155120 抱歉,我尽量简明扼要,你能告诉我你需要知道什么以便我编辑帖子吗?还是我应该在电子部分重新创建它?谢谢你们俩
-
见10M datasheet。 FPGA 板用户指南指定了 -6 速度等级(在器件部件号中)。 Si5338 datasheet。这个问题的正确位置可能是Electronics Stack Exchange。
标签: vhdl clock intel-fpga