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

 
 
> Шина AXI и метастабильность
Vadim_nsk
сообщение Apr 28 2018, 06:34
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 65
Регистрация: 7-09-05
Из: г. Новосибирск
Пользователь №: 8 335



Собственно вопрос в следующем. Есть шина AXI, у нее есть два сигнала ARst и AClk. Как я это понимаю, AXI-master может жить и работать в одном clock-домене, а AXI-slave в другом (клоки то ассинхронные). Это им позволяют сигналы валидности адреса, захвата адреса, валидности данных и захвата данных. Но позвольте... адрес и сигнал валидности адреса выставляется одновременно, следовательно, один из разрядов шины адреса может оказаться в том самом метастабильном состоянии, т.к. шина AXI позволяет сигналам валидности и захвата появиться одновременно или сигналу захвата уже быть установленным. Такая же ситуация и с шиной данных. Так почему там не освещаются вопросы защиты от метастабильного состояния. К сожалению, тут на форуме в поиске нельзя указывать слова из 3-х букв, поэтому AXI не ищется, а в темах о метастабильности не затрагивается шина AXI. Что позволяет шине быть особенной и не иметь единного клока?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
MegaVolt
сообщение Apr 28 2018, 07:17
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 779
Регистрация: 3-01-05
Из: Минск
Пользователь №: 1 783



Цитата(Vadim_nsk @ Apr 28 2018, 09:34) *
Что позволяет шине быть особенной и не иметь единного клока?
Я так понимаю AXI_interconnect занимается согласованием доменов.
Go to the top of the page
 
+Quote Post
Vadim_nsk
сообщение Apr 28 2018, 07:34
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 65
Регистрация: 7-09-05
Из: г. Новосибирск
Пользователь №: 8 335



Цитата(MegaVolt @ Apr 28 2018, 14:17) *
Я так понимаю AXI_interconnect занимается согласованием доменов.

В мой Slave компонент приходят такие сигналы:
Код
S_AXI_ACLK        : in  std_logic;
S_AXI_ARESETN    : in  std_logic;
S_AXI_AWADDR    : in  std_logic_vector(C_S_AXI_ADDR_WIDTH-1 downto 0);
S_AXI_AWVALID    : in  std_logic;
S_AXI_WDATA        : in  std_logic_vector(C_S_AXI_DATA_WIDTH-1 downto 0);
S_AXI_WSTRB        : in  std_logic_vector((C_S_AXI_DATA_WIDTH/8)-1 downto 0);
S_AXI_WVALID        : in  std_logic;
S_AXI_BREADY        : in  std_logic;
S_AXI_ARADDR        : in  std_logic_vector(C_S_AXI_ADDR_WIDTH-1 downto 0);
S_AXI_ARVALID        : in  std_logic;
S_AXI_RREADY        : in  std_logic;
S_AXI_ARREADY    : out std_logic;
S_AXI_RDATA        : out std_logic_vector(C_S_AXI_DATA_WIDTH-1 downto 0);
S_AXI_RRESP        : out std_logic_vector(1 downto 0);
S_AXI_RVALID        : out std_logic;
S_AXI_WREADY        : out std_logic;
S_AXI_BRESP        : out std_logic_vector(1 downto 0);
S_AXI_BVALID        : out std_logic;
S_AXI_AWREADY    : out std_logic

Предположим, что S_AXI_ACLK имеет частоту 100МГц
Вы хотите сказать, что я спокойно могу в своем компоненте работать на частоте 23.96МГц с этими сигналами и AXI_interconnect все разрулит? В нем уже есть 2 ряда D-триггеров в ту и другую сторону?

Собственно, у меня тогда три вопроса.
1. Если я вижу в названии сигналов впереди букву "А", я должен относиться к этому сигналу как к асинхронному и пропускать через 2 D-триггера работающие от моего клока?
2. Должен ли я свои выходные сигналы, сформированные от моего клока приводить к частоте AXI чреез 2 D-триггера или это забота AXI_interconnect?
3. Могу ли я ничего этого не делать, строя свой компонент таким образом, чтобы он целиком работал от частоты AXI?
Go to the top of the page
 
+Quote Post



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

 


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


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