Как бы потихонечку освоить работу с FPGA

Печатные платы, программируемая логика, разработка и изготовление аппаратуры

Moderator: Shaos

imsushka
Maniac
Posts: 319
Joined: 01 Jan 2022 04:34
Location: USSR, Tashkent

Re: Как бы потихонечку освоить работу с FPGA

Post by imsushka »

Lavr wrote: 01 Nov 2025 08:15
imsushka wrote: 30 Oct 2025 07:36скорее всего квартус намутил кучу мультиплексоров для записи в регистры.
А я правильно понимаю этот момент: как только появляется конструкция типа

Code: Select all

always @*
   ...
так сразу же появляются и регистры, даже если схема чисто комбинационного типа?
я верилог плохо знаю, больше вхдл, я ж паскалист
надо пробовать и смотреть в ртлке. я так всегда делаю.
ну или плюнуть на верилог/вхдл и нарисовать схему просто
User avatar
Lavr
Supreme God
Posts: 16808
Joined: 21 Oct 2009 08:08
Location: Россия

Re: Starting with FPGA

Post by Lavr »

Lavr wrote: 30 Oct 2025 08:05Я тогда сказал, что я руками нарисовал бы АЛУ лучше. :idea:
imsushka wrote: 30 Oct 2025 08:16и про руки - да, руками будет лучше. но лень
В общем, решил я попробовать «нарисовать» и АЛУ и процессор руками.
Пока «полёт нормальный», но один момент меня смутил, поэтому нуждаюсь в компетентной консультации…
Я втащил тактовую частоту в CPLD вот так, как на рисунке ниже. Подразумевал, что первый элемент – буфер, а CLK по сюжету мне нужна и в фазе и в противофазе.
GLOBAL primitive on-node.png
Получил ПРЕДУПРЕЖДЕНИЕ, что выше под рисунком.

Внимательно перевёл и прочитал, что же от меня хотят… Сильно понимания не обрёл, ибо мутно как-то.
ГЛОБАЛЬНЫЙ примитив на узле <имя> питает логику — может возникнуть неглобальное использование сигнала.

ПРИЧИНА: ГЛОБАЛЬНЫЙ примитив питает сложную логику.

ДЕЙСТВИЕ: Если вы планируете использовать глобальный сигнал для питания логики, то никаких действий не требуется. Если вы планируете использовать сигнал только как глобальный, то в вашем проекте есть ошибка. Чтобы устранить это предупреждение, необходимо либо удалить примитив GLOBAL, либо переместить подключение входного сигнала, питающего логику, перед примитивом GLOBAL.
Тем более, что ПРЕДУПРЕЖДЕНИЕ - вроде как и не ошибка… :-?

Но полистал Интернет на эту тему, и если я не ошибся, то вроде как всё дело вот в чём:
выход тактовой-частоты.png
Ну ладно… я изменил цепь входа CLK вот так:
GLOBAL primitive on-node2.png
И WARNINGGLOBAL primitive on node…” исчез. :o

 WARNING ИСЧЕЗ!
«Из окна дуло. Штирлиц закрыл окно, и дуло сразу исчезло!». :lol:

Что меня, собственно, беспокоит: правильно ли я разрешил эту проблему?
И что – это единственный способ затащить CLK в ПЛИС именно на удвоенной частоте от предполагаемой, или я чего-то не знаю?
You do not have the required permissions to view the files attached to this post.
iLavr
User avatar
Shaos
Admin
Posts: 24572
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Как бы потихонечку освоить работу с FPGA

Post by Shaos »

Есть CPLD и FPGA с несколькими клоками - можно на них подавать на один фазу, а на другой - противофазу

А задержи на инверторах не пройдут - синтезатилка упростит их всех нафик...
User avatar
Lavr
Supreme God
Posts: 16808
Joined: 21 Oct 2009 08:08
Location: Россия

Re: Starting with FPGA

Post by Lavr »

Shaos wrote: 21 Nov 2025 20:42А задержи на инверторах не пройдут - синтезатилка упростит их всех нафик...
Мне трудно сориентироваться, кто такая у тебя "синтезатилка" и что за "задержи на инверторах не пройдут" у неё... :-?
Если ты имел в виду "задержи" на логических элементах, то я такого не упоминал, хотя задержки имеют место быть.
Но я совсем про другое писал:
Lavr wrote: 21 Nov 2025 18:10... первый элемент – буфер, а CLK по сюжету мне нужна и в фазе и в противофазе.
Это, собственно, и получается по приведенной мной выше схеме:
GLOBAL primitive on-node3.png
Триггер на входе задержал сигнал CLK примерно на 6 нс - ну и ладно, теперь для всей схемы тактовый сигнал - CLK/2 с выхода триггера, поскольку так якобы рекомендуют.
А после инверторов - сигналы в фазе и каких либо "задержи на инверторах" я лично не наблюдаю и не ждал. :roll:

Вопрос был совсем в другом:
Lavr wrote: 21 Nov 2025 18:10Что меня, собственно, беспокоит: правильно ли я разрешил эту проблему?
Тем, что втащил CLK в ПЛИС через триггер?
Lavr wrote: 21 Nov 2025 18:10И что – это единственный способ затащить CLK в ПЛИС именно на удвоенной частоте от предполагаемой, или я чего-то не знаю?
Что, все втаскивают CLK в ПЛИС через триггер, или есть какой другой способ?
You do not have the required permissions to view the files attached to this post.
iLavr
imsushka
Maniac
Posts: 319
Joined: 01 Jan 2022 04:34
Location: USSR, Tashkent

Re: Starting with FPGA

Post by imsushka »

Lavr wrote: 22 Nov 2025 08:41
Тем, что втащил CLK в ПЛИС через триггер?
Lavr wrote: 21 Nov 2025 18:10И что – это единственный способ затащить CLK в ПЛИС именно на удвоенной частоте от предполагаемой, или я чего-то не знаю?
Что, все втаскивают CLK в ПЛИС через триггер, или есть какой другой способ?
это старые плиски. там это нормально
в новых плл есть и множественный клок и сдвиги фаз и ...

работает и ладно
User avatar
Lavr
Supreme God
Posts: 16808
Joined: 21 Oct 2009 08:08
Location: Россия

Re: Starting with FPGA

Post by Lavr »

imsushka wrote: 22 Nov 2025 08:44работает и ладно
Да оно и так и так работает... во втором случае просто нет WARNING-a.
Собственно говоря, меня больше интересует ПОЧЕМУ это так? :wink:
А подогнать любую схему под результат "работает и ладно" мне опыта хватает... :idea:
iLavr
imsushka
Maniac
Posts: 319
Joined: 01 Jan 2022 04:34
Location: USSR, Tashkent

Re: Starting with FPGA

Post by imsushka »

Lavr wrote: 22 Nov 2025 09:13
imsushka wrote: 22 Nov 2025 08:44работает и ладно
Да оно и так и так работает... во втором случае просто нет WARNING-a.
Собственно говоря, меня больше интересует ПОЧЕМУ это так? :wink:
А подогнать любую схему под результат "работает и ладно" мне опыта хватает... :idea:
без варнингов - потому что синтезаторам так проще считать временые дела.
клок по плисине брошен глобально. без логики, без задержек.
выходы тригеров, с глобальным клоком, синхронны. считать проще
а когда используешь логический выход, то время посчитать проблемно.

вот и ругается