我快速浏览了一下你的代码,虽然它在语法上看起来是正确的,但它看起来并不是合成的(即使它可能是).
例如:
led_size : process(clk, size)
begin
if size = '1' then
led_size_f <= led_size_f +1;
end if;
if led_size_f > 4 then
led_size_f <=1;
end if;
end process;
Run Code Online (Sandbox Code Playgroud)
它甚至没有使用clk,它也会产生一个锁存器(通常是坏事,除非你绝对肯定你在做什么),这很可能在尝试在FPGA中运行时给你带来问题.
我可以发布更多示例,但如果我是你,我会尝试查看您最有可能从综合工具中获得的警告列表.
另外,看看你的IDE是否带有一些用于同步设计的模板,然后尝试遵循它们,以确保你实际上推断出你想要的硬件.