- Вложения
-
- Безымянный.png
- схемка выглядит вот так..
- (30.86 КБ) 1063 скачивания
"бегущие огни" на VHDL
- Сообщения: 8
- Зарегистрирован: Чт май 30, 2013 10:41:02
есть плисина с частотой 8 Мгц и вот мне необходимо написать на VHDL схемку "бегущих огней" хотя бы просто - делитель и сдвиговый регистр чтобы бегали без всяких дополнительных примочек...может кто подсказать как это делать ?)
- Реклама
Код: Выделить всё
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;- Сообщения: 8
- Зарегистрирован: Чт май 30, 2013 10:41:02
не не курсак ) просто расчетка по предмету ))..это правда все ? )) этот маленький код заставит мои светодиоды бегать ?))uldemir писал(а):p.s. очередной курсакКод: Выделить всё
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;
Понятия не имею. Просто привел пример как пишется делитель и сдвиговый регистр. Огоньки бегать будут. Правда совершенно не понял, какое отношение к вопросу имеет приведённая вами, совершенно не читаемая схема - поэтому её я игнорировал.
Ну и, конечно, я опустил все заголовки и описания.
Ну и, конечно, я опустил все заголовки и описания.
- Сообщения: 8
- Зарегистрирован: Чт май 30, 2013 10:41:02
не совсем понял эту строчку - beguchka <= beguchka(0) & beguchka (eche_bolshe_dofiga downto 1);uldemir писал(а):Понятия не имею. Просто привел пример как пишется делитель и сдвиговый регистр. Огоньки бегать будут. Правда совершенно не понял, какое отношение к вопросу имеет приведённая вами, совершенно не читаемая схема - поэтому её я игнорировал.
Ну и, конечно, я опустил все заголовки и описания.
также не понял сколько же это дофига )) и что же писать в entity...
- Реклама
- Сообщения: 8
- Зарегистрирован: Чт май 30, 2013 10:41:02
незнаю почему не удалось прочитать схему, преподу понравилась, и работает без сбоев)uldemir писал(а):Понятия не имею. Просто привел пример как пишется делитель и сдвиговый регистр. Огоньки бегать будут. Правда совершенно не понял, какое отношение к вопросу имеет приведённая вами, совершенно не читаемая схема - поэтому её я игнорировал.
Ну и, конечно, я опустил все заголовки и описания.
Это и есть сдвиговый регистр. по фронту имульса (если дофига принять за 5) регистр из состояния 543210 перейдёт в 054321. Т.е. произойдёт сдвиг вправо. Надеюсь, догадаться как написать сдвиг влево особого труда не составит.Diprais писал(а):не совсем понял эту строчку - beguchka <= beguchka(0) & beguchka (eche_bolshe_dofiga downto 1);
Она - мутная и глаза свои портить об неё не собираюсь. Могли бы потрудиться словами описать, что вы там хотите получить. А мой телепатический модуль отключен за не уплату абонентской платы, и догадаться что такое newreg никак не удаётся. И еще, я к этой теме сделал узелок VHDL. Можете почитать другие темы посвященные этому языку.Diprais писал(а):незнаю почему не удалось прочитать схему,
p.s. Гыыыыыы. обведённый кусок тоже преподу понравился?
- Сообщения: 8
- Зарегистрирован: Чт май 30, 2013 10:41:02
uldemir писал(а):Это и есть сдвиговый регистр. по фронту имульса (если дофига принять за 5) регистр из состояния 543210 перейдёт в 054321. Т.е. произойдёт сдвиг вправо. Надеюсь, догадаться как написать сдвиг влево особого труда не составит.Diprais писал(а):не совсем понял эту строчку - beguchka <= beguchka(0) & beguchka (eche_bolshe_dofiga downto 1);Она - мутная и глаза свои портить об неё не собираюсь. Могли бы потрудиться словами описать, что вы там хотите получить. А мой телепатический модуль отключен за не уплату абонентской платы, и догадаться что такое newreg никак не удаётся. И еще, я к этой теме сделал узелок VHDL. Можете почитать другие темы посвященные этому языку.Diprais писал(а):незнаю почему не удалось прочитать схему,
p.s. Гыыыыыы. обведённый кусок тоже преподу понравился?
понятно все - это наша песочница и тебе тут не место. мог бы сразу послать и сказать что я тупой а не писать всякую непонятную ересь и доказывать тут всем какой ты умный, если прошу совета то наверное же не знаю как это сделать, не все так разбираются как ты... классный сайт - обосрали, поржали с моей работы дали непонятный "совет что делать" и все ..уходи..сиди и задроть в свой vhdl и дальше.. ноулайфер...
какие мы обидчивые... А какие еще обидные слова мы знаем?
Дам последний совет. Хороший ответ можно дать только на хороший вопрос. На Ваш вопрос, который был сформулирован для меня понятно, я дал. Но, я не телепат и не ССовец, чтобы догадаться или клещами под пытками добывать дополнительную информацию. В конце-концов это нужно Вам, а не мне. Так что если Вы не способны сформулировать свою проблему, то вы не достойны ответа.
Дам последний совет. Хороший ответ можно дать только на хороший вопрос. На Ваш вопрос, который был сформулирован для меня понятно, я дал. Но, я не телепат и не ССовец, чтобы догадаться или клещами под пытками добывать дополнительную информацию. В конце-концов это нужно Вам, а не мне. Так что если Вы не способны сформулировать свою проблему, то вы не достойны ответа.
- Сообщения: 3961
- Зарегистрирован: Пн июл 13, 2009 14:37:39
- Откуда: Московская область, наукоград.....
uldemir в общем-то прав, опросы надо учиться задавать.
Предлагаю начать с хвоста.
Есть потребность иметь бегущие огни и реализовать их с применением ПЛИС.
О сдвиговом регистре уже написано - хотим 8 светодиодиков включать-выключать, значит в коде значение "дофига" будет равно 7 (т.к. счет идет до нуля).
В этот же регистр надо вписать начальное состояние.
Затем подумать, а как организовать кольцо?
Самый простой вариант - делать мультиплексирование, которое при самом "беге" будет подавать значение с конца в начало или наоборот.
Допустим всю эту махарайку выполнили. Тогда можно подумать "а как быстро должны бежать огоньки?"
Прикинули и вдруг решили, что меняться они должны 1 раз в секунду.
Следующим вопросом станет "а что надо сделать". Ответом станет делитель частоты.
Теперь начинается чистая арифметика. Допустим на ПЛИС подаётся частота 50 МГц, а смену кодов хотим с частотой 1Гц. Значит наш делитель должен поделить в 50 000 000 раз.
Быстренько хватаем калькулятор и набираем значение 50 е+6, затем жмём F5 и получаем код 2FAF080 (можно и F8-считать будет легче). Теперь видно, что нужен делитель в 26 разрядов. Значит параметр "еще больше чем дофига" будет равен 25. Вот теперь описывая синтез надо при достижении этих самых 50 млн, просто один раз сдвинуть регистр сдвига.
Предлагаю начать с хвоста.
Есть потребность иметь бегущие огни и реализовать их с применением ПЛИС.
О сдвиговом регистре уже написано - хотим 8 светодиодиков включать-выключать, значит в коде значение "дофига" будет равно 7 (т.к. счет идет до нуля).
В этот же регистр надо вписать начальное состояние.
Затем подумать, а как организовать кольцо?
Самый простой вариант - делать мультиплексирование, которое при самом "беге" будет подавать значение с конца в начало или наоборот.
Допустим всю эту махарайку выполнили. Тогда можно подумать "а как быстро должны бежать огоньки?"
Прикинули и вдруг решили, что меняться они должны 1 раз в секунду.
Следующим вопросом станет "а что надо сделать". Ответом станет делитель частоты.
Теперь начинается чистая арифметика. Допустим на ПЛИС подаётся частота 50 МГц, а смену кодов хотим с частотой 1Гц. Значит наш делитель должен поделить в 50 000 000 раз.
Быстренько хватаем калькулятор и набираем значение 50 е+6, затем жмём F5 и получаем код 2FAF080 (можно и F8-считать будет легче). Теперь видно, что нужен делитель в 26 разрядов. Значит параметр "еще больше чем дофига" будет равен 25. Вот теперь описывая синтез надо при достижении этих самых 50 млн, просто один раз сдвинуть регистр сдвига.
Загружая на вход компьютера "мусор", на выходе получим "мусор^32".
PS. Не работаю с: Proteus, Multisim, EWB, Micro-Cap... не спрашивайте даже
PS. Не работаю с: Proteus, Multisim, EWB, Micro-Cap... не спрашивайте даже


