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

Частый гость
 
Группа: Участник
Сообщений: 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, а затем пропуская через цепочку триггеров? Ответов на эти вопросы в альтеровской документации пока не нашел, в инете тоже. Так что буду благодарен всем откликнувшимся.
Сообщение отредактировал winipuh - Nov 2 2012, 16:10
|
|
|
|
|
 |
Ответов
|
Nov 8 2012, 07:56
|
Частый гость
 
Группа: Участник
Сообщений: 75
Регистрация: 25-07-04
Из: Rostov-on-Don
Пользователь №: 382

|
Цитата(winipuh @ Nov 8 2012, 00:18)  Т.е. при нарушении требований по setup/hold для rdaddress-а во время чтения может испортиться содержимое памяти? А как это? Может мне кто-нибудь объяснить? Ну такие требования есть для работы с любой памятью, вы ж не можете работать с памятью 10ns статикой на 200mhz, например-)) У вас же данные на адресах должны появиться раньше минимум на сетап тайм до строба записи и быть не менее холд тайм... Я вообще тоже не могу понять зачем вам wr_wtb, зачем через него клок пускать... Записали данные и команду в статус - у вас появился сигнал (flag_start как пример в моих аттачах), по клоку плис если этот сигнал есть отрабатываете то что вам нужно и потом сбрасываете его. Если в данном случае так сильно боитесь метастабильности - ну пропусите этот сигнал через тригеры и ваш клок плис...
|
|
|
|
|
Nov 8 2012, 10:46
|

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

|
Цитата(MSL @ Nov 8 2012, 11:56)  Если в данном случае так сильно боитесь метастабильности - ну пропусите этот сигнал через тригеры и ваш клок плис... Да нет, я уже кое-как в теме освоился, спасибо. Заданный вопрос - вообщем-то простое любопытство, не более. Цитата(MSL @ Nov 8 2012, 11:56)  Ну такие требования есть для работы с любой памятью, вы ж не можете работать с памятью 10ns статикой на 200mhz, например-)) У вас же данные на адресах должны появиться раньше минимум на сетап тайм до строба записи и быть не менее холд тайм... Логично, что при нарушении времянок могут неправильно считаться данные. Но как при чтении содержимое памяти может испортиться? У меня, что называется, "разрыв шаблона"...
|
|
|
|
|
Nov 8 2012, 17:55
|
Местный
  
Группа: Участник
Сообщений: 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.
|
|
|
|
|
Nov 8 2012, 19:39
|

Частый гость
 
Группа: Участник
Сообщений: 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.  Вопрос изначально был такой: Цитата(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-а во время чтения может испортиться содержимое памяти? А как это? Может мне кто-нибудь объяснить? (Cyclone-III Handbook, vol.1 , p 3-14) Вообщем-то я из чистого любопыства пытаюсь понять физический принцип этого прибабаха. Сам додуматься не могу (где прочитать - тоже пока не нашел), поэтому и спросил здесь...
|
|
|
|
|
Nov 9 2012, 03:35
|
Местный
  
Группа: Участник
Сообщений: 313
Регистрация: 2-07-11
Пользователь №: 66 023

|
Цитата(winipuh @ Nov 8 2012, 22:39)  Вообщем-то я из чистого любопыства пытаюсь понять физический принцип этого прибабаха. Гипотеза: Выбор данных по нужному адресу при чтении производится КМОП мультиплексором. Мультиплексор сделан на двунаправленных ключах. Мультиплексор кратковременно открывается по фронту тактового сигнала специальным генератором коротких импульсов (он там нарисован на структурной схеме). При изменении адреса одновременно с импульсом чтения два или более ключей мультиплексора могут кратковременно открыться одновременно. Триггеры памяти то есть оказываются соединёнными между собой. Видимо дополнительных буферов, обеспечивающих однонаправленность передачи информации, там нет. Триггеры могут поэтому влиять друг на друга.
|
|
|
|
Сообщений в этой теме
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
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|