Products
GG网络技术分享 2025-04-30 15:48 28
TLZ7xH-EVM,一款由创龙基于SOM-TLZ7xH核心板设计的开发板,底板采用沉金无铅工艺的6层板设计,为用户提供了SOM-TLZ7xH核心板的测试平台,用于快速评估核心板的整体性能。Xilinx Zynq USB开发中,裸机情况下USB的OTG功能似乎不能使用,IDT CPS1848 SRIO交换芯片使用时,第三方配置工具的下载问题,以及如何使用Yocto等,都是开发者关注的焦点。
在介绍完System Clock Diagram和CPU Clock后,我们需要对Zynq的时钟树进行深入了解,包括Zynq时钟的来源、PLLs、Clock Gating等。AMBA Bus的时钟来源主要是CPU域,即CPU通过AMBA Bus访问外设的寄存器的时钟。如果要使用该外设,需要开启对应的AMBA Bus的时钟。
各个部件的时钟源都是可以选择的,比如QSPI,可以选择是IO还是DDR还是ARM的PLL,然后再去配置自己的时钟。在节能模式下,可以优化时钟的配置,达到降低功耗的目的。
Zynq PS中的FCLK0时钟来自于PS部分的ARM Cortex-A9处理器的PLL,因此需要对Zynq的PLL进行配置,使得FCLK0的频率适配于实际应用。本文将从以下几个方面对Zynq PS FCLK0做详细的阐述:应用场景、硬件配置、软件驱动、代码示例。
在应用程序中需要使用FCLK0时钟,需要使用Linux kernel提供的驱动来操作。在Zynq上,FCLK0对应的设备文件是/sys/devices/soc0/amba/f8007000.devcfg文件。下面是一个简单的驱动示例:
/* 打开定时器设备 */
int fd = open;
if {
printf;
return -1;
}
/* 配置定时器 */
timer_config_t config = {};
config.clock_source = TIMER_CLOCK_SOURCE_FCLK0; // 设置时钟源为FCLK0
config.load_value = ; // 设置计数器初值为50,
config.mode = TIMER_MODE_PERIODIC; // 设置定时器为周期模式
ioctl;
/* 启动定时器 */
ioctl;
/* 等待定时器中断 */
while {
int irq_status;
read);
if {
printf;
break;
}
}
/* 停止定时器 */
ioctl;
/* 关闭设备 */
close;
本文档以ZYNQ7000平台为例,详细介绍如何修改ZYNQ的时钟频率。步骤二:向对应寄存器写入我们需要设置的PLL倍频值和PLL配置参数。基于zynq的buildroot制作根文件系统。
在Vivado中进行Zynq的硬件设计时,需要使用Clock Configuration IP核来生成PLL的配置。具体步骤如下:
本文介绍了在XCZU21DR环境下,如何配置ZynqUltraScale+MPSocIP,由PS端提供100MHz时钟给PL端,PL端通过计数器模块clk_div_N产生1S信号,用于控制LED闪烁。主要就如何在VIVADO中调用PS端时钟供给PL端开发进行讲述。
Zynq PS FCLK0是Zynq应用中非常重要的一个中心时钟,能够为各种外设提供时钟信号,在应用程序中发挥着重要作用。在硬件设计中需要对Zynq的PLL进行配置,而在软件驱动中需要使用Linux kernel提供的驱动来操作。
即PS可编程逻辑里面最核心的东西,它由两个双核心的Cortex-ARM A9、一些缓存和存储组成。4个PS时钟输出到PL进行开始、停止控制。在这里主要设计系统时钟,DDR,IO口的电压。网上很多ZEDBoard开发板,有官方提供的配置文件。主要就如何在VIVADO中调用PS端时钟供给PL端开发进行讲述。
下面是一个使用FCLK0作为定时器时钟的示例程序:
/* 打开设备 */
int fd = open;
if {
printf;
return -1;
}
/* 读取设备的当前频率 */
int freq;
read);
printf;
/* 设置设备的新频率 */
freq = ; // 设置新频率为50 MHz
write);
/* 关闭设备 */
close;
通过以上步骤,我们可以有效地配置Zynq PS FCLK0,优化性能,实现高效的应用。
欢迎用实际体验验证观点。
Demand feedback