时钟是每个 fpga 设计的核心。如果我们正确地设计时钟架构、没有 cdc 问题并正确进行约束设计,就可以减少与工具斗争的时间。
但对于某些应用,我们希望能够更改某些ip中的时钟频率。其中一个例子是在图像处理管道中,输出分辨率可以动态变化,从而需要改变像素时钟。
众所周知,我们可以在 zynq soc 和 zynq mpsoc 中使用结构时钟并在运行时更改结构时钟的频率。但是,如果我们在 zynq 或 zynq mpsoc 中使用 fpga 或 pl,我们仍然可以使用动态配置的时钟向导在运行时更改频率。
动态配置时钟允许我们使用 axi 接口在运行时更改时钟频率。
为了创建一个简单的示例,我们将实例化ps并将动态配置时钟ip连接到主 axi 接口。我们将输出时钟连接到 io 引脚,以便我们可以对其进行观察并查看频率的变化。
上面的时钟是我们打算使用的最大频率,这样可以确保时序约束和时序性能正确。下图是我们这次demo的最终设计。
接下来我们将在 vitis 中开发软件,并且将在设计中的 ip 下看到相关驱动及文档。
开发这个ip的驱动和其他 axi lite 接口一样,需要对ip寄存器空间进行写入和读取。
要更改时钟频率输出,我们有两种选择。如果只生成一个时钟,我们可以使用名为 setrate 的函数。该函数将通过axi lite总线传递到ip中,ip会给出我们所需的频率输出,并计算必要的分频器、乘法器和相位参数实现所需的输出频率。
然而,如果我们有多个时钟,那么我们需要分别计算这些寄存器的值并单独更新时钟寄存器(每个时钟有两个寄存器)。
这里有个注意点就是在进行时钟更改前最好等待ip锁定到之前的频率后再进行新操作。
更改频率的代码还是比较简单的,如下:
当然,我们也可以使用类似的方法,通过将时钟频率降低来实现不同功耗模式下 fpga 的功耗,从而实现降低功耗的功能。
中怡康2022年Q1榜:海尔智家、美的市场份额依旧领先
圆周率科技推出了8K全景相机产品
最可能撞机的五部手机用户群!oppo r9s毫无争议第一
三相桥式全控整流电路仿真设计
PLC在电机控制中的典型应用
FPGA设计中动态时钟的使用方法
采用双闭环PI和重复控制方案实现三相逆变器设计并进行仿真分析
奥特维喜提开年第二个2.1亿元大订单
在工业和汽车领域中SCA3300高性能三轴MEMS加速度传感器有什么应用?
详解STM32低功耗模式
喜讯!第十八届国际消防设备展闭幕 中电数通载誉而归
硅谷起源 仙童半导体辉煌曲折的发展史
关于汽车制动灯的控制系统
看NVIDIA显卡发展史,是如何蜕变成“人工智能”界的领头羊的
超声电机的分类特点及应用
美国联合航空公司正在大多数飞机上使用紫外线辐射清洁飞行员驾驶舱
苏州成为中国大陆集成电路产业发展最快区域之一
高功率半导体激光器历史介绍
中国移动最新发布的主动安全 2.0 战略,提供可靠的网络安全产品
艾迈斯欧司朗的AS7331开创CMOS传感器全新设计组合