2016-04-01 3 views
0

В настоящее время я работаю с VGA в Vivado на FPGA Basys3, и у меня возникают некоторые проблемы. Я хочу генерировать разные образы (test mires). У меня есть отдельный файл .vhd для каждого из этих изображений и файл верхнего уровня, где я хотел бы использовать мультиплексор для этих изображений, чтобы назначить каждому из них отдельный переключатель. Мой вопрос: как назначить изображение переключателю, если выходы из каждого .vhd-файла представляют собой три цветовых сигнала RGB?VHDL: выбор изображений с помощью переключателей

Что я пробовал, так это то, что я назвал эти 3 выходных сигнала по-разному для каждого изображения и назначил их окончательному выходному сигналу, когда переключатель включен, используя структуру корпуса. Я вставить его часть, чтобы вы, ребята, можете получить идею:

Это верхний объект

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, поэтому я могу изменить изображение, которое я хочу, включив коммутатор? Я также пробовал некоторые «если генерировать» утверждения, без каких-либо результатов. Как и в этом случае, имея 16 переключателей на Basys3, включив sw5, я хотел бы получить изображение, нарисованное компонентом Checkers.

Спасибо за любую помощь.

+0

Поскольку вы не показывали нам объявления для 'red1' или экземпляра компонента для Checkers, любая помощь будет только диким угадать. Например, может быть, нет объявления для 'red1'? –

ответ

0

Чуть выше process начинается ваш код должен быть что-то вроде этого:

signal red1, blue1, green1, red7, green7, blue7 red5, green5, blue5 : STD_LOCIC_VECTOR(3 downto 0); 

В общем, при создании Structural дизайна, после окончания с компонентами вы должны объявить сигналы, нужно, как указано выше.

+0

Спасибо! Я избавился от этой ошибки, но программа не работает. Я предполагаю, что причиной этого является то, что в структуре случая он использует эти объявленные сигналы, а не те из компонентов, которые на самом деле рисуют что-то? Разве нет более элегантного способа сделать выбор? Первоначально я назвал все свои цветовые сигналы от каждого компонента одинаковым: красный, зеленый, синий. Без нумерации. Таким образом, возможно ли в структуре корпуса делать выбор между самими компонентами, а не между разными цветовыми сигналами? –

+0

Поскольку проблема ушла, вы должны принять ответ, нажав на галочку там <---. – Maria

+0

В целом, когда вы объявляете компонент, на карте порта вы должны использовать те же «имена» для сигналов, что и в компоненте. Что касается того, какое имя должно иметь сигналы этого компонента в качестве входов/выходов, это зависит от вас. – Maria