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

ViKo

Модератор
  • Постов

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

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


  1. А если при снижении питания микроконтроллер скакнет куда-нибудь в область данных, где случайно окажется последовательность, приводящая к записи в EEPROM? Чтобы этого не случалось, достаточно повесить на вход сброса супервизор питания. Или, как говорили BOD.
  2. При параллельном вычислении переноса какого-нибудь разряда нужно учитывать все младшие разряды слагаемых. При LUT 4-х-входовой можно вычислить перенос только для 2-разрядных чисел. Дальше придется объединять несколько LUT. А это - задержки, куда большие, чем в аппаратных цепях последовательного переноса. Скорее всего, лучшим решением будет комбинированная схема, где есть и параллельные и последовательные переносы.
  3. До этого еще был пост №36 (не мой), который, собственно, и дал толчок к дальнейшим "извращениям". А выводов я, вроде, никаких не делал, только предположения. Пока - мой код самый быстрый. Сомневаюсь. LUT в LE имеют 4 входа, и это убивает все возможности создания многоразрядных Carry Lookahead.
  4. С этим согласен. С CPLD не работал, похоже, там хватит входов в macrocell, чтобы сделать схему сравнения перед триггером.
  5. Правильно. В большинстве случаев. Но не всегда. В приведенной мной теме, когда складывается не пара чисел, а больше, аппаратные схемы последовательного переноса тормозят. Я тоже был удивлен... однако, факт! Мне кажется, что при определенных размерах складываемых слов параллельный перенос в ПЛИС может оказаться быстрее последовательного. Лично я этих размерностей не нашел.
  6. С чего вы взяли, что он должен быть аппаратным? Carry Lookahead означает, что перенос формируется не последовательно, а параллельно, на основании входных данных. В микросхемах счетчиков часто используется. Повторю ответ - я могу в ПЛИС сделать что угодно, в том числе и Carry Lookahead. Да ну? Я думаю, на основании вышесказанного должно быть понятно. Как по-вашему, если включено IGNORE CARRY BUFFERS, во что превращаются цепи переноса в любой ПЛИС, например, в Cyclone III?
  7. LUT есть в каждом LE :) Смысл? - я вам привел конкретную тему, дочитайте ее до конца.
  8. Вот для этого и нужен компаратор (цифровой, схема сравнения). Если нерабочими должны быть коды больше или равные 12, нужно объединить по И разряды Q3 и Q2 счетчика, и завести результат на Reset.
  9. Я бы добавил "в большинстве случаев". Потому что обычно не счетчик определяет быстродействие устройства. Ибо как тогда объяснить "муки творчества" в этой теме: http://electronix.ru/forum/index.php?showtopic=80083 Обратите внимание, что когда включено IGNORE CARRY BUFFERS ON, то быстродействие счетчика увеличивается. Т.е. используется что-то подобное схемам на упомянутой BlackOps страннице.
  10. Можно сделать: 1. Внешний сброс. Совсем несложно. Имеется почти в каждом микроконтроллере и др., полезная штука. Завести на свои счетчики и т.п. 2. Внутренний сброс. При включении в течение нескольких тактов сформировать сигнал сброса. Завести туда же. 3. Как сказал des00 - "самосинхронную схему". Обнаруживать нерабочее состояние (схемами сравнения - компараторами) счетчиков и т.п. и вырабатывать сигнал сброса. Завести туда же. Последнее лучше предыдущих тем, что при любых сбоях (по питанию) восстанавливает работоспособность схемы. Лично я сделал бы второй вариант (а еще лучше вместе с первым).
  11. "Влез" в стандарт SV1800-2009, в раздел 27. Generate constructs. В примере 1 написано: // "generate", "endgenerate" keywords are not required. Однако Quartus 9.1 такого не понимает, ошибки пишет. И хорошо! А то было бы еще "круче" - только благодаря genvar и именованным блокам begin - end можно было бы увидеть, что это генерация объектов. Чем ни чудо? А еще написано: Generate blocks in loop generate constructs can be named or unnamed Осталось только genvar убрать :)
  12. Повторю уже сказанный совет - сделайте на микроконтроллере, например, PIC10F200 - думаю, помимо того, что проще, окажется еще и дешевле!
  13. Вот как было у меня в ACEX: Total dedicated input pins used: 3/6 ( 50%) Total I/O pins used: 83/96 ( 86%) Total logic cells used: 1272/1728 ( 73%) Total embedded cells used: 23/96 ( 23%) Total EABs used: 6/6 (100%) Average fan-in: 2.53/4 ( 63%) Total fan-in: 3227/6912 ( 46%) А превысить можно допустимую рассеиваимую мощность, если все элементы ПЛИС будут работать на большой частоте.
  14. 2 CaPpuCcino & des00 Видел, что писали. Это понятно. Только это "вид сзади". Когда написано, все понятно. А когда только приступаешь к описанию, что выбирать? В-принципе, можно считать вопрос исчерпанным... Я лучше в стандарт залезу :)
  15. Я понимаю, что "нет". Для того они обе и существуют. Вот другой пример. Можно ли там обойтись без generate? Могу и сам проверить на досуге, не сложно. Привожу для иллюстрации своего уже несколько раз озвученного вопроса. Может быть, кто-то уже имеет точный критерий, когда он применяет generate, а когда просто for. module Test2_wor (input logic [6:0] in, output wor out); generate genvar i; for (i = 0; i <= 6; i++) begin : wor_gen assign out = in[i]; end : wor_gen endgenerate endmodule
  16. В этом и заключался мой вопрос:)
  17. Вот - простое и правильное решение для понимания теоремы. Рисуем синус, несколько периодов (не важно, просто, чтобы вспомнить, какой он, синус). Рисуем точечки на синусе - выборки, с частотой ровно в 2 раза чаще, чем период синуса. С любым понравившимся сдвигом по фазе. Теперь пытаемся нарисовать другие синусоиды, проходящие через те же точки. Гармоники не подходят, ибо они уже за пределами теоремы. Можем? Запросто. С той же частотой, только с другой фазой и амплитудой. Теперь на том же синусе рисуем выборки чуть чаще. Пытаемся нарисовать другие синусоиды. Нет! Невозможно!
  18. Как оно точно в Max называется, не скажу. В разделе Assignments есть редактор выводов в корпусе. Можно в схеме задать атрибут ножки.
  19. http://www.altera.com/literature/lit-f10.jsp Загляните на эту страницу. Скачайте описание ножек FLEX10K http://www.altera.com/literature/lit-dp.js...gory=FLEX%2010K Те ножки, что I/O, могут быть пользовательскими входами или выходами (USER I/O), некоторые могут выполнять и другие специальные функции. Все зависит от той "схемы", которую вы в ПЛИС занесете (называется - конфигурирование). Как конкретно устроен механизм конфигурирования схемы - никому знать не нужно. После того, как схема сконфигурирована, происходит ее инициализация, и потом - работа.
  20. Думаю, вы правы. "Принципиальнее" той схемы, что в даташите, никто, кроме альтеровцев, не видел. Да и не нужна она никому. К примеру, нужна ли тем, кто использует микроконтроллеры, схема микроконтроллера? Ваш преподаватель над вами издевается, похоже. Можно еще понять, когда нужно знать устройство выводов микросхемы, скажем, какие уровни сигналов нужны, какой ток могут выдать. Это иногда как-то изображается. Еще бывают IBIS модели выводов (мне не знакомы). Может, преподаватель хочет определить нагрузочные характеристики выходов?
  21. потому, что коэффициент m >= 8. При меньшем будут триггеры. По крайней мере, для EP3C5F256C8. Видимо, это граница. Вот код попроще. Тоже ложится в память. module TestFor #(parameter L = 8) (input wire clk, input wire [7:0] din, output logic [7:0] dout); bit[7:0] ff[0:L-1]; always_ff @(posedge clk) begin ff[0] <= din; for (int k=0; k<(L-1); k++) ff[k+1] <= ff[k]; end assign dout = ff[L-1]; endmodule Правда, это никак не проясняет "чудо for". У вас используется конкатенация битов.
  22. В приведенном выше моем же коде вижу массив из 5 х 8 триггеров. Могу описать и с помощью generate, и каждый триггер в отдельности, однако обошелся "обычным" for. Как? и Почему? Вот скажем - что нужно добавить к моему коду, чтобы for уже не "прокатывал"?
  23. Это Вы специально запутываете новичка, чтобы не сразу нашел? Подсказка - Quartus. Если это курсовая работа, значит, чему-то в университете уже учили. И на чем-то. Где был Shaco во время лекций?
  24. Судя по комментариям, не источник тактирования для ПЛЛ должен быть включен до запуска ПЛЛ, а для системных тактов должна использоваться ПЛЛ после того, как войдет в рабочий режим.
×
×
  • Создать...