|
|
  |
Тайминги с минимальным циклом для интерфейса к Async SRAM ?, На примере 10 нс K6R4008 и Cyclone II |
|
|
|
Oct 27 2010, 11:57
|
Профессионал
    
Группа: Свой
Сообщений: 1 535
Регистрация: 20-02-05
Из: Siegen
Пользователь №: 2 770

|
Вполне возможно и на асинхронной, надо только проследить, чтобы триггеры шины встали в лапы. Смотрите: адрес при чтении (при записи проще, поэтому рассмотрим сразу чтение) должен выйти из ПЛИС через буферы, прийти в память, память должна выбрать данные, потом они должны выйти из нее и прийти в ПЛИС. В принципе все эти задержки распространения есть в документации, если вы их найдете, просуммируете и они окажутся менее 10 ns - все возможно. Если больше - можно продолжать пытаться, выставляя следующий адрес до того, как защелкнуты текущие данные, но это уже может оказаться ненадежно и надо точно расчитать hold памяти (сколько гарантированно держится в буферах старое значение после установки нового адреса).
|
|
|
|
|
Oct 27 2010, 12:43
|
Участник

Группа: Участник
Сообщений: 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
|
|
|
|
|
Nov 26 2011, 14:51
|
Знающий
   
Группа: Свой
Сообщений: 740
Регистрация: 24-07-06
Из: Minsk
Пользователь №: 19 059

|
Не могу разобраться в потоковой записи. Кристалл: AS7C34098A Время доступа 10нс. Классическая временная диаграмма записи:  При цикле записи 10нс согласно даташиту на данную SRAM активный уровень nCS и nWE должен быть не менее 8нс. Т.е между циклами записи на nCS и nWE нужно подавать 1 на время 2нс ! Обязательно ли поднимать в единицу (в неактивное состояние) эти сигналы ? Или достаточно менять адресс ? Не будет ли в этом случае ошибочных записей в другие адресса в связи с немгновенной установкой всех битов addr в новое значение ?
|
|
|
|
|
Nov 26 2011, 15:27
|
Знающий
   
Группа: Свой
Сообщений: 740
Регистрация: 24-07-06
Из: Minsk
Пользователь №: 19 059

|
QUOTE (aaarrr @ Nov 26 2011, 13:00)  Поднимать обязательно. Это только при чтении можно обойтись перебором адреса. спасибо. но в даташите нигде не описывается минимальное время неактивного состояния nCS и nWE между циклами записи. Достаточно ли на 2нс поднять в 1 эти сигналы перед следующим циклом записи ? Иными словами , возможна ли запись в асинхронную память x16 с 10нс временм доступа потока данных 16x100Мбит/с ?
|
|
|
|
|
Nov 26 2011, 15:40
|
Гуру
     
Группа: Свой
Сообщений: 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.
|
|
|
|
|
Nov 26 2011, 16:06
|
Знающий
   
Группа: Свой
Сообщений: 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Мбит/с
Эскизы прикрепленных изображений
|
|
|
|
|
Nov 26 2011, 16:25
|
Гуру
     
Группа: Свой
Сообщений: 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нс после установки адреса данные только появятся, а работать по краю без минимального запаса я бы не стал.
|
|
|
|
|
Nov 26 2011, 20:25
|
Знающий
   
Группа: Свой
Сообщений: 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Мбит/с
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|