Pull to refresh

Comments 29

«always @(posedge clk or posedge reset)»

Хм, асинхронными ресетами балуетесь? Нехорошо…
И ещё непонятно, почему if превратился в мультиплексор. Простого элемента И хватило бы. Ведь

if (counter == 9) counter <= 0;
else counter <= counter + 1;


тождественно равно

counter <= (counter + 1) && (counter != 9);
картинки, показанные в статье прямо являются снимками с экрана RTLViewer. Не я их рисовал. RTLViewer показывает логическое представление схемы и оно весьма коррелирует с текстом программы на Verilog. А вот синтезатор я думаю наверняка из мультиплексора сделает то, что Вы написали — функцию AND.
А какая тогда польза от RTLViewer-а, если он показывает не ту реализацию, которая будет синтезирована, а наиболее очевидную?
Скорее всего от того какая внутренняя структура ПЛИС используется. Обычно AND Из мультиплексора делается, на другом типе ПЛИС может и по другому
Хм, никогда не приходилось работать с ПЛИСами на мультиплексорах. Таблицы истинности видел, ДНФ видел, про мультиплексоры только слышал. Интересно было бы узнать, что за модель ПЛИС использовалась при разводке.
возможно я чего-то недорассказал в статье, раз возникают такие вопросы. Конечно в плисах используются таблицы истинности.
Мультиплексор показывается в программе RTLViewer — но это всего лишь визуальная презентация того, что было написано в тексте Verilog или VHDL. Это дополнительный инструмент, чтобы понять так ли получилось как задумывалось или нет. Конечно компилятор затем всю логику упаковывает в имеющиеся в ПЛИС логические элементы и многое зависит от структуры логического элемента. Например логический элемент Altera MAX-II содержит не только look-up table но и мультиплексор для организации синхронной загрузки.

Я хотел показать в статье связь между текстом «программ» и результирующей «схемой».
Термин «программа» только ухудшает понимание HDL (Verilog,..).
Я бы посоветовал использовать термин «описание схемы».

я тоже не очень люблю асинхронные ресеты, но вот мой босс требует. Одна из причин — некоторые средства симуляции не могут симулировать проект при неопределенных начальных значениях регистров. Наличие такого ресета позволяет установить все регистры в некое исходное состояние
А знаете почему всегда необходим ресет (явно (ASIC) или не явно (FPGA))?
При включении значение триггера может быть любым (0 или 1).
Это как раз правильно. Это не требует дополнительный гейтов (area).
Хотя есть исключение: в последнем семействе Altera отказалась от асинхроого сброса у триггера.
>либо микроэлектроника в у нас, к сожалению, умерла безвозвратно.
Вот этот момент очень понравился.
Я как понимаю, основное преимущество FPGA над микроконтроллерами, это быстродействие?
Потому что при навид большем(может и ошибаюсь) возможностях микроконтроллеров, FPGA чувствительно дороже.
Да, прежде всего быстродействие и малые задержки. Ни один микроконтроллер не сможет обработать прерывание за наносекунды.
Помнится, в 90-х выпуск Компьютерры был посвящен FPGA
Приводились такие данные, что если бы CPU PC был реализован на архитектуре FPGA (а не на CISC/RISC), то программы (не все) выполнялись бы в 1000 раз быстрее. В качестве примера, афаик, приводилась программа распознавания отпечатков пальцев.
И тогда (скорее всего и сейчас) можно было прикупить FPGA-сопроцессоры (акселераторы) на PCI, под нужный софт, чтобы не тратиться на суперкомпьютеры.
открою небольшой секрет, уже давно компании, занимающиеся обработкой огромных потоков данных имеют отделы по разработке FPGA решений :) реально быстрее как раз в те самые тысячи раз на определенных задачах и когда архитектура заточена именно под них.
а можно раскрыть небольшой секрет еще чуть-чуть:
— какие именно решаются задачи?
— и еще бы keywords/links на современные FPGA акселераторы?
там где можно организовать поточную обработку входных данных, там FPGA и выиграет у обычных процессоров. Например сжатие видео может быть сделано быстрее.
А вот насчет FPGA акселераторов я не уверен — как правило главная проблема состоит передать данные в акселератор, а потом забрать их оттуда. Обычные компьютеры для этого не очень подходят (даже с PCI Express).
Вот когда FPGA чип станет центром компьютера, вот тогда дело другое…
Не удивительно, поскольку FPGA — это параллельные цепи, т.е. все функции в ней выполняются параллельно, но делается это ценой избыточности аппаратной — отсюда следует что расплачиваемся за быстродействие потреблением и площадью кристалла. Было бы очень накладно реализовывать все задачи на FPGA, темболее что большинство пользовательских программ последовательны… Впрочем, альтернатива не заставила себя долго ждать — как компромисс между последовательным выполнением и полным параллелизмом появились видеокарты с шейдерами…
SystemC «закопали», т.е. не развивают.
SV (SystemVerilog) сейчас в фаворе. (вполне заслужено)
Очень хороший и нужный топик! Однако, как человек, пытавшийся однажды (из спортивного интереса) реализовать на стартерките FPGA (SpartanIII) простейшую видеокарту с текстовым режимом (при этом не использующую прорву ресурсов), могу сказать, что только на бумаге (и в эмуляторе) все гладко :) Хотелось бы видеть топик, посвященный гонке битов и прочим граблям, на которые наступает начинающий FPGA-разработчик. Ну и как их избегать, естественно.
здорово, конечно :) Но и мы тоже не лаптем щи хлебали, в итоге мне удалось вообще ограничиться чуть ли не несколькими байтами памяти в реализации знакогенератора на FPGA. Правда пришлось делать постоянные запросы к внешней SRAM, где хранились образы символов и была видеопамять. Запросы оказались трудносинхронизируемыми :) За то я понял причины многих глюков знакогенераторов в древних видеокартах :)
Здесь можно дать один простой ответ — использовать «синхронный дизайн».
А дальше остануться только-то «тонкости».
вот об этом и хотелось бы прочитать :) Лично у меня все попытки добиться синхронности приводили к трудноуловимым глюкам или (и) к резкому увеличению числа элементов.
Синхронный дизайн это по сути одно Обязательное правило:
Для всех клоковых процессов список чувствительности должен быть всегда таким:
always @(posedge clk or pos(neg)edge reset)
Возьмите это правило за базис. И отталкиваетесь при проектировании от него.

ЗЫ electronix.ru/forum/
Там можно найти все ответы. (*Там и я отвечу на кокретный вопрос)
Sign up to leave a comment.

Articles