Xilinx 7系列中clock IP核通过AXI4-Lite接口实现动态重新配置

当选择了动态重配置(Dynamic Reconfiguration)选项时,AXI4-Lite接口将默认被选中用于重新配置时钟组件。动态重新配置可以通过AXI4-Lite接口实现了Clocking Wizard IP核的时钟组件MMCM/PLL的动态重新配置。

如果需要直接访问MMCM/PLL的DRP寄存器,可以选择使用DRP接口。DRP接口提供了一种更为直接的方式来访问和控制MMCM/PLL等原语的内部寄存器。通过DRP接口,可以精确地控制原语的每个参数,以实现更高级别的配置和优化。然而,使用DRP接口可能需要更多的编程和调试工作,因为它涉及到对底层硬件的直接操作。

在选择使用AXI4-Lite接口还是DRP接口时,需要根据具体的应用需求进行权衡。如果需要快速、灵活地调整时钟组件的参数,并且不希望涉及过多的底层编程工作,那么AXI4-Lite接口可能是一个更好的选择。而如果需要更精确地控制组件的每一个参数,或者需要进行更复杂的配置和优化,那么DRP接口可能更适合。

当启用Dynamic Reconfig并且所选接口为AXI4-Lite时,此接口将被激活。但是,当启用扩频(Spread Spectrum)时,此功能不受支持。当使用AXI4-Lite接口时,该IP 核将提供混合语言的RTL(寄存器传输级)代码。
在这里插入图片描述
在实际应用中,通过AXI4-Lite接口进行动态配置可以使得时钟设置更加灵活和适应不同需求。例如,在需要频繁更改时钟配置的场景中,可以通过AXI4-Lite接口在运行时重新配置MMCM/PLL,而无需重启系统或重新加载配置。这对于需要快速响应变化的系统或需要动态调整性能的场景非常有用。

此外,AXI4-Lite接口的配置通常涉及到写地址总线、写数据总线以及相应的控制信号。通过这些接口,用户可以将新的配置数据写入到MMCM/PLL的控制寄存器中,从而实现动态配置。在配置过程中,还需要注意时钟的稳定性以及配置的正确性,以避免对系统造成不良影响。

1 重新配置相位和占空比

如果Phase Duty Cycle Config未启用,clocking wizard将仅调用与频率相关的函数。为了动态更改相位和占空比,必须启用此选项。然后,clocking wizard会调用与相位和占空比相关的函数,但这会消耗资源。如果资源无法使用,可以在IP生成期间使用clocking wizard调用这些功能,并编写一个包含直接DRP数据的不同地址集。在此过程中,clocking wizard不会进行任何计算,而是指导用户将所需的值写入寄存器。要启用此功能,必须选择“Write DRP registers”。

在实际应用中,动态调整相位和占空比对于优化信号质量、降低功耗或实现更复杂的时序控制至关重要。通过启用Phase Duty Cycle Config,并结合使用clocking wizard生成的代码和DRP数据,可以实现对FPGA时钟信号的精确控制。

2 动态重新配置的步骤

要进行动态重新配置,请按照以下步骤操作:

①写入所有时钟配置寄存器,然后检查状态寄存器。

②在向C_BASEADDR + 0x200寄存器写入之前,确保这些值能够产生MMCM/PLL的有效VCO频率范围。VCO频率通过以下公式计算得出:

VCO频率 = (输入时钟频率) * (CLKFBOUT_MULT) / DIVCLK_DIVIDE

③如果状态寄存器值为0x1,则通过向时钟配置寄存器23写入0x3来启动重新配置。
注意!只有在时钟FBOUT MULT的值不是整数时,才应启用时钟配置寄存器0中的小数使能位。同样,只有在CLKOUT0_DIVISE的值不是整数时,才应启用时钟配置寄存器2中的小数使能位。

遵循这些步骤,就可以安全有效地对FPGA中的MMCM或PLL进行动态重新配置。在重新配置过程中,确保仔细检查和验证所有输入值,以避免超出设备的规格或造成不稳定情况。

3 Write DRP registers

此功能的主要优势在于避免在clock IP核中使用DSP。该选项可以在动态重新配置模式下选择,并且仅对AXI4-Lite接口有效。此功能允许通过AXI直接写入基本寄存器。当选择此功能时,IDE中将启用一个选项卡,其中列出了寄存器地址和需要写入的值。
在这里插入图片描述
要执行此功能,请按照以下步骤操作:

