Перейти к содержанию

files

Участник
  • Публикаций

    21
  • Зарегистрирован

  • Посещение

Репутация

0 Обычный

Информация о files

  • Звание
    Участник

Посетители профиля

565 просмотров профиля
  1. Спасибо за ответы. Хорошо, регистр, настраивающий LUT, является частью конфигурационной памяти. А как, собственно, организована конфигурационная память? По адресному принципу или она представляет собой сдвиговый регистр?
  2. Всем добрый день. Возвращаясь к первоначальному вопросу темы. Меня интересует, как устроена конфигурационная память FPGA. Толком никаких подробностей найти не получается (по крайней мере, в документации Altera). Простой вопрос. Вот, например, 4-входовой LUT конфигурируется 16-разрядным двоичным словом на выполнение конкретной функции. Где хранится это слово? Реально в структуре FPGA существует 16-разрядный регистр, хранящий эти 16 разрядов и закрепленный за конкретным LUT-ом? Этот регистр, это часть конфигурационной памяти? Или этот регистр отделен от конфиг. памяти, и значения копируются в него в процессе конфигурирования из конфиг. памяти? Спасибо за ответы?
  3. Спасибо за ответы. Я всегда считал (поправьте, если это не так), что конфигурационная память в FPGA устроена вроде длинного сдвигового регистра, в который вдвигается битрстрим. Если это так, то как физически возможно прочитать битстрим из этого регистра не останавливая устройство?
  4. Всем добрый день. Возник такой вопрос. Можно ли в принципе считать из FPGA конфигурационный код (bitstream) в процессе работы устройства? Именно в процессе работы, не останавливая функционирование устройства. Спасибо за ответы.
  5. Здравствуйте, уважаемые специалисты по нюансам работы Quartus-а. Quartus оценивает максимальную частоту для проекта в виде двух величин Fmax и Restricted Fmax. Для некоторых проектов эти величины близки, а для некоторых различаются в разы. Посмотрел документацию Altera, почитал альтеровский форум. И там и там есть объяснение, в чем разница между этими величинами. Но все эти объяснения уж очень невнятные и непонятные. Уважаемые знатоки Quartus-а, может кто-нибудь нормально / доступно объяснить разницу между Fmax и Restricted Fmax? В каких случаях какую из этих величин следует использовать для оценки скоростных характеристик проекта?
  6. Здравствуйте. Мне недавно показали один странный эксперимент на Altera Cyclone II. Там довольно простая схема – 8-разрядный накапливающий умножитель. Схема тактируется от внешнего генератора 50MHz, частота которого умножается на PLL. Так вот если держать частоту тактирования в допустимых приделах (до 250 MHz), то схема работает без ошибок. Если же начинать увеличивать частоту тактирования выше допустимой (оговоренной в документации микросхемы), то схема, естественно, начинает давать ошибочные результаты. Но, если поднять частоту выше определенного порога, схема перестает сбоить и снова начинает считать правильные результаты. Выглядит это примерно так: 0….250 MHz – правильные результаты 251…800 MHz – неправильные результаты больше 800 MHz – снова правильные результаты В связи с этим возникает вопрос, как объяснить такое явление? Нет ли у FPGA функции throttling (душения, дросселированния) сигнала тактирования? Возможно ли, что при повышении частоты тактирования схемы выше некоторого порога, FPGA сама опускает частоту до нормативного значения и из-за этого схема начинает считать корректно?
  7. Цитата(SM @ Aug 27 2014, 19:18) По идее, должно упаковаться в два лута. Смотрите опции.... У меня, кстати, были случаи, когда свежий квартус не упаковывал как мне надо, как не танцуй вокруг него, а какой-то древний - делал без проблем заказанное...Как я опции не крутил, все равно при синтезе этой схемы выдает сообщение «Ignored 1 CARRY_SUM primitive» и Quartus 13.0 и Quartus 8.1. Может, у кого есть мысли, что не так?
  8. Цитата(SM @ Aug 27 2014, 14:17) Поняли все правильно. А то, что не получается - это значит, что физически нельзя развести то, что Вы хотите и куда хотите, с физического выхода переноса ячейки. Ну, либо, у Вас в опциях где-то стоит игнорирование CARRYСпасибо за комментарий. Я вот сделал такую примитивную схему. Ожидалось, что: – верхний элемент И (inst3) и элемент ИЛИ (inst4) упакуются в один LUT элемента, находящегося в арифметическом режиме; – второй элемент И (inst5) примет данные из этого LUT-а через цепь переноса; – всего для реализации этой схемы будет задействовано 2 LUT-а. У меня были правильные ожидания относительно этой схемы, или я что-то делаю не так? Реально же схема размещается в 3-х LE (каждый логический элемент в отдельном LUT), все LE в нормальном режиме, цепь переноса не задействована. Среда разработки – Quartus 13.0. Опции игнорирования CARRY вроде нет [attachment=86721:ris.jpg]
  9. Цитата(SM @ Jul 28 2014, 12:25) Возможность есть - для этого есть примитив CARRY_SUM (в старых версиях был только примитив CARRY) - используя его, можно указать, какая из функций идет на cout, какая на sum. Но! При этом надо учитывать физические ограничения возможности трассировки сигналов с выхода cout (да и на вход cin тоже), поэтому синтезатор может с легкостью Ваш CARRY_SUM выкинуть.Огромное спасибо за комментарии. Однако относительно примитива CARRY_SUM не все понятно. Я правильно понимаю принцип работы этого примитива: сигналы, которые я подаю на входы sin, cin разведуться на выходы суммы и переноса логического элемента LE FPGA? У меня такой разводки при помощи примитива CARRY_SUM добиться не удалось. Оба выхода LUT-а подключаются к выходам суммы, а цепь переноса оказывается не задействована. Или я неправильно понял, как работает примитив?
  10. FPGA Altera Cyclone до 4-го поколения включительно имеют в составе LE 4-входовой LUT. В арифметическом режиме этот LUT фактически интерпретируется как два 3-входовых LUT-а, один из которых реализует функцию суммирования, а другой переноса. Причем оба эти 3-входовых LUT-а имеют каждый свой отдельный выход. Вопрос к знающим людям: есть ли возможность реализовать на арифметической конфигурации LE (с двумя 3-входовыми LUT-ами) две произвольные логические функции от трех общих переменных?
  11. Ячейка динамической памяти построены на основе конденсатора и полевого транзистора. Очень нужно узнать, хотя бы приблизительно: - какова емкость конденсатора ячейки современной оперативной памяти (например, DDR3 SDRAM)? - каково сопротивление сток-исток полевого транзистора такой ячейки? Нигде не могу найти эту информацию. Может, кто может дать ссылку, где посмотреть
  12. Решил, что для быстрого решения моей задачи (считывание и модификация значений LUT Mask) наиболее подходит первый способ рекомендованный jks: Цитата(jks @ Mar 14 2013, 11:37) 1) Стандартный путь. Использовать встроенный TCL и Chip Editor. Однако, не могу разобраться с TCL командами Quartus Chip Planner: http://quartushelp.altera.com/current/merg...ner_ver_2.0.htm Да, есть команда get_node_info, позволяющая получить LUT Mask. Есть команда set_node_info, позволяющая установить LUT Mask. Но как мне позиционироваться на нужные мне LUT-ы? Единственная команда, которая содержит параметр location, это команда add_new_cell. С ее помощью я могу создать новую ячейку и при этом задать ее координаты в FPGA, после чего применять к ячейке get_node_info и set_node_info. Но как мне спозиционироватся (задать location) на уже существующую ячейку? Чтобы для нее применить команды get_node_info и set_node_info. Помогите. Все альтеровские рекомендации перерыл. Примеры, которые дал jks тоже не дают нужного результата. Не могу найти ответа
  13. Спасибо всем, кто написал советы. Цитата(jks @ Mar 14 2013, 11:37) 1) Стандартный путь. Использовать встроенный TCL и Chip Editor.Буду пытаться пробовать этот способ. Цитата(jks @ Mar 14 2013, 11:37) 3) Поменять ЛУТы в выходном файле (POF, SOF, RBF). Ну этот путь соответственно для исключительных случаев.Этот вариант мне приходил в голову. Но для его реализации нужно знать формат POF/SOF файлов. Насколько мне известно, Альтера не афиширует эти форматы. Мне не удалось их найти. jks, Вы не знаете где их можно посмотреть?
  14. Неужели невозможно? Вручную можно менять содержимое LUT, а программно нельзя? Цитата(Bad0512 @ Mar 11 2013, 03:56) Вариант 1 : Вместо LUTов ставьте RAM и подгружайте в неё любую логическую функцию. По ресурсу получится почти то же самое, что и на обычных LUTах (добавится логика записи в RAM). Мне нужно по уже готовым проектам пройтись, там логика уже в LUT-ах.
  15. Вопрос знатокам тонкостей Quartus-а Через Resource Property Editor, который вызывается из Chip Planer можно просмотреть логическое уравнение LUT (SUM/Carry Equation) и соответствующую этому уравнению LUT Mask. В этом же редакторе имеется возможность изменять уравнение или маску. Короче, можно просматривать и менять содержимое LUT-ов. Мне нужно проделать аналогичную процедуру (считывание / изменение LUT Mask) но не вручную. Моя программа должна пройтись по проекту, считать LUT-маски и по определенному принципу изменить их. Вопрос: может, кто знает, где Quartus хранит LUT-маски или как получить к ним доступ?