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

 
 
> FIFO (CPLD+SRAM)
uragan90
сообщение Sep 5 2015, 13:37
Сообщение #1


Местный
***

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



Доброго времени суток уважаемые!!!
Есть задача построить модуль FIFO на связке CPLD+SRAM. Это образно говоря решение будет использоваться как простое FIFO для передачи данных в микроконтроллер. Мозги кипят и требуется помощь знающих людей которые смогут помочь разобраться в проблеме.
Вопрос коммутационного плана на выложенной схеме дело в том что мк и плис работают на разных тактовых частотах и тут то и проблема.
Я думаю так сделать:
Данные со входа IN_DATA[15..0] поступают во внешнюю sram и там фиксируются сигналом (wd_sram) по адресу схемы которая тут не представлена в принципе это не важно. Начало работы начинается с того что мк подаёт запрос на то чтоб данные записались в регистр (inst5) сигналом (request) и если sram находится в режиме чтения то данные записываются в регистр при этом выставляется флаг регистр загружен -(confirmation) и сбрасывается регистр запроса на запись данных из sram. По приходу следующего запроса записи из sram в регистр (inst5) флаг (confirmation) сбрасывается в ноль и мк ожидает загрузки регистра (inst5) из него потом сдвиговым регистром будут выгружены данные в мк. Так я предположил выйти из проблемы пересечения клоковых доменов асинхронной фифо. Подскажите в правильном ли я направлении двигаюсь?
Прикрепленные файлы
Прикрепленный файл  FIFO.pdf ( 1.19 мегабайт ) Кол-во скачиваний: 59
 
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Golikov A.
сообщение Sep 24 2015, 19:32
Сообщение #2


Гуру
******

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



задача проста как 2 копейки, вы мудрите...
первое: делаете 2 портовую память.
- это просто, она на частоте 100 МГц, то пишет в 1 адрес (если есть сигнал записи, или не пишите), то выставляет 2 адрес и читает. Получаете 50 МГц 2 портовую память.

схема,без размерности и может быть с ошибками, но суть должна быть понятна

Код
input addr1;
input addr2;
input we;
input data_in;
output data_out;
reg PortSel; //регистр для выбора порта
reg mem_data_in; //регистр для сохранения

always @(posedge clk)
begin
   if(PortSel == 0)
      begin
        mem_addr <= addr2; //готовимся читать со 2 адреса
        mem_we <= 1'b0; //снимаем сигнал записи, 2 адрес чтение
        data_out <= mem_data_out; //защелкиваем данные с памяти (с прошлого задания адреса)
        PortSel <= 1'b1;
      end
   else
      begin
        mem_addr <= addr1; //готовимся писать в 1 адрес если надо
        mem_we <= we; //ставим we если надо
        mem_data_in <= data_in; //защелкиваем данные для записи
        PortSel <= 1'b0;
      end
end



А после того как вы это сделали, у вас остается сделать правильный переход из домена 100 МГц в домен 10.
Это просто запрос на чтение через 2 триггера, из 10 в 100, там выставляете защелкиваете данные на выход, через 1 клок данные будут валидны и стоять на входе 10. То есть на след такте вы их легко считаете...
Go to the top of the page
 
+Quote Post
uragan90
сообщение Sep 25 2015, 07:45
Сообщение #3


Местный
***

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



Цитата(Golikov A. @ Sep 24 2015, 23:32) *
задача проста как 2 копейки, вы мудрите...
первое: делаете 2 портовую память.
- это просто, она на частоте 100 МГц, то пишет в 1 адрес (если есть сигнал записи, или не пишите), то выставляет 2 адрес и читает. Получаете 50 МГц 2 портовую память.

У меня не двух портовая память CY7C1041DV33
У неё нет такой возможности обращения к одним и тем же данным по разным портам
Go to the top of the page
 
+Quote Post
EvgenyNik
сообщение Sep 25 2015, 07:55
Сообщение #4


Знающий
****

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



Цитата(uragan90 @ Sep 25 2015, 10:45) *
У меня не двух портовая память...
Дык, Вам и пишут - как из обычного 100МГц ОЗУ сделать а-ля двухпортовое 50МГц ОЗУ. Только порты будут фактически на ПЛИСке.


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


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

