Я думаю, что проблема в том, что вы понимаете английский.
-центрический - это не то же самое, что центр (или центр).
Здесь центрический означает "Самое важное, где все вращаетсявокруг " * Это не означает, что данные находятся в центре (в центре) часов.
Таким образом, в системе AXI / AMBA вы должны убедиться, что все компоненты используютодин и тот же тактовый сигнал и вся логика должна запускаться с нарастающего фронта тактовой частотыЭто то же самое стандартное требование всей синхронной логики.
Теперь, чтобы ответить на ваши вопросы:
1) Если в главном и подчиненном блоках AXIS имеется ACLK, он остается под ответственностью дизайнера.Спек не устанавливает никаких ограничений на это.Правильно ли мое понимание?
Вы должны не иметь перекос часов.Если у вас есть, у вас большие проблемы, и да, вы должны решить это.Избегайте этого любой ценой!
2) Передача данных должна соответствовать центру ACLK.Поэтому разработчик должен создать мастер AXIS для отправки данных, выровненных по центру часов.Правильно?
Нет.Все идет по восходящему фронту часов.Это означает, что данные начнут изменяться вскоре после этого повышающегося тактового сигнала.Вы можете видеть это на всех временных диаграммах, которые находятся в стандарте AXI / AMBA.
3) Как сделать ACLK-центричную передачу данных?Представьте, что у вас есть глобальные часы во всей системе, чтобы данные, передаваемые по центру часов, были выровнены по этим данным, вам нужно сгенерировать новые часы, которые смещены по фазе влево от ваших глобальных часов.Любые идеи, как мы можем сделать это в FPGA?
Все, что вы делаете, это везде используете один и тот же сигнал ACLK. не сдвигайте часы, не генерируйте новые часы.
Вот некоторые модули Verilog, которые я разработал:
module ahbl_arbiter
#(parameter MA = 4 // Number of masters 2..8
)
( input clk, // System clock
input reset_n, // System reset
input clken, // Clock enable
....
module ahbl_splitter
#(parameter SL = 4, // Number of slaves 2..32
L2BS = 10 // Log 2 of block size 10 = 1K
)
( input clk, // System clock
input reset_n, // System reset
input clken, // Clock enable
....
module apb_bridge
#(parameter
NS = 8, // Number of slaves
L2BS = 10, // Log2 Address block assigned each peripheral
REG = 1'b0 // Register in rdata return path
)
( input clk, // System clock
input reset_n, // System reset
input clken, // Clock enable
...
Если вы используете их, они все будут иметь одинаковые часы:
ahbl_arbiter
ahbl_arbiter_0 (
.clk (aclk), // System clock
.reset_n (reset_n), // System reset
.clken (clken), // Clock enable
....
apb_bride
apb_bride_0 (
.clk (aclk), // System clock
.reset_n (reset_n), // System reset
.clken (clken), // Clock enable
....
ahbl_splitter
ahbl_splitter_0 (
.clk (aclk), // System clock
.reset_n (reset_n), // System reset
.clken (clken), // Clock enable
....