• 方案介绍
  • 附件下载
  • 相关推荐
申请入驻 产业图谱

TFT-LCD时序接口驱动设计VHDL代码Quartus仿真

08/15 08:33
194
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

2-240RQKK1137.doc

共1个文件

名称:TFT-LCD时序接口驱动设计VHDL代码Quartus仿真

软件:Quartus

语言:VHDL

代码功能:

FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com

演示视频:

设计文档:

1. 工程文件

2. 程序文件

3. 程序编译

4. 仿真文件

5. 仿真图

定义的HSPW为3,所以高电平为4个时钟

部分代码展示:

LIBRARY?ieee;
???USE?ieee.std_logic_1164.all;
???USE?ieee.std_logic_unsigned.all;
ENTITY?lcd_lcd?IS
???PORT?(
??????sclk_25M??:?IN?STD_LOGIC;--25M时钟
??????n_rst?????:?IN?STD_LOGIC;--低电平复位
??????hsync?????:?OUT?STD_LOGIC;--水平同步信号
??????vclk??????:?OUT?STD_LOGIC--视频时钟
???);
END?lcd_lcd;
ARCHITECTURE?RTL?OF?lcd_lcd?IS
???constant???s_init????:?STD_LOGIC_VECTOR(3?DOWNTO?0)?:=?"0000";--状态机的状态0
???constant???s_high????:?STD_LOGIC_VECTOR(3?DOWNTO?0)?:=?"0001";--状态机的状态1
???constant???s_low?????:?STD_LOGIC_VECTOR(3?DOWNTO?0)?:=?"0010";--状态机的状态2
???
???SIGNAL?hspw??????:?STD_LOGIC_VECTOR(7?DOWNTO?0)?:=?"00000011";--3
???SIGNAL?hbpd??????:?STD_LOGIC_VECTOR(7?DOWNTO?0)?:=?"00000100";--4
???SIGNAL?hozval????:?STD_LOGIC_VECTOR(7?DOWNTO?0)?:=?"00001111";--15
???SIGNAL?hfpd??????:?STD_LOGIC_VECTOR(7?DOWNTO?0)?:=?"00000010";--2
???SIGNAL?ss????????:?STD_LOGIC_VECTOR(3?DOWNTO?0)?:=?"0000";--状态机的状态
???SIGNAL?cnt???????:?STD_LOGIC_VECTOR(7?DOWNTO?0)?:=?"00000000";--用于计数的计数器
???SIGNAL?vclk_buf??:?STD_LOGIC?:=?'0';--缓存vclk
???SIGNAL?hsync_buf?:?STD_LOGIC?:=?'0';--缓存hsync
SIGNAL?add_all??????:?STD_LOGIC_VECTOR(7?DOWNTO?0)?:=?"00000000";--累加和
BEGIN
???
add_all<=hspw+"00000001"?+?hbpd+"00000001"??+?hozval+"00000001"??+?hfpd?+"00000001";--累加
???PROCESS?(vclk_buf,?n_rst)??--状态机,分为3个状态,初始状态s_init;高电平状态s_high;低电平状态s_low
???BEGIN
??????IF?((NOT(n_rst))?=?'1')?THEN
?????????ss?<=?s_init;--初始状态
??????ELSIF?(vclk_buf'EVENT?AND?vclk_buf?=?'1')?THEN
?????????CASE?ss?IS
????????????WHEN?s_init?=>--初始状态s_init
???????????????ss?<=?s_high;??????????????
????????????WHEN?s_high?=>--高电平状态s_high
???????????????IF?(cnt?=?hspw)?THEN--计数到hspw后跳转
??????????????????ss?<=?s_low;
???????????????ELSE
??????????????????ss?<=?s_high;
???????????????END?IF;
????????????WHEN?s_low?=>--低电平状态s_low
???????????????IF?(cnt?=??add_all?-"00000001")?THEN--计数到最大值后跳转
??????????????????ss?<=?s_high;
???????????????ELSE
??????????????????ss?<=?s_low;
???????????????END?IF;
????????????WHEN?OTHERS?=>
???????????????ss?<=?s_init;
?????????END?CASE;
??????END?IF;
???END?PROCESS;
???
???
???PROCESS?(vclk_buf,?n_rst)?--状态机的跳转依赖于cnt的计数值
???BEGIN
??????IF?((NOT(n_rst))?=?'1')?THEN
?????????cnt?<=?"00000000";
??????ELSIF?(vclk_buf'EVENT?AND?vclk_buf?=?'1')?THEN
?????????IF?(cnt?=??add_all?-"00000001")?THEN--计数到最大值后回零,循环计数
????????????cnt?<=?"00000000";
?????????ELSIF(ss=s_high?or?ss=s_low)THEN
????????????cnt?<=?cnt?+?"00000001";--计数
?????????END?IF;
??????END?IF;
???END?PROCESS;

点击链接获取代码文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=983

  • 2-240RQKK1137.doc
    下载

相关推荐