Группа: Участник
Сообщений: 1 072
Регистрация: 11-12-12
Пользователь №: 74 815



Цитата(EvgenyNik @ Sep 25 2015, 11:55) *
Дык, Вам и пишут - как из обычного 100МГц ОЗУ сделать а-ля двухпортовое 50МГц ОЗУ. Только порты будут фактически на ПЛИСке.

Ничего не выйдет. СОЗУ то и 100 МГц, да чтение за 1 такт никак даже на ФПГА. А ЦПЛД еще тормознее. Выйдет 33 МГц на чтение и 20... 25 на запись. Но работать будет несомненно. Только еще придется ФИФО на регистрах небольшое сделать для когерентности с МК, а то лаг на чтение неизбежен.

Сообщение отредактировал Corner - Sep 28 2015, 19:29
Go to the top of the page
 
+Quote Post
RobFPGA
сообщение Sep 28 2015, 23:46
Сообщение #6


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

Группа: Свой
Сообщений: 1 214
Регистрация: 23-12-04
Пользователь №: 1 643



Приветствую!

Цитата(Corner @ Sep 28 2015, 22:28) *
Ничего не выйдет. СОЗУ то и 100 МГц, да чтение за 1 такт никак даже на ФПГА. А ЦПЛД еще тормознее. Выйдет 33 МГц на чтение и 20... 25 на запись. Но работать будет несомненно. Только еще придется ФИФО на регистрах небольшое сделать для когерентности с МК, а то лаг на чтение неизбежен.


Ой да что вы говорите! Не пугайте маленьких. Я еще на MAX7000 серии делал подобное и на статике и на просто DDR 100 MHz вполне себе рабочая была. У TC конечно память слегка неудобная для таких частот тут лучше синхронная статика подошла бы - придется помурыжится с таймингами чтобы вытянуть 100 MHz рабочей

Судя по схеме у вас запись и чтение последовательные - что еще сильнее упрощает задачу
Просто чередовать WR/RD циклы, Запись при накоплении 2 отсчетов, чтение ПОСТОЯННО по текущему указателю. Соответственно данные для чтения MK будут доступны сразу. Если времянка памяти не позволит переключение WR/RD в пределах такта (no ZBT) тогда придется делат WR,WR,WR,-,RD,-, итого за 6 тактов - 3 записи - 1 чтение -
Для WR путь синхронный, а частота RD значительно ниже рабочей так что синхронизация будет не сложной.

Дерзайте!

