我目前正在使用Basys3 FPGA上的Vivado VGA,我遇到了一些问题。我想生成不同的图像(测试泥潭)。我为这些图像中的每一个都有一个单独的.vhd文件,以及一个顶层文件,我想在这些图像中使用多路复用器,以便将它们分配给一个单独的开关。我的问题是:如果每个.vhd文件的输出都是RGB三色信号,我如何将图像分配给开关?
我试过的是,我为每个图像命名了这三个输出信号,并在使用外壳结构打开开关时将它们分配给最终输出信号。我会粘贴部分内容,以便你们可以得到这个想法:
这是顶级实体
entity VGAdraw is
Port ( CLK : in STD_LOGIC;
cntHor : in integer range 0 to cstHorTotSize - 1;
cntVer : in integer range 0 to cstVerTotSize - 1;
SW : in STD_LOGIC_VECTOR (15 downto 0);
LED : out STD_LOGIC_VECTOR (15 downto 0);
RED : out STD_LOGIC_VECTOR (3 downto 0);
GREEN : out STD_LOGIC_VECTOR (3 downto 0);
BLUE : out STD_LOGIC_VECTOR (3 downto 0)
);
end VGAdraw;
这是其中一张图片:
signal red5, green5, blue5, red7, green7, blue7: STD_LOGIC_VECTOR (3 downto 0);
component Checkers is
Port ( CLK : in STD_LOGIC;
cntHor : in integer range 0 to cstHorTotSize - 1;
cntVer : in integer range 0 to cstVerTotSize - 1;
red7 : out STD_LOGIC_VECTOR (3 downto 0);
green7 : out STD_LOGIC_VECTOR (3 downto 0);
blue7 : out STD_LOGIC_VECTOR (3 downto 0)
);
end component;
component Checkers
port map (CLK => CLK,
cntHor => cntHor,
cntVer => cntVer,
red7 => RED,
green7 => GREEN,
blue7 => BLUE
);
案例结构
process
begin
case SW is
when "0000000000100000" => RED <= red7;
GREEN <= green7;
BLUE <= blue7;
when others => RED <= red5;
GREEN <= green5;
BLUE <= blue5;
end case;
end process;
VGADraw是顶级实体,我已将每个图像声明为不同的组件。像上面那个。如何将它们分配给FPGA板上的开关,这样我可以通过打开Switch切换到我想要的图像?我也尝试了一些'if generate'语句,没有结果。就像在这种情况下,在Basys3上有16个开关,通过打开sw5,我想得到Checkers组件绘制的图像。
感谢您的帮助。
答案 0 :(得分:0)
在process
的正上方,您的代码应该是这样的:
signal red1, blue1, green1, red7, green7, blue7 red5, green5, blue5 : STD_LOCIC_VECTOR(3 downto 0);
通常,在进行Structural
设计时,在完成组件后,您应该声明上面给出的信号。