笔者是一名研一新生,这是我参与的第一个项目,做的是四通道的MSO,呵呵,第一次接触FPGA设计,一切从零开始学习。挣扎了几天,总算开始有点头绪了,其中项目中要用到对12.1寸的液晶屏进行控制,研究了5天总算大概弄清楚怎么进行操作了,这里把思路整理一下,并附上程序,希望对大家能有点帮助。
本设计通过xilinx公司Spartan 6芯片,通过两片IS61WV102416ALL存储器,对12.1寸彩色液晶显示屏进行乒乓显示操作。
通过对G121X1-L04液晶的datasheet进行阅读,我们可以知道要实现液晶显示,第一、时钟信号有两个,CLK_D像素时钟,为60M,cnt_clk信号为210M,供传输数据给液晶屏。第二、传输协议为LVDS协议,我们使用的液晶屏模式是RGB565模式,采用的是3通道差分信号 lcd_link0 lcd_link1 lcd_link2 进行串行传输。
lcd_d是16位颜色数据遵从RGB565,从两片SRAM中读出来。
然后我们将lcd_d中的数据存入mem_a中,将这16位数据加上HS VS DE 数据 写为3个差分通道数据。分别为link_a_p link_a_n, link_b_p link_b_n, link_c_p link_c_n.其中存储的有16为数据位,和HS行频信号,VS场频信号,DE数据使能信号。
其中 link0:R0-5,G0 link1:G1-5,B0-1 link2:B2-5,DENA
然后将link_a_p 等数据拼合起来存入 link_p1和link_n1
link _p1和link_n1 是最终数据
link_p1 <= {link_a_p,link_b_p,link_c_p}
link_n1 <= {link_a_n,link_b_n,link_c_n};
而通过ISE ODDR2的原语将信号link_p1 和link_n1进行整合成lcd_d 21位数据,注意这里lcd_d 21位和lcd_d 16位数据是不同的。
最后将lcd_d数据分为3个通道就可以输出了!!!!! |