Vhdl 在MAX10FPGA上用锁相环产生优于400Mhz的时钟信号

Vhdl 在MAX10FPGA上用锁相环产生优于400Mhz的时钟信号,vhdl,clock,intel-fpga,Vhdl,Clock,Intel Fpga,我使用10M50 FPGA通过MIPI-CSI2从摄像头读取数据,但我在板上的时钟运行速度不够快。所以现在我正试图用锁相环来产生更快的时钟信号 我正在使用以下代码测试生成的时钟信号是否正确,方法是手动设置v1变量,使我的led每秒闪烁一次。在此示例中,PLL(由Quartus IP目录中的ALTPLL向导生成)设置为接收100MHz时钟信号,并应显示400MHz时钟信号,但无任何变化 library ieee; use ieee.std_logic_1164.all; use ieee.nume

我使用10M50 FPGA通过MIPI-CSI2从摄像头读取数据,但我在板上的时钟运行速度不够快。所以现在我正试图用锁相环来产生更快的时钟信号

我正在使用以下代码测试生成的时钟信号是否正确,方法是手动设置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;
ieee库;
使用ieee.std_logic_1164.all;
使用ieee.numeric_std.all;
图书馆altera_mf;
使用altera_mf.all;
--首次亮相实体--
实体测试是
港口(
CLK:标准逻辑中;
LED0:输出标准逻辑--“0”的LED亮起,“1”的LED熄灭
);
结束试验;
--首秀建筑--
测试的架构测试指示灯为
信号s_led0:std_逻辑:='1';
信号c0:std_逻辑;
组件pll400
端口(包括0:IN标准_逻辑:='0';
c0:输出标准逻辑
);
端部元件;
开始
clk1:pll400
端口图(包括K0=>CLK,
c0=>c0
);
p:过程(c0,s_led0)
变量v1:从0到80000000的整数范围:=0;
开始
如果c0'事件且c0='1',则
v1:=v1+1;
如果v1=400000000,则

s_led0您的设计时间是否已确定?时间报告怎么说

也许不是PLL,但这种结构本身的速度足够慢,可以在更高的频率下工作。你有一些30位比较器和一个30位加法器在400兆赫的单时钟下工作,这对MAX10来说是非常苛刻的。 你应该考虑增加加法器流水线,这将提升它的FRQ性能,但是它只会在每2个或3个或更多个时钟周期中产生一次结果,所以在它的输出端将需要一个额外的锁存器。p>
至于比较器,如果切换到2的幂作为限制,它们可能根本不需要。将v1设置为31位值,并将v1的第31位用于s_led0,这将为您提供另一个除法比,但逻辑上要简单得多。而且你也不需要重置v1,加法器会自动环绕它。

这个问题在电子部分更容易理解。但我怀疑你会得到同样的答案:通常PLL的最大频率在数据表中。如果它不在里面,我会非常惊讶。但了解FPGA可能需要一段时间才能找到正确的数据表。10M数据表说-8速度级部分应达到402MHz,但也指出性能可能会受到参考时钟抖动的限制。您的问题没有提供足够的信息,也似乎与编程无关。(您可以预期第一个PLL的输出抖动超过第二个PLL输入的抖动限制。请参阅数据表。)@Oldfart它应该在电子部分您是对的,很抱歉,这是我这里的第一个问题。我在数据表中发现,VCO的最大频率为1300MHz(我将在帖子中链接),但我不知道这是否可用。@user1155120抱歉,我尽量简洁,你能告诉我你需要知道什么,以便我可以编辑帖子吗?或者我应该在电子部分重新创建它?谢谢你们两位,请看。《FPGA板用户指南》规定了-6速度等级(在设备零件号中)。这个问题的适当位置可能是。