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

 
 
> Процессор<-->ПЛИС. Асинхронный интерфейс, Как правильно сделать
winipuh
сообщение Nov 2 2012, 16:07
Сообщение #1


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

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



Добрый вечер. Прошу помощи по следующим вопросам.

ПЛИС (циклон 3) подключается к процессору через интерфейс асинхронной SRAM. Процессор может читать/писать внтуренние регистры ПЛИС.
Тактовая в ПЛИС - около 98 МГц, клок внешней шины процессора - около 101 МГц.
Прикрепленное изображение

Сигнал wr_stb - это строб записи внутри ПЛИС (полученный после цепочки триггеров для предотвращения метастабильности).
Возникли сомнения по поводу того как правильно организовать запись в ПЛИС.

1. Можно ли завести данные на вход регистра напрямую и использовать wr_stb в качестве сигнала clock enable?
Может ли возникнeть метастабильное состояние триггера при смене данных и при неактивном CE? Или это полностью безопасно?

2. Можно ли формировать clock enable для триггера, объединяя через логику линии адреса и wr_stb? Или же это может вызвать глитч на выходе LUT при изменениях на шине адреса и как следствие метастабильное состояние (из-за нарушения требования по setup/hold на входе CE триггера)? Согласно документации, у LUT-а в режиме двух входов глитч на выходе исключен. Однако где гарантия, что так получится при синтезе и quartus не будет использовать, например, все 4 входа LUT-а для wr_wtb и линий адреса?

3. Может быть использование общего сигнала wr_stb является неверными, а для каждого регистра нужно формировать свой строб записи, объединяя через логику ADDR, nCS и nWR, а затем пропуская через цепочку триггеров?

Ответов на эти вопросы в альтеровской документации пока не нашел, в инете тоже.
Так что буду благодарен всем откликнувшимся. sm.gif

Сообщение отредактировал winipuh - Nov 2 2012, 16:10
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
MSL
сообщение Nov 8 2012, 07:56
Сообщение #2


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

Группа: Участник
Сообщений: 75
Регистрация: 25-07-04
Из: Rostov-on-Don
Пользователь №: 382



Цитата(winipuh @ Nov 8 2012, 00:18) *
Т.е. при нарушении требований по setup/hold для rdaddress-а во время чтения может испортиться содержимое памяти? blink.gif
А как это? Может мне кто-нибудь объяснить?


Ну такие требования есть для работы с любой памятью, вы ж не можете работать с памятью 10ns статикой на 200mhz, например-)) У вас же данные на адресах должны появиться раньше минимум на сетап тайм до строба записи и быть не менее холд тайм...

Я вообще тоже не могу понять зачем вам wr_wtb, зачем через него клок пускать... Записали данные и команду в статус - у вас появился сигнал (flag_start как пример в моих аттачах), по клоку плис если этот сигнал есть отрабатываете то что вам нужно и потом сбрасываете его. Если в данном случае так сильно боитесь метастабильности - ну пропусите этот сигнал через тригеры и ваш клок плис...
Go to the top of the page
 
+Quote Post
winipuh
сообщение Nov 8 2012, 10:46
Сообщение #3


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

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



Цитата(MSL @ Nov 8 2012, 11:56) *
Если в данном случае так сильно боитесь метастабильности - ну пропусите этот сигнал через тригеры и ваш клок плис...

Да нет, я уже кое-как в теме освоился, спасибо.
Заданный вопрос - вообщем-то простое любопытство, не более. sm.gif

Цитата(MSL @ Nov 8 2012, 11:56) *
Ну такие требования есть для работы с любой памятью, вы ж не можете работать с памятью 10ns статикой на 200mhz, например-)) У вас же данные на адресах должны появиться раньше минимум на сетап тайм до строба записи и быть не менее холд тайм...

Логично, что при нарушении времянок могут неправильно считаться данные.
Но как при чтении содержимое памяти может испортиться?
У меня, что называется, "разрыв шаблона"... sad.gif
Go to the top of the page
 
+Quote Post
maksimp
сообщение Nov 8 2012, 17:55
Сообщение #4


Местный
***

Группа: Участник
Сообщений: 313
Регистрация: 2-07-11
Пользователь №: 66 023



Цитата(winipuh @ Nov 8 2012, 13:46) *
Но как при чтении содержимое памяти может испортиться?

Это такой особый прибабах циклона:

"Violating the setup or hold time on the memory block input registers might corrupt
the memory contents. This applies to both read and write operations."

Даташит на циклон 3, "Chapter 3: Memory Blocks in the Cyclone III Device Family", раздел "Clocking Modes", страница 3-15.
Go to the top of the page
 
+Quote Post
winipuh
сообщение Nov 8 2012, 19:39
Сообщение #5


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

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



Цитата(maksimp @ Nov 8 2012, 21:55) *
Это такой особый прибабах циклона:

"Violating the setup or hold time on the memory block input registers might corrupt
the memory contents. This applies to both read and write operations."

Даташит на циклон 3, "Chapter 3: Memory Blocks in the Cyclone III Device Family", раздел "Clocking Modes", страница 3-15.

sm.gif

Вопрос изначально был такой:
Цитата(winipuh @ Nov 8 2012, 00:18) *
Попутно возник вопрос по блочной памяти в циклоне-3. В хэндбуке написано:
Цитата
Violating the setup or hold time on the memory block input registers might corrupt
the memory contents. This applies to both read and write operations.

Т.е. при нарушении требований по setup/hold для rdaddress-а во время чтения может испортиться содержимое памяти? blink.gif
А как это? Может мне кто-нибудь объяснить?
(Cyclone-III Handbook, vol.1 , p 3-14)

Вообщем-то я из чистого любопыства пытаюсь понять физический принцип этого прибабаха.
Сам додуматься не могу (где прочитать - тоже пока не нашел), поэтому и спросил здесь... sm.gif
Go to the top of the page
 
+Quote Post
maksimp
сообщение Nov 9 2012, 03:35
Сообщение #6


Местный
***

Группа: Участник
Сообщений: 313
Регистрация: 2-07-11
Пользователь №: 66 023



Цитата(winipuh @ Nov 8 2012, 22:39) *
Вообщем-то я из чистого любопыства пытаюсь понять физический принцип этого прибабаха.

Гипотеза:
Выбор данных по нужному адресу при чтении производится КМОП мультиплексором. Мультиплексор сделан на двунаправленных ключах. Мультиплексор кратковременно открывается по фронту тактового сигнала специальным генератором коротких импульсов (он там нарисован на структурной схеме). При изменении адреса одновременно с импульсом чтения два или более ключей мультиплексора могут кратковременно открыться одновременно. Триггеры памяти то есть оказываются соединёнными между собой. Видимо дополнительных буферов, обеспечивающих однонаправленность передачи информации, там нет. Триггеры могут поэтому влиять друг на друга.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- winipuh   Процессор<-->ПЛИС. Асинхронный интерфейс   Nov 2 2012, 16:07
- - iosifk   Цитата(winipuh @ Nov 2 2012, 20:07) Добры...   Nov 2 2012, 18:11
- - zomg   Я так понимаю, что строб wr_stb формируется по сре...   Nov 2 2012, 18:23
|- - Shamil   Цитата(zomg @ Nov 3 2012, 00:23) 3. Делае...   Nov 3 2012, 04:00
- - winipuh   Спасибо, zomg.   Nov 2 2012, 18:58
- - Iptash   ЦитатаСигнал wr_stb - это строб записи внутри ПЛИС...   Nov 2 2012, 19:11
|- - winipuh   Цитата(Iptash @ Nov 2 2012, 23:11) Мне ка...   Nov 2 2012, 21:27
|- - Iptash   Цитата(winipuh @ Nov 3 2012, 01:27) Нет, ...   Nov 3 2012, 04:13
|- - mihalevski   Цитата(winipuh @ Nov 3 2012, 04:27) Нет, ...   Nov 3 2012, 16:45
- - zomg   2 Shamil: а как следующая запись наложится, если я...   Nov 3 2012, 08:37
|- - Shamil   Цитата(zomg @ Nov 3 2012, 14:37) 2 Shamil...   Nov 3 2012, 11:40
- - MSL   Прикручивал когда-то макс2 к ARMу, чтобы к максу м...   Nov 6 2012, 08:25
- - winipuh   Попутно возник вопрос по блочной памяти в циклоне-...   Nov 7 2012, 20:18
- - MSL   Цитата(winipuh @ Nov 8 2012, 23:39) Вообщ...   Nov 8 2012, 20:53
- - winipuh   Цитата(maksimp @ Nov 9 2012, 07:35) Мульт...   Nov 9 2012, 10:09
- - maksimp   Цитата(winipuh @ Nov 9 2012, 13:09) А это...   Nov 9 2012, 19:26


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

 


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


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