分类: 嵌入式
2012-09-02 18:11:03
/*********************
* Display Interface *
*********************/
DI 提供最大3个diaplay的时分复用的仲裁。 DI从DC或者AHB转换数据到适合指定显示接口的格式
(串并接口)
DI 生成显示clock和其他显示控制信号(通过可编程的timing)。显示数据和控制信号组从DC发到DI,
来自DC的控制被用来生成控制信号发送到display, 但串行LLA不同,它的DC被bypass 并且数据直接来自
arm platform(AHB),
模块图如下:
上图中显示接口包含2组控制信号
1.Time oriented signals ==> VSYNC,HSYNC,pixel clock
2. Data oriented signals ==> DC 可以增加标记到发送给DI的数据,这些标记用来指示数据的特定属性,
比如enf-of-line, eof,chip select等. 来自DC的标记(marker)触发DI上1个和多个信号的指定波形,
指定的波形将被在属于关联数据的bus上看到.
标记可以被同步到time oriented 信号,比如连接 end-of-frame 信号到下一个VSYNC
* DC interface, data accumulator and clock domain synchronizer
data 累加器,是DI的输入缓冲,它接收来自DC的数据和控制信号,并将它们从DC的clock domain
同步到DI 的clock domain.
* Parallel interface data synchronizer and data oriented interface
data accumulate (DI的输入缓冲)将根据DI内部event 将数据发送到display.
1个tag被DC的microcode(SYNC field P)关联到每个数据。tag选择将要同步的evnent.
一旦对应的事件发生,数据就别送到display. 但是对异步display,tag 等于0,因为数据部需要和
event 同步,数据将立即从buffer 中发出。
* Timing generator
用来生成每个显示接口pin的波形。
10个counter,1个counter可以做time base,其他9个被用来生成控制信号的波形
DI clock 可以继承自IPU clock(HSP_CLK) 或者外部源(ipp_di_#_ext_clk pin),通过配置
DI#_CLK_EXT bit.
timebase的参数由DI#_DISP_CLK_OFFSET,DI#_DISP_CLK_PERIOD,DI#_DISP_CLK_UP,DI#_DISP_CLK_DOWN
决定
The Clear is the trigger that resets the counter,It is selected by programming the
DI#_CNT_CLR_SEL_
1个波形主要有5个参数:(P2756的图描述很清晰)
OFFSET, DI#_OFFSET_RESOLUTION_
在选择触发源时要注意,counter可以被index 小于它的counter触发
DI#_OFFSET_VALUE_
STEP,
run, DI#_RUN_RESOLUTION_
DI#_RUN_VALUE_
up,
down
注意N是counter的index
* Polarity generator (P2759)
除了static polarity(根据每个pin的 POLARITY_<#> bit 设置)
其他控制polatrity的单元称为Polarity generator
POLARITY_GEN_EN[1] to 1 来使能该单元,它有两种mode
1.Normal polarity mode
POLARITY_TRIGGER_SEL (定义采样点)
POLARITY_CLR_SEL (定义polarity 值)
2.Toggle mode
POLARITY_TRIGGER_SEL
如果对 clear,offset,tigger ,value 不清楚请看下图:
注意 Counter number 9的使用(P2761) 第9个计数器的使用
DI0 Sync Wave Gen 9 Register 1 (IPU_DI0_SW_GEN1_9)
Counter #9 main waveform select
This field defines the counter that counter #9's auxiliary waveform will be attached too.
000 Counter #9's waveform is attached to counter #1's waveform
...
111 Counter #9's waveform is attached to counter #8's waveform
* DI's active window
如下图
* Waveform settings for asynchronous interface pins
DI 提供8个信号用于异步接口. (PIN11到 PIN17,+ CS)
(ipp_di_#_pin_11 through ipp_di_0_pin_17) +
(ipp_di_0_do_dispb_d0_cs).
并行pin设置图:
如图,waveform[3:0]是DC microcode的一个字段,它指向某个
DI#_DW_GEN_x,比如:
0 - The waveform of the data oriented output pins is no
1 -Points to DI0_DW_GEN_0 or DI1_DW_GEN_0
2 - Points to DI0_DW_GEN_1 or DI1_DW_GEN_1
...
12 - Points to DI0_DW_GEN_11 or DI1_DW_GEN_11
DI#_DW_GEN_x 中 对 PIN11-PIN17,cst,rs,serial_clk等
设置选择:
00 The waveform is defined according to the settings on DI0_DW_SET0_
01 The waveform is defined according to the settings on DI0_DW_SET1_
10 The waveform is defined according to the settings on DI0_DW_SET2_
11 The waveform is defined according to the settings on DI0_DW_SET3_
然后DI0_DW_SETx_i中的di0_data_cnt_down0_,di0_data_cnt_up0_
分别定义:Waveform's falling edge position和Waveform's rising edge position.
四元组中的某1个设置对应到某个PT_x
串行pin设置图:
* P2766 提供了一个串行接口波形设置的例子
一个trigger 指示SI(serialinterface) won the DI's arbitration,
因此接下来访问将通过SI,trigger过后START_PERIOD,timbase 开始输出
timebase后up ,down 定义访波对timebase的offset和宽度。
SERIAL_PERIOD定义几个timebase周期为SD_D_CLK的周期
VALID_BITS定义timebase的tick数
数据的发送根据timebase ticks, DI#_SERIAL_LATCH 定义一个offset
* Low Level Access - LLA =>arm platform 直接访问display
DMFC直接到DI,bypass DC.
* using a mask channel => 经由IDMAC 通过 channel 44 ???