大学毕业生的英文业生翻译业生英语怎么说-brow


2023年4月4日发(作者:我是传奇 结局)

中国农业大学

课程论文

(2010-2011学年春季学期)

论文题目:VGA显示设计

课程名称:PLD课程设计

任课教师:***

班级:电子072

学号:**********

*名:***

成绩

一.课程设计题目:VGA显示

设计目的:

1、学习VerilogHDL的设计技巧

2、学习VGA接口特点

3、学习嵌入式逻辑分析仪的使用

设计内容:

以24M的工作频率,每个时钟周期输出一个象素,每行个800象素,每场

525个象素

二.工作原理

VGA显示原理

常见的彩色显示器一般由CRT(阴极射线管)构成,彩色是由R(红)、G(绿)、

B(蓝)3色组成。显示是采用逐行扫描的方式,阴极射线枪发出的电子束打在涂有

荧光粉的荧光屏上,产生RGB三色基,最后合成一个彩色图像。从荧幕的左上

方开始向右扫描,每扫完一行图像电子束回到下一行的最左端,每行结束后电子

枪回扫的过程中进行消隐。然后从新开始行扫描,消隐……,直到扫到荧幕的右

下方,电子束回到荧幕的左上方从新开始新的图像扫描,并且在回到荧幕左上方

的过程中进行消隐。在消隐过程中不发射电子束。每一行扫描结束时,用HS(行

同步)信号进行同步;扫描完所有的行后用VS(场同步)信号进行同步。

VGA的行、场扫描时序见图1。图中行频和场频在数量上有很大差别,但时序

上一样。因此,图1只是示例HS信号、VS信号的行(场)扫描时间、行(场)同步

时间、前沿时间、后沿时间、激励视频时间等。

VGA时序分析

实现VGA显示就要解决数据来源、数据存储、时序实现等问题,其中关键还是

如何实现VGA时序。VGA的标准参考显示时序如图2所示。行时序和帧时序都

需要产生同步脉冲(Synca)、显示后沿(Backporchb)、显示时序段(Displayinterval

c)和显示前沿(Frontporchd)四个部分。几种常用模式的时序参数如表1所示。

VGA工业标准显示模式要求:行同步、场同步都为负极性,即同步头脉冲要求是负脉

冲。

VGA的行时序如下图2所示:每一行都有一个负极性行同步脉冲(Synca),是数

据行的结束标志,同时也是下一行的开始标志。在同步脉冲之后为显示后沿(Backporch

b),在显示时序段(Displayintervalc)显示器为亮的过程,RGB数据驱动一行上的每

一个象素点,从而显示一行。在一行的最后为显示后沿(Backporchb)。在显示时序段

(Displayintervalc)之外没有图像投射到屏幕时插入消隐信号。同步脉冲(Synca)、

显示后沿(Backporchb)和显示前沿(Frontporchd)都是在行消隐间隔内(Horizont清明节手抄报漂亮 al

BlankingInterval),当行消隐有效时,RGB信号无效,屏幕不显示数据。

VGA的场时序与VGA的行时序基本一样,如图3所示,每一帧的负极性帧同步脉冲

(Synca)是一帧的结束标志,同时也是下一帧的开始标志。而显示数据是一帧的所有行

数据。

字母方块动态显示的硬件连接原理图

三.VGA设计

VGA时序实现

首先,根据刷新频率确定主时钟频率,然后由主时钟频率和图像分辨率计算出行

总周期数,再把表1中给出的a、b、c、d各时序段的时间按照主计数脉冲源频率

折算成时钟周期数。在CPLD中利用计数器和RS触发器,以计算出的各时序段

时钟周期数为基准,产生不同宽度和周期的脉冲信号,再利用它们的逻辑组合构

成图2中的a、b、c、d各时序段以及D/A转换器的空白信号BLANK和同步信

号SYNC。

试验箱所用像素扫描频率为40Mhz,按每行800个像素,每场525个像素,则行频

率为5khz,场频为9.52hz.

模块:分屏产生所需频率

//屏计数器设置

always@(posedgeclk)

begin

if(vcount==524)

k<=k+1;

elseif(k>=1000)k=1000;//经多次仿真实验得出1000,逻辑分析仪可看出是3e8h

end

//四分频

always@(posedgeclk)

begin//分频1

if(j==2)

begin

j<=8\'h00;

clk1=~clk1;//200k

