📄 clksim.vhd
字号:
--设计实体:lcd驱动器
--彩色液晶芯片LQ080V3DG01
--原创针对博创开发板UP-SOPC2000开发板写的彩色液晶驱动程序
--设计者:杨立敬,宁波大学2008-05-20
library ieee;
use ieee.std_logic_1164.all;
--以下为实体声明
entity clksim is
port(
clkin,reset,keycontrol,bit3:in std_logic;--设计的lcd驱动器的输入,以及复位信号和自己加入的控制信号
CK:out std_logic; --输出LCD每个数据采样的时钟---lcd驱动器输出
Hsync,Vsync:out std_logic;--水平行同步信号和垂直帧同步信号---lcd驱动器输出
--R_L,U_D:out std_logic;--水平方向和垂直方向的扫描方向控制信号---lcd驱动器输出
ENAB:out std_logic;--lcd控制信号
Data_Disp:out integer range 0 to 65535--lcd显示数据,此信号也由lcd驱动器输出
);
end clksim;
--以下为结构体声明
architecture behav of clksim is
type state is(st0,st1,st2,st3,st4,st5);
signal present_state,next_state:state;
signal Hsync_temp,Vsync_temp,dataEn:std_logic;
shared variable count_clk,count_Hsync,count_Vsync:integer; --时钟;行同步、帧同步的计数器
signal frame_control:integer;--帧控制信号
signal DataDisptemp,dout:integer range 0 to 65535;
signal addr:integer range 0 to 1999 :=0;
begin
--状态更新进程
CK<=clkin;
ENAB<='0';
A: process(clkin,reset)
begin
if reset='1' then
count_clk:=0;
present_state<=st0;
elsif clkin 'event and clkin='1' then
present_state<=next_state;
if count_clk<800 then
count_clk:=count_clk+1;
else
count_clk:=0;
end if;
end if;
end process A;
--处理每个状态的控制信号的组合进程1
B: process(present_state,keycontrol,dataEn)
begin
case present_state is
when st0=>
Hsync_temp<='0';
Data_Disp<=0;
if count_clk<4 then
next_state<=st0;
else
next_state<=st1;
end if;
when st1=>
Hsync_temp<='1';
addr<=0;
if count_clk<108 then
next_state<=st1;
else
next_state<=st5;
end if;
when st5=>
Hsync_temp<='1';
if dataEn='1' then
if keycontrol='0' then
Data_Disp<=120;
else
Data_Disp<=count_clk;
end if;
end if;
if count_clk<499 then
next_state<=st5;
else
next_state<=st2;
end if;
when st2=>
Hsync_temp<='1';
--if addr<40 then
if count_Hsync>240 and count_Hsync<280 then
addr<=count_clk-109+50*(count_Hsync-240);
else
addr<=0;
end if;
--else
-- addr<=0;
--end if;
if dataEn='1' then
if keycontrol='0' then
Data_Disp<=dout;
else
Data_Disp<=count_clk;
end if;
end if;
if count_clk<549 then
next_state<=st2;
else
next_state<=st3;
end if;
when st3=>
Hsync_temp<='1';
if dataEn='1' then
if keycontrol='0' then
Data_Disp<=count_clk;
else
Data_Disp<=DataDisptemp;
end if;
end if;
if count_clk<748 then
next_state<=st3;
else
next_state<=st4;
end if;
when st4=>
Hsync_temp<='1';
if count_clk<800 then
next_state<=st4;
else
next_state<=st0;
end if;
when others=>
next_state<=st0;
end case;
Hsync<=Hsync_temp;
end process B;
--帧同步进程
C: process(Hsync_temp)
begin
if Hsync_temp 'event and Hsync_temp='1' then
if count_Hsync<525 then
count_Hsync:=count_Hsync+1;
else
count_Hsync:=0;
end if;
end if;
if count_Hsync<34 then
Vsync_temp<='0';
dataEn<='0';
elsif count_Hsync<514 then
Vsync_temp<='1';
dataEn<='1' ;
elsif count_Hsync<525 then
Vsync_temp<='1';
dataEn<='0';
else
Vsync_temp<='0';
dataEn<='0';
end if;
Vsync<=Vsync_temp;
end process C;
--帧间数据处理
D: process(Vsync_temp) --此进程用于对帧数技术,可以通过通过count_vsync对帧信号frame_control进行控制
begin
if Vsync_temp 'event and Vsync_temp='1' then
if count_Vsync<1600 then
count_Vsync:=count_Vsync+1;
else
count_Vsync:=0;
end if;
end if;
if count_Vsync<200 then frame_control <=1;--前100帧由frame_control控制显示颜色
elsif count_Vsync<400 then frame_control<=2;
elsif count_Vsync<600 then frame_control<=3;
elsif count_Vsync<800 then frame_control<=4;
elsif count_Vsync<1000 then frame_control<=5;
elsif count_Vsync<1200 then frame_control<=6;
elsif count_Vsync<1400 then frame_control<=7;
elsif count_Vsync<1600 then frame_control<=8;
else frame_control<=0;
end if;
end process D;
--帧数据
E: process(frame_control)
begin
case frame_control is
when 0 => DataDisptemp<=120;--这个进程为不同帧的显示颜色设置蓝色
when 1=> DataDisptemp<=63488;--红色
when 2=> DataDisptemp<=2016;--绿色
when 3=> DataDisptemp<=31;--蓝色
when 4=> DataDisptemp<=2047;--橙色
when 5=> DataDisptemp<=65504;--黄
when 6=> DataDisptemp<=63519;--淀
when 7=> DataDisptemp<=65535;--紫
when 8=> DataDisptemp<=0; --黑色
when others=>DataDisptemp<=0;
end case;
end process E;
F: process(addr)
begin
case addr is
when 0 => dout<=65535;
when 1 => dout<=65535;
when 2 => dout<=65535;
when 3 => dout<=65535;
when 4 => dout<=65535;
when 5 => dout<=65535;
when 6 => dout<=65535;
when 7 => dout<=65535;
when 8 => dout<=65535;
when 9 => dout<=65535;
when 10 => dout<=65535;
when 11 => dout<=65535;
when 12 => dout<=65535;
when 13 => dout<=65535;
when 14 => dout<=65535;
when 15 => dout<=65535;
when 16 => dout<=65535;
when 17 => dout<=65535;
when 18 => dout<=65535;
when 19 => dout<=65535;
when 20 => dout<=65535;
when 21 => dout<=65535;
when 22 => dout<=65535;
when 23 => dout<=65535;
when 24 => dout<=65535;
when 25 => dout<=65535;
when 26 => dout<=65535;
when 27 => dout<=65535;
when 28 => dout<=65535;
when 29 => dout<=65535;
when 30 => dout<=65535;
when 31 => dout<=65535;
when 32 => dout<=65535;
when 33 => dout<=65535;
when 34 => dout<=65535;
when 35 => dout<=65535;
when 36 => dout<=65535;
when 37 => dout<=65535;
when 38 => dout<=65535;
when 39 => dout<=65535;
when 40 => dout<=65535;
when 41 => dout<=65535;
when 42 => dout<=65535;
when 43 => dout<=65535;
when 44 => dout<=65535;
when 45 => dout<=65535;
when 46 => dout<=65535;
when 47 => dout<=65535;
when 48 => dout<=65535;
when 49 => dout<=65535;
when 50 => dout<=65535;
when 51 => dout<=65535;
when 52 => dout<=65535;
when 53 => dout<=65535;
when 54 => dout<=65535;
when 55 => dout<=65535;
when 56 => dout<=65535;
when 57 => dout<=65535;
when 58 => dout<=65535;
when 59 => dout<=65535;
when 60 => dout<=65535;
when 61 => dout<=65535;
when 62 => dout<=65535;
when 63 => dout<=65535;
when 64 => dout<=65535;
when 65 => dout<=65535;
when 66 => dout<=65535;
when 67 => dout<=65535;
when 68 => dout<=65535;
when 69 => dout<=65535;
when 70 => dout<=65535;
when 71 => dout<=65535;
when 72 => dout<=65535;
when 73 => dout<=65535;
when 74 => dout<=65535;
when 75 => dout<=65535;
when 76 => dout<=65535;
when 77 => dout<=65535;
when 78 => dout<=65535;
when 79 => dout<=65535;
when 80 => dout<=65535;
when 81 => dout<=65535;
when 82 => dout<=65535;
when 83 => dout<=65535;
when 84 => dout<=65535;
when 85 => dout<=65535;
when 86 => dout<=65535;
when 87 => dout<=65535;
when 88 => dout<=65535;
when 89 => dout<=65535;
when 90 => dout<=65535;
when 91 => dout<=65535;
when 92 => dout<=65535;
when 93 => dout<=65535;
when 94 => dout<=65535;
when 95 => dout<=65535;
when 96 => dout<=65535;
when 97 => dout<=65535;
when 98 => dout<=65535;
when 99 => dout<=65535;
when 100 => dout<=65535;
when 101 => dout<=65535;
when 102 => dout<=65535;
when 103 => dout<=65535;
when 104 => dout<=65535;
when 105 => dout<=65535;
when 106 => dout<=65535;
when 107 => dout<=65535;
when 108 => dout<=65535;
when 109 => dout<=65535;
when 110 => dout<=65535;
when 111 => dout<=65535;
when 112 => dout<=65535;
when 113 => dout<=65535;
when 114 => dout<=65535;
when 115 => dout<=65535;
when 116 => dout<=65535;
when 117 => dout<=65535;
when 118 => dout<=65535;
when 119 => dout<=65535;
when 120 => dout<=65535;
when 121 => dout<=65535;
when 122 => dout<=65535;
when 123 => dout<=65535;
when 124 => dout<=65535;
when 125 => dout<=65535;
when 126 => dout<=65535;
when 127 => dout<=65535;
when 128 => dout<=65535;
when 129 => dout<=65535;
when 130 => dout<=65535;
when 131 => dout<=65535;
when 132 => dout<=65535;
when 133 => dout<=65535;
when 134 => dout<=65535;
when 135 => dout<=65535;
when 136 => dout<=65535;
when 137 => dout<=65535;
when 138 => dout<=65535;
when 139 => dout<=65535;
when 140 => dout<=65535;
when 141 => dout<=65535;
when 142 => dout<=65535;
when 143 => dout<=65535;
when 144 => dout<=65535;
when 145 => dout<=65535;
when 146 => dout<=65535;
when 147 => dout<=65535;
when 148 => dout<=65535;
when 149 => dout<=65535;
when 150 => dout<=65535;
when 151 => dout<=65340;
when 152 => dout<=65340;
when 153 => dout<=65535;
when 154 => dout<=65535;
when 155 => dout<=65535;
when 156 => dout<=65535;
when 157 => dout<=65535;
when 158 => dout<=65535;
when 159 => dout<=65535;
when 160 => dout<=65535;
when 161 => dout<=65535;
when 162 => dout<=65535;
when 163 => dout<=65535;
when 164 => dout<=65535;
when 165 => dout<=65535;
when 166 => dout<=65535;
when 167 => dout<=65535;
when 168 => dout<=65535;
when 169 => dout<=65535;
when 170 => dout<=65535;
when 171 => dout<=65535;
when 172 => dout<=65535;
when 173 => dout<=65535;
when 174 => dout<=65535;
when 175 => dout<=65535;
when 176 => dout<=65535;
when 177 => dout<=65535;
when 178 => dout<=65535;
when 179 => dout<=65535;
when 180 => dout<=65535;
when 181 => dout<=65535;
when 182 => dout<=65535;
when 183 => dout<=65535;
when 184 => dout<=65535;
when 185 => dout<=65535;
when 186 => dout<=65535;
when 187 => dout<=65535;
when 188 => dout<=65535;
when 189 => dout<=65535;
when 190 => dout<=65535;
when 191 => dout<=65535;
when 192 => dout<=65340;
when 193 => dout<=65340;
when 194 => dout<=65340;
when 195 => dout<=65340;
when 196 => dout<=65535;
when 197 => dout<=65535;
when 198 => dout<=65535;
when 199 => dout<=65340;
when 200 => dout<=65535;
when 201 => dout<=65340;
when 202 => dout<=31695;
when 203 => dout<=31695;
when 204 => dout<=65535;
when 205 => dout<=65535;
when 206 => dout<=65535;
when 207 => dout<=65535;
when 208 => dout<=65535;
when 209 => dout<=65535;
when 210 => dout<=65535;
when 211 => dout<=65535;
when 212 => dout<=65535;
when 213 => dout<=65535;
when 214 => dout<=65535;
when 215 => dout<=65535;
when 216 => dout<=65535;
when 217 => dout<=65535;
when 218 => dout<=65535;
when 219 => dout<=65535;
when 220 => dout<=65535;
when 221 => dout<=65535;
when 222 => dout<=65535;
when 223 => dout<=65535;
when 224 => dout<=65535;
when 225 => dout<=65535;
when 226 => dout<=65535;
when 227 => dout<=65535;
when 228 => dout<=65535;
when 229 => dout<=65535;
when 230 => dout<=65535;
when 231 => dout<=65535;
when 232 => dout<=65535;
when 233 => dout<=65535;
when 234 => dout<=65535;
when 235 => dout<=65535;
when 236 => dout<=65535;
when 237 => dout<=65535;
when 238 => dout<=65535;
when 239 => dout<=65535;
when 240 => dout<=65535;
when 241 => dout<=65340;
when 242 => dout<=65340;
when 243 => dout<=31695;
when 244 => dout<=31695;
when 245 => dout<=31695;
when 246 => dout<=31695;
when 247 => dout<=65535;
when 248 => dout<=65535;
when 249 => dout<=65340;
when 250 => dout<=65535;
when 251 => dout<=65340;
when 252 => dout<=31695;
when 253 => dout<=0;
when 254 => dout<=0;
when 255 => dout<=65535;
when 256 => dout<=65535;
when 257 => dout<=65535;
when 258 => dout<=65535;
when 259 => dout<=65535;
when 260 => dout<=65535;
when 261 => dout<=65535;
when 262 => dout<=65535;
when 263 => dout<=65535;
when 264 => dout<=65535;
when 265 => dout<=65535;
when 266 => dout<=65535;
when 267 => dout<=65535;
when 268 => dout<=65535;
when 269 => dout<=65535;
when 270 => dout<=65535;
when 271 => dout<=65535;
when 272 => dout<=65535;
when 273 => dout<=65535;
when 274 => dout<=65535;
when 275 => dout<=65535;
when 276 => dout<=65535;
when 277 => dout<=65535;
when 278 => dout<=65535;
when 279 => dout<=65535;
when 280 => dout<=65535;
when 281 => dout<=65535;
when 282 => dout<=65535;
when 283 => dout<=65535;
when 284 => dout<=65535;
when 285 => dout<=65535;
when 286 => dout<=65535;
when 287 => dout<=65535;
when 288 => dout<=65535;
when 289 => dout<=65535;
when 290 => dout<=65535;
when 291 => dout<=65340;
when 292 => dout<=31695;
when 293 => dout<=31695;
when 294 => dout<=0;
when 295 => dout<=0;
when 296 => dout<=0;
when 297 => dout<=0;
when 298 => dout<=65535;
when 299 => dout<=65340;
when 300 => dout<=65535;
when 301 => dout<=65340;
when 302 => dout<=31695;
when 303 => dout<=0;
when 304 => dout<=0;
when 305 => dout<=65340;
when 306 => dout<=65340;
when 307 => dout<=65340;
when 308 => dout<=65340;
when 309 => dout<=65340;
when 310 => dout<=65340;
when 311 => dout<=65340;
when 312 => dout<=65340;
when 313 => dout<=65340;
when 314 => dout<=65535;
when 315 => dout<=65535;
when 316 => dout<=65535;
when 317 => dout<=65535;
when 318 => dout<=65340;
when 319 => dout<=65340;
when 320 => dout<=65340;
when 321 => dout<=65340;
when 322 => dout<=65535;
when 323 => dout<=65535;
when 324 => dout<=65535;
when 325 => dout<=65535;
when 326 => dout<=65340;
when 327 => dout<=65340;
when 328 => dout<=65340;
when 329 => dout<=65340;
when 330 => dout<=65340;
when 331 => dout<=65535;
when 332 => dout<=65535;
when 333 => dout<=65535;
when 334 => dout<=65340;
when 335 => dout<=65340;
when 336 => dout<=65340;
when 337 => dout<=65340;
when 338 => dout<=65535;
when 339 => dout<=65535;
when 340 => dout<=65535;
when 341 => dout<=65535;
when 342 => dout<=31695;
when 343 => dout<=0;
when 344 => dout<=0;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -