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

 
 
> Параллельно запись/чтение в/из памяти ?, Как сделать ?
Саша Z
сообщение Nov 28 2007, 21:06
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 921
Регистрация: 6-04-07
Из: Israel
Пользователь №: 26 822



Есть задача: на входе идет поток и байтовых данных с rate скажем Х MHz (каждый clock - запись байта).
На выходе нужно дать строенные слова, т.е. 24 бита (паковать по 3 последовательно полученных байта и выдавать слово наружу), т.е. со скоростью Х/3 MHz.
Если предположим выходной (read) clock получен делением на 3 входного (write) clockа (значит есть небольшая задержка между edges входного и выходного clocks), можно ли каким-то образом использовать буфер из 3 байт по накоплении которого слово в 24 бита выдается наружу согласно read clock ?
Проблема (как я вижу) в том что по третьему write clockу когда третий байт только записался нужно сразу-же читать все слово (все три байта буфера параллельно) по read clockу, что может примерно совпасть с записью первого байта следующей тройки (т.е. четвертого по счету с streame).
Может ли тут помочь dual port ram ?

Если это не реально, какие более реальные идеи есть ? Может что-то врое ping-pong buffer (т.е. иметь 2 буфера по 3 байта каждый - как только первый заполнился со входа всеми тремя байтами - он тут-же асинхронно скидывается во второй и 24-битное слово считывается на выхом со второго, в то время как первый заполняется следующими 3мя байтами потока, и т.д.)...

Что скажем ?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
BSV
сообщение Nov 30 2007, 22:27
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 541
Регистрация: 11-04-05
Из: Москва
Пользователь №: 4 045



Почитайте мой предыдущий пост - я его немного поправил. Если устройство на которое пойдут 24 бита не предполагает управления потоком (например, не м.б. занято), то FIFO не нужно ИМХО. Тут же самый обычный конвейер - каждые 3 такта (только со сдвижкой на 1 такт) будете получать на выходе слово.

В общем, как-то так (сбросы если где-то нужны - сами добавьте, и порядок байт в слове проверьте)
Код
process (CLK)
begin
  if (CLK'event and CLK = '1') then
    if (IN_WE = '1') then
      RA <= IN;
      RB <= RA;
      RC <= RB;
      CNT <= CNT + 1;
    end if;
    OUT_WE <= CNT(1) and not CNT(0);
  end if;
end process;
process (CLK)
begin
  if (CLK'event and CLK = '1') then
    if (OUT_WE = '1') then
      R_OUT <= RA & RB & RC;
    end if;
  end if;
end process;
CLK_OUT <= not OUT_WE;


--------------------
Дурак, занимающий высокий пост, подобен человеку на вершине горы - все ему кажется маленьким, а всем остальным кажется маленьким он сам. /Законы Мерфи/
Go to the top of the page
 
+Quote Post
Саша Z
сообщение Nov 30 2007, 22:56
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 921
Регистрация: 6-04-07
Из: Israel
Пользователь №: 26 822



Цитата(BSV @ Dec 1 2007, 02:27) *
Почитайте мой предыдущий пост - я его немного поправил. Если устройство на которое пойдут 24 бита не предполагает управления потоком (например, не м.б. занято), то FIFO не нужно ИМХО. Тут же самый обычный конвейер - каждые 3 такта (только со сдвижкой на 1 такт) будете получать на выходе слово.

В общем, как-то так (сбросы если где-то нужны - сами добавьте, и порядок байт в слове проверьте)
Код
process (CLK)
begin
  if (CLK'event and CLK = '1') then
    if (IN_WE = '1') then
      RA <= IN;
      RB <= RA;
      RC <= RB;
      CNT <= CNT + 1;
    end if;
    OUT_WE <= CNT(1) and not CNT(0);
  end if;
end process;
process (CLK)
begin
  if (CLK'event and CLK = '1') then
    if (OUT_WE = '1') then
      R_OUT <= RA & RB & RC;
    end if;
  end if;
end process;
CLK_OUT <= not OUT_WE;



спасибо.
Требования к duty cycle есть - обязано быть 50% +/- 10%
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Саша Z   Параллельно запись/чтение в/из памяти ?   Nov 28 2007, 21:06
- - rezident   Вы вроде начинаете работать с ПЛИС? Вот и познаком...   Nov 28 2007, 21:37
- - yuri_d   Применить Dual Port RAM можно, но это напоминает с...   Nov 28 2007, 22:30
|- - skv   Цитата(yuri_d @ Nov 29 2007, 01:30) Приме...   Nov 30 2007, 12:08
|- - Саша Z   Цитата(skv @ Nov 30 2007, 16:08) Схема и ...   Nov 30 2007, 21:26
- - Саша Z   Спасибо, это действительно вариант, вроде просто. ...   Nov 29 2007, 15:01
|- - sazh   Цитата(Саша Z @ Nov 29 2007, 18:01) Спаси...   Nov 29 2007, 15:42
|- - Саша Z   Цитата(sazh @ Nov 29 2007, 19:42) Обычно ...   Nov 29 2007, 22:15
|- - AlexB   Цитата(Саша Z @ Nov 30 2007, 02:15) Что и...   Nov 29 2007, 23:05
- - BSV   Что Вы все так рветесь прикрутить еще один тактовы...   Nov 30 2007, 21:46
|- - Саша Z   Цитата(BSV @ Dec 1 2007, 01:46) Что Вы вс...   Nov 30 2007, 21:58
|- - BSV   Цитата(Саша Z @ Dec 1 2007, 00:58) Значит...   Nov 30 2007, 22:04
|- - Саша Z   Цитата(BSV @ Dec 1 2007, 02:04) Верно, то...   Nov 30 2007, 22:20
|- - Саша Z   Цитата(BSV @ Dec 1 2007, 02:27) Почитайте...   Dec 3 2007, 16:09
- - BSV   А с генерацией выходного клока разобрались? Кстати...   Dec 3 2007, 21:12
- - Саша Z   Цитата(BSV @ Dec 4 2007, 01:12) А с генер...   Dec 3 2007, 21:33


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

 


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


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