реклама на сайте
подробности

 
 
4 страниц V  < 1 2 3 4 >  
Reply to this topicStart new topic
> FIFO (CPLD+SRAM)
uragan90
сообщение Sep 5 2015, 17:06
Сообщение #16


Местный
***

Группа: Свой
Сообщений: 248
Регистрация: 2-02-09
Из: Тверь
Пользователь №: 44 309



Цитата(krux @ Sep 5 2015, 20:52) *
волнуют возможности возникновения неопределенностей.
и соответственно исключение всяких граничных ситуаций.
меня не покидает ощущение, что вы хотите на них плюнуть/ махнуть рукой, и получившуюся конструкцию, которая может работать иногда продать за конструкцию, которая работает.

Не в коим разе не продаю ничего! Наоборот: Учусь, стараюсь сделать то что будет работать, и исключительно для познания, а не ради продаж!!!

Цитата(krux @ Sep 5 2015, 20:52) *
практика показывает, что от 50% до 80% алгоритмов по объему - это обработка непредвиденных при нормальной работе ситуаций, и если вы ожидаете только тепличных условий по входным воздействиям - то это прямая дорога в адъ.

Собственно для этого я и обратился к вам за помощью. Дельного посоветовали мало, но и не оскорбили никак и на том спасибо!!!
Go to the top of the page
 
+Quote Post
krux
сообщение Sep 5 2015, 17:55
Сообщение #17


Профессионал
*****

Группа: Свой
Сообщений: 1 700
Регистрация: 2-07-12
Из: дефолт-сити
Пользователь №: 72 596



я прошу прощения за мазню в paint, но это было быстрее всего.
я понял вашу задачу следующим образом.

Прикрепленное изображение

у вас есть АЦП и есть микроконтроллер.
но поскольку АЦП имеет скорость выдачи отсчетов выше, чем может принять мк, то было сгорожено CPLD и SRAM.
т.е. процесс примерно следющий
1) МК запускает выборку АЦП.
2) АЦП отсылает выборку в CPLD.
3) по мере передачи отсчетов от АЦП в SRAM в CPLD формируются счетчики уровня заполненности. wrptr-rdptr, сигналы fifo_empty, fifo_full, некий аналог usedw
4) при активации SPI со стороны мк вычитывается очередной байт данных. (ограничение - вычитывать из "фифо" можно только по 1 байту за каждую активацию SPI)

оно?


--------------------
провоцируем неудовлетворенных провокаторов с удовольствием.
Go to the top of the page
 
+Quote Post
uragan90
сообщение Sep 5 2015, 18:02
Сообщение #18


Местный
***

Группа: Свой
Сообщений: 248
Регистрация: 2-02-09
Из: Тверь
Пользователь №: 44 309



Цитата(krux @ Sep 5 2015, 21:55) *
я прошу прощения за мазню в paint, но это было быстрее всего.
я понял вашу задачу следующим образом.

Прикрепленное изображение

у вас есть АЦП и есть микроконтроллер.
но поскольку АЦП имеет скорость выдачи отсчетов выше, чем может принять мк, то было сгорожено CPLD и SRAM.
т.е. процесс примерно следющий
1) МК запускает выборку АЦП.
2) АЦП отсылает выборку в CPLD.
3) по мере передачи отсчетов от АЦП в SRAM в CPLD формируются счетчики уровня заполненности. wrptr-rdptr, сигналы fifo_empty, fifo_full, некий аналог usedw
4) при активации SPI со стороны мк вычитывается очередной байт данных. (ограничение - вычитывать из "фифо" можно только по 1 байту за каждую активацию SPI)

оно?

Да! Вы правы! Это то что я имел ввиду в общих чертах, с тем лишь отличием что плис сама загружает данные в срам и мк не как не воздействует на этот прцес! Мк лишь посылает запрос в плис на загрузку очередного байта в выходной spi буфер и как только это произойдёт то плис сигнализирует мк о готовности байта для передачи из плис в мк, а мк по spi выгружает байт к себе
Go to the top of the page
 
+Quote Post
krux
сообщение Sep 5 2015, 18:09
Сообщение #19


Профессионал
*****

Группа: Свой
Сообщений: 1 700
Регистрация: 2-07-12
Из: дефолт-сити
Пользователь №: 72 596



ура! ко второй странице разродились на верхний уровень абстракции.
Цитата
Это то что я имел ввиду в общих чертах

тактирование от АЦП есть всегда? оно на CPLD подано? хотелось бы прорегистрить сигналы от мк на частоте выдачи выборок АЦП. тогда проблема с синхронным дизайном решится сразу.


--------------------
провоцируем неудовлетворенных провокаторов с удовольствием.
Go to the top of the page
 
+Quote Post
uragan90
сообщение Sep 5 2015, 18:33
Сообщение #20


Местный
***

Группа: Свой
Сообщений: 248
Регистрация: 2-02-09
Из: Тверь
Пользователь №: 44 309



Цитата(krux @ Sep 5 2015, 22:09) *
тактирование от АЦП есть всегда? оно на CPLD подано? хотелось бы прорегистрить сигналы от мк на частоте выдачи выборок АЦП. тогда проблема с синхронным дизайном решится сразу.

Ацп с мк никак не связаны! Плис управляет ацп по скрытому для мк алгаритму и записывает данные в срам нв хранение, мк же должно их оттуда забрать как только на это появится время. Места в срам полно, а ацп тактируется периодически по скрытому алгаритму. Просто хотел посоветоватся по возможности реализации псевдо фифо на связке срам+плис
Go to the top of the page
 
+Quote Post
bugdesigner
сообщение Sep 5 2015, 18:34
Сообщение #21


Частый гость
**

Группа: Участник
Сообщений: 123
Регистрация: 12-06-15
Из: Земля
Пользователь №: 87 133



А какие сигналы идут от ADC? Если данные поступают на каждый период клока, то такого клока будет недостаточно, потребуется оверсемплинг, иначе как можно будет разрулить режимы записи/чтения в память? Короче, давайте подробности, а именно:
- Какой adc, сигналы, режим работы
- Какой чип RAM будем использовать
- Какие есть клоки
Без этих данных не о чем разговаривать.
В общих чертах - fifo делается в виде циклического буфера с двумя счётчиками адреса, а рулить этим должен конечный автомат (FSM)

Сообщение отредактировал bugdesigner - Sep 5 2015, 18:36
Go to the top of the page
 
+Quote Post
krux
сообщение Sep 5 2015, 18:46
Сообщение #22


Профессионал
*****

Группа: Свой
Сообщений: 1 700
Регистрация: 2-07-12
Из: дефолт-сити
Пользователь №: 72 596



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

вопрос состоит в том, каково соотношение частот.
частота, приходящая в плис кратна частоте, подаваемой на ацп? равна? какова задержка данных ацп по фазе относительно этого клока, есть ли она вообще?
во сколько раз эта частота выше, чем частота SPI? насколько критична реализация SPI в вашем микроконтроллере к временным отклонениям MISO относительно SCK?

вот потому и пытаем вас как партизана.
потому как данных мало.


--------------------
провоцируем неудовлетворенных провокаторов с удовольствием.
Go to the top of the page
 
+Quote Post
uragan90
сообщение Sep 5 2015, 19:45
Сообщение #23


Местный
***

Группа: Свой
Сообщений: 248
Регистрация: 2-02-09
Из: Тверь
Пользователь №: 44 309



Клока, клока... Я ж говорю что по импульсу от мк в плис плис должен зафиксировать факт прихода запроса на запись, дождатся этого самого вашего клока основного в плис и дождатся когда станет не активен сигнал записи из вне в срам и выгрузить байт из срам в регистр свой же и просигналить об этом мк что байт готов и находится в регистре вывода. При этом флаг запроса должен сбросится. Когда мы сново пошлём запрос байта для чтения этим самым сбросится флаг готовности байта.
Это что так сложно привести к основному клоку плис? Я только этого и не пойму в чём тут проблема то? Это что так сложно реализовать. Схема выше опасаной логики дана в первом посте. И вопрос - будет ли работать?
Go to the top of the page
 
+Quote Post
x736C
сообщение Sep 5 2015, 20:55
Сообщение #24


Профессионал
*****

Группа: Участник
Сообщений: 1 273
Регистрация: 3-03-06
Пользователь №: 14 942



Цитата(uragan90 @ Sep 5 2015, 22:45) *
Это что так сложно привести к основному клоку плис? Я только этого и не пойму в чём тут проблема то? Это что так сложно реализовать. Схема выше опасаной логики дана в первом посте. И вопрос - будет ли работать?

Есть похожая тема, в которой выкладывал пример ровно с такой связкой: ADC-(CPLD-SRAM)-uC
Кто-то предлагает задействовать UART или SPI для связи CPLD и микроконтроллера. Тут вроде тоже поступало такое предложение.
Наверное, так и сделал, если бы они работали от разных генераторов. От потребных таймингов протокола тоже зависит.

http://electronix.ru/forum/index.php?showt...mp;#entry818823

В общем, задача абсолютно решаемая. Не очень понятно, что вызывает у Вас основную трудность.

Сообщение отредактировал x736C - Sep 5 2015, 20:56
Go to the top of the page
 
+Quote Post
bugdesigner
сообщение Sep 6 2015, 05:15
Сообщение #25


Частый гость
**

Группа: Участник
Сообщений: 123
Регистрация: 12-06-15
Из: Земля
Пользователь №: 87 133



Трудность здесь в пересечении доменов клоков. Как минимум одно пересечение тут есть.

Сообщение отредактировал bugdesigner - Sep 6 2015, 05:16
Go to the top of the page
 
+Quote Post
x736C
сообщение Sep 6 2015, 09:27
Сообщение #26


Профессионал
*****

Группа: Участник
Сообщений: 1 273
Регистрация: 3-03-06
Пользователь №: 14 942



Цитата(bugdesigner @ Sep 6 2015, 08:15) *
Трудность здесь в пересечении доменов клоков. Как минимум одно пересечение тут есть.

Так выпьем же за то, чтобы это было самыми большими нашими трудностями beer.gif biggrin.gif
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Sep 6 2015, 17:09
Сообщение #27


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



Цитата
Это что так сложно привести к основному клоку плис? Я только этого и не пойму в чём тут проблема то? Это что так сложно реализовать. Схема выше опасаной логики дана в первом посте. И вопрос - будет ли работать?


Народ просто любит поговоритьsm.gif.

Коротко работать будет, но есть реализация проще. Вам надо 2 сигнала
request - запрос данных
и ack - подтверждение готовности
если процу нужны очередные данные, он ставит request <= ~ack, когда ПЛИС видит запрос не равный подтверждению - это запрос на данные, она их выставляет и ставит ack <= request. Как проц видит ack равный request - это подтверждение того что данные готовы. Остается только вопрос есть ли у вас 2 портовая СРАМ или можно ли ее симулировать.

Самая простая симуляция 2 портовой СРАМ это тактировать ее частотой Х, а читать/писать на частоте Х/2, по одному адресу писать, по другому читать, дальше все становиться делом техники.... Вся схема работает на частоте Х/2 и у вас получается фифо на 2 портовой памяти. Сигнал от проца лучше прогнать через 2 триггера, чтобы как бы чего не вышло
Go to the top of the page
 
+Quote Post
EvgenyNik
сообщение Sep 7 2015, 05:21
Сообщение #28


Знающий
****

Группа: Свой
Сообщений: 597
Регистрация: 24-05-06
Из: г. Чебоксары
Пользователь №: 17 402



Просто переключающими регистрами задачу красиво решить, наверное, не получится. Нужен ещё автомат, который, принимая управляющие сигналы, будет прокручивать сценарии завершения работы с АЦП, с записью данных в ОЗУ, полученных от АЦП, корректно переводить сигналы связи CPLD<>RAM в исходное состояние и т.п.
Особенно наглядно это видно, если АЦП имеет последовательный канал связи (SPI и т.п.), когда Вам, получив команду от МК, необходимо "принять её к сведению" и завершить протокол обмена с АЦП в штатном режиме, потом записать эти данные в ОЗУ, переназначить адресные индексы кольцевого буфера (ну или глубины стека FIFO), хранящегося в ОЗУ.
Не видя основного направления применения задачи, трудно строить умозаключения, но в общем случае я за кольцевой буфер, т.к. такое построение позволяет всегда иметь акутальные данные. Надо будет вести 2 параметра для "кольца": адрес последнего значения и длина буфера (т.к. пока кольцо не замкнулось - длина не равна размеру ОЗУ).


--------------------
Почему разработчики систем повышенной надёжности плохо справляются с простыми проектами? :)
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Sep 7 2015, 05:36
Сообщение #29


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



Цитата
принимая управляющие сигналы, будет прокручивать сценарии завершения работы с АЦП, с записью данных в ОЗУ, полученных от АЦП, корректно переводить сигналы связи CPLD<>RAM в исходное состояние и т.п.

и зачем это все?
Пусть модуль сбора данных с АЦП этим занимается, а когда все сделает кладет в регистр и ставит флаг записать данные. Как фифо будет готово оно забирает данные. Как процу надо данные, фифо опять же выдает их в регистр. А дальше уже другое устройство (модуль) переписывает данные в проц, хоть по СПИ, хоть по телеграфу...
Зачем усложнять, то? ТС спросил можно ли сделать такое фифо, а вы уже все обсудили и интерфейсы, и АЦП, и прочее...

Go to the top of the page
 
+Quote Post
Maverick
сообщение Sep 7 2015, 06:02
Сообщение #30


я только учусь...
******

Группа: Модераторы
Сообщений: 3 447
Регистрация: 29-01-07
Из: Украина
Пользователь №: 24 839



Цитата(Golikov A. @ Sep 6 2015, 20:09) *
Народ просто любит поговоритьsm.gif.

Коротко работать будет, но есть реализация проще. Вам надо 2 сигнала
request - запрос данных
и ack - подтверждение готовности
если процу нужны очередные данные, он ставит request <= ~ack, когда ПЛИС видит запрос не равный подтверждению - это запрос на данные, она их выставляет и ставит ack <= request. Как проц видит ack равный request - это подтверждение того что данные готовы. Остается только вопрос есть ли у вас 2 портовая СРАМ или можно ли ее симулировать.

Самая простая симуляция 2 портовой СРАМ это тактировать ее частотой Х, а читать/писать на частоте Х/2, по одному адресу писать, по другому читать, дальше все становиться делом техники.... Вся схема работает на частоте Х/2 и у вас получается фифо на 2 портовой памяти. Сигнал от проца лучше прогнать через 2 триггера, чтобы как бы чего не вышло

как я понял у ТС однопортовая память SRAM

Цитата(uragan90 @ Sep 5 2015, 19:05) *
Просто задача идеи состоит в том чтоб на высокой скорости загружать sram и потом по мере необходимости выгружать данные из sram. Но cpld уже есть EPM570 с подключенной к ней sram CY7C1041DV33. Почему б и не попробовать ведь ресурсов их хватает для задачи с головой. Просто криво возможно как то но возможно ведь?


--------------------
If it doesn't work in simulation, it won't work on the board.

"Ты живешь в своих поступках, а не в теле. Ты — это твои действия, и нет другого тебя" Антуан де Сент-Экзюпери повесть "Маленький принц"
Go to the top of the page
 
+Quote Post

4 страниц V  < 1 2 3 4 >
Reply to this topicStart new topic
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 04:05
Рейтинг@Mail.ru


Страница сгенерированна за 0.01704 секунд с 7
ELECTRONIX ©2004-2016