Удачи! Rob.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- uragan90   FIFO (CPLD+SRAM)   Sep 5 2015, 13:37
- - uragan90   И вообще как такое реализовать можно? Я делаю так...   Sep 5 2015, 15:10
|- - Maverick   Цитата(uragan90 @ Sep 5 2015, 18:10) И во...   Sep 5 2015, 15:43
|- - uragan90   Цитата(Maverick @ Sep 5 2015, 19:43) Для ...   Sep 5 2015, 15:48
|- - Maverick   Цитата(uragan90 @ Sep 5 2015, 18:48) Мне ...   Sep 5 2015, 15:58
|- - uragan90   Цитата(Maverick @ Sep 5 2015, 19:58) Тогд...   Sep 5 2015, 16:05
- - krux   ЦитатаМне не нужна двух клоковая фифо! Мне дос...   Sep 5 2015, 16:02
|- - uragan90   Цитата(krux @ Sep 5 2015, 20:02) тогда эт...   Sep 5 2015, 16:11
|- - Maverick   Цитата(uragan90 @ Sep 5 2015, 19:11) Запи...   Sep 5 2015, 16:13
|- - uragan90   Цитата(Maverick @ Sep 5 2015, 20:13) Пожа...   Sep 5 2015, 16:26
- - krux   ЦитатаПросто криво возможно как то но возможно вед...   Sep 5 2015, 16:10
|- - Gorby   Цитата(krux @ Sep 5 2015, 20:10) я полага...   Sep 24 2015, 13:04
|- - uragan90   Цитата(Gorby @ Sep 24 2015, 17:04) Тут пр...   Sep 24 2015, 13:22
|- - Gorby   Цитата(uragan90 @ Sep 24 2015, 17:22) Так...   Sep 24 2015, 13:49
|- - uragan90   Цитата(Gorby @ Sep 24 2015, 17:49) Да, ко...   Sep 24 2015, 13:58
|- - EvgenyNik   Цитата(Gorby @ Sep 24 2015, 16:49) Если о...   Sep 24 2015, 14:04
|- - uragan90   Цитата(EvgenyNik @ Sep 24 2015, 18:04) Но...   Sep 24 2015, 14:09
|- - EvgenyNik   Цитата(uragan90 @ Sep 24 2015, 17:09) Чит...   Sep 24 2015, 15:10
- - krux   ЦитатаЗапись в срам должна быть выше по приоритету...   Sep 5 2015, 16:16
- - krux   ЦитатаСообщает об этом мк и мк с помощью сдвиговог...   Sep 5 2015, 16:31
|- - uragan90   Цитата(krux @ Sep 5 2015, 20:31) сколько ...   Sep 5 2015, 16:50
- - krux   Цитатая вот тоже не пойму проблемы что вас волнует...   Sep 5 2015, 16:52
|- - uragan90   Цитата(krux @ Sep 5 2015, 20:52) волнуют ...   Sep 5 2015, 17:06
- - krux   я прошу прощения за мазню в paint, но это было быс...   Sep 5 2015, 17:55
|- - uragan90   Цитата(krux @ Sep 5 2015, 21:55) я прошу ...   Sep 5 2015, 18:02
- - krux   ура! ко второй странице разродились на верхний...   Sep 5 2015, 18:09
|- - uragan90   Цитата(krux @ Sep 5 2015, 22:09) тактиров...   Sep 5 2015, 18:33
- - bugdesigner   А какие сигналы идут от ADC? Если данные поступают...   Sep 5 2015, 18:34
|- - uragan90   Клока, клока... Я ж говорю что по импульсу от мк в...   Sep 5 2015, 19:45
|- - x736C   Цитата(uragan90 @ Sep 5 2015, 22:45) Это ...   Sep 5 2015, 20:55
- - krux   для корректной работы плис нужно стабильное тактир...   Sep 5 2015, 18:46
- - bugdesigner   Трудность здесь в пересечении доменов клоков. Как ...   Sep 6 2015, 05:15
|- - x736C   Цитата(bugdesigner @ Sep 6 2015, 08:15) Т...   Sep 6 2015, 09:27
- - Golikov A.   ЦитатаЭто что так сложно привести к основному клок...   Sep 6 2015, 17:09
- - EvgenyNik   Просто переключающими регистрами задачу красиво ре...   Sep 7 2015, 05:21
- - Golikov A.   Цитатапринимая управляющие сигналы, будет прокручи...   Sep 7 2015, 05:36
|- - Maverick   Цитата(Golikov A. @ Sep 6 2015, 20:09) На...   Sep 7 2015, 06:02
||- - uragan90   Цитата(Maverick @ Sep 7 2015, 10:02) как ...   Sep 7 2015, 06:57
|- - EvgenyNik   Цитата(Golikov A. @ Sep 7 2015, 08:36) и ...   Sep 7 2015, 06:06
- - krux   при старте, если указатели чтения и записи равны (...   Sep 7 2015, 07:22
|- - uragan90   Цитата(krux @ Sep 7 2015, 11:22) при стар...   Sep 7 2015, 08:21
- - uragan90   Удалось реализовать такой модуль FIFO на внешней S...   Sep 24 2015, 12:44
||- - uragan90   Цитата(RobFPGA @ Sep 29 2015, 03:46) Прив...   Sep 30 2015, 09:00
|- - Gorby   Цитата(uragan90 @ Sep 25 2015, 10:45) У м...   Sep 25 2015, 10:23
- - uragan90   Начертал схемку которая решает практически половин...   Sep 30 2015, 17:49


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

 


RSS Текстовая версия Сейчас: 21st July 2025 - 21:09
Рейтинг@Mail.ru


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