"бегущие огни" на VHDL

Программируемая логика - это не так уж и сложно. Разберемся вместе.
Ответить
Родился
Сообщения: 8
Зарегистрирован: Чт май 30, 2013 10:41:02

Сообщение Diprais »

есть плисина с частотой 8 Мгц и вот мне необходимо написать на VHDL схемку "бегущих огней" хотя бы просто - делитель и сдвиговый регистр чтобы бегали без всяких дополнительных примочек...может кто подсказать как это делать ?)
Вложения
Безымянный.png
схемка выглядит вот так..
(30.86 КБ) 1063 скачивания
Реклама
Друг Кота
Аватара пользователя
Сообщения: 7360
Зарегистрирован: Пт авг 28, 2009 21:34:30
Откуда: 845-й км.

Сообщение uldemir »

Код: Выделить всё

signal divier : std_logic_vector ( dofiga downto 0) := (others => '0');
signal beguchka : std_logic_vector (eche_bolshe_dofiga downto 0) := (0=>'1', others =>'0');

process (clk)
   if event'clk and clk='1' then
       divider <= divider + 1;
       if divider = 0 then
            beguchka <= beguchka(0) & beguchka (eche_bolshe_dofiga downto 1);
       end if;
   end if;
end process;
p.s. очередной курсак :))
Реклама
Родился
Сообщения: 8
Зарегистрирован: Чт май 30, 2013 10:41:02

Сообщение Diprais »

uldemir писал(а):

Код: Выделить всё

signal divier : std_logic_vector ( dofiga downto 0) := (others => '0');
signal beguchka : std_logic_vector (eche_bolshe_dofiga downto 0) := (0=>'1', others =>'0');

process (clk)
   if event'clk and clk='1' then
       divider <= divider + 1;
       if divider = 0 then
            beguchka <= beguchka(0) & beguchka (eche_bolshe_dofiga downto 1);
       end if;
   end if;
end process;
p.s. очередной курсак :))
не не курсак ) просто расчетка по предмету ))..это правда все ? )) этот маленький код заставит мои светодиоды бегать ?))
Друг Кота
Аватара пользователя
Сообщения: 7360
Зарегистрирован: Пт авг 28, 2009 21:34:30
Откуда: 845-й км.

Сообщение uldemir »

Понятия не имею. Просто привел пример как пишется делитель и сдвиговый регистр. Огоньки бегать будут. Правда совершенно не понял, какое отношение к вопросу имеет приведённая вами, совершенно не читаемая схема - поэтому её я игнорировал.
Ну и, конечно, я опустил все заголовки и описания.
Реклама
Эиком - электронные компоненты и радиодетали
Родился
Сообщения: 8
Зарегистрирован: Чт май 30, 2013 10:41:02

Сообщение Diprais »

uldemir писал(а):Понятия не имею. Просто привел пример как пишется делитель и сдвиговый регистр. Огоньки бегать будут. Правда совершенно не понял, какое отношение к вопросу имеет приведённая вами, совершенно не читаемая схема - поэтому её я игнорировал.
Ну и, конечно, я опустил все заголовки и описания.
не совсем понял эту строчку - beguchka <= beguchka(0) & beguchka (eche_bolshe_dofiga downto 1);
также не понял сколько же это дофига )) и что же писать в entity...
Реклама
Родился
Сообщения: 8
Зарегистрирован: Чт май 30, 2013 10:41:02

Сообщение Diprais »

uldemir писал(а):Понятия не имею. Просто привел пример как пишется делитель и сдвиговый регистр. Огоньки бегать будут. Правда совершенно не понял, какое отношение к вопросу имеет приведённая вами, совершенно не читаемая схема - поэтому её я игнорировал.
Ну и, конечно, я опустил все заголовки и описания.
незнаю почему не удалось прочитать схему, преподу понравилась, и работает без сбоев)
Реклама
Друг Кота
Аватара пользователя
Сообщения: 7360
Зарегистрирован: Пт авг 28, 2009 21:34:30
Откуда: 845-й км.

Сообщение uldemir »

