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

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

Запись от Hrethgir размещена 23.12.2024 в 00:18
Показов 1973 Комментарии 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
Просмотров: 945
Размер:	15.6 Кб
ID:	9120   Нажмите на изображение для увеличения
Название: Screenshot from 2024-12-23 19-44-41.png
Просмотров: 1093
Размер:	13.1 Кб
ID:	9125   Нажмите на изображение для увеличения
Название: Peek 2024-12-25 22-11.gif
Просмотров: 421
Размер:	42.3 Кб
ID:	9134  

Изображения
 
Изображения
Тип файла: jpg Снимок экрана (37).jpg (81.5 Кб, 1011 просмотров)
Тип файла: jpg Снимок экрана (38).jpg (59.6 Кб, 818 просмотров)
Тип файла: jpg Снимок экрана (39).jpg (59.1 Кб, 592 просмотров)
Метки fpga, триггер
Размещено в Без категории
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Всего комментариев 1
Комментарии
  1. Старый комментарий
    Баг есть с таймингом стенда из 1400 последовательных сумматоров. Думаю попробовать Стрый способ - подать на выход модуля. Если не пройдет номер, то испытывать его в более сложных проектах выдающих более сложные результаты формирующиеся во время всей работы. Как минимум можно сравнивать что быстрее, а что медленнее. С точными цифрами пока проблема, но думаю решу её в ближайшее время. Считаю что при создании триггера нахожусь на правильном пути и с правильным выбором его архитектуры.
    Запись от Hrethgir размещена 25.12.2024 в 09:58 Hrethgir вне форума
 
Новые блоги и статьи
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru