Comments 29
«always @(posedge clk or posedge reset)»
Хм, асинхронными ресетами балуетесь? Нехорошо…
Хм, асинхронными ресетами балуетесь? Нехорошо…
0
И ещё непонятно, почему if превратился в мультиплексор. Простого элемента И хватило бы. Ведь
if (counter == 9) counter <= 0;
else counter <= counter + 1;
тождественно равно
counter <= (counter + 1) && (counter != 9);
if (counter == 9) counter <= 0;
else counter <= counter + 1;
тождественно равно
counter <= (counter + 1) && (counter != 9);
0
картинки, показанные в статье прямо являются снимками с экрана RTLViewer. Не я их рисовал. RTLViewer показывает логическое представление схемы и оно весьма коррелирует с текстом программы на Verilog. А вот синтезатор я думаю наверняка из мультиплексора сделает то, что Вы написали — функцию AND.
0
А какая тогда польза от RTLViewer-а, если он показывает не ту реализацию, которая будет синтезирована, а наиболее очевидную?
0
Скорее всего от того какая внутренняя структура ПЛИС используется. Обычно AND Из мультиплексора делается, на другом типе ПЛИС может и по другому
0
Хм, никогда не приходилось работать с ПЛИСами на мультиплексорах. Таблицы истинности видел, ДНФ видел, про мультиплексоры только слышал. Интересно было бы узнать, что за модель ПЛИС использовалась при разводке.
0
возможно я чего-то недорассказал в статье, раз возникают такие вопросы. Конечно в плисах используются таблицы истинности.
Мультиплексор показывается в программе RTLViewer — но это всего лишь визуальная презентация того, что было написано в тексте Verilog или VHDL. Это дополнительный инструмент, чтобы понять так ли получилось как задумывалось или нет. Конечно компилятор затем всю логику упаковывает в имеющиеся в ПЛИС логические элементы и многое зависит от структуры логического элемента. Например логический элемент Altera MAX-II содержит не только look-up table но и мультиплексор для организации синхронной загрузки.
Я хотел показать в статье связь между текстом «программ» и результирующей «схемой».
Мультиплексор показывается в программе RTLViewer — но это всего лишь визуальная презентация того, что было написано в тексте Verilog или VHDL. Это дополнительный инструмент, чтобы понять так ли получилось как задумывалось или нет. Конечно компилятор затем всю логику упаковывает в имеющиеся в ПЛИС логические элементы и многое зависит от структуры логического элемента. Например логический элемент Altera MAX-II содержит не только look-up table но и мультиплексор для организации синхронной загрузки.
Я хотел показать в статье связь между текстом «программ» и результирующей «схемой».
0
я тоже не очень люблю асинхронные ресеты, но вот мой босс требует. Одна из причин — некоторые средства симуляции не могут симулировать проект при неопределенных начальных значениях регистров. Наличие такого ресета позволяет установить все регистры в некое исходное состояние
0
Это как раз правильно. Это не требует дополнительный гейтов (area).
Хотя есть исключение: в последнем семействе Altera отказалась от асинхроого сброса у триггера.
Хотя есть исключение: в последнем семействе Altera отказалась от асинхроого сброса у триггера.
0
>либо микроэлектроника в у нас, к сожалению, умерла безвозвратно.
Вот этот момент очень понравился.
Вот этот момент очень понравился.
0
Я как понимаю, основное преимущество FPGA над микроконтроллерами, это быстродействие?
Потому что при навид большем(может и ошибаюсь) возможностях микроконтроллеров, FPGA чувствительно дороже.
Потому что при навид большем(может и ошибаюсь) возможностях микроконтроллеров, FPGA чувствительно дороже.
0
Да, прежде всего быстродействие и малые задержки. Ни один микроконтроллер не сможет обработать прерывание за наносекунды.
0
Помнится, в 90-х выпуск Компьютерры был посвящен FPGA
Приводились такие данные, что если бы CPU PC был реализован на архитектуре FPGA (а не на CISC/RISC), то программы (не все) выполнялись бы в 1000 раз быстрее. В качестве примера, афаик, приводилась программа распознавания отпечатков пальцев.
И тогда (скорее всего и сейчас) можно было прикупить FPGA-сопроцессоры (акселераторы) на PCI, под нужный софт, чтобы не тратиться на суперкомпьютеры.
Приводились такие данные, что если бы CPU PC был реализован на архитектуре FPGA (а не на CISC/RISC), то программы (не все) выполнялись бы в 1000 раз быстрее. В качестве примера, афаик, приводилась программа распознавания отпечатков пальцев.
И тогда (скорее всего и сейчас) можно было прикупить FPGA-сопроцессоры (акселераторы) на PCI, под нужный софт, чтобы не тратиться на суперкомпьютеры.
0
открою небольшой секрет, уже давно компании, занимающиеся обработкой огромных потоков данных имеют отделы по разработке FPGA решений :) реально быстрее как раз в те самые тысячи раз на определенных задачах и когда архитектура заточена именно под них.
0
а можно раскрыть небольшой секрет еще чуть-чуть:
— какие именно решаются задачи?
— и еще бы keywords/links на современные FPGA акселераторы?
— какие именно решаются задачи?
— и еще бы keywords/links на современные FPGA акселераторы?
0
там где можно организовать поточную обработку входных данных, там FPGA и выиграет у обычных процессоров. Например сжатие видео может быть сделано быстрее.
А вот насчет FPGA акселераторов я не уверен — как правило главная проблема состоит передать данные в акселератор, а потом забрать их оттуда. Обычные компьютеры для этого не очень подходят (даже с PCI Express).
Вот когда FPGA чип станет центром компьютера, вот тогда дело другое…
А вот насчет FPGA акселераторов я не уверен — как правило главная проблема состоит передать данные в акселератор, а потом забрать их оттуда. Обычные компьютеры для этого не очень подходят (даже с PCI Express).
Вот когда FPGA чип станет центром компьютера, вот тогда дело другое…
+1
Не удивительно, поскольку FPGA — это параллельные цепи, т.е. все функции в ней выполняются параллельно, но делается это ценой избыточности аппаратной — отсюда следует что расплачиваемся за быстродействие потреблением и площадью кристалла. Было бы очень накладно реализовывать все задачи на FPGA, темболее что большинство пользовательских программ последовательны… Впрочем, альтернатива не заставила себя долго ждать — как компромисс между последовательным выполнением и полным параллелизмом появились видеокарты с шейдерами…
0
Кстати, для изучения VHDL/Verilog/SystemC отлично подойдёт среда Aldec Active-HDL Student Edition.
0
Очень хороший и нужный топик! Однако, как человек, пытавшийся однажды (из спортивного интереса) реализовать на стартерките FPGA (SpartanIII) простейшую видеокарту с текстовым режимом (при этом не использующую прорву ресурсов), могу сказать, что только на бумаге (и в эмуляторе) все гладко :) Хотелось бы видеть топик, посвященный гонке битов и прочим граблям, на которые наступает начинающий FPGA-разработчик. Ну и как их избегать, естественно.
+1
:-)
а как вам вот это: www.marsohod.org/index.php/projects/7-videogametennis?
Это видео-игра реализованная в CPLD с 240 элементами!
а как вам вот это: www.marsohod.org/index.php/projects/7-videogametennis?
Это видео-игра реализованная в CPLD с 240 элементами!
+1
здорово, конечно :) Но и мы тоже не лаптем щи хлебали, в итоге мне удалось вообще ограничиться чуть ли не несколькими байтами памяти в реализации знакогенератора на FPGA. Правда пришлось делать постоянные запросы к внешней SRAM, где хранились образы символов и была видеопамять. Запросы оказались трудносинхронизируемыми :) За то я понял причины многих глюков знакогенераторов в древних видеокартах :)
0
Здесь можно дать один простой ответ — использовать «синхронный дизайн».
А дальше остануться только-то «тонкости».
А дальше остануться только-то «тонкости».
+1
вот об этом и хотелось бы прочитать :) Лично у меня все попытки добиться синхронности приводили к трудноуловимым глюкам или (и) к резкому увеличению числа элементов.
0
Синхронный дизайн это по сути одно Обязательное правило:
Для всех клоковых процессов список чувствительности должен быть всегда таким:
always @(posedge clk or pos(neg)edge reset)
Возьмите это правило за базис. И отталкиваетесь при проектировании от него.
ЗЫ electronix.ru/forum/
Там можно найти все ответы. (*Там и я отвечу на кокретный вопрос)
Для всех клоковых процессов список чувствительности должен быть всегда таким:
always @(posedge clk or pos(neg)edge reset)
Возьмите это правило за базис. И отталкиваетесь при проектировании от него.
ЗЫ electronix.ru/forum/
Там можно найти все ответы. (*Там и я отвечу на кокретный вопрос)
+1
Огромное спасибо!
Жду новых статей.
Жду новых статей.
0
Можно востановить картинки в данной статье? Спасибо.
0
Sign up to leave a comment.
Схемотехника и язык программирования Verilog