基于FPGA的单线LED调光芯片的设计
|
1.引言 2.芯片结构框图 图1所示为该调光芯片的结构框图,其中SDI用于接收数据,SDO用于数据的向后传输,振荡器为芯片提供时钟晶振,VLED为芯片提供电源,LDO为一线性稳压器,数字控制单元包括decode模块、PWM模块,OUTR、OUTG、OUTB为芯片的三个输出端,用于颜色显示。
3.芯片的工作原理 本芯片采用单线通讯方式传输数据,采用归零码的方式发送信号。系统在上电以后,SDI接收从控制器传输来的数据流,该数据流为基于归零码的二进制数据,当每个芯片接收36bit后,SDO输出口开始转发数据,为下一个芯片提供输入数据。RGB是工业界的一种颜色标准,是通过红(R)、绿(G)、蓝(B)三个颜色通道的变化以及它们相互之间的叠加来得到各式各样的颜色。 系统OUTR、OUTG、OUTB三个PWM输出端经过数字控制单元,每通道接收到12bit数据,每通道有12位PWM灰阶控制,有4096灰度等级。每通道发出相应不同占空比的信号,如果输入的是RESET信号,系统将接收到的数据送LED显示。 4.主要功能模块的实现 4.1 decode模块 该模块用于数据的采集,判断输入的数据是1还是0,并且将数据传送到R、G、B端口。采用脉冲边沿检测法,获得输入数据的上升沿sdi_posedge和sdi_negedge信号,将一个数据周期的高电平时钟数、低电平时钟数、整个周期的时钟数分别存放在high_count、low_count、count_cycle三个寄存器中,在数据的下降沿来临时,将high_count寄存器中的数据与count_cycle寄存器右移一位的数据进行比较,当high_count中的数值大于count_cycle右移一位的数值时,我们判断此时输入的数据位1,反之为0.将此时获得的0或者1存储在8位寄存器data_reg的最后一位,每来一位数据下降沿,将sdi_negedge_count寄存器加1,当该寄存器的数值分别为12、24、36时,将8为寄存器data_reg中的数据赋与rdata、gdata、bdata用于PWM模块的编码。在sdi_negedge_count为36时,将frame_flag寄存器置1,表示该模块已经接收完数据,剩下的信号通过SDO转发出去。图2所示为各个寄存器的Modelsim的仿真波形。
4.2 PWM模块 该模块用于将decode模块采集的数据,用于PWM编码,输出不同占空比的波形。 图3中,当来一个时钟脉冲时,循环计数器的输出增大,寄存器锁存一个12bit信号,锁存信号不断与循环计数器的数据进行比较,当锁存信号小于循环计数器的输出时,比较器输出高电平,否则输出低电平。
|






