Jump to content

    

Flip-fl0p

Свой
  • Content Count

    883
  • Joined

  • Last visited

Community Reputation

0 Обычный

About Flip-fl0p

  • Rank
    «Я знаю, что я ничего не знаю»(С)
  • Birthday 01/03/1990

Контакты

  • Сайт
    http://
  • ICQ
    226550164

Информация

  • Город
    Санкт-Петербург

Старые поля

  • skype
    Flip-fl0p
  • Vkontakte
    https://vk.com/id4024060

Recent Profile Visitors

4934 profile views
  1. Так может надо не подстраиваться под чужие проекты, а свой проект написать ? И Вы моделирование запускали ?
  2. А Вы знаете в чем разница между variable и signal ?
  3. Спасибо ! Вроде нашёл где сайта Xilinx скачать ядро декодера. Странно, что во многих IP используется этот декодер, а как отдельное ядро он отсутствует. Буду разбираться, как запустить скачанное с сайта ядро.
  4. Понадобился мне в проекте декодер 8b/10b. Но я почему-то не наблюдаю его в IP каталоге. Неужели в 2019 году уже никому не нужна кодировка 8/10 и за ненадобностью в Vivado выкинули это ядро ? Подскажите, а где искать ядро декодера ?
  5. Ваша картинка с телефона открывается в ужасающей низком качестве. Разобрать, что там написано невозможно.
  6. Ну так нужен протокол общения. Вот и делайте его.
  7. Не работать со схемный вводом. Что у Altera, что у Xilinx - схемный ввод порождает больше проблем, чем ускоряет разработку.
  8. Смотреть надо на код и очень внимательно. Ткнул я в Ваши файлы. и слегка СИЛЬНО ! ужаснулся. Например модуль timer8bit - это же тихий ужас. Работа по двум фронтам. Да ещё из разных always блоков с одним регистром... С модулем timer16bit ситуация та-же. Сделайте правильно один таймер, и меняйте его коэффициент пересчета при помощи параметров. Бегло просмотрел другие модули - там тоже жуть жуткая. Мало того ,что код абсолютно не читаемый. Комментариев нет. Форматирования нет. Так ещё по стилю похоже что Вы пытаетесь писать на HDL также как и в программировании. Такой подход с FPGA не пройдет. if(cnt_g == st_param + k_param + a_param + c_param + d_param + (e_param - b_param)) Я даже представить боюсь во что такое будет синтезироваться. Учитывая, что почти все сигналы формируются в разных доменах, да ещё и по разным фронтам.... Извините меня, мне конечно ещё самому учиться и учиться. Но я бы за такой код бил по рукам сильно ругал сотрудника
  9. Для начала вопрос. Что такое обратный код ? После ответа на это вопрос частный случай Вашей задачи ищется первой же ссылкой в гугле. А если немного постараться - то этот частный случай легко переделывается в решение Вашей задачи. Во всяком случая я исхожу из того, что изображено на Вашем рисунке . Хотя лично мне кажется, что на рисунке какое-то уж простое задание....
  10. А шо это за такой супер-секретный код, который не работает, а мы аки Настрадамусы угадать пытаемся где заковыка ? Может лучше выложить этот код сюда, тогда и сразу конструктивный диалог состоится...
  11. Стесняюсь спросить, а Вы моделировали Ваш код ?
  12. И у альтеры. Называется show ahead FIFO.
  13. А почему так лучше не делать. Лично я бы делал так: 1. Синхронизировал все сигналы SPI с внутренней частотой ПЛИС. 2. В случае если SPI медленный - поставил бы простейший антидребезг, чтобы исключить влияние пологих фронтов сигналов SPI. 3. Поставил бы детекторы фронтов на сигналы SPI. 4. Вся схема работала бы на внутренней частоте ПЛИС, а вся обработка бы велась событийно - по детектированным фронтам SPI. Если можно как-то иначе работать - расскажите пожалуйста, всегда интересно узнавать что-то альтернативное.
  14. Букв достаточно, чтобы компонент можно было применять для любого вида кнопок с любым активным уровнем. Алгоритм простой: Мы настраиваем порог, досчитав до которого делается вывод о том, что кнопка нажата. Т.е. если кнопка нажата - счетчик считает вверх. Кнопка отпущена - счетчик считает вниз. Соответственно если счетчик смог досчитать вверх - значит у нас формируется сигнал button_pressed равный лог.1, говорящая о том, что кнопка была нажата. Из преимуществ я вижу: 1. Возможность указания активного уровня сигнала, что позволит использовать любые кнопки. 2. Отсутствие привязки к активному уровню сигнала, за счет того, что нажатой кнопке всегда соответствует флаг button_pressed = '1' . 3. Максимальная простота работы модуля. 4. Хоть для современных FPGA уже не так актуально, однако мой модуль занимает минимальное количество ресурсов. 5. Контроль правильности вводимых параметров. 6. Защита от метастабильности. 7. Ну и самое главное, как я считаю - у меня достаточно подробно описано как, что и зачем в модуле сделано. В вашем модуле мне не нравится: 1. вот эта строчка: if (ireset = '1') then cnt <= (others => '0'); odata <= idata; Асинхронно установить триггер в то значение, которое на входе. И это значение выдать в качестве флага нажатой кнопки.... Ну не знаю, не знаю. А как-же борьба с метастабильностью ? Или Вы считаете, что асинхронная установка триггера лишена метастабильного состояния ? Да и по ресурсам как-то слишком много у Вас уходит на обработку банального дребезга. И идеологически я не считаю, что считывать состояния кнопки через какое-то время - это правильное решение. P.S. и я не экономлю строчки кода. Я экономлю время, которое затрачивается на разработку.