在AXIS流speck中,ACLK定义为: 全局时钟信号。所有信号都在上升沿采样 ACLK。这意味着假设AXIS主站和从站是……
我认为问题在于你对英语的理解。 - 中心与中心(或中心)不同。
Centric在这里意味着 “最重要的是,一切都围绕着” 确实如此 的 不 强> 表示数据位于时钟的中间(中心)。
因此,在AXI / AMBA系统中,您必须确保所有组件使用相同的时钟信号,并且所有逻辑应从上升时钟边沿运行。这与所有同步逻辑的要求相同,标准。
现在回答你的问题:
1)如果AXIS主站和从站块上存在ACLK转换,则由设计人员负责。 Speck没有对此设置任何限制。我的理解是对的吗?
你应该 的 不 强> 有时钟歪斜。如果你有,你有深陷困境,是的,你必须解决这个问题。不惜一切代价避免它!
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 ....