end

else

begin

j<=j+1;

end

end

行、场同步信号的处理

//--hsync-----------------------------------------________--------------

//---hcnt9

//--vsync---------------------------------------________-------------

//---vcnt4

模块:行和场信号的处理

//行计数器处理

always@(posedgeclk)

begin

if(hcount==799)

hcount<=0;

else

hcount<=hcount+1;

end

//场计数器处理

always@(posedgeclk)

begin

if(vcount==524)

vcount<=0;

elseif(hcount==729)

vcount<=vcount+1;

elsevcount<=vcount;

end

//行同步场同步信号处理

always@(posedgeclk)

begin

if((hcount<=759)&&(hcount>=663))

hsync<=0;

elsehsync<=1;

if((vcount<=499)&&(vcount>=497))

vsync<=0;

elsevsync<=1;

end

//行有效区

always@(posedgeclk)

begin

if(hcount<639)h_video_on<=1;

elseh_video_on<=0;

end

//场有效区

always@(posedgeclk)

begin

if(vcount<479)v_video_on<=1;

elsev_video_on<=0;

end

VGA时序信号产生模块

VGA时序信号产生模块包括行点数计数器h_cnt、场行数计数器v_cnt、行

同步产生状态机h_state和场同步产生状态机v_state等。其中,行点数计数器是

