您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 其它文档 > HDMICEC的设计与实现
HDMICEC的设计与实现摘要:基于FPGA的设计流程,通过对HDMICEC的协议分析,架构定义,RTL编写及功能仿真,到最后FPGA验证,结果表明,该设计能较好的满足功能和时序要求,也能作为一个IP核,方便地相关电子产品领域应用。关键词:HDMI;CEC;FPGADesignandimplementforHDMICECZHANGYong,HUANGShi-zhen(FujiankeyLaboratoryofMicroelectronics&IntegratedCircuits,FuzhouUniversity,Fuzhou350002,China)Abstract:DesignedandimplementedforHDMI(HighDefinitionMultimediaInterface)CEC(ConsumerElectronicControl)baseontheflowofFPGA(filedprogramgatearray),fromprotocolanalyzed,architecturedefined,RTL(registertransmitlevel)write,andfunctionsimulation.Finally,implementwithFPGA.Theresultshowthatthisdesignmeetthetimingandfunctionwell.ItmaybeappliescomfortablyintherelationalelectronicproductionfiledasanIPcore.Keyword:HDMI;CEC;FPGA1引言由于HDTV(HighDefinitionTelevision)市场的需求,HDMI(High-DefinitionMultimediaInterface)接口已被消费者广泛接受,成为HDTV和相关消费类电子产品公认的高速接口标准。同时,HDMI中的CEC(ConsumerElectronicControl)的功能也得到了相当的重视。如今,在很多不同品牌的HDMI上都可以看到带有CEC的功能,如松下电器(Panasonic)的VIERALINK,三星电子(Samsung)的ANYNET+,LG电子的SIMPLINK,索尼(Sony)的BRAVIASYNC,索普(Sharp)的FAMILINK等[1]。功能主要是在不同的电器之间进行通信,从而实现比如一键开机、一键录像之类的效果。本设计中的CEC是基于HDMI规格中定义的接口协议,经仿真测试及FPGA验证,最终将集成到HDMI接口芯片里。设计的CEC模块也可作为一个IP核在相关领域应用。2CEC协议CEC接口只包含一根双向的信号线:CEC。CEC总线的数据以帧的形式传输[2]。每帧包括一个开始比特(Startbit),帧头块(headerblock),帧体块(datablock)。如果图1所示。其中Datablock的长度取决于具体的命令,有效范围是0到15byte。表1是帧头和帧体的结构。每个帧头块或帧体块包括10个比特,其中前八位是信息位,第九位是EOM(消息结束,endofmessage),最后一位是应答位。帧头和帧体的结构相同,区别仅仅是信息位。根据CEC标准,CEC信号用不同的占空比表示Start位,逻辑0和逻辑1,如图3所示。3CEC设计与实现本设计中的CEC模块主要包含bitcontrol、bytecontrol以及寄存器的接口等3个子模块。其中bitcontrol主要负责比特级别的处理,比如CEC时序的校准,Startbit的产生和检测,信息比特0和1的产生和检测,仲裁判决等等。Bytecontrol将bitcontrol接收到的比特数据,经过并行化,变成bytecontrol的数据。同时将bytecontrol的数据,经过串行化,作为bitcontrol的输入。Bytecontrol中包含两个FIFO。用户发送的CEC命令首先被存入到一个TFIFO里,经过bytecontrol转换到bitcontrol,最终输出。从CEC总线上接受到的消息,也被存入到一个RFIFO中,经过bitcontrol转换到bytecontrol,最终被用户读出。CECregisterinterface是个寄存器读写的接口。CEC模块总体框图如图3所示。3.1BitControl的设计根据CEC标准,CEC信号用不同的占空比表示逻辑0和逻辑1。为了确定是0还是1,我们需要一个参考时间源,通过填写寄存器CECTimingReferenceRegister,以产生一个4.8ms的时间基准。CECbitcontrol以这个时间基准为参考,产生和检测比特级别的信号。CEC总线上同时接了很多器件,并且这些器件可以同时发起消息传递。因此,当冲突发生时,CEC有相应的机制保证有唯一的某个器件可以单独占有总线,这就是仲裁。CEC总线的低电平由器件驱动,高电平由一个27kΩ的上拉电阻上拉产生。由于高电平可以被低电平覆盖,所以仲裁的结果是输出逻辑0(逻辑0有更长时间的低电平)的器件获得总线。当CEC要发送消息时,首先要查看CEC总线是否忙碌。如果空闲并且满足等待时间,CECbitcontrol开始发送消息,发送消息的同时,CECbitcontrol需要不停的检测总线数据。如果总线上的数据和发送的数据不同,表明CEC失去仲裁(在发送initiatoraddress期间)或者CEC消息的接收端(follower)无法接受本消息(在发送datablock期间)。CECbitcontrol应该设置LOST_ARBIT,并且立刻停止发送剩余消息内容。在CEC发送新的消息时,CECbitcontrol应该清除LOST_ARBIT。根据CEC标准每个headerblock或者datablock都包含一个响应位。如果接收端地址不是广播地址,接收端器件通过发送逻辑0来响应发送端,表明一个完整的字节已经收到。如果是广播地址,接收端器件(所有连在总线上的器件)通过发送逻辑1来表明广播消息已被接受。对于上面情况的反面情形(非广播地址时没有收到ACK,广播地址时收到ACK),CECbitcontrol应该设置NO_ACK。在CEC发送新的消息时,CECbitcontrol应该清除NO_ACK。根据CEC标准,逻辑0和1的周期在2.05ms到2.75ms之间(标准为2.4ms)。CECbitcontrol检测总线上的信号,如果小于2.05ms或超过2.75ms,CECbitcontrol要做相应的寄存器设置。需要注意的是,错误检测不在startbit期间执行。如果消息是CEC总线发送期间发生了上述的错误,CECbitcontrol要发送长达3.6ms的低电平来通知发送端。这种信号称为错误通知信号。同样,如果CECbitcontrol在总线上检测到错误通知信号,要立刻停止正在发送的消息,并且做出相应的寄存器设置。在CEC发送新的消息时,CECbitcontrol应该清除相应设置。CECbitcontrol框图如图4所示。3.2ByteControl的设计根据CEC标准,CEC在进行发送前要先进行地址匹配,CEC的帧头中包括initiatoraddress和destinationaddress。在发送消息之前,用户首先配置寄存器,其中的INIT_ADDR被认为就是CEC的逻辑地址。CEC总线上目标地址和该寄存器值匹配的,CEC要响应消息,并且接受其后总线上的消息内容。CEC同时支持CEC广播功能,即对于destination为0xF的消息,CEC也能接受,同时设置寄存器来指示。CEC接收到发给自己的非广播消息,应该清除相应的标志。CEC标准定义了仲裁和发送失败的重发机制和时间间隔(单位为date),如表2所示。为了便于软件重发时序控制,CECByteControl内置一个Counter。该Counter在消息结束之后自动清零,然后每隔0.3ms,Counter增加1。一个Databit是2.4ms,对应着该Counter增加到8。如表3所示。CECbytecontrol框图如图5所示。3.3CEC寄存器接口寄存器接口是一个握手协议接口。当进行写时,cec_ack信号在rab_write信号有效后的下一个周期被设置。当进行读时,cec_ack信号在rab_read信号有效后的下个周期被设置,同时将地址上的数据读出。寄存器接口协议图6所示。4CEC的仿真验证设计中使用的仿真软件是Synopsys公司的VCS和NOVAS公司的Verdi,并采用FPGA进行验证。CEC发送1byte的仿真波形结果如图7所示,CEC接收1byte的结果如图8所示,CEC发送和接收15bytes的结果如图9所示。5结束语设计并实现了一个基于FPGA流程的HDMICEC模块。从协议分析、架构定义、RTL编写,到功能仿真、及FPGA验证,较好地满足了设计的要求,能作为一个软核在相关领域应用。参考文献[1]官方网站[2]HighDefinitionMultimediaInterfaceSpecificationVersion1.3a,2006.11,170-190.作者简介张涌,硕士,福州大学物信学院。黄世震,副教授,福建省微电子集成电路重点实验室主任,主要从事集成电路的研究。本文摘自中国论文网,原文地址:
本文标题:HDMICEC的设计与实现
链接地址:https://www.777doc.com/doc-2876068 .html