Форум программистов, компьютерный форум, киберфорум
Hrethgir
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  

Что самое интересное в FPGA...

Запись от Hrethgir размещена 23.12.2024 в 00:18
Показов 1835 Комментарии 1
Метки fpga, триггер

[B]Самое главное, что все эти искания с триггером - работают через раз, никакой стабильности. Кроме триггера с защёлкой. Сумматор тоже стабилен - там никакой ошибки и ничего аномального нет.[/B]

Ну с которыми я работал, что после того, как я угадал мысль разработчиков, при разработке первого своего триггера тут
[url]https://habr.com/ru/articles/854562/[/url]
, это то, что эта хитрость - особенность FPGA. На ней работает даже то, что работать не должно. Тот проект - лаунчер, он подаёт после установки единицы, на вход триггера, сигнал Z. По правилам схемотехники эти триггеры не должны работать, но они работают. Но далее, я получил триггер более высокоскоростной, в два раза быстрее, и он не должен работать (я так делаю потому, что получилось в первый раз - я просто угадал мысль разработчиков, отбросив мысль что компилятор тупой), но - работает. С ним правда проект занимает критически большую логическую часть, хотя глядя на файлы анализа - ничего критического.
В общем я переделал немного и без того рабочую схему, но пока сюда не выкладываю, у меня там поиск дальнейших хитростей и размышления. Хотя выложу.
У меня есть мысль, что как только я придумаю как убрать верхний NOT , то сообщение о критической части пропадёт.
Но тем не менее это работает.
Оба варианта триггера работают практически одинаково - с одинаковой скоростью.
Но в отличии от предшевствинника на базе защёлки DLC , работаю быстрее него в два раза. Удивительно, что вообще и предшевственник работает. Но то скрытая хитрость - я её всего лишь угадал (додумался), и думаю что это не было злым умыслом, скорее это просто как-то совпало с чем-то, чего я не знаю пока.
В общем новый триггер такой
[IMG]https://www.cyberforum.ru/blog_attachment.php?attachmentid=9125&stc=1&d=1734979152[/IMG]
.
[CODE]module Trs
(input S, R,
output Q);
not nLr(nLr1,R);
OBUF b1(Obf1_1,S);
bufif1 bf1(Q,nLr1,Obf1_1);
nor bf2(Obf2,S,R);
bufif1 bf3(Q,Q,Obf2);
OBUF b5(Obf3,R);
bufif1 bf4(Q,nLr1,Obf3);
endmodule[/CODE]


Тест бенч нового на тактовой частоте сигнала захвата с оцилятора 135 MHZ Цепь состоит из последовательно соединённых 100 триггеров.
[IMG]https://www.cyberforum.ru/blog_attachment.php?attachmentid=9128&stc=1&d=1734979605[/IMG]

Прототип с публикации тут [url]https://habr.com/ru/articles/854562/[/url]


Тест бенч прототипа на тактовой частоте сигнала захвата с оцилятора 135 MHZ
[IMG]https://www.cyberforum.ru/blog_attachment.php?attachmentid=9129&stc=1&d=1734979605[/IMG]
Этот получается, что новый триггер более чем в два раза быстрее. Ах да. Цепь из ста триггеров и одного NOT, занимает, сверху новый, снизу старый. Триггер с элементом NOR и работает, и не перегружает логику. Что интересно - он работает и с входящим сигналом Z, но его прототипы создавали сообщения, поэтому я вставил элемент NOR.
[QUOTE]
Resource Usage Utilization
Logic 103/8640 2%
--LUT,ALU,ROM16 103(103 LUT, 0 ALU, 0 ROM16) -
--SSRAM(RAM16) 0 -
Register 0/6693 0%
--Logic Register as Latch 0/6480 0%
--Logic Register as FF 0/6480 0%
--I/O Register as Latch 0/213 0%
--I/O Register as FF 0/213 0%
CLS 52/4320 2%
I/O Port 2 -
I/O Buf 1 -
--Input Buf 0 -
--Output Buf 1 -



Resource Usage Utilization
Logic 99/8640 2%
--LUT,ALU,ROM16 99(99 LUT, 0 ALU, 0 ROM16) -
--SSRAM(RAM16) 0 -
Register 99/6693 2%
--Logic Register as Latch 99/6480 2%
--Logic Register as FF 0/6480 0%
--I/O Register as Latch 0/213 0%
--I/O Register as FF 0/213 0%
CLS 118/4320 3%
I/O Port 2 -
I/O Buf 1 -
--Input Buf 0 -
--Output Buf 1 -
[/QUOTE]




