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

 
 
> Интерфейс между МК и ПЛИС, Использование интерфейса внешней памяти
DENth
сообщение Aug 31 2013, 14:34
Сообщение #1


Участник
*

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



Уважаемое сообщество! Есть следующий вопрос по взаимодействию ПЛИС и МК:
Имеем ARM7 LPC2468 и ПЛИС Cyclone 2. ПЛИС подключена к контроллеру внешней памяти ARMа. Данный интерфейс предназначен для работы с асинхронной памятью. Относительно ПЛИС сигналы Write, Read с МК асинхронны. На МК и ПЛИС поступает частота с единого генератора - 12Мгц, но в МК она перемножается до 72МГц - частота ядра. Длительность сигналов контроллера внешней памяти зависит от этой частоты. Частота 72МГц на ПЛИС не идет. Вопрос - как обеспечить максимальное быстродействие между МК и ПЛИС?

Read и Write пропускаю через два последовательных триггера для исключения метастабильного состояния. Но как поступать дальше? Использовать их для тактирования внутренних цепей ПЛИС для записи или чтения состояния регистров и памяти вроде как нельзя. Нужен явный клок. Но его нет с МК.

Сейчас получилось сделать так: стробирую эти сигналы внутренней частотой 72МГц, сформированной на PLL ПЛИС. Получаю сигнал длительностью один период частоты 72МГц. Этот сигнал подаю как сигнал разрешения на внутренние цепи. А клок 72МГц как клок на эти же цепи. Все работает. Но если в МК ускорять работу по этому интерфейсу, то всё перестает работать. Видимо пока я синхронизирую Read, Write внутри ПЛИС, МК уже захлопывает данные, а ПЛИС их еще не успела выставить. Стробировать большей частотой не получается, начинает ругаться временной анализатор.

Как сделать правильно?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
iosifk
сообщение Sep 1 2013, 07:24
Сообщение #2


Гуру
******

Группа: Модераторы
Сообщений: 4 011
Регистрация: 8-09-05
Из: спб
Пользователь №: 8 369



Цитата(DENth @ Aug 31 2013, 18:34) *
Read и Write пропускаю через два последовательных триггера для исключения метастабильного состояния. Но как поступать дальше? Использовать их для тактирования внутренних цепей ПЛИС для записи или чтения состояния регистров и памяти вроде как нельзя. Нужен явный клок. Но его нет с МК.

Как сделать правильно?


Два триггера - это правильно.
А дальше усть варианты. Если ПЛИС значительно быстрее, чем МК, то с точки зрения МК все будет укладываться в один цикл "записи". А вот если их скорости примерно одинаковы, то тогда при чтении надо будет переходить к "пакетному" режиму. Т.е. при первом чтении в ПЛИС запишется адрес и перетактируются данные из памяти в выходной регистр, а при втором - данные уйдут в МК. И далее, если сделаете пост-инкремент адреса, то можно будет делать чтение берстом (пакетом)...
А более подробно - у меня на сайте "Краткий Курс", раздел CDC... Кстати и Вам, olegras тоже рекомендую...


--------------------
www.iosifk.narod.ru
Go to the top of the page
 
+Quote Post
olegras
сообщение Sep 1 2013, 08:27
Сообщение #3


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

Группа: Участник
Сообщений: 113
Регистрация: 12-03-07
Пользователь №: 26 075



Цитата(iosifk @ Sep 1 2013, 11:24) *
Два триггера - это правильно.
... раздел CDC... Кстати и Вам, olegras тоже рекомендую...

Читал, и постоянно пользуюсь. Насчет двух триггеров - я ведь не отрицаю и полностью подтверждаю. Я лишь говорю что если частоты двух доменов равны (а у DENth они равны) - то достаточно одного триггера. Но он должен быть! Во всяком случае, этот факт проверен много раз на практике на частотах до 100 МГц включительно.
Go to the top of the page
 
+Quote Post
klop
сообщение Sep 1 2013, 09:09
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 433
Регистрация: 28-02-06
Пользователь №: 14 788



Цитата(olegras @ Sep 1 2013, 11:27) *
Я лишь говорю что если частоты двух доменов равны (а у DENth они равны) - то достаточно одного триггера. Но он должен быть!


Да заявы пошли не шуточные. Ну так на всякий случай сообщаю что флопов должно быть как минимум два.
Go to the top of the page
 
+Quote Post
olegras
сообщение Sep 1 2013, 10:08
Сообщение #5


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

Группа: Участник
Сообщений: 113
Регистрация: 12-03-07
Пользователь №: 26 075



Цитата(klop @ Sep 1 2013, 13:09) *
Да заявы пошли не шуточные. Ну так на всякий случай сообщаю что флопов должно быть как минимум два.

Зря Вы иронизируете. Давайте разберемся. Может мы говорим о разных вещах.
Есть входные данные. Пусть будут write_in и data_in. Для простоты остальные сигналы не рассматриваем.
Код на VHDL:
CODE
port(
...
write_in: in std_logic; -- строб записи
data_in: in std_logic_vector(15 downto 0) -- данные
);

Есть сигналы
CODE
signal write_in_t: std_logic;
signal write_in_t0: std_logic;
signal data_in_t: std_logic_vector(15 downto 0);
signal data_in_t0: std_logic_vector(15 downto 0);
...
signal data_s: std_logic_vector(15 downto 0);