Diprais писал(а):не совсем понял эту строчку - beguchka <= beguchka(0) & beguchka (eche_bolshe_dofiga downto 1);
Это и есть сдвиговый регистр. по фронту имульса (если дофига принять за 5) регистр из состояния 543210 перейдёт в 054321. Т.е. произойдёт сдвиг вправо. Надеюсь, догадаться как написать сдвиг влево особого труда не составит.
Diprais писал(а):незнаю почему не удалось прочитать схему,
Она - мутная и глаза свои портить об неё не собираюсь. Могли бы потрудиться словами описать, что вы там хотите получить. А мой телепатический модуль отключен за не уплату абонентской платы, и догадаться что такое newreg никак не удаётся. И еще, я к этой теме сделал узелок VHDL. Можете почитать другие темы посвященные этому языку.
p.s. Гыыыыыы. обведённый кусок тоже преподу понравился?
Безымянный.png
Родился
Сообщения: 8
Зарегистрирован: Чт май 30, 2013 10:41:02

Сообщение Diprais »

uldemir писал(а):
Diprais писал(а):не совсем понял эту строчку - beguchka <= beguchka(0) & beguchka (eche_bolshe_dofiga downto 1);
Это и есть сдвиговый регистр. по фронту имульса (если дофига принять за 5) регистр из состояния 543210 перейдёт в 054321. Т.е. произойдёт сдвиг вправо. Надеюсь, догадаться как написать сдвиг влево особого труда не составит.
Diprais писал(а):незнаю почему не удалось прочитать схему,
Она - мутная и глаза свои портить об неё не собираюсь. Могли бы потрудиться словами описать, что вы там хотите получить. А мой телепатический модуль отключен за не уплату абонентской платы, и догадаться что такое newreg никак не удаётся. И еще, я к этой теме сделал узелок VHDL. Можете почитать другие темы посвященные этому языку.
p.s. Гыыыыыы. обведённый кусок тоже преподу понравился?
Безымянный.png

понятно все - это наша песочница и тебе тут не место. мог бы сразу послать и сказать что я тупой а не писать всякую непонятную ересь и доказывать тут всем какой ты умный, если прошу совета то наверное же не знаю как это сделать, не все так разбираются как ты... классный сайт - обосрали, поржали с моей работы дали непонятный "совет что делать" и все ..уходи..сиди и задроть в свой vhdl и дальше.. ноулайфер...
Друг Кота
Аватара пользователя
Сообщения: 7360
Зарегистрирован: Пт авг 28, 2009 21:34:30
Откуда: 845-й км.

Сообщение uldemir »

какие мы обидчивые... А какие еще обидные слова мы знаем?

Дам последний совет. Хороший ответ можно дать только на хороший вопрос. На Ваш вопрос, который был сформулирован для меня понятно, я дал. Но, я не телепат и не ССовец, чтобы догадаться или клещами под пытками добывать дополнительную информацию. В конце-концов это нужно Вам, а не мне. Так что если Вы не способны сформулировать свою проблему, то вы не достойны ответа.
Друг Кота
Аватара пользователя
Сообщения: 3961
Зарегистрирован: Пн июл 13, 2009 14:37:39
Откуда: Московская область, наукоград.....

Сообщение Meteor »

uldemir в общем-то прав, опросы надо учиться задавать.
Предлагаю начать с хвоста.
Есть потребность иметь бегущие огни и реализовать их с применением ПЛИС.
О сдвиговом регистре уже написано - хотим 8 светодиодиков включать-выключать, значит в коде значение "дофига" будет равно 7 (т.к. счет идет до нуля).
В этот же регистр надо вписать начальное состояние.
Затем подумать, а как организовать кольцо?
Самый простой вариант - делать мультиплексирование, которое при самом "беге" будет подавать значение с конца в начало или наоборот.
Допустим всю эту махарайку выполнили. Тогда можно подумать "а как быстро должны бежать огоньки?"
Прикинули и вдруг решили, что меняться они должны 1 раз в секунду.
Следующим вопросом станет "а что надо сделать". Ответом станет делитель частоты.
Теперь начинается чистая арифметика. Допустим на ПЛИС подаётся частота 50 МГц, а смену кодов хотим с частотой 1Гц. Значит наш делитель должен поделить в 50 000 000 раз.
Быстренько хватаем калькулятор и набираем значение 50 е+6, затем жмём F5 и получаем код 2FAF080 (можно и F8-считать будет легче). Теперь видно, что нужен делитель в 26 разрядов. Значит параметр "еще больше чем дофига" будет равен 25. Вот теперь описывая синтез надо при достижении этих самых 50 млн, просто один раз сдвинуть регистр сдвига.
Загружая на вход компьютера "мусор", на выходе получим "мусор^32".
PS. Не работаю с: Proteus, Multisim, EWB, Micro-Cap... не спрашивайте даже
Контактная информация:
Ответить

Вернуться в «ПЛИС»