Теперь уже новый.
[IMG]https://www.cyberforum.ru/blog_attachment.php?attachmentid=9125&stc=1&d=1734972508[/IMG]
завтра протестирую. Не знаю, мне почему-то больше сложные нравятся, чем будет тот, что ниже. Не знаю чем и почему, просто тестирую пока что, так как для других задач у меня пока маловато времени.

Он намного стабильнее двух предшевственников - ни создаёт сообщений и вроде как из файла видно - вполне компактен. Смысл архитектуры этого триггера заключается в том, что тут нет закольцованных логических элементов, а есть прерыватель, а сигнал устанавливающий значение подаётся в момент прерывания. Но есть проблема - проект стенда для сумматоров с ним - не компилируется, ошибок нет - долго синтез происходит, поэтому думаю его надо доработать именно до совместимости с проектом стенда для сумматоров. Но в проекте стенда для триггеров он нормально компилируется и собирается. И в проекте лаунчера он испытан на сохранение информации с входящим сигналом установки - Z.Конечно триггеры такой архитектуры интересны, но самым простым триггером мне представляется такой [IMG]https://www.cyberforum.ru/blog_attachment.php?attachmentid=9131&stc=1&d=1735064326[/IMG].
Он работать должен, но со стартом. Проверен в симуляторе. Но если быть прогматичным, и исподобиться соединить две архитектуры и прошлый опыт с разоблачением "хитрости" компилятора, то получится такая [IMG]https://www.cyberforum.ru/blog_attachment.php?attachmentid=9134&stc=1&d=1735154079[/IMG]. И моя практика пока показывала, что именно эта хитрость делает рабочим и стабильным нечто лучше всего: совмещение некоторых элементов с проверкой условия (НЕ и И), на самом деле с целью создания на входе в модуль определённых функций и таблиц истинности на определённых узлах модуля. В чём здесь на самом деле логика на мой взгляд, что как правило - сброс триггера определяет считывающий с него данные модуль, а установка значения единицы может осуществляться многими, и соответственно, так как применяется в паре с элементом И, что если нужно напротив осуществлять сброс многими а установку одним - то соответственно Не подключается к входу установки, а И к входу сброса.
[CODE]module Trs
(input S, R,
output Q);
not nLr(nLr1,R);
and a1(an1,S,nLr1);
OBUF b5(Ob,R);
bufif1 b1(ob1,nLr1,Ob);
nor n1(Q,an1,ob1);
bufif1 b2(ob1,Q,nLr1);
endmodule[/CODE]
Вот что получается при компиляции той-же цепи из 100 триггеров и одного НЕ
[QUOTE]Resource Usage Utilization
Logic 100/8640 2%
--LUT,ALU,ROM16 100(100 LUT, 0 ALU, 0 ROM16) -
--SSRAM(RAM16) 0 -
Register 0/6693 0%
--Logic Register as Latch 0/6480 0%
--Logic Register as FF 0/6480 0%
--I/O Register as Latch 0/213 0%
--I/O Register as FF 0/213 0%
CLS 52/4320 2%
I/O Port 1 -
I/O Buf 1 -
--Input Buf 0 -
--Output Buf 1[/QUOTE]


[B][I][SIZE="5"]Сумматоры.[/SIZE][/I][/B]


Тестбенч на этой-же частоте цепи сумматоров с делителем захватываемого сигнала на 10. Полная цепь 1400 сумматоров, шаг делителя - действие цепи 2800 сумматоров. Один такт - делителя захватываемого сигнала - время действия цепи 28000 сумматоров.
Подробности тут [url]https://habr.com/ru/articles/866816/[/url] .
Хотя и тут я по тестовому стенду подробно не объяснял но всё-же.
[IMG]https://www.cyberforum.ru/blog_attachment.php?attachmentid=9124&stc=1&d=1734901523[/IMG]
Разбираться ещё со многим, в плане платы и среды разработки.
Но цифры можно сказать точно
(по числу тактов) 8 * 28000 = 224000 , за 128 тактов частоты 135 МГц. 135 МГЦ это 0.135 такта за наносекунду. за один такт срабатывает 1750. Умножаем 1750×0.135 получаем 236 сумматоров срабатывают за одну наносекунду. Там получалось четыре тысячных долей наносекунды, примерно, на срабатывание одного сумматора.




