Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Ошибка в операторе SLL
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему
Ariel
Есть простая программа на VHDL, которая по замыслу должна описать регистр с параллельной загрузкой (по фронту LATCH) и последовательным выходом (lvds) по сигналу CLK:
signal acc: STD_LOGIC_VECTOR (2 downto 0);
signal lvds: STD_LOGIC;

begin

process (LATCH,CLK,lvds)
begin
if (LATCH'event and LATCH = '1') then
acc<=VIDEO_BUS;

end if;

if (CLK'event and CLK='1') then
lvds<=acc(2);
acc<=acc sll 1;
end if;
LVDS_OUT_P<=lvds;
LVDS_OUT_N<=not lvds;
end process;
ISE ругается на оператор sll (сдвиг влево)
ERROR:HDLParsers:808 - "G:/ISE_EXAMPLE/example/exs1.vhd" Line 57. sll can not have such operands in this context.
В чем проблема?
Ariel
Ну что, никто не хочет помочь? Вопрос-то простой, что-то не в порядке с синтаксисом. wacko.gif
Ariel
Народ, откликнитесь кто-нибудь... crying.gif
andrew_b
Цитата(Ariel @ Oct 6 2008, 08:45) *
Народ, откликнитесь кто-нибудь... crying.gif
Этот вопрос регулярно всплывает и здесь, и на Телесистемах.
Ваша проблема в том, что вы описываете триггеры (сигнал acc), которые работают по двум тактовым сигналам (LATCH и CLK). Таких триггеров нет. Нужно перенести LATCH в домен CLK, для загрузки acc отловить переход LATCH из 0 в 1. acc надо тактировать только CLK.
Ariel
Цитата(andrew_b @ Oct 6 2008, 09:17) *
Этот вопрос регулярно всплывает и здесь, и на Телесистемах.
Ваша проблема в том, что вы описываете триггеры (сигнал acc), которые работают по двум тактовым сигналам (LATCH и CLK). Таких триггеров нет. Нужно перенести LATCH в домен CLK, для загрузки acc отловить переход LATCH из 0 в 1. acc надо тактировать только CLK.

Постаряюсь обьяснить подробнее.
Триггеров на самом деле два. Первый представляет несколько обычных D-триггеров (по количеству разрядов шины VIDEO_BUS, в данном случае 3), которые по сигналу LATCH зашелкивают данные. Выход этих триггеров -шина acc (аккумулятор). Далее по сигналу CLK (он имеет большую, чем LATCH, частоту) данные acc сдвигаются влево на 1 и выходят на порт lvds.
На самом деле проблема именно в синтаксисе команды acc, потому что если эту строку отменить, то все работает, получается приложенная схема.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.