大学毕业生的英文业生翻译业生英语怎么说-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在线翻译读音例句
发布评论