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

Задержка последовательных данных.

Есть данные, поступающие по последовательному синхронному каналу т.е. две линии - Data + Clock. Частота клока - 6МГц.

Нужно их задержать во времени. Задержка должна быть программно регулируемая, до 10мс с шагом около 0.1мс (точность шага не очень важна).

Напрашивается проц с двумя SPI и общим внешним клоком и буфером меду ними - один принимает, пишет в память, другой из памяти читает и передает дальше.  Десятка килобайт вроде хватит.

Регулирование задержки можно организовать извне, любым способом (SPI, I2C, UART, да хоть кодом с 7-ми ножек).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

14 minutes ago, Allregia said:

Нужно их задержать во времени.

Задержать на физическом уровне? Т.е. канальный (протокольный) уровень остаётся тем же самым?

Тогда почти любой доступный микроконтрллер с двумя аппаратными шинами SPI.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Лучше разумеется на ПЛИС, но если эти SPI смогут прикинуться "последовательным синхронным каналом", тогда проблем нет.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

4 minutes ago, Plain said:

если эти SPI смогут прикинуться "последовательным синхронным каналом",

Не понял - зачем тут чем-то "прикидываться"? Разве SPI   в симплексе это не сихнронный последовательный канал на передачу или на прием?

 

6 minutes ago, haker_fox said:

Задержать на физическом уровне? Т.е. канальный (протокольный) уровень остаётся тем же самым?

Просто задержать во времени, ну типа оооочень длиииинный сдвиговый регистр.

 

7 minutes ago, Plain said:

Лучше разумеется на ПЛИС

 

Я сейчас в основном с МК и немного с CPLD, с FPGA работал не много, и то было лет 15 назад.

Но очень может быть что FPGA с внешней памятью будет лучше, особенно в силу этого:

P.S. Меня отвлекли когда писал начальное сообщение, забыл дописать самое главное - таких каналов восемь.

Тоесть линий данных 8, а клок у всех общий. И задержку нади иметь индивидуально для каждого канала свою (то есть принимать/оправлять параллельным портом байт не получится, слишком много будет битовых перестановок).

Поскольку МК с 16-ю SPI я не знаю, (да даже и с 8), то если не смотреть на FPGA, то вариант может быть восемь маленьких МК в соик8 с 2хSPI, но таких с десятком килобайт ОЗУ что-то не видно. Или четыре МК побольше, с 4-мя портами.

Может надо было все это в разделе про МК? Хотя, публика везде так-же самая 🙂

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

20 minutes ago, Allregia said:

FPGA с внешней памятью

Памяти нужно 6*10^6 Гц * 0.01 с * 8 линий = 480 кбит. Можно и внутренней обойтись.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Зачем тут процессор? Обработки данных же нет... Простейший автомат который пишет в кольцевой буфер и читает с неким сдвигом...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

7 minutes ago, MegaVolt said:

Зачем тут процессор?

Исключително из-за простоты реализации для не профи в fpga 😞

Боюсь в них запустаться уже на этапе выбора чипа.

(usb byteblaster с али у меня есть)

 

18 minutes ago, aaarrr said:

Можно и внутренней обойтись.

Ну это наверное смотря какая fpga, хотелось бы уложиться долларов в 15-20, на десятке экземпляров.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

20 минут назад, Allregia сказал:

Исключително из-за простоты реализации для не профи в fpga 😞

Боюсь в них запустаться уже на этапе выбора чипа.

(usb byteblaster с али у меня есть)

 

Ну это наверное смотря какая fpga, хотелось бы уложиться долларов в 15-20, на десятке экземпляров.

При выборе плис основным вопросом будет память. Т.е. на борту должно быть гарантированно 60 кБайт. Лучше чуть больше чтобы можно было ресурсы памяти поделить на 8 частей нацело. 

8 Процев это уже может и не влезть в ПЛИС за 15-20$ Плюс процам нужна будет своя память...

XC6SLX9 без процев должно хватить. На алике как раз отдают платки по 15-20$

Правда я не очень понял как данные о вермени сдвига попадают в ПЛИС.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 час назад, Allregia сказал:

зачем тут чем-то "прикидываться"? Разве SPI в симплексе это не сихнронный последовательный канал на передачу или на прием?

В теории да, но не у каждого первого МК реализовано именно так безусловно.

Если надо подешевле, тогда самую примитивную ПЛИС и к ней параллельное ОЗУ.

Для одноканального варианта, нужен МК с двумя SPI и последовательное ОЗУ SPI.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

3 hours ago, MegaVolt said:

8 Процев это уже может и не влезть в ПЛИС за 15-20$ Плюс процам нужна будет своя память...

Если уж делать на ПЛИС, зачем в них вообще процы засовывать?!

 

3 hours ago, MegaVolt said:

Правда я не очень понял как данные о вермени сдвига попадают в ПЛИС.

Да, поскольку я не профи в ПЛИС, этот момент мне пока тоже не очень понятен. Но если это время можно задавать в виде какой-то переменной, то как ее менять можно придумать (можно ведь на той-же ПЛИСке еще uart, или еще один SPI, для управления).

В проце там это просто - один кольцевой буфер, куда пишет по ПДП приемный SPI и из которого читает (также по ПДП) передающий. Стартуем приемный, а затем через заданное время стартуем передающий. Надо изменить время - в прерывании по концу заполнения буфера приемником, выключаем передающий, ждем новое время, и включаем опять. Или если контроллер ПДП позволяет задать текущее значение счетчика - сразу устанавливаем для передатчика смещение.

2 hours ago, Plain said:

Для одноканального варианта, нужен МК с двумя SPI и последовательное ОЗУ SPI.

Не, это плохая идея - где третий SPI для этого ОЗУ взять?  Да и проц тут довольно шустрый понадобится, чтобы без ПДА читать из одного порта, писать в другой, потом из второго читать и писать в третий. Тут проц с памятью нужен, типа STM32G050F6 TSSOP20. По деньгам 8шт нормально, хо как-то не очень красиво.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

49 минут назад, Allregia сказал:

Если уж делать на ПЛИС, зачем в них вообще процы засовывать?!

Похоже я не правильно вас понял когда вы сказали что проц для тех кто хорошо плис не знает... 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

38 minutes ago, MegaVolt said:

Похоже я не правильно вас понял когда вы сказали что проц для тех кто хорошо плис не знает... 

Так я же не имел ввиду в ПЛИСку ядро проца засовывать, я имел ввиду какой-нибудь PIC или STM32, или чего похожее.

Но, судя по всему, придется fpga углубленнее изучать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

42 минуты назад, Allregia сказал:

придется fpga углубленнее изучать

Изучать там немного, но вот может быть проблемой, что корпуса только BGA, поэтому и советуют готовые модули брать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 hours ago, Plain said:

что корпуса только BGA,

Разве?

ICE40UP5K-SG48I в QFN-48 за $9 не подойдет? Памяти вроде больше мегабита.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

51 minutes ago, Allregia said:

ICE40UP5K-SG48I в QFN-48 за $9 не подойдет?

А где ТС её брать будет? По ссылке '0 in Stock'.

Ну и по ресурсам она впритык (хотя это самое простое - сделать схему и попробовать отсинтезировать - синтезатор сам скажет, подойдёт или нет)

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...