组件级别的vhdl ucf条目

时间:2016-12-21 12:50:06

标签: components vhdl hierarchical

我是VHDL的另一个新手,来自软件背景,这可能是我的第一个问题,但......

我是层次结构设计等的粉丝,我正在整理一个SOC示例来了解VHDL等。我在网上使用了很多例子并且搞乱他们以获得VHDL。< / p>

我已经创建了一个顶级主板,然后在主板上添加了组件。但是,看起来主板是UCF文件的唯一连接,这有点限制。我的例子是VGA控制器,我连接各种总线和来自主板的控制信号,但我不希望主板拥有所有视频信号,例如H_Sync,V_Sync和R()G()B()输出。

为了测试这个,我创建了一个非常简单的项目。顶部控制主板上的3个LED和作为组件的level1控制最终的LED。

这是一个ucf文件

NET "CLK_48MHz" LOC = "P56" ;

#KEY
NET "KEY1" LOC = P17;
NET "KEY2" LOC = P21;
NET "KEY3" LOC = P15;
NET "KEY4" LOC = P16;

#LED
NET "LED0" LOC = P97;
NET "LED1" LOC = P95;
NET "LED2" LOC = P94;
NET "LED3" LOC = P98;

顶级档案

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.NUMERIC_STD.ALL;


entity top is
    Port ( clk_48Mhz : in  STD_LOGIC;
                LED0 : out  STD_LOGIC;
                LED1 : out  STD_LOGIC;
                LED2 : out  STD_LOGIC;
                LED3 : out  STD_LOGIC
                );
end top;

architecture Behavioral of top is
    signal Timer    : integer range 0 to 50000000:= 0;
    signal s_LED    : std_logic :='0';

begin

    Inst_Level1: entity work.Level1 PORT MAP(
        clk_48MHz =>clk_48MHz,
        LED2 => LED2
    );

process (clk_48Mhz)
    Begin

    if rising_edge(clk_48Mhz) then
        Timer <= Timer +1;
        if Timer > 5000000 then
            s_LED <= not(s_LED);
            Timer <= 0;
        end if;
    end if;

end process;

    LED0 <= not(s_LED);
    LED1 <= s_LED;
--  LED2 <= not(s_LED);
    LED3 <= s_LED;

end Behavioral;

和组件

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;

entity Level1 is
    Port ( clk_48MHz : in  STD_LOGIC;
           LED2 : out  STD_LOGIC);
end Level1;

architecture Behavioral of Level1 is
    signal Timer    : integer range 0 to 50000000:= 0;
    signal s_LED    : std_logic :='0';
begin

    process (clk_48Mhz)
        Begin

        if rising_edge(clk_48Mhz) then
            Timer <= Timer +1;
            if Timer > 5000000 then
                s_LED <= not(s_LED);
                Timer <= 0;
            end if;
        end if;

    end process;

    LED2 <= s_LED;


end Behavioral;

以上作品。现在,如果我从顶部移除LED2并从映射中移除LED2 => LED2,我原本期望level1在ucf文件中使用LED2,但它看起来不是,只是删除它。

有没有解决方法,因为我希望尽可能保持大项目的清洁和组件的自给自足。

先谢谢。

0 个答案:

没有答案