реклама на сайте
подробности

 
 
> Ошибка в операторе SLL
Ariel
сообщение Oct 3 2008, 09:33
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 820
Регистрация: 12-05-08
Из: Israel
Пользователь №: 37 440



Есть простая программа на 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.
В чем проблема?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 4)
Ariel
сообщение Oct 5 2008, 06:45
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 820
Регистрация: 12-05-08
Из: Israel
Пользователь №: 37 440



Ну что, никто не хочет помочь? Вопрос-то простой, что-то не в порядке с синтаксисом. wacko.gif
Go to the top of the page
 
+Quote Post
Ariel
сообщение Oct 6 2008, 04:45
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 820
Регистрация: 12-05-08
Из: Israel
Пользователь №: 37 440



Народ, откликнитесь кто-нибудь... crying.gif
Go to the top of the page
 
+Quote Post
andrew_b
сообщение Oct 6 2008, 05:17
Сообщение #4


Профессионал
*****

Группа: Свой
Сообщений: 1 975
Регистрация: 30-12-04
Из: Воронеж
Пользователь №: 1 757



Цитата(Ariel @ Oct 6 2008, 08:45) *
Народ, откликнитесь кто-нибудь... crying.gif
Этот вопрос регулярно всплывает и здесь, и на Телесистемах.
Ваша проблема в том, что вы описываете триггеры (сигнал acc), которые работают по двум тактовым сигналам (LATCH и CLK). Таких триггеров нет. Нужно перенести LATCH в домен CLK, для загрузки acc отловить переход LATCH из 0 в 1. acc надо тактировать только CLK.
Go to the top of the page
 
+Quote Post
Ariel
сообщение Oct 6 2008, 05:51
Сообщение #5


Знающий
****

Группа: Свой
Сообщений: 820
Регистрация: 12-05-08
Из: Israel
Пользователь №: 37 440



Цитата(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, потому что если эту строку отменить, то все работает, получается приложенная схема.
Прикрепленные файлы
Прикрепленный файл  sch.doc ( 119.5 килобайт ) Кол-во скачиваний: 48
 
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 30th July 2025 - 09:59
Рейтинг@Mail.ru


Страница сгенерированна за 0.014 секунд с 7
ELECTRONIX ©2004-2016