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

 
 
 
Reply to this topicStart new topic
> Тайминги с минимальным циклом для интерфейса к Async SRAM ?, На примере 10 нс K6R4008 и Cyclone II
IanPo
сообщение Oct 27 2010, 11:36
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 44
Регистрация: 14-10-10
Пользователь №: 60 152



В общем, по даташиту могу читать данные каждые 10 нс ( /OE=/CS=0 и /WE=1).

На практике не получается читать в цикле, меньшем 20 нс (75, 100 МГц не работает).

Это так и должно быть ? Запись работает на 75 МГц, однако.

Хочу 3-цикл чтение-запись-чтение на 75 МГц (по 13 нс) или 4-цикл чтение-запись-чтение-запись на 100 МГц.

Есть мнение, что такое возможно только на синхронной SRAM.
Go to the top of the page
 
+Quote Post
DmitryR
сообщение Oct 27 2010, 11:57
Сообщение #2


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

Группа: Свой
Сообщений: 1 535
Регистрация: 20-02-05
Из: Siegen
Пользователь №: 2 770



Вполне возможно и на асинхронной, надо только проследить, чтобы триггеры шины встали в лапы. Смотрите: адрес при чтении (при записи проще, поэтому рассмотрим сразу чтение) должен выйти из ПЛИС через буферы, прийти в память, память должна выбрать данные, потом они должны выйти из нее и прийти в ПЛИС. В принципе все эти задержки распространения есть в документации, если вы их найдете, просуммируете и они окажутся менее 10 ns - все возможно. Если больше - можно продолжать пытаться, выставляя следующий адрес до того, как защелкнуты текущие данные, но это уже может оказаться ненадежно и надо точно расчитать hold памяти (сколько гарантированно держится в буферах старое значение после установки нового адреса).
Go to the top of the page
 
+Quote Post
IanPo
сообщение Oct 27 2010, 12:43
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 44
Регистрация: 14-10-10
Пользователь №: 60 152



DmitryR, cпасибо за ответ.

Что вы думаете о такой реализации:
Два процесса от клоков одной частоты (от PLL), сдвинутых по фазе.
Один процесс ставит адрес, другой читает данные.
Тогда задержки как бы компенсируются.
Подбирая фазу, я смогу читать (после доработки и писать) на нужной мне частоте (в данном случае 75 МГц).

Код
type tTakt is (t0,t1,t2);
signal sTakt : tTakt;

process ( clk )
begin
    case sTakt is
        when t2 => -- takt 0
            sTakt <= t0;
            --
            oMA <= sAdr0;
        when t0 => -- takt 1
            sTakt <= t1;
            --
            oMA <= sAdr1;
        when t1 => -- takt 2
            sTakt <= t2;
            --
            oMA <= sAdr2;
        end case;
    end if;
end process;

process ( clk2 )
begin
    case sTakt is
        when t2 => -- takt 0
            sData0 <= ioMD;
        when t0 => -- takt 1
            sData1 <= ioMD;
        when t1 => -- takt 2
            sData2 <= ioMD;
        end case;
    end if;
end process;


oWE <= '1';
oOE <= '0';
ioMD <= (others => 'Z');


Сообщение отредактировал IanPo - Oct 27 2010, 12:44
Go to the top of the page
 
+Quote Post
DmitryR
сообщение Oct 27 2010, 12:59
Сообщение #4


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

Группа: Свой
Сообщений: 1 535
Регистрация: 20-02-05
Из: Siegen
Пользователь №: 2 770



Это идея маргинальная, когда уже больше ничего не помогает (потому что в полностью независимый временной домен вам придется передавать управление, а это несколько все усложняет). Я бы работал в такой последовательности (я посмотрел даташит и представляю времянку процесса):
1. Просто защелкивать данные на такт позже: у второго Циклона время вывода (от триггера до лапы) 2,8ns, время ввода (от лапы до триггера) 1,2ns, и время выборки памяти 10 ns. Итого 14ns. В принципе с учетом немалого времени удержания (hold) памяти в 3ns можно успеть.
2. Защелкивать данные по падающему фронту, то есть через полтора такта.
Go to the top of the page
 
+Quote Post
Костян
сообщение Nov 26 2011, 14:51
Сообщение #5


Знающий
****

Группа: Свой
Сообщений: 740
Регистрация: 24-07-06
Из: Minsk
Пользователь №: 19 059



Не могу разобраться в потоковой записи.
Кристалл: AS7C34098A
Время доступа 10нс.

Классическая временная диаграмма записи:

При цикле записи 10нс согласно даташиту на данную SRAM активный уровень nCS и nWE должен быть не менее 8нс. Т.е между циклами записи на nCS и nWE нужно подавать 1 на время 2нс ! Обязательно ли поднимать в единицу (в неактивное состояние) эти сигналы ? Или достаточно менять адресс ? Не будет ли в этом случае ошибочных записей в другие адресса в связи с немгновенной установкой всех битов addr в новое значение ?
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Nov 26 2011, 15:00
Сообщение #6