①生成Clocking Wizard IP。启用动态重新配置选项,并选择“Write DRP registers”功能。

②使用相同的输入时钟和所需的功能打开另一个Clocking Wizard。

③根据动态重新配置的需要,在Vivado IDE的“输出时钟”选项卡中更改输出时钟功能。

④写入DRP寄存器选项卡中的表格会根据所需的时钟进行更新。使用这些寄存器集值来动态重新配置初始的Clocking Wizard。

  • 47
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 17
    评论
以下是一个简单的Xilinx AXI4-lite接口控制SPI接口的控制器的示例代码: ```verilog module spi_controller( input wire aclk, //AXI4-lite时钟 input wire aresetn, //AXI4-lite复位信号,低电平有效 input wire sclk, //SPI时钟 output wire cs_n, //SPI片选信号 output wire mosi, //SPI主机数据输出 input wire miso, //SPI从机数据输入 input wire [3:0] addr, //AXI4-lite地址 input wire [31:0] wdata, //AXI4-lite写入数据 output wire [31:0] rdata, //AXI4-lite读出数据 input wire write_enable, //AXI4-lite写使能 input wire read_enable //AXI4-lite读使能 ); reg [7:0] tx_data; //SPI发送数据 reg [7:0] rx_data; //SPI接收数据 reg [31:0] axi_reg; //AXI4-lite寄存器 assign cs_n = axi_reg[0]; //将AXI4-lite的第0位寄存器赋值给SPI的片选信号 assign mosi = tx_data[7]; //将发送数据的最高位赋值给SPI的主机数据输出 assign rdata = axi_reg; //将AXI4-lite寄存器赋值给读取数据输出 always@(negedge aresetn or posedge aclk) begin if (!aresetn) begin axi_reg <= 32'h00000000; //AXI4-lite寄存器复位为0 tx_data <= 8'h00; //发送数据清零 rx_data <= 8'h00; //接收数据清零 end else begin if (write_enable) begin //AXI4-lite写使能 case(addr) 4'h0: axi_reg[7:0] <= wdata[7:0]; //将AXI4-lite写入数据的最低8位赋值给SPI的片选信号 4'h4: begin //将AXI4-lite写入数据的第8位到第15位赋值给发送数据 tx_data[7:0] <= wdata[15:8]; axi_reg[31:8] <= 24'h000000; //将AXI4-lite的第1到第23位清零 end 4'h8: begin //将AXI4-lite写入数据的第16位到第23位赋值给发送数据 tx_data[7:0] <= wdata[23:16]; axi_reg[31:8] <= 24'h000000; //将AXI4-lite的第1到第23位清零 end default: axi_reg <= axi_reg; //如果没有匹配到地址,则AXI4-lite寄存器不变 endcase end else if (read_enable) begin //AXI4-lite读使能 case(addr) 4'h0: axi_reg <= axi_reg; //将SPI片选信号赋值给AXI4-lite寄存器的最低8位 4'h4, 4'h8: axi_reg <= {24'h000000, rx_data}; //将接收数据赋值给AXI4-lite寄存器的第8位到第31位 default: axi_reg <= axi_reg; //如果没有匹配到地址,则AXI4-lite寄存器不变 endcase end end end always@(negedge aresetn or posedge sclk) begin //SPI控制 if (!aresetn) begin tx_data <= 8'h00; //发送数据清零 rx_data <= 8'h00; //接收数据清零 end else begin if (cs_n == 1'b0) begin //SPI片选信号有效 rx_data[7:0] <= miso; //将SPI从机数据输入赋值给接收数据 tx_data[6:0] <= tx_data[7:1]; //发送数据左移一位 tx_data[7] <= axi_reg[0]; //将AXI4-lite的第0位寄存器赋值给发送数据的最高位 end end end endmodule ``` 该控制器包含一个AXI4-lite接口和一个SPI接口AXI4-lite接口用于控制SPI接口,并且可以通过读取和写入AXI4-lite寄存器来控制SPI片选信号和发送数据。SPI接口用于发送和接收数据。在SPI片选信号有效时,发送数据会左移一位,同时将AXI4-lite的第0位寄存器赋值给发送数据的最高位,并将SPI从机数据输入赋值给接收数据。
评论 17
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值