mtk平台dsi clock设置

本文深入解析了MTK平台下DSI数据传输速率(DataRate)与Clock频率的关系,包括如何计算DataRate,Clock频率与DataRate的比例,以及在MTK平台上设置Clock频率的方法。通过实例分析,详细介绍了通过配置参数和直接设置Clock频率两种方式,并提供了实际应用中的代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Data Rate,即Data Lane上数据传输速率,在VDO MODE中计算公式如下:
Data Rate = ((height + vsa + vbp + vfp) * (width + hsa + hbp + hfp) *
	bits_per_pixel * frames_per_second) / data_lanes

例如:
Data Rate = ((960 + 4 + 16 + 16) * (540 + 4 + 40 + 40) * 24 * 60) / 2 = 418798080
即Data Rate约为420MHz

而dsi在clock的上升沿和下降沿都会采集数据,所以在计算clock时应为Data Rate的一半,对应前面的420MHz,那么clock应设置为210MHz(注意在计算clock时,clock * 2应比Data Rate稍大)。

那么在mtk平台上应该如何设置clock的频率呢?有两种方式,一是通过配置3个参数得到(6582 kk平台),二是直接设置clock频率(推荐第二种)。
第一种方式,通过分频倍频计算:
params->dsi.pll_div1 = 1;	/* 配置0,1,2,3时对应的div1_real为1,2,4,4 */
params->dsi.pll_div2 = 1;	/* 配置0,1,2,3时对应的div2_real为1,2,4,4 */
params->dsi.fbk_div = 30;	/* 范围是0~63 */
那么输出频率计算公式如下:
(26MHz * (fbk_div + 1) * 2) / (div1_real * div2_real) = (26 * 31 * 2) / (2 * 2) = 403。
那么这种方式实际上计算出来是的Data Rate,即mtk手册上所说的BRPL(Bits Rate Per Lane)。

第二种方式:
params->dsi.PLL_CLOCK = 210MHz;

从代码看来,实际上他们最后都是通过设置DSI_PLL_CON0和DSI_PLL_CON2寄存器来实现的。

参考文档:MT6582_LCM_Porting_Guide_DSI_V1.0.pptx.pdf
	MTK_on_line_FAQ_SW_ALPS_20141031.pdf
### PLL Clock in Digital Electronics and FPGA Design In digital electronics and Field Programmable Gate Array (FPGA) design, Phase-Locked Loops (PLLs) play a crucial role in generating stable clock signals with precise frequency control. A PLL is an electronic circuit that generates an output signal whose phase is related to the phase of an input reference signal. #### Functionality of PLLs A typical PLL consists of three main components: a phase detector, a low-pass filter, and a voltage-controlled oscillator (VCO). The function of these components can be summarized as follows: - **Phase Detector**: Compares the phases of the input reference signal and feedback signal. - **Low-Pass Filter**: Smoothens out rapid changes from the phase detector's output. - **Voltage-Controlled Oscillator (VCO)**: Generates an oscillating output based on the filtered error signal provided by the low-pass filter[^1]. When used within FPGAs, PLLs provide several advantages including jitter reduction, frequency synthesis capabilities, and improved timing margins which enhance overall system reliability and performance. #### Source Latency Considerations Source latency refers specifically to the propagation delay encountered when transmitting a clock signal from its origin point such as a PLL or crystal oscillator until reaching designated points where clocks are utilized inside circuits or systems[^2]. This parameter becomes particularly important during high-speed designs because any discrepancy between actual arrival times at different locations could lead to potential setup/hold violations impacting functionality negatively. To mitigate issues arising due to source latencies especially concerning off-chip elements like external crystals connected via PCB traces; careful planning around trace lengths alongside employing techniques aimed at minimizing variations across multiple paths should be considered essential practices. #### Types of Clock Skew Impacting System Performance Clock skews refer broadly speaking about inconsistencies present amongst various parts receiving supposedly synchronized pulses emanated originally through one common master clock generator but experiencing differing delays along their respective routes leading up till destination registers/logic blocks etc., thereby causing misalignment problems among operations supposed otherwise occur concurrently under ideal conditions without discrepancies whatsoever existing beforehand regarding relative timings involved hereof[^3]. Two primary categories exist herein namely intrinsic & extrinsic ones – while former pertains directly towards inherent characteristics associated inherently within individual devices themselves constituting part thereof i.e., internal structure/configuration aspects affecting distribution internally only thus far beyond user intervention scope practically speaking most often than not unless specific measures taken explicitly targeting mitigation efforts against same effect post-fabrication stage perhaps using calibration routines built-in possibly available sometimes depending upon make/model specifics chosen initially before deployment even starts really getting underway properly yet still limited extent generally applicable nonetheless compared wherewith latter category meanwhile encompasses everything outside aforementioned boundaries therefore covering all other possible sources contributing factor(s), mainly focusing primarily over physical layout arrangements made externally surrounding interconnections established therebetween diverse constituents forming complete assembly altogether instead now falling squarely into domain area controllable more readily enough usually once proper attention paid accordingly throughout entire process lifecycle stages starting right away early conceptualization/planning phases moving forward progressively stepwise manner eventually culminating final implementation realization ultimately achieved successfully hopefully after thorough testing/validation cycles completed satisfactorily indeed confirming expected behavior observed consistently every single instance tried repeatedly under varying operational scenarios tested exhaustively ensuring robustness maintained reliably regardless environmental factors potentially influencing outcomes adversely somehow somewhere somehow sometime someday someway somewhat... ```python # Example Python code demonstrating basic usage of PLL configuration in Xilinx Vivado HLS environment def configure_pll(input_frequency_mhz, desired_output_frequencies): """ Configures a PLL to generate specified frequencies Args: input_frequency_mhz (float): Input frequency in MHz desired_output_frequencies (list[float]): List of target output frequencies Returns: dict: Configuration parameters for each output channel """ config = {} vco_freq = max(desired_output_frequencies) * 2 # Ensure VCO freq higher than highest required output for idx, f_out in enumerate(desired_output_frequencies): div_ratio = int(vco_freq / f_out) config[f'output_{idx}'] = { 'vco_multiplier': round(vco_freq / input_frequency_mhz), 'divider': div_ratio, 'actual_output_freq': vco_freq / div_ratio } return config ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值