写在前面
本系列文章主要讲解地平线征程2(Journey 2-J2)芯片的相关知识,希望能帮助更多的同学认识和了解征程2(Journey 2-J2)芯片。
若有相关问题,欢迎评论沟通,共同进步。(*^▽^*)
错过其他章节的同学可以电梯直达目录↓↓↓
地平线—征程2(Journey 2-J2)芯片详解——目录-CSDN博客
3. 系统架构
本章主要从时钟结构、复位结构、电源管理和电源模式以及中断映射四个方面描述系统架构。
3.1 时钟结构
3.1.1 概述
时钟生成器以统一的方式管理时钟的输入、时钟的生成和时钟的控制,如下所示:
- 管理和控制时钟的输入
- 划分和控制时钟的频率
- 为每个模块生产工作时钟时钟生成器为芯片所有模块生成时钟。其可以选择其中一个系统时钟源为系统提供时间,也可以控制系统时钟的选择。一组时钟生产寄存器控制着系统时钟和外部时钟的划分。
J2芯片内包含了6个PLL(锁相环):
- CPUPLL(ARMPLL1和ARMPLL2)——为双核A53处理器和CPU子系统的其他模块提供
- DDRPLL——为DDR子系统提供
- VIOPLL——为VIO子系统提供
- BPUPLL——为BPU子系统提供
- PERIPHPLL——为PERI子系统提供3.1.2 PMU时钟生成器
此部分主要描述PMU时钟生成器的工作流程,如下图所示:
从上图可以看出,连接在24 MHz晶振上的XI_24M时钟为PLL提供时钟的输入。连接在32.768 KHz晶振上的XI_32K时钟为RTC提供时钟的输入,同时在休眠模式中也作为pmu_clk使用。
下表列举了PMU的主要模块时钟,如下表所示:
Module | Clock | Default Frequency | Max Frequency | Comment |
PMU | pmu_clk | 24 MHz | 24 MHz | Switches between 24 MHz and 32.768 KHz by the PMU Controller |
SYSCNT | syscnt_clk | 24 MHz | 24 MHz | / |
RTC | rtc_1k_clk | 1.024 KHz | 1.024 KHz | / |
3.1.3 CPUPLL时钟生成器
此部分主要描述CPUPLL时钟生成器的工作流程,如下图所示:
下表列举了CPU的主要模块时钟,如下表所示:
Module | Clock | Default Frequency | Max Frequency | Comment |
A53 | cpu_clk | 24 MHz | 1000 MHz @VDD_CPU=0.9V | 1250 MHz @VDD_CPU=1.0V |
ace_aclk | 12 MHz | 500 MHz | / | |
acp_aclk | 12 MHz | 500 MHz | / | |
cpu_cntclk | 4.8 MHz | 200 MHz | / | |
CoreSight | cx_dbgclk dbg_pclk atb_atclk armv8pil_clk | 8 MHz | 333 MHz | / |
cxtpiu_clkin | 8 MHz | 200 MHz | / | |
atb_tsclk | 24 MHz | 24 MHz | / | |
cxswj_swclktck | NA | 20 MHz | From JTG_TCK IO | |
Bus | sys_noc_aclk | 12 MHz | 500 MHz | / |
sys_pclk | 8 MHz | 333 MHz | / | |
DMAC | sys_dmac_aclk | 12 MHz | 500 MHz | / |
BIFSPI | sys_bifspi_aclk | 12 MHz | 500 MHz | / |
BIFSD | sys_bifsd_aclk | 12 MHz | 500 MHz | / |
bifsd_clk | NA | 200 MHz | From BIFSD_CLK IO | |
ROMC | sys_romc_aclk | 12 MHz | 500 MHz | / |
SRAMC | sys_sramc_aclk | 12 MHz | 500 MHz | / |
GIC | sys_gic_aclk | 12 MHz | 500 MHz | / |
QSPI | sys_qspi_aclk | 12 MHz | 500 MHz | / |
Timer Macro 0 | timer0_mclk | 1 MHz | 1 MHz | / |
Timer Macro 1 | timer1_mclk | 1 MHz | 1 MHz | / |
Timer Macro 2 | timer2_mclk | 1 MHz | 1 MHz | / |
EFUSE | efuse_repair_clk | 24 MHz | 24 MHz | / |
Temperature Sensor | temp_sensor_clk | 2 MHz | 2 MHz | / |
EPHY | eth0_padc_ephy_clk | 0.6 MHz | 25 MHz | To EPHY_CLK IO |
3.1.4 DDRPLL时钟生成器
此部分主要描述DDRPLL时钟生成器的工作流程,如下图所示:
下表列举了DDR子系统的主要模块时钟,如下表所示:
Module | Clock | Default Frequency | Max Frequency | Comment |
DDR Controller and DDR PHY | ddrc_mclk | 12 MHz | 800 MHz @VDD_DDR=1.0V | 600 MHz @VDD_DRR=0.9V |
3.1.5 VIOPLL时钟生成器
此部分主要描述VIOPLL时钟生成器的工作流程,如下图所示:
下表列举了VIO子系统的主要模块时钟,如下表所示:
Module | Clock | Default Frequency | Max Frequency | Comment |
VIO Bus | vio_aclk | 8 MHz | 544 MHz | / |
SIF/ISP/IPU | sif_mclk | 6 MHz | 408 MHz | / |
MIPI | mipi_ipi_divclk | 12 MHz | 816 MHz | / |
mipi_ipi_clk | 6 MHz | 408 MHz | / | |
mipi_cfg_divclk | 1.4 MHz | 96 MHz | / | |
mipi_cfg_clk | 0.35 MHz | 24 MHz | / | |
mipi_phy_ref_divclk | 1.4 MHz | 96 MHz | / | |
mipi_phy_ref_clk | 0.35 MHz | 24 MHz | / | |
IAR | iar_pix_clk | 2.4 MHz | 163.2 MHz | / |
PYM | pym_mclk | 12 MHz | 816 MHz | / |
Sensor | sensor_divclk | 1.4 MHz | 96 MHz | / |
sensor_mclk | 0.35 MHz | 24 MHz | To Sensor_MCLK IO | |
DVP I/F | dvp_pixclk | NA | 160 MHz | From BT1120_IN_CLK IO |
BT1120 I/F | bt_pixclk | NA | 160 MHz | From BT1120_IN_CLK IO |
3.1.6 BPUPLL时钟生成器
此部分主要描述BPUPLL时钟生成器的工作流程,如下图所示:
下表列举了BPU子系统的主要模块时钟,如下表所示:
Module | Clock | Default Frequency | Max Frequency | Comment |
BPU0 | bpu0_aclk | 8 MHz | 533 MHz | / |
bpu0_mclk | 12 MHz | 800 MHz @VDD_CNN0=0.9V | 850 MHz @VDD_CNN0=1.0V | |
BPU1 | bpu1_aclk | 8 MHz | 533 MHz | / |
bpu1_mclk | 12 MHz | 800 MHz @VDD_CNN1=0.9V | 850 MHz @VDD_CNN1=1.0V |
3.1.7 PERIPLL时钟生成器
此部分主要描述PERIPLL时钟生成器的工作流程,如下图所示:
下表列举了PERI子系统的主要模块时钟,如下表所示:
Module | Clock | Default Frequency | Max Frequency | Comment |
PERI Bus | peri_aclk | 8 MHz | 512 MHz | / |
UART0 | uart0_aclk | 8 MHz | 512 MHz | / |
uart0_mclk | 3 MHz | 192 MHz | / | |
UART1 | uart1_aclk | 8 MHz | 512 MHz | / |
uart1_mclk | 3 MHz | 192 MHz | / | |
UART2 | uart2_aclk | 8 MHz | 512 MHz | / |
uart2_mclk | 3 MHz | 192 MHz | / | |
UART3 | uart3_aclk | 8 MHz | 512 MHz | / |
uart3_mclk | 3 MHz | 192 MHz | / | |
SPI0 | spi0_aclk | 8 MHz | 512 MHz | / |
spi0_mclk | 3 MHz | 192 MHz | / | |
SPI1 | spi1_aclk | 8 MHz | 512 MHz | / |
spi1_mclk | 3 MHz | 192 MHz | / | |
SPI2 | spi2_aclk | 8 MHz | 512 MHz | / |
spi2_mclk | 3 MHz | 192 MHz | / | |
PWM0 | pwm0_mclk | 3 MHz | 192 MHz | / |
PWM1 | pwm1_mclk | 3 MHz | 192 MHz | / |
PWM2 | pwm2_mclk | 3 MHz | 192 MHz | / |
I2C0 | i2c0_mclk | 3 MHz | 192 MHz | / |
I2C1 | i2c1_mclk | 3 MHz | 192 MHz | / |
I2C2 | i2c2_mclk | 3 MHz | 192 MHz | / |
I2C3 | i2c3_mclk | 3 MHz | 192 MHz | / |
SD0 | sd0_aclk | 8 MHz | 512 MHz | / |
sd0_cclk_in sd0_cclk_in_drv sd0_cclk_in_sample | 3 MHz | 192 MHz | / | |
SD1 | sd1_aclk | 8 MHz | 512 MHz | / |
sd1_cclk_in sd1_cclk_in_drv sd1_cclk_in_sample | 3 MHz | 192 MHz | / | |
ETH0 | eth0_aclk | 8 MHz | 512 MHz | / |
eth0_pre_divclk | 2 MHz | 125 MHz | / | |
eth0_clk_tx_i eth0_clk_tx_180_i eth0_padc_rgmii_tx_clk | 2 MHz | 125 MHz | To RGMII_TX_CLK IO | |
padc_eth0_rgmii_rx_clk eth0_clk_rx_i eth0_clk_rx_180_i | NA | 125 MHz | From RGMII_RX_CLK IO | |
I2S0 | i2s0_pre_mclk | 960 KHz | 61.44 MHz | I2S0 master mode |
i2s0_mclk | 192 KHz | 12.288 MHz | / | |
i2s0_div_bclk | 48 KHz | 3.072 MHz | / | |
i2s0_padc_bclk | 48 KHz | 3.072 MHz | / | |
padc_i2s0_bclk | NA | 3.072 MHz | I2S0 slave mode | |
i2s0_tx_clk i2s0_tx_clkn | NA | 3.072 MHz | / | |
I2S1 | i2s1_pre_mclk | 960 KHz | 61.44 MHz | I2S1 master mode |
i2s1_mclk | 192 KHz | 12.288 MHz | / | |
i2s1_div_bclk | 48 KHz | 3.072 MHz | / | |
i2s1_padc_bclk | 48 KHz | 3.072 MHz | / | |
padc_i2s1_bclk | NA | 3.072 MHz | I2S1 slave mode | |
i2s1_tx_clk i2s1_tx_clkn | NA | 3.072 MHz | / |
总结:本部分主要讲解了J2的时钟结构,其中包含PMU、CPU、DDR、VIO、BPU和PERI时钟生成器。
本文章是博主花费大量的时间精力进行梳理和总结而成,希望能帮助更多的小伙伴~ 🙏🙏🙏
后续内容将持续更新,敬请期待(*^▽^*)
欢迎大家评论,点赞,收藏→→→