Гуру
******

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



Поднимать обязательно. Это только при чтении можно обойтись перебором адреса.
Go to the top of the page
 
+Quote Post
Костян
сообщение Nov 26 2011, 15:27
Сообщение #7


Знающий
****

Группа: Свой
Сообщений: 740
Регистрация: 24-07-06
Из: Minsk
Пользователь №: 19 059



QUOTE (aaarrr @ Nov 26 2011, 13:00) *
Поднимать обязательно. Это только при чтении можно обойтись перебором адреса.

спасибо. но в даташите нигде не описывается минимальное время неактивного состояния nCS и nWE между циклами записи. Достаточно ли на 2нс поднять в 1 эти сигналы перед следующим циклом записи ?
Иными словами , возможна ли запись в асинхронную память x16 с 10нс временм доступа потока данных 16x100Мбит/с ?

Go to the top of the page
 
+Quote Post
aaarrr
сообщение Nov 26 2011, 15:40
Сообщение #8


Гуру
******

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



Цитата(Костян @ Nov 26 2011, 19:27) *
спасибо. но в даташите нигде не описывается минимальное время неактивного состояния nCS и nWE между циклами записи. Достаточно ли на 2нс поднять в 1 эти сигналы перед следующим циклом записи ?

Насколько я понимаю, минимальная длительность цикла nWE составляет 17нс (tWP1 + tWP2).

Цитата(Костян @ Nov 26 2011, 19:27) *
Иными словами , возможна ли запись в асинхронную память x16 с 10нс временм доступа потока данных 16x100Мбит/с ?

Нельзя. Даже чтение требует большего времени: tAA = 10ns max.
Go to the top of the page
 
+Quote Post
Костян
сообщение Nov 26 2011, 16:06
Сообщение #9


Знающий
****

Группа: Свой
Сообщений: 740
Регистрация: 24-07-06
Из: Minsk
Пользователь №: 19 059



QUOTE (aaarrr @ Nov 26 2011, 13:40) *
Насколько я понимаю, минимальная длительность цикла nWE составляет 17нс (tWP1 + tWP2).

Очень надеюсь, что Вы ошибаетесь. Не совсем понятно, почему сложили tWP1 и tWP2.

Судя по модели, которые представлены на сайте, nCs и nWE действительно можно поднять на 2нс в 1 состояние. См аттач.



QUOTE
Нельзя. Даже чтение требует большего времени: tAA = 10ns max.

Дык 10нс и есть 16х100Мбит/с

Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Nov 26 2011, 16:25
Сообщение #10


Гуру
******

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



Цитата(Костян @ Nov 26 2011, 20:06) *
Очень надеюсь, что Вы ошибаетесь. Не совсем понятно, почему сложили tWP1 и tWP2.

Хм, а что с ними еще можно сделать?

Цитата(Костян @ Nov 26 2011, 20:06) *
Судя по модели, которые представлены на сайте, nCs и nWE действительно можно поднять на 2нс в 1 состояние. См аттач.

Модель моделью, а вот в реальной жизни 2нс - это весьма мало. Даже если сформируете такую "иголку", боюсь, памяти она не понравится.

Цитата(Костян @ Nov 26 2011, 20:06) *
Дык 10нс и есть 16х100Мбит/с

Через 10нс после установки адреса данные только появятся, а работать по краю без минимального запаса я бы не стал.
Go to the top of the page
 
+Quote Post
Костян
сообщение Nov 26 2011, 20:25
Сообщение #11


Знающий
****

Группа: Свой
Сообщений: 740
Регистрация: 24-07-06
Из: Minsk
Пользователь №: 19 059



QUOTE (aaarrr @ Nov 26 2011, 14:25) *
Модель моделью, а вот в реальной жизни 2нс - это весьма мало. Даже если сформируете такую "иголку", боюсь, памяти она не понравится.

Такс, разобрался.
В даташите указано
"Input Rise and Fall Times 1.5ns"
Поднимать сигнал nCE и nWE в 1 нужно лишь для того, чтобы при изменении addr не было ложной записи в неправильный адрес. Минимальный активный уровень для nCS составляет 8нс. Итого минимальный цикл записи будет равен: 8+1.5(rise)+1.5(fall)=11нс. Итого получаем скорость 1/11нс * 16 бит/с ~ 16x90Мбит/с

Go to the top of the page
 
+Quote Post
aaarrr
сообщение Nov 26 2011, 20:53
Сообщение #12


Гуру
******

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



Да, наврал я про WP, конечно. CE и OE попутал.

Выходит, можно уложиться в 10нс, но придется весьма тщательно расставлять сигналы.
Go to the top of the page
 
+Quote Post

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

 


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


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