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

files

Участник
  • Постов

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

  • Посещение

Весь контент files


  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. Как я опции не крутил, все равно при синтезе этой схемы выдает сообщение «Ignored 1 CARRY_SUM primitive» и Quartus 13.0 и Quartus 8.1. Может, у кого есть мысли, что не так?
  8. Спасибо за комментарий. Я вот сделал такую примитивную схему. Ожидалось, что: – верхний элемент И (inst3) и элемент ИЛИ (inst4) упакуются в один LUT элемента, находящегося в арифметическом режиме; – второй элемент И (inst5) примет данные из этого LUT-а через цепь переноса; – всего для реализации этой схемы будет задействовано 2 LUT-а. У меня были правильные ожидания относительно этой схемы, или я что-то делаю не так? Реально же схема размещается в 3-х LE (каждый логический элемент в отдельном LUT), все LE в нормальном режиме, цепь переноса не задействована. Среда разработки – Quartus 13.0. Опции игнорирования CARRY вроде нет
  9. Огромное спасибо за комментарии. Однако относительно примитива 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: Однако, не могу разобраться с 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. Спасибо всем, кто написал советы. Буду пытаться пробовать этот способ. Этот вариант мне приходил в голову. Но для его реализации нужно знать формат POF/SOF файлов. Насколько мне известно, Альтера не афиширует эти форматы. Мне не удалось их найти. jks, Вы не знаете где их можно посмотреть?
  14. Неужели невозможно? Вручную можно менять содержимое LUT, а программно нельзя? Мне нужно по уже готовым проектам пройтись, там логика уже в LUT-ах.
  15. Вопрос знатокам тонкостей Quartus-а Через Resource Property Editor, который вызывается из Chip Planer можно просмотреть логическое уравнение LUT (SUM/Carry Equation) и соответствующую этому уравнению LUT Mask. В этом же редакторе имеется возможность изменять уравнение или маску. Короче, можно просматривать и менять содержимое LUT-ов. Мне нужно проделать аналогичную процедуру (считывание / изменение LUT Mask) но не вручную. Моя программа должна пройтись по проекту, считать LUT-маски и по определенному принципу изменить их. Вопрос: может, кто знает, где Quartus хранит LUT-маски или как получить к ним доступ?
  16. Уважаемые форумчане помогите, очень нужен формат альтеровского конфигурационного sof-файла. На сайте альтеры не нашел. Может кто направит, где искать.
  17. Здравствуйте. То, что вы предлагаете, даст эмуляцию обычной линейной памяти на параллельной физической среде ПЛИС. Не так ли? Представим себе, что мне нужно выполнить простую операцию над двумя элементами такой памяти. Я должен выбрать из памяти первый элемент и сохранить его где-то. Затем выбрать второй элемент. Затем выполнить операцию. Именно это. Меня интересует возможность ПЛИС естественным образом хранить двумерную структуру данных и выполнять над этими данными вычислительные действия. Привожу синтетический пример. Нужно считать содержимое из триггера текущего LE, сложить его по OR со значением из левого LE, результат умножить по AND с верхним LE и поместить в правый LE. И это действие нужно одновременно (синхронно) выполнить для всех LE некоторой квадратной (прямоугольной) области ПЛИС. Такое возможно?
  18. Подобная тема уже была, но закрылась. Интересует информация в контексте этого сообщения: Задача состоит в следующем: необходимо иметь возможность, двоичную матрицу n*n, где n – порядка 20-30, загружать в триггеры LE. И чтобы при этом двоичные значения геометрически располагались, так же как и в матрице. Ну и возможность выгрузить при необходимости эту матрицу (считать значения с триггеров LE) из FPGA. Возможно ли вообще такое в условиях отсутствия возможности явного обращения к LE и LAB? Может есть какие мегафункции для подобных действий?
  19. Здравствуйте. Есть проблема на стыке использования среды разработки Quartus и программирования. Стоит задача – управлять Quartus-ом из внешней программы. Конкретно. 1) Моя программа должна запустить Квартус. Но не просто запустить, а открыть в нем конкретный (заготовленный заранее) проект. Ну, этот пункт я думаю, что сделаю с подошью функции типа WinExec или аналогичной. А вот дальше, даже не знаю, как подступиться. 2) Моя программа должна уметь запустить процесс синтеза проекта. После этого по требованию пользователя она должна запустить фиттер, ассемблер ну и программер и выполнить прошивку. Короче, нужно чтобы внешняя программа могла делать то, что обычно делает пользователь, т.е. запускать на выполнение различные этапы проектирования. Язык программирования C++. Версия Quartus – II 8.0 Посоветуйте, как быть, что делать, в каком направлении двигаться?
  20. Уважаемые форумчане. Нужна программа, которая может выполнить синтез управляющих автоматов. Желательно, чтобы она на вход принимала ГСА (операторные и условные вершины) а на выходе выдавала систему булевых уравнений. Очень желательно, чтобы эта система уравнений была представлена в синтаксисе какого-либо HDL. И еще очень желательно, чтобы по ходу синтеза выполнялась оптимизация (оптимальное кодирование, минимизация и т.п). Может, кто встречал подобное ПО? А то кроме обычных FSM (на входе граф автомата, на выходе HDL в терминах "если то") ничего найти не удалось.
  21. Подскажите, пожалуйста новичку. Есть демонстрационная плата Altera DE1 или DE2, на плате имеется SRAM 512Кб. Нужно инициализировать ее данными (можно однократно, при конфигурировании ПЛИС). Возможно ли тут применить какие либо инициализационные файлы типа mif, hex? Или как по другому. В проекте требуется, чтобы в SRAM можно было поместить начальные данные. Одним словом, нужно в статическую память любым способом запихнуть данные.
×
×
  • Создать...