800进制计数器,场行数计数器是525进制计数器(行同步状态机h_state有

h_video、h_front、h_sync、h_back四种状态,它根据行点数计数器的计数值来

进行状态转换;场同步状态机v_state有v_video,v_Front,v_sync,v_Back四种状态,

它根据场行数计数器的计数值来进行状态翻转。

当行状态机h_state复位时,即进入h_video状态,它对应每行的有效显示

区域。行计数器h_cnt对25MHz的点时钟进行计数,当行计数器h_cnt的计数值

到达639时,行同步状态机即进入行消隐前肩h_front状态;当h_cnt的计数值为

663时,行同步状态机进入行同步状态和h_sync,此时,行同步信号Hs输出低电平;

当h_cnt的计数值为759时,状态机即进入行消隐后肩h_back状态;在行状态机

为h_front,h_sync,h_back状态时,行消隐信号输出低电平。当h_cnt的计数值为

799时,行同步状态机进入h_video状态,同时,行计数器的同步复位信号为高电

平,使行计数器复位。

场状态机v_state开始时进入v_video状态,对应了每场的有效显示行,场计

数器v_cnt的计数值每行加1。当场计数器的计数值到达479时,场状态机翻转,

进入场消隐前肩v_front状态,当v_cnt的值为497时,状态机v_state进入场同步状

态v_sync,场同步信号Vs此时输出低电平;当v_cnt的值为499时,状态机v_state

进入场消隐后肩v_back状态;当v_cnt的值为524时,状态机v_state又翻转进入

v_video状态,同时输出高电平到场计数器v_cnt的同步清零端使其清零.当场状态

机v_state的状态为v_Front,v_sync,v_Back三种状态时,场消隐信号输出低电平,

其余时刻为高电平。行、场消隐信号的逻辑与即为复合消隐信号。

字母方块动态显示

方块分布及编号:

模块:定义方块的大小形状和颜色

//显示区

always@(posedgeclk)

begin

if((40

begin

red[2:0]<=0;//绿

green[2:0]<=3\'b101;

blue[2:0]<=0;

end

elseif((80

begin

red[2:0]<=0;//

green[2:0]<=3\'b101;

blue[2:0]<=0;

end

elseif((80

begin

red[2:0]<=0;//

green[2:0]<=3\'b101;

blue[2:0]<=0;

end

elseif((220

begin

red[2:0]<=0;//蓝

green[2:0]<=0;

blue[2:0]<=3\'b101;

end

elseif((300

begin

red[2:0]<=3\'b101;//红

green[2:0]<=0;

blue[2:0]<=0;

end

elseif((340

begin

red[2:0]<=3\'b101;//红

green[2:0]<=0;

blue[2:0]<=0;

end

elseif((340

begin

red[2:0]<=3\'b101;//红

green[2:0]<=0;

blue[2:0]<=0;

end

elseif((340

begin

red[2:0]<=3\'b101;//红

green[2:0]<=0;

blue[2:0]<=0;

end

elseif((480

begin

red[2:0]<=3\'b101;//红

green[2:0]<=0;

blue[2:0]<=0;

end

elseif((520

begin

red[2:0]<=3\'b101;//红

green[2:0]<=0;

blue[2:0]<=0;

end

elseif((520

begin

red[2:0]<=3\'b101;//红

green[2:0]<=0;

blue[2:0]<=0;

end

elseif((520

begin

red[2:0]<=3\'b101;//红

green[2:0]<=0;

blue[2:0]<=0;

end

elseif((60

begin

red[2:0]<=bg[2:0];

green[2:0]<=bg[5:3];

blue[2:0]<=bg[8:6];

end

elseif((200

begin

red[2:0]<=bg[2:0];

green[2:0]<=bg[5:3];

blue[2:0]<=bg[8:6];

end

elseif((100

begin

red[2:0]<=bg[2:0];

green[2:0]<=bg[5:3];

blue[2:0]<=bg[8:6];

end

elseif((100

begin

red[2:0]<=bg[2:0];

green[2:0]<=bg[5:3];

blue[2:0]<=bg[8:6];

end

elseif((100

begin

red[2:0]<=bg[2:0];

green[2:0]<=bg[5:3];

blue[2:0]<=bg[8:6];

end

elseif((130

begin

red[2:0]<=bg[2:0];

green[2:0]<=bg[5:3];

blue[2:0]<=bg[8:6];

end

elseif((130

begin

red[2:0]<=bg[2:0];

green[2:0]<=bg[5:3];

blue[2:0]<=bg[8:6];

end

elseif((340

begin

red[2:0]<=bg[2:0];

green[2:0]<=bg[5:3];

blue[2:0]<=bg[8:6];

end

elseif((430

begin

red[2:0]<=bg[2:0];

green[2:0]<=bg[5:3];

blue[2:0]<=bg[8:6];

end

elseif((400

begin

red[2:0]<=bg[2:0];

green[2:0]<=bg[5:3];

blue[2:0]<=bg[8:6];

end

elseif((320

begin

red[2:0]<=bg[2:0];

green[2:0]<=bg[5:3];

blue[2:0]<=bg[8:6];

end

模块:方块的动作显示设计

模块任务:当场计数器每计到524时,屏计数器k加一,用屏计数器控制画面显

示的先后顺序,在快速扫描时,当屏计数器k<10,所有方格位置都不变,当k>10,

方格1到13随着k的增加开始下落,但是落到指定的纵坐标250的时候停止不动。

当k>10,方格14到23的位置随着k的增加开始下落。这样就能看到三种颜色的方

格错落有致地下落。

//定义方格1、动作

always@(posedgeclk)

begin

if((k<10)&&(vcount==524)&&(cnt1!=300))

cnt1<=0;

elseif(cnt1==300)

cnt1<=300;

end

//定义方格2、动作

always@(posedgeclk)

begin

if((k<10)&&(vcount==524)&&(cnt2!=300))

cnt2<=0;

elseif(cnt1==300)

cnt2<=300;

end

//定义方格3、枫桥夜泊张继赏析 动作

always@(posedgeclk)

begin

if((k<10)&&(vcount==524)&&(cnt3!=420))

cnt3<=160;

elseif(cnt3==460)

cnt3<=460;

end

//定义方格4、动作

always@(posedgeclk)

begin

if((k<10)&&(vcount==524)&&(cnt4!=300))

cnt4<=0;

elseif(cnt4==300)

cnt4<=300;

end

//定义方格5、动作

always@(posedgeclk)

begin

if((k<10)&&(vcount==524)&&(cnt5!=300))

cnt5<=0;

elseif(cnt5==300)

cnt5<=300;

end

//定义方格6、动作

always@(posedgeclk)

begin

if((k<10)&&(vcount==524)&&(cnt6!=300))

cnt6<=0;

elseif(cnt6==300)

cnt6<=300;

end

//定义方格7、动作

always@(posedgeclk)

begin

if((k<10)&&(vcount==524)&&(cnt7!=380))

cnt7<=80;

elseif(cnt7==380)

cnt7<=380;

end

//定义方格8、动作

always@(posedgeclk)

begin

if((k<10)&&(vcount==524)&&(cnt8!=420))

cnt8<=160;

elseif(cnt8==460)

cnt8<=460;

end

//定义方格9、动作

always@(posedgeclk)

begin

if((k<10)&&(vcount==524)&&(cnt9!=300))

cnt9<=0;

elseif(cnt9==300)

cnt9<=300;

end

//定义方格10、动作

always@(posedgeclk)

begin

if((k<10)&&(vcount==524)&&(cnt10!=300))

cnt10<=0;

elseif(cnt10==300)

cnt10<=300;

end

//定义方格11、动作

always@(posedgeclk)

begin

if((k<10)&&(vcount==524)&&(cnt11!=380))

cnt11<=80;

elseif(cnt11==380)

cnt11<=380;

end

//定义方格12、动作

always@(posedgeclk)

begin

if((k<10)&&(vcount==524)&&(cnt12!=420))

cnt12<=160;

elseif(cnt12==460)

cnt12<=460;

end

//定义方格13、动作

always@(posedgeclk)

begin

if((k<10)&&(vcount==524)&&(cnt13!=250))

cnt13<=0;

elseif((k>=10)&&(vcount==524)&&(cnt13!=250))

cnt13<=cnt13+1;

elseif(cnt13==250)

cnt13<=250;

end

//定义方格14、动作

always@(posedgeclk)

begin

if((k<10)&&(vcount==524)&&(cnt14!=250))

cnt14<=0;

elseif((k>=10)&&(vcount==524)&&(cnt14!=250))

cnt14<=cnt14+1;

elseif(cnt14==250)

cnt14<=250;

end

//定义方格15、动作

always@(posedgeclk)

begin

if((k<10)&&(vcount==524)&&(cnt15!=250))

cnt15<=0;

elseif((k>=10)&&(vcount==524)&&(cnt15!=250))

cnt15<=cnt15+1;

elseif(cnt15==250)

cnt15<=250;

end

//定义方格16、动作

always@(posedgeclk)

begin

if((k<10)&&(vcount==524)&&(cnt16!=310))

cnt16<=60;

elseif((k>=10)&&(vcount==524)&&(cnt16!=310))

cnt16<=cnt16+1;

elseif(cnt16==310)

cnt16<=310;

end

//定义方格17、动作

always@(posedgeclk)

begin

if((k<10)&&(vcount==524)&&(cnt17!=370))

cnt17<=120;

elseif((k>=10)&&(vcount==524)&&(cnt17!=370))

cnt17<=cnt17+1;

elseif(cnt17==370)

cnt17<=370;

end

//定义方格18、动作

always@(posedgeclk)

begin

if((k<10)&&(vcount==524)&&(cnt18!=220))

cnt18<=0;

elseif((k>=10)&&(vcount==524)&&(cnt18!=220))

cnt18<=cnt18+1;

elseif(cnt18==220)

cnt18<=220;

end

//定义方格19、动作

always@(posedgeclk)

begin

if((k<10)&&(vcount==524)&&(cnt19!=440))

cnt19<=190;

elseif((k>=10)&&(vcount==日暮汉宫传蜡烛是什么节 524)&&(cnt19!=440))

cnt19<=cnt19+1;

elseif(cnt19==440)

cnt19<=440;

end

//定义方格20、动作

always@(posedgeclk)

begin

if((k<10)&&(vcount==524)&&(cnt20!=250))

cnt20<=0;

elseif((k>=10)&&(vcount==524)&&(cnt20!=250))

cnt20<=cnt20+1;

elseif(cnt20==250)

cnt20<=250;

end

//定义方格21、动作

always@(posedgeclk)

begin

if((k<10)&&(vcount==524)&&(cnt21!=290))

cnt21<=40;

elseif((k>=10)&&(vcount==524)&&(cnt21!=290))

cnt21<=cnt21+1;

elseif(cnt21==290)

cnt21<=290;

end

//定义方格22、动作

always@(posedgeclk)

begin

if((k<10)&&(vcount==524)&&(cnt22!=330))

cnt22<=120;

elseif((k>=10)&&(vcount==524)&&(cnt22!=330))

cnt22<=cnt22+1;

elseif(cnt22==330)

cnt22<=330;

end

//定义方格23、动作

always@(posedgeclk)

begin

if((k<10)&&(vcount==524)&&(cnt23!=360))

cnt23<=80;

elseif((k>=10)&&(vcount==524)&&(cnt23!=360))

cnt23<=cnt23+1;

elseif(cnt23==360)

cnt23<=360;

end

四.实验分析

实验开始设置当k<10,就暂留在上方,方格1到13暂留位置不同,同时下落。本

打算14到24先显示,后换背景色,然后再让1到13下落。试了好多次,效果不理

想,后来通过设置下落的指定位置,使得方块组成的汉字可以保持字体固定的下

落在指定的位置上显示方格,视觉效果还算满意,就像是上面一行下降一样。另

外在实验过程中,我们发现k的值不是按照设想的一致增大,当k增到一千,如

果不锁定在1000,消失的方格会重现。用嵌入式逻辑分析仪看到k的值为3e8h,

十进制为1000,证明了一千设定的合理性。

附录:完整程序:

moduleciee(clk,hsync,vsync,red,green,blue,switch);

inputclk;

input[1:0]switch;

outputhsync,vsync;

output[2:0]red;

output[2:0]green;

output[2:0]blue;

regv_video_on;

regh_video_on;

reghsync,vsync;

reg[2:0]red;

reg[2:0]green;

reg[2:0]blue;

reg[9:0]hcount;

reg[9:0]vcount;

reg[8:0]h_dat;

reg[8:0]v_dat;

reg[8:0]bg;

reg[9:0]j;

reg[23:0]cnt1;

reg[23:0]cnt2;

reg[23:0]cnt3;

reg[23:0]cnt4;

reg[23:0]cnt5;

reg[23:0]cnt6;

reg[23:0]cnt7;

reg[23:0]cnt8;

reg[23:0]cnt9;

reg[23:0]cnt10;

reg[23:0]cnt11;

reg[23:0]cnt12;

reg[23:0]cnt13;

reg[23:0]cnt14;

reg[23:0]cnt15;

reg[23:0]cnt16;

reg[23:0]cnt17;

reg[23:0]cnt18;

reg[23:0]cnt19;

reg[23:0]cnt20;

reg[23:0]cnt21;

reg[23:0]cnt22;

reg[23:0]cnt23;

regclk1;

reg[9:0]k;//屏计数器

wireon;

//行计数器处理

always@(posedgeclk)

begin

if(hcount==799)

hcount<=0;

else

hcount<=hcount+1;

end

//场计数器处理

always@(posedgeclk)

begin

if(vcount==524)

vcount<=0;

elseif(hcount==729)

vcount<=vcount+1;

elsevcount<=vcount;

end

//行同步场同步信号处理

always@(posedgeclk)

begin

if((hcount<=759)&&(hcount>=663))

hsync<=0;

elsehsync<=1;

if((vcount<=499)&&(vcount>=49官霸 7))

vsync<=0;

elsevsync<=1;

end

//行有效区

always@(posedgeclk)

begin

if(hcount<639)h_video_on<=1;

elseh_video_on<=0;

end

//场有效区

always@(posedgeclk)

begin

if(vcount<479)v_video_on<=1;

elsev_video_on<=0;

end

//屏计数器设置

always@(posedgeclk)

begin

if(vcount==524)

k<=k+1;

elseif(k>=1000)k=1000;//经多次仿真实验得出1000,逻辑分析仪可看出是3e8h

end

//白头吟古诗 四分频

always@(posedgeclk)

begin//分频1

if(j==2)

begin

j<=8\'h00;

clk1=~clk1;//200k

end

else

begin

j<=j+1;

end

end

//定义变换颜色

always@(posedgeclk1)

if(vcount==524)

bg<=bg+1;

elseif(bg==128)

bg<=0;

elsebg<=bg;

//定义方格1、动作

always@(posedgeclk)

begin

if((k<10)&&(vcount==524)&&(cnt1!=300))

cnt1<=0;

elseif(cnt1==300)

cnt1<=300;

end

//定义方格2、动作

always@(posedgeclk)

begin

if((k<10)&&(vcount==524)&&(cnt2!=300))

cnt2<=0;

elseif(cnt1==300)

cnt2<=300;

end

//定义方格3、动作

always@(posedgeclk)

begin

if((k<10)&&(vcount==524)&&(cnt3!=420))

cnt3<=160;

elseif(cnt3==460)

cnt3<=460;

end

//定义方格4、动作

always@(posedgeclk)

begin

if((k<10)&&(vcount==524)&&(cnt4!=300))

cnt4<=0;

elseif(cnt4==300)

cnt4<=300;

end

//定义方格5、动作

always@(posedgeclk)

begin

if((k<10)&&(vcount==524)&&(cnt5!=300))

cnt5<=0;

elseif(cnt5==300)

cnt5<=300;

end

//定义方格6、动作

always@(posedgeclk)

begin

if((k<10)&&(vcount==524)&&(cnt6!=300))

cnt6<=0;

elseif(cnt6==300)

cnt6<=300;

end

//定义方格7、动作

always@(posedgeclk)

begin

if((k<10)&&(vcount==524)&&(cnt7!=380))

cnt7<=80;

elseif(cnt7==380)

cnt7<=380;

end

//定义方格8、动作

always@(posedgeclk)

begin

if((k<10)&&(vcount==524)&&(cnt8!=420))

cnt8<=160;

elseif(cnt8==460)

cnt8<=460;

end

//定义方格9、动作

always@(posedgeclk)

begin

if((k<10)&&(vcount==524)&&(cnt9!=300))

cnt9<=0;

elseif(cnt9==300)

cnt9<=300;

end

//定义方格10、动作

always@(posedgeclk)

begin

if((k<10)&&(vcount==524)&&(cnt10!=300))

cnt10<=0;

elseif(cnt10==300)

cnt10<=300;

end

//定义方格11、动作

always@(posedgeclk)

begin

if((k<10)&&(vcount==524)&&(cnt11!=380))

cnt11<=80;

elseif(cnt11==380)

cnt11<=380;

end

//定义方格12、动作

always@(posedgeclk)

begin

if((k<10)&&(vcount==524)&&(cnt12!=420))

cnt12<=160;

elseif(cnt12==460)

cnt12<=460;

end

//定义方格13、动作

always@(posedgeclk)

begin

if((k<10)&&(vcount==524)&&(cnt13!=250))

cnt13<=0;

elseif((k含有一对反义词的成语 >=10)&&(vcount==524)&&(cnt13!=250))

cnt13<=cnt13+1;

elseif(cnt13==250)

cnt13<=250;

end

//定义方格14、动作

always@(posedgeclk)

begin

if((k<10)&&(vcount==524)&&(cnt14!=250))

cnt14<=0;

elseif((k>=10)&&(vcount==524)&&(cnt14!=250))

cnt14<=cnt14+1;

elseif(cnt14==250)

cnt14<=250;

end

//定义方格15、动作

always@(posedgeclk)

begin

if((k<10)&&(vcount==524)&&(cnt15!=250))

cnt15<=0;

elseif((k>=10)&&(vcount==524)&&(cnt15!=250))

cnt15<=cnt15+1;

elseif(cnt15==250)

cnt15<=250;

end

//定义方格16、动作

always@(posedgeclk)

begin

if((k<10)&&(vcount==524)&&(cnt16!=310))

cnt16<=60;

elseif((k>=10)&&(vcount==524)&&(cnt16!=310))

cnt16<=cnt16+1;

elseif(cnt16==310)

cnt16<=310;

end

//定义方格17、动作

always@(posedgeclk)

begin

if((k<10)&&(vcount==524)&&(cnt17!=370))

cnt17<=120;

elseif((k>=10)&&(vcount==524)&&(cnt17!=370))

cnt17<=cnt17+1;

elseif(cnt17==370)

cnt17<=370;

end

//定义方格18、动作

always@(posedgeclk)

begin

if((k<10)&&(vcount==524)&&(cnt18!=220))

cnt18<=0;

elseif((k>=10)&&(vcount==524)&&(cnt18!=220))

cnt18<=cnt18+1;

elseif(cnt18==220)

cnt18<=220;

end

//定义方格19、动作

always@(posedgeclk)

begin

if((k<10)&&(vcount==524)&&(cnt19!=440))

cnt19<=190;

elseif((k>=10)&&(vcount==524)&&(cnt19!=440))

cnt19<=cnt19+1;

elseif(cnt19==440)

cnt19<=440;

end

//定义方格20、动作

always@(posedgeclk)

begin

if((k<10)&&(vcount==524)&&(cnt20!=250))

cnt20<=0;

elseif((k>=10)&&(vcount==524)&&(cnt20!=250))

cnt20<=cnt20+1;

elseif(cnt20==250)

cnt20<=250;

end

//定义方格21、动作

always@(posedgeclk)

begin

if((k<10)&&(vcount==524)&&(cnt21!=290))

cnt21<=40;

elseif((k>=10)&&(vcount==524)&&(cnt21!=290))

cnt21<=cnt21+1;

elseif(cnt21==290)

cnt21<=290;

end

//定义方格22、动作

always@(posedgeclk)

begin

if((k<10)&&(vcount==524)&&(cnt22!=330))

cnt22<=120;

elseif((k>=10)&&(vcount==524)&&(cnt22!=330))

cnt22<=cnt22+1;

elseif(cnt22==330)

cnt22<=330;

end

//定义方格23、动作

always@(posedgeclk)

begin

if((k<10)&&(vcount==524)&&(cnt23!=360))

cnt23<=80;

elseif((k>=10)&&(vcount==524)&&(cnt23!=360))

cnt23<=cnt23+1;

elseif(cnt23==360)

cnt23<=360;

end

//显示区

always@(posedgeclk)

begin

if((40

begin

red[2:0]<=0;//绿

green[2:0]<=3\'b101;

blue[2:0]<=0;

end

elseif((80

begin

red[2:0]<=0;//

green[2:0]<=3\'b101;

blue[2:0]<=0;

end

elseif((80

3

begin

red[2:0]<=0;//

green[2:0]<=3\'b101;

blue[2:0]<=0;

end

elseif((220

格4

begin

red[2:0]<=0;//蓝

green[2:0]<=0;

blue[2:0]<=3\'b101;

end

elseif((300

格5

begin

red[2:0]<=3\'b101;//红

green[2:0]<=0;

blue[2:0]<=0;

end

elseif((340

格6

begin

red[2:0]<=3\'b101;//红

green[2:0]<=0;

blue[2:0]<=0;

end

elseif((340

begin

red[2:0]<=3\'b101;//红

green[2:0]<=0;

blue[2:0]<=0;

end

elseif((340

begin

red[2:0]<=3\'b101;//红

green[2:0]<=0;

blue[2:0]<=0;

end

elseif((480

9

begin

red[2:0]<=3\'b101;//红

green[2:0]<=0;

blue[2:0]<=0;

end

elseif((520

方格10

begin

red[2:0]<=3\'b101;//红

green[2:0]<=0;

blue[2:0]<=0;

end

elseif((520

方格11

begin

red[2:0]<=3\'b101;//红

green[2:0]<=0;

blue[2:0]<=0;

end

elseif((520

格12

begin

red[2:0]<=3\'b101;//红

green[2:0]<=0;

blue[2:0]<=0;

end

elseif((60

方格13

begin

red[2:0]<=bg[2:0];

green[2:0]<=bg[5:3];

blue[2:0]<=bg[8:6];

end

elseif((200

方格14

begin

red[2:0]<=bg[2:0];

green[2:0]<=bg[5:3];

blue[2:0]<=bg[8:6];

end

elseif((100

方格15

begin

red[2:0]<=bg[2:0];

green[2:0]<=bg[5:3];

blue[2:0]<=bg[8:6];

end

elseif((100

方格16

begin

red[2:0]<=bg[2:0];

green[2:0]<=bg[5:3];

blue[2:0]<=bg[8:6];

end

elseif((100

方格17

begin

red[2:0]<=bg[2:0];

green[2:0]<=bg[5:3];

blue[2:0]<=bg[8:6];

end

elseif((130

方格18

begin

red[2:0]<=bg[2:0];

green[2:0]<=bg[5:3];

blue[2:0]<=bg[8:6];

end

elseif((130

方格19

begin

red[2:0]<=bg[2:0];

green[2:0]<=bg[5:3];

blue[2:0]<=bg[8:6];

end

elseif((340

方格20

begin

red[2:0]<=bg[2:0];

green[2:0]<=bg[5:3];

blue[2:0]<=bg[8:6];

end

elseif((430

方格21

begin

red[2:0]<=bg[2:0];

green[2:0]<=bg[5:3];

blue[2:0]<=bg[8:6];

end

elseif((400

方格22

begin

red[2:0]<=bg[2:0];

green[2:0]<=bg[5:3];

blue[2:0]<=bg[8:6];

end

elseif((320

方格23

begin

red[2:0]<=bg[2:0];

green[2:0]<=bg[5:3];

blue[2:0]<=bg[8:6];

end

elsebegin

red[2:0]<=0;

green[2:0]<=0;

blue[2:0]<=0;end

end

endmodule

更多推荐

ciee是什么意思e在线翻译读音例句