Пример первый - без защелки
CODE
...
if rising_edge(clk) then
if(write_in = '1') then
data_s <= data_in + x"abcd";
end if;
end if;

Пример второй - с одной защелкой
CODE
...
if rising_edge(clk) then
write_in_t <= write_in;
data_in_t <= data_in;
if(write_in_t = '1') then
data_s <= data_in_t + x"abcd";
end if;
end if;

Пример третий - с двумя защелками
CODE
...
if rising_edge(clk) then
write_in_t <= write_in;
write_in_t0 <= write_in_t;
data_in_t <= data_in;
data_in_t0 <= data_in_t;
if(write_in_t0 = '1') then
data_s <= data_in_t0 + x"abcd";
end if;
end if;

Я говорю про второй пример. Использую на практике несколько лет. На частотах до 100 МГц включительно. Еще ни разу не сбоило. При одинаковых частотах входного и внутреннего доменов - стабильность (и корректность) от сдвига фаз не зависит. Попробуйте сами.

DENth я похожую задачу делал для связки ЦСП от TI со Спартаном 3. Работало на частоте шины (между ними) 85 МГц. Представьте свою часть кода.

Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- DENth   Интерфейс между МК и ПЛИС   Aug 31 2013, 14:34
- - olegras   Во-первых, лично я для исключения метастабильности...   Sep 1 2013, 04:46
|- - DENth   Цитата(olegras @ Sep 1 2013, 08:46) Во-пе...   Sep 1 2013, 09:01
- - DASM   а что значит «ускорять»? И что именно перестает ра...   Sep 1 2013, 06:46
|- - olegras   Цитата(DASM @ Sep 1 2013, 10:46) И что им...   Sep 1 2013, 07:03
|- - DENth   Цитата(DASM @ Sep 1 2013, 10:46) а что зн...   Sep 1 2013, 09:19
|- - klop   Цитата(DENth @ Sep 1 2013, 12:19) Стробы ...   Sep 1 2013, 09:26
||- - DENth   Цитата(klop @ Sep 1 2013, 13:26) Конечно ...   Sep 1 2013, 09:31
|- - iosifk   Цитата(DENth @ Sep 1 2013, 13:19) Считаем...   Sep 1 2013, 11:48
- - Raven   Относящиеся к делу фрагменты кода - в студию! ...   Sep 1 2013, 07:02
|- - klop   Цитата(olegras @ Sep 1 2013, 13:08) Я гов...   Sep 1 2013, 10:25
|- - olegras   Цитата(klop @ Sep 1 2013, 14:25) Вау. А н...   Sep 1 2013, 10:48
- - DENth   RE: Интерфейс между МК и ПЛИС   Sep 1 2013, 17:21
|- - iosifk   Цитата(DENth @ Sep 1 2013, 21:21) ..... П...   Sep 1 2013, 18:13
||- - DENth   Цитата(iosifk @ Sep 1 2013, 22:13) После ...   Sep 1 2013, 19:22
||- - iosifk   Цитата(DENth @ Sep 1 2013, 23:22) Серьезн...   Sep 2 2013, 06:47
|- - vladz   Цитата(DENth @ Sep 1 2013, 20:21) Пояснит...   Sep 1 2013, 20:54
||- - Victor®   Цитата(vladz @ Sep 1 2013, 23:54) Пока чт...   Sep 2 2013, 13:14
|- - olegras   Цитата(DENth @ Sep 1 2013, 21:21) ... сиг...   Sep 2 2013, 06:11
||- - DENth   Цитата(olegras @ Sep 2 2013, 10:11) Это к...   Sep 2 2013, 13:02
||- - olegras   Что-то я запутался. То есть у Вас когда то была од...   Sep 2 2013, 13:21
|||- - DENth   Цитата(olegras @ Sep 2 2013, 17:21) Что-т...   Sep 2 2013, 14:38
|||- - olegras   Для Вашего МК (по даташиту) я бы делал так (пока в...   Sep 2 2013, 15:59
|||- - DENth   Цитата(olegras @ Sep 2 2013, 19:59) Для В...   Sep 2 2013, 18:08
|||- - olegras   Цитата(DENth @ Sep 2 2013, 22:08) ... опе...   Sep 3 2013, 06:14
|||- - DENth   Цитата(olegras @ Sep 3 2013, 10:14) Набро...   Sep 3 2013, 14:59
|||- - olegras   С чтением всегда проблем больше. Приходится играть...   Sep 4 2013, 05:26
||- - psL   Цитата(DENth @ Sep 2 2013, 17:02) Длитель...   Sep 2 2013, 13:36
|- - psL   Цитата(DENth @ Sep 1 2013, 21:21) Обещаны...   Sep 2 2013, 08:45
- - ViKo   В LPC нельзя добавить тактов (ожидания) при записи...   Sep 2 2013, 09:16
- - Corner   Решал подобную задачку на связке 5576ХС+1986ВЕ91. ...   Sep 2 2013, 15:22
- - DASM   --   Sep 3 2013, 07:00
|- - olegras   Цитата(DASM @ Sep 3 2013, 11:00) А что та...   Sep 3 2013, 07:54
- - kenning   Цитата(Corner @ Sep 2 2013, 18:22) Решал ...   Jul 8 2016, 14:02


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

 


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


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