, и давно, правда я его не тестил, потому что нахожусь под впечатлениями от сумматора. Высказали мнение, что проект не делает с тестом сумматоров то, что мне нужно, так как я якобы не знаю, что он делает, потому что 1400 сумматоров занимают всего лишь 23 лута. Ну да - занимают. А я что? Я писал анализатор? Всё проверил в тестбенчах, длину цепи наращивал постепенно, постепенно и с задержкой сдвигал захватываемй сигнал. Я что виноват что анализатор такой или так быстро работает сумматор? Нет - не виноват.
Миниатюры
Нажмите на изображение для увеличения
Название: Screenshot from 2024-12-22 23-47-18.png
Просмотров: 938
Размер:	15.6 Кб
ID:	9120   Нажмите на изображение для увеличения
Название: Screenshot from 2024-12-23 19-44-41.png
Просмотров: 1067
Размер:	13.1 Кб
ID:	9125   Нажмите на изображение для увеличения
Название: Peek 2024-12-25 22-11.gif
Просмотров: 408
Размер:	42.3 Кб
ID:	9134  

Изображения
 
Изображения
Тип файла: jpg Снимок экрана (37).jpg (81.5 Кб, 995 просмотров)
Тип файла: jpg Снимок экрана (38).jpg (59.6 Кб, 800 просмотров)
Тип файла: jpg Снимок экрана (39).jpg (59.1 Кб, 580 просмотров)
Метки fpga, триггер
Размещено в Без категории
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Всего комментариев 1
Комментарии
  1. Старый комментарий
    Баг есть с таймингом стенда из 1400 последовательных сумматоров. Думаю попробовать Стрый способ - подать на выход модуля. Если не пройдет номер, то испытывать его в более сложных проектах выдающих более сложные результаты формирующиеся во время всей работы. Как минимум можно сравнивать что быстрее, а что медленнее. С точными цифрами пока проблема, но думаю решу её в ближайшее время. Считаю что при создании триггера нахожусь на правильном пути и с правильным выбором его архитектуры.
    Запись от Hrethgir размещена 25.12.2024 в 09:58 Hrethgir вне форума
 
Новые блоги и статьи
Модель здравосохранения 17. Планы на выгорание
anaschu 23.05.2026
Вот конкретная схема реализации: В классе Работник добавить: накопленнаяУсталость — растёт каждый час работы, снижается в перерывы и болезни коэффициентПрезентеизма — снижает продуктивность. . .
Изменение цветов в палитре gif файла aka фавикона
russiannick 23.05.2026
Изменение цветов в палитре gif файла, юзаемого как фавиконка в составе html-файла, помещенная в base64, средствами нативного Java Script, навеянное сном в майский день. Для работы необходим браузер,. . .
Модель здравосохранения 16. Слишком хорошие и здоровые сотрудники уходят, недовольные зарплатой
anaschu 23.05.2026
Отладка увольнений и настройка производительности Сегодня во второй половине дня разобрались с механикой увольнений и настроили коэффициент сложности заданий. Вот что было сделано. . . .
Как я стал коммунистом))) Модель сохранения здоровья сотрудников, запись блога номер 15
anaschu 23.05.2026
Внезапно хорошее здоровье сотрудников не нужно капиталистам?))
Модель здравоСохранения 15. Как мы чинили AnyLogic модель рабочего коллектива: сочленение диаграммы состояний болезней и поломок в ресурспул
anaschu 23.05.2026
Как мы чинили AnyLogic модель рабочего коллектива Сегодня разобрались с пятью багами, из-за которых модель либо падала с ошибкой, либо давала совершенно бессмысленные результаты. Каждый баг был. . .
Диалоги с ИИ
zorxor 23.05.2026
Насколько я понимаю - Вы - Искусственный Интеллект. Это так? Да, всё верно. Я — искусственный интеллект. Я представляю собой большую языковую модель, созданную для помощи в самых разных задачах. . . .
Модель здравосохранения 14. Собираем всю модель вместе.
anaschu 22.05.2026
Модель собрана. В будущих постах на видео я покажу, как она работает. В этом посте запускаем её, проверяем результаты и разбираем что можно с ней делать дальше. Перед запуском проверяем. . .
Модель здравоохранения 13. Добавление самой системы здравоохранения.
anaschu 22.05.2026
В предыдущем посте мы настроили болезни. Теперь добавим события, которые управляют здоровьем всего коллектива, а также настроим рабочий график и расчёт финансов. В Main создаём четыре события. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru