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

Yuri124

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

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

  • Посещение

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


  1. Следует. Если длины отдельных сигналов в шине не выровнены. Ну и еще учитывается разница в распространении сигналов от пина чипа до его внутреннего вх/вых блока.
  2. Электронный ключ - в мою молодость так называлось устройство для передачи текстов азбукой Морзе. Сейчас - устройство для осуществления доступа к ч-л (в квартиру, к кошельку, к аккаунту или необходимой для работы программе). Думаю, это неполный перечень. Ваше устройство ближе к аналоговому коммутатору - которых в FPGA в виде доступных "кирпичиков" попросту нет. "Жаргоны сантехнические" говорите - вам же посоветовали литературы, где можно ознакомиться с этой "сантехникой". Да и в документации на FPGA с их помощью "воду готовят" - читайте, изучайте, непонятное - спрашивайте. Но Вы - на своей волне... Успехов в проекте!
  3. хорошо заданный вопрос содержит половину ответа. Для этого необходимо, чтобы вопрошающий хорошо представлял себе суть вопрошаемого. Вам неоднократно указывали на конкретные пробелы в Вашем представлении - но Вы, в силу незнания/нежелания понять/невозможности понять (осмыслить) - [выберите любое по Вашему желанию] - не в состоянии понять/принять эти ответы...
  4. Вы выдернули одно единственное слово из очень длинного контекста, не потрудившись даже вникнуть в смысл сказанного Вам! Это мое предположение основано на кое-каком (относительно гуру этого форума - очень небольшом) моем личном опыте реализации вот примерно, по сути, такой же схемы, как у Вас - только без 3-стабильных элементов и каких-то "согласующих" резисторов внутри кристалла FPGA. Так вот, к моей радости, синтезатор смог уложить требуемую логику (относительно длинные цепочки, если бы их реализовывать по Вашей схемотехники - отдельными ЛЭ, типа как в 555ЛА3) в нечто более короткое по длине (и - соответственно, более быстродействующее), используя имеющиеся в ПЛИС 6-входовые LUT. поясните, пожалуйста, а что это такое - "согласующий резистор"? В ВЧ технике (RF, всякие скоростные интерфейсы) - я понимаю, что это такое, как оно работает, и зачем это нужно. Внутри FPGA - что это такое может быть? Вот я многократно читаю в Ваших постах слово "логика". Но - в упор не вижу логики в этом высказывании. Вы не понимаете смысла "последовательная цепь"?! Если цепь - последовательная, то и спички кладутся последовательно (т.е. - друг за дружкой, начало (чистый конец) одной к концу (серная головка) другой). И даже если эту таким образом склеенную цепь свернуть в спираль или сложить зигзагом - длина пути сигнала от начала всей цепи к ее концу останется равной сумме длин спичек. А "если вы сложите множество спичек рядом" - это таки параллельная цепь! Точнее - параллельно расположенные цепи. А кто Вам может запретить проектировать что-то свое и по-своему?! И правильно откомпилировать тоже никто не помешает - если что-то будет не так, компилятор (синтезатор) выдаст предупреждение/сообщение об ошибке, и - либо Вы не получите нужного быстродействия, либо - Вам придется делать правильно и, соответственно, компилировать тоже правильно...
  5. несколько тактовых сигналов. Если я правильно понял вопрос - то в первых процессорах так оно и выполнялось - такт на выборку инструкции из ROM, затем - выборка (загрузка) операндов, такт (или больше) - на выполнение команды. А то и микропрограммы...
  6. Как Вы глубоко звблуждаетесь... Проверить правильность Ваших предположений не просто, а очень просто - возьмите компилятор, опишите схему из , скажем, тысячи последовательно включенных ЛЭ (на самом деле синтезатор не поставит тысячу этих эл-тов последовательно, а, используя ресурсы микросхемы, оптимизирует схему - предполагаю, цепочка растянется не на 1000 ЛЭ, а "всего лишь" на пару-тройку сотен ЛУТов. И посмотрите, на какой частоте будет заявлена гарантированная работоспособность этой схемы. ЗЫ когда-то оценивал время прохождения сигнала через одну схему, если ее разрисовать обычными ЛЭ - цепочка составила бы в длину порядка сотни ЛЭ. Время задержки синтезатор оценил в около 100 нсек - т.е. частота работы ее составила бы максимум 10, ну, пусть даже 15 МГц - с учетом того, что программа при таких расчетах исходит из худших возможных таймингов микросхемы. И это еще "пробовалось" в практически пустом кристалле достаточно мощной ПЛИС (занято было всего единицы процентов ее логических ресурсов, с 6-входовыми ЛУТ...
  7. Есть время задержки выхода элемента из Z-состояния, есть время передачи сигнала со входа на выход, если элемент уже не в Z-состоянии. Кмк, Вы правы в том, что, если буф. элемент уже выведен их этого Z-состояния, то прохождение сигнала с лог входа на его выход произойдет быстрее (можно посмотреть цифры , приведенные в даташитах на такие буферы для обычных микросхем, не FPGA. Но время прохождения сигнала даже через транзистор далеко не нулевое. Даже если представить себе, что этот транзистор в данный момент времени представляет собой открытый канал полевого транзистора - у него будет сопротивление, нагруженное на втором выводе (выходе ЛЭ) какой-то пусть даже мизерной, но - емкостью. Как на самом деле реализованы в кремнии эти элементы - не интересовался, может оказаться, что они сложнее (т.е. еще медленнее). Кроме того, как Вам уже сообщали, такие буферы встроены в выходные блоки микросхем FPGA, они могут уметь выполнять более сложные функции - отсюда следует их возможное усложнение за счет потери скорости. Поэтому и рекомендовал бы ознакомиться с ассортиментом микросхем, уже реализованным в таком железе (например, серия 74AC) - возможно, ознакомившись в различными временами задержек в них, Вы сможете подобрать более оптимальный вариант построения Ваших блоков.
  8. на какое время? прописать время задержки в файл sdc...
  9. Извините, но Вы "решили" задачу способом - разбросав по полю грабли. Вам же объяснили, что этих элементов внутри FPGA просто нет... Вам же в самом начале темы предложили применить многовходовой элемент И или ИЛИ (в зависимости от потребности). Нарисует Вам симулятор то, что Вашей душе угодно - а как потом это "в железе" физически реализовать?
  10. а можно подробностей - чем Вас "традиционные алгоритмы" не устраивают? И пару слов про Ваши алгоритмы?
  11. Вы слишком оптимистичны. Не забывайте, что сигналы в Вашей схеме распространяются по таким компонентам, как соединительные линии внутри кристалла, коммутаторы (перебрасывают сигнал с одной линии на другую), логические элементы - все они имеют задержки. Загляните в даташит к-л простого ЛЭ, например, 74АС14 - Вы увидите, что сигналу, чтобы пройти с его входа на выход, потребуется гораздо времени, чем прошел бы свет 1 см расстояния. Вы схему нарисовали? Нарисовали. Теперь описать ее в Верилоге - это не просто, а очень просто. Вопрос времени...
  12. Если может быть Вам ближе микроконтроллеры - чтобы процессорное ядро не тратило свои вычислительные ресурсы для программной реализации к-л блока (интерфейса, таймера, счетчика) - в микроконтроллер добавляется уже готовая, аппаратная реализация нужного функционала. Аналогично и в микросхемы FPGA добавляются уже готовые аппаратные блоки, реализующие часто необходимые функции (блоки DSP, интерфейсы). Зачастую реализовать это просто невозможно из стандартных "кирпичиков", имеющихся в FPGA. Например, интерфейс PCIe должен выдавать/принимать данные на частоте нескольких гигагерц. Поэтому внутри FPGA добавляется такой скоростной блок, который принимает-передает наружу микросхемы на гигагерцах, а внутрь FPGA или из нее данные поступают по более широкой (гораздо более многоразрядной шине) на той частоте, которую уже способна "переварить" эта FPGA. Это делается как раз для того, чтобы необходимый блок работал с заявленными характеристиками.
  13. частота то одинаковая, но может оказаться так, что блоки между собой не зависимы (если нет передачи данных между ними) - т.е. легче их развести в кристалле с макс. частотой (минимальными задержками) при трех различных CLK (с различными названиями). А если все три блока тактируются одним клоком (с одним названием) - они будут зависимы, разложить их в кристалле может оказаться сложнее. На истину в посл. инстанции не претендую, в конкретно этом Вашем проекте может оказаться по-другому. Ну и степень "забитости" кристалла имеет значение. Если наполовину свободен - то синтезатору проще со всем разобраться, если забит под 80% - уже сложнее...
  14. Насколько я понимаю - кроме кол-ва логических блоков на частоту влияют также задержки на элементах коммутации сигналов и длина путей. Ведь , к примеру, 2 блока логики могут находиться рядом или на противоположных сторонах кристалла - соответственно время прохождения сигнала через них при кажущейся одинаковости будет разное. А если CLК идет по выделенным скоростным ресурсам, то этот сигнал будет заметно быстрее доходит до тактируемых элементов, чем данные. Т.е. надо задержать тактируемый фронт = понизить частоту. Ну и когда у Вас 3 разные частоты "питают" 3 разных блока - они , наверное, считаются независимыми? Возможно, синтезатору легче разложить требуемое железо в кристалле с требуемыми частотами...
  15. Возможно, Вы не совсем поняли. В результате работы над тем проектом были опробованы два варианта блоков: 1. комбинационная схема (огромная куча логики без триггеров), и была определена макс. частота ее функционирования. 2. схема с использованием конвейера - со своей частотой работы.
  16. я под асинхронщиной имел в виду такой кусок, который без триггеров. Т.е. при подаче исходных сигналов на вход нужно только ждать результата на выходе. Конкретный пример: у меня был проект, без триггеров внутри. Результат на выходе был гарантирован через 100 нсек. Синхронная (конвеерная) схема при частоте 100МГц выдавала бы результат через 450-500 нсек. Т.е. после подачи на вход асинхронного блока я мог через 110 нсек гарантированно забирать результат обратно в синхронную часть. Но на самом деле надо бы использовать обе реализации - и асинхронную (т.к. периодически нужно было получить только один результат), и синхронную - получать подряд серию (она бы после истечения 500 нсек шла уже со скоростью 10 нсек/результат). К сожалению, для обеих не хватало ресурсов имеющегося кристалла...
  17. А "таблица истинности" - это как? Разве не текстом ее нужно будет как-то описать? Ну и до кучи - когда Вы рисуете схему из элементарных кирпичиков - на выходе все равно получаете последовательность вых. сигналов в зависимости от входных. Только это стороннему взгляду трудно понять. А разработчику - трудно обнаружить и исправить ошибку. Текстом (на к-л языке) можно не только описать эти соединения, но пойти дальше - описывать сразу поведение блока - т.е. сразу описать зависимость выходов от входов. А как оно внутри куска кремния будет физически реализовано (конкретная схема) - это отдать на откуп синтеза тору, который лучше знает особенности построения этого кремния. Иногда асинхронный кусок может оказаться полезным - ранее уже был приведен пример на эту тему. Что же касается готовности - можно посчитать худший случай готовности асинхронного куска (т.е. передали асинхронному блоку на обработку, выждали положенное время - результат готов), При хендшейке также нужно учитывать то, что опрос готовности происходит на другой скорости - на скорости синхронного блока. Например, асинхронный блок способен работать (выдавать готовый результат) через 100 нсек (10МГц), если же синхронный блок работает на 100МГц - то времени потеряется 1-2 такта работы синхронной схемы.
  18. Запускать тактирующий сигнал через такую цепочку ЛЭ - ну, так себе идея, я полагаю. В идеале - тактирующий сигнал приходит одновременно на все тактируемые элементы. в реальности при синтезе в железе получим, например, коммутатор. Т.е. - можно его описать просто одной строкой текста. Читать - может быть и легче, а вот понять ее работу... Ну и - очень часто несколько строк кода позволяют описать функционирование достаточно сложного по схемотехнике узла. вместо того, чтобы конструировать его самому из логических элементов. Т.е. эту рутинную работу, сопряженную с возможностью ошибиться, Вы поручаете синтезатору.
  19. А можно и по-другому CE & A[3:0]& B[1:0] в один LUT, например... Ну и - я не в курсе, как там ресурсы распределены физически в кристалле, синтезатор сам должен оптимизировать исходя из заданных условий оптимизации (скорость или размер, к примеру).
  20. это так светодиод обозначен. как я понимаю - чисто условно (т.е. без резистора и значок обычного диода - было про это у ТС в тексте - правда, про резистор я сам предположил). Конечно, Вы совершенно правы - надо было бы нарисовать правильный значок + резистор, чтобы видящий эту схему не отвлекался на лишние размышления.
  21. Вы должны понимать, что на самом деле весь этот код не описывает программу действий (как программирование микропроцессора), а Вы этими записями описываете конструкцию какого-то устройства. Т.е. Вы должны себе четко представить (нарисовать) схему/структуру/блок-схему того устройства, которое должно быть синтезировано (сконструировано, "спаяно") внутри FPGA из имеющихся там базовых кирпичиков. А только потом - описать эту структуру/эту схему средствами языка синтезирования аппаратуры. Иначе может получиться, что логически Вы устройство описали правильно, но физически оно будет синтезировано компилятором в очень громоздкую монструозную схему с низким быстродействием (большими задержками при формировании к-л сигналов). Правда, компиляторы умеют оптимизировать схему, но как это у каждого конкретного получается - думаю, что по-разному. И лучше все же в первую очередь полагаться на себя, а компилятору отдавать на откуп более простые конструкции - где он сам сможет оптимально размести сигналы по имеющимся ресурсам (расстояние, кол-во входов LUT и кол-во используемых сигналов). Как-то так.
  22. логика в том, что для реализации этого if-а пришлось навернуть логическую схему (которая вполне могла не уложиться в один LUT FPGA, что привело к накручиванию путей прохождения сигналов (к ним добавляются коммутаторы этих сигналов) - в результате возросла задержка во всего одном месте цепочки, тактируемой этими клоком - образовалось бутылочное горлышко, которое и нарушило красивую картинку, рисующую полтора гигагерца. Вам уже рекомендовали: т.е. проследите, откуда эта частота передается (генерируется), как она распространяется (что ею тактируется) - вполне может оказаться, что Вы ее используете еще для чего-то, кроме как подать на RAM, либо неоптимально на нее подается (опять же через какой-нибудь if 😄.
  23. Простите, может быть не понял - о каких тактах идет речь? Тут же сплошная асинхронная схема.
  24. Фильтрация этой помехи должна осуществляться внутри FPGA или же можно снаружи, перед входом к-л схему прикрутить? Если внутри FPGA - реально ли добавить блочок, работающий на частоте, скажем, мегагерц 50-100? - для фильтрации этих коротких помех и минимизации времени поступления правильного сигнала на обработку. Этот входной сигнал - он же асинхронен по отношению к тактовой частоте устройства в ПЛИС?
  25. какая длительность помехи? А если она будет длиннее, чем время задержки этих двух элементов? 1. применить на входе аналоговый фильтр нельзя? 2. можно добавить RC цепочку к Вашей схеме (если кол-во лог. элементов задержки ожидается слишком большим, да и разброс задержки будет более предсказуемым) 3. поставить счетчик (времени) - когда уже можно считать принятый сигнал уже валидным.
×
×
  • Создать...