版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
VHDL数字系统设计与测试
VHDL二人乒乓球游戏机设计
学号:
姓名:
一、设计课题的任务要求
两人乒乓球游戏机是以8*8点阵作为场地,中间的6*6共36个点作
为球台,最外围的一圈点作为球拍移动的轨道,并通过数码管显示双方的
局数和比分。双方个通过3个按钮控制球拍的上下移动及发球(场上无球
时)。球接触到球拍后会自动改变方向和速度(在一定范围内)。当球在甲
方的半场移动出球台范围后,乙方得分,然后重新发球。直到达到规定比
分后,比赛结束。
(1)以8*8点阵作为场地,中间的6*6共36个点作为球台,最外
围的一圈点作为球拍移动的轨道,通过两个按键控制球拍的移
动;
(2)球的移动速度:在x,y方向上均为0.2s/点〜0.6s/点(可为0),
会在击球时按一定规则自动改变;
(3)通过按钮移动球拍,球拍不能移出自己的半场(8*4);
(4)球出界后,自动判定得分,球从球场中消失,等待下一次发球;
(5)用数码管显示局数和比分,参考正式比赛规则,采用7局4胜
制:当一方得分超过11分,并超过对方两分时,本局比赛结
束,当一方率先赢得4局时,比赛结束,此时数码管保持最终
比分。
(6)按下复位键,比分清零,双方重新开始比赛;
(7)双方按乒乓球比赛规则获得发球权,没有发球权的一方,发球
开关无效。
二、系统设计
1、设计思路
用x,y两坐标表示8*8点的每个点。分别用一组信号表示球和两球
拍的坐标,以及球的移动速度。以一定周期(0.1s),改变球的坐标,以
达到移动球的目的,用一组信号(xm、ym)记录球经过儿个周期(0.1s)
在想x或y方向上移动一个点,通过改变这两个信号的大小,即可控制球
移动的速度和方向。
球拍的移动由按钮控制,鉴于球拍只在最外圈移动,只需要上下两个
按钮即可。当球拍在y方向上移动到边缘时,会自动转为在x方向上移动。
球拍长度为3个点,只需记录中间点的位置即可。当球与球拍接触时(球
的坐标与球拍中心的坐标在x,y两个方向的差均不大于1),根据球与球
拍中心的相对位置,改变xm、ym,从而将球击回。
当球位于边缘部分时,自动更新比分,并将球的坐标更改为特殊值
(x=0),使球在台面上消失。此时发球按钮生效,按下发球按钮后,会
将球的坐标及球速按一定规则重置,球再次开始移动。当比分符合一定规
则时一,将自动清零,并更新局数,有一方局数为4时,时分频器不再提供
时钟信号。所有功能停止,系统保持在最后状态,直到复位。
系统时钟为50MHz,通过两级分频器分别产生1kHz和10Hz的时钟
信号供各模块使用。数码管和8*8点钟使用1kHz的时钟信号,以扫描方
式输出,其中球拍和球台与球在不同周期交替显示,以简化系统。1kHz
的时钟信号同时用于按键防抖动。10Hz时钟信号用于球的坐标更新以及
出界、击球等状态的判定。
2、总体框图
3、分块设计图
4、流程图
注:图中梯形表示按键输入
5、状态转移图
三、波形仿真及波形分析
1、分频器
本设计中用到1000Hz和10Hz的时钟信号,采用两级分频器,由50MHz
的主时钟信号产生。
分频器L输入50MHz时钟信号,产生1000Hz时钟信号(占空比为调
节,为1/50000)
分频器2:输入1000Hz时钟信号(分频器1产生),产生10Hz时钟信
号(占空比为调节,为1/100)
2、球拍移动
本模块集成了按键防抖动功能。
If为向上移动,ri为向下移动,reset重置;1、2表示两名球员。球
拍(racket)的坐标(rxl,ryl为球拍1的横纵坐标,rx2,ry2为球拍2
的横纵坐标)表示其位置。球拍在8*8场地的最外圈移动,却不会超出各
自半场。Reset键按下时,坐标复位
JJlX010XOilX:.|JX011X010XJJ1
>000X01HXOHOI0IQ1X0”0XWOO
0J011OHOX0111Iiooo*01"xDUO70101x0100f
oiotxonoxoutxloroXoiTi<ouoXoioix018
3、球台显示
根据输入的球坐标(x,y)球拍坐标(racketx,rackety)显示球,球
台和球拍。row,colg和coir为控制矩阵显示的输出,输出为扫描方式。
特别要指出的是,所有坐标的有效范围均不超过为1-8(特别的x为0
不显示球),而球拍只能在8*8矩阵的最外围显示。波形中超出此范围的
赋值不予考虑。
QMaterTimeBar50Q0s«|»|PWter552mInterval547m»EM
A5099TIP-12m«上中-&M.097AS66.718ns69.34UQT4■窣m77甲N」
l«M
区i>,oel.1000_rLrLrLrLrLrLrLrLrLn_rLrLn_rLn_n_rLrLrLrLrLrLrLrLFLrLrLn
_yi国r«dc«txl^TYnTYBnrociTO5nTnYgrxNYRTY^nTOcnnnsrYTiTYiHYEnTiryTgnMYFm5miHMYnnTTOgmsn
3Qr*dcetx2^D(EixgDCgiXEiXMXiiDO(nnxiiiDEnxEgxn5msmTTYisTxgDcgiy^TxgixEiyT§TXKxiigix【mxsiDwnvn
3rkdwtyl二
»15国r»ck«ty275Tj.瓦
T>20SX
*25国y【心X⑸「
少30国C«l(01111"。“oooooooo01111110W66665
杼393c«lroooocooo;而「oooooooooooooooo
0*48国rvtHYiniionXiiiuhnXiiKnimomiCTiSnnmoiininYluinio.XiinnoiXiiiuouXiinoiuYnioiniynoiiniQ5nnrr%niiiu
«ir»
4、数码管输出
数码管采用扫描输出,cat1-6(共阴极)分别对应,球员1的局数
(inningsl),比分的十位、个位(scorell,scorelO),球员2比分的
十位、个位(score21,score20),局数(innings位。app为数码管输出,
cat为共阴极,0电平选通。
5、球移动
由于情况过多,顾不采用枚举法,而通过仿真依次验证其功能。
发球后球在两板的中间点间反弹.,速度逐渐上升(范围0-5,到达5
后不再上升)racketx、y分别为板的横纵坐标,xmo>ymo为两方向上的
移动速度,球的坐标以xmo、ymo为速度,按一定周期改变。
xo、yo为球的横纵坐标。
球从板的边缘反弹后,会改变y方向上的速度,达到最外圈(本例
(x=racketxl+l或racketx2-l,y=racketyl或y2),按乒乓球比赛规则,
发两次球后交换发球权(此时另一方的发球键无效)
开局时,只有playerl有发球权。
此为第三次发球,为player2发球。
16825ns«|»|Parief35.39>Interval36391Start
A
王
A*0▲」0TLn_n_njTrLnjLrLrLnjmnjTrmnjTnjrmrLn_n_nrLnjmn
S囹rack«txlTTT
3回ruk.tx2
1^10国rtdntylM
35Qrtck«ly2ITT
・20r«s«t
・21strvtl
骼
222s«rv«2
外电23国xoXET⑸wI~T3T
“28By。X
砂33国mouT
Br»oToT
4川
6、计分模块
当球在球台最外围(x,y中有至少一个等于1或8)时判断为出界,并自
动更改比分,按乒乓球比赛规则,得分率先超过11分,切高于对方2分
时,赢得一局。如始终无法超出对方2分,则率先得到21分者赢得本局。
赢得四局后比赛结束。系统停止在最后状态(保持比分),知道按下reset
键后方重新运行。scorelKscore21为十位,scorelO>score20为个位,
inningsl>2为局数
取值范围x为0到8,y为1到8o超过这个范围的情况不予考虑。
赢得4局后系统停止,等待reset复位。
图均为作者如此仿真操作后生成。
2、因本设计较为复杂,采用总体仿真难以设计全面的仿真条件(要考虑球在台上的各种反
弹情况),同时也无法直观地观察实验结果以及检查程序中出现的问题(输出为数码管以及
8*8点阵的坐标,并且为扫描输出方式,不以观察),故在各模块仿真正确的情况下,不再进
行整体仿真
四、源程序
-filename:table_tennis
—author:ShenKewei
-time:2011-10-10
libraryieee;
useieee.std_logic_l164.all;
entitytable_tennisis
port(
If1,lf2,ri1,ri2,serve1,serve2:instd_logic;
—1,2:twoplayer;If:moveleft;ri:moveright;hit:hittheball;
reset:instd」ogic;
row:outstd_logic_vector(7downto0);
colg,colr:outstd_logic_vector(0to7);—row,colg,coir:8*8output
cat:outstd_logic_vector(1to6);—digitronchioce
aap:outstd_logic_vector(0to7);—digitron
elk:instd_logic);
endtable_tennis;
architectureaoftable_tennisis
signalcl_1000:std_logic;—1000Hzclock
signalcl_10:std_logic;-10Hzclock
signalx:integerrange0to8;
signaly:integerrange1to8;-x,y:coordinate
signalxm:integerrange0to5;
signalym:integerrange0to5;—xm,ym:thelengthballmoveatonceinthedirection
signalxmd,ymd:integerrange0to1;—thedirectioninwhichtheballmoves
signalscore10,score11:integerrange0to9;
signalscore20,score21:integerrange0to9;-differentdigitalsofbothplayers'scores
signalinningsl,innings2:integerrange0to4;"players*innings
signalracketyl,rackety2:integerrange1to8;
signalracketx1:integerrange1to4;
signalracketx2:integerrange5to8;-rackets'coordinates
signalserve_flag1,serve_flag2:integerrange0to2;-flagoftherighttoserve
signalhit_flag1,hit_flag2:integerrange0to1;—righttohit
constantspeed:integer:=5;
proceduredig(signalnum:inintegerrange0to9;signaloutl:outstd_logic_vector(0to7))is—output
ofdigitaltubes
begin
casenumis
when0=>outl<="11111100n;
when1=>outl<=n01100000n;
when2=>outl〈二"11011010”;
when3=>outl<="11110010";
when4=>outl<=n01100110*1;
when5=>outl<="10110110";
when6=>outl<="00111110";
when7=>outl<="1100000”;
when8=>outl<=n11111110n;
when9=>outl<="11100110";
endcase;
endproceduredig;
begin
pl:process(clk)
—get1000Hzclock
variablecount1:integerrange1to50000;
begin
ifclk'eventandelk=Tthen
ifcount1=50000then
count1:=1;
cl_1000<=,r;
else
countl:=countl+l;
cl_1000<=0';
endif;
endif;
endprocessp1;
P2:process(cl_1000)
—get10Hzclock
variablecount2:integerrange1to100;
begin
ifcl_1000*eventandcl_1000=1'then
ifcount2=100then
cl_10<=T;
count2:=1;
else
cl_10<=O;
count2:=count2+l;
endif;
endif;
endprocessp2;
p3:process(cl_1000)
-8*8output
variablecount3:integerrange1to8;
variablecountf:std_logic;-flagofwhettoshow
begin
ifcl_1000'eventandcl_1000=,l'then
ifcountf='1*then—showthetableandracket
countf:=O;
ifcount3=8then
count3:=l;
else
count3:=count3+l;
endif;
casecount3is-scanning
when1=>row<=nl1111110";
when2=>row<=H111111010;
when3=>row<=M11111011";
when4=>row〈二"11110111”;
when5=>row<="11101111";
when6=>row〈二"11011111”;
when7=>row<=n101111H";
when8=>row<="01111111”;
endcase;
if(count3=lorcount3=8)then-upside/downside
colg<="00000000H;
ifracketyl=count3then
caseracketxlis
when1=>colr(1to3)<="100”;
when2=>colr(1to3)<="110n;
when3=>colr(1to3)<=H11ln;
when4=>colr(1to3)<="01ln;
endcase;
else
colr(lto3)<=H000";
endif;
ifrackety2=count3then
caseracketx2is
when5=>colr(4to6)<=,,110,';
when6=>colr(4to6)<="111”;
when7=>colr(4to6)<="011”;
when8=>colr(4to6)<="001";
endcase;
else
colr(4to6)<=H000n;
endif;
else
colr(lto6)<=n000000M;
colg(0to7)<="011111101^;
endif;
if((racketyl=count3andracketxl<=2)or((rackety1-count3=1orrackety1-count3=-1)and
racketxl=l))then-racketofplayer1
colr(0)<='r;
else
colr(0)<='0';
endif;
if((rackety2=count3andracketx2>=7)or((rackety2-count3=1orrackety2-count3=-1)and
racketx2=8))then—racketofplayer2
coir⑺<=T;
else
coir⑺<='0';
endif;
elsifcountf='0,then—showtheball
countf:=r;
ify/=count3then
colr<="00000000n;
else
casexis
when0=>coir<=n00000000u;
when1=>coir<="10000000u;
when2=>coir<='^01000000,^;
when3=>coir<=H00100000,';
when4=>coir<=H00010000u;
when5=>coir<=,'00001000H;
when6=>coir<=H00000100";
when7=>coir<="00000010n;
when8=>coir<="00000001
endcase;
endif;
endif;
endif;
endprocessp3;
p4:process(cl_10)
—movetheball
-ifballmoveoutofthetable,renewthescoreandinnings
variablecountx,county:integerrange0tospeed;-counters
begin
ifcl_lO'eventandcl_10=rand((inningsl/=4andinnings2/=4)orreset=r)then
ifx/=0then
ifxm/=0then
ifcountx+xm=6then—theballmovesatxm*0.1seconds
casexmdis
when0=>x<=x-l;
when1=>x<=x+l;
endcase;
countx:=0;
else
countx:=countx+l;
endif;
elsecountx:=0;
endif;
ifym/=Othen
ifcounty+ym=6then—theballmovesatym*0.1seconds
caseymdis
when0=>y<=y-1;
when1=>y<=y+l;
endcase;
county:=0;
else
county:=county+1;
endif;
elsecounty:=0;
endif;
endif;
ifx=0andserve1=*Tthen—servetheball
ifserve_flagl/=Othen
x<=racketx1+1;y<=rackety1;—puttheball
hit_flag1<=0;hit_flag2<=1;-giverighttohit
xmd<=1;xm<=1;ym<=0;—resetthespeed
serve_flag1<=serve_flag1-1;
ifserve_flag1=1then
serve_flag2<=2;
endif;
endif;
endif;
ifx=0andserve2=rthen
ifserve_flag2/=0then
x<=racketx2-l;y<=rackety2;
hit_flag1<=1;hit_flag2<=0;
xmd<=0;xm<=1;ym<=0;
serve_flag2<=serve_flag2-l;
ifserve_flag2=lthen
serve_flagl<=2;
endif;
endif;
endif;
-renewthexm,ym
—(hittheball)
ifhit_flagl=landxmd=Othen-plarer1hasrighttohitandballmovetohim
ifrackety1>=2andrackety1<=7andx=2then—ballmovesintotheracket
ifracketyl=ythen
xmd<=l;—ballmovesbackwardsinthedirectionofx
hit_flagl<=O;
hit_flag2<=l;—changetherighttohit
ifxm/=speedthen
xm<=xm+l;—renewthespeed
endif;
ifym/=speedandym/=0then
ym<=ym+1;
endif;
elsifracketyl-y=lthen
xmd<=1;
hit_flagl<=0;
hit_flag2<=l;
ifym=0then
ym<=1;ymd<=0;
else
caseymdis
when1=>ym<=ym-1;
when0=>ifym/=speedthenym<=ym+1;endif;
endcase;
endif;
elsifracketyl-y=-lthen
xmd<=1;
hit_flagl<=0;
hit_flag2<=l;
ifym=0then
ym<=1;ymd<=1;
else
caseymdis
when0=>ym<=ym-l;
when1=>ifym/=speedthenym<=ym+1;endif;
endcase;
endif;
endif;
elsif(racketyl-y=lorracketyl-y=-l)and(rackety1=1orrackety1=8)andym/=0then
ifracketxl-x=-lthen
xmd<=l;
ymd<=l-ymd;
hit_flagl<=O;
hit_flag2<=l;
ifxm/=speedthen
xm<=xm+1;
endif;
ifym/=speedthen
ym<=ym+1;
endif;
elsifracketxl=xthen
xmd<=l;
ymd<=l-ymd;
hit_flagl<=O;
hit_flag2<=l;
xm<=xm-l;
elsifracketx1-x=-2then
xmd<=l;
ymd<=1-ymd;
hit_flagl<=O;
hit_flag2<=1;
ifxm/=speedthen
xm<=xm+l;
endif;
endif;
elsifx=2andracketx1=1and(rackety1=1andy=2)andym=0then
xmd<=l;
ymd<=1;
hit_flagl<=O;
hit_flag2<=1;
ym<=l;
elsifx=2andracketx1=1and(y=7andrackety1=8)andym=0then
xmd<=1;
ymd<=0;
hit_flagl<=0;
hit_flag2<=l;
ym<=l;
endif;
endif;
ifhit_flag2=landxmd=lthen-plarer2hasrighttohitandballmovetohim
ifrackety2>=2andrackety2<=7andx=7then
ifrackety2=ythen
xmd<=0;
hit_flagl<=l;
hit_fiag2<=0;
ifxm/=speedthen
xm<=xm+l;
endif;
ifym/=speedandym/=0then
ym<=ym+l;
endif;
elsifrackety2-y=1then
xmd<=0;
hit_flagl<=l;
hit_flag2<=0;
ifym=0then
ym<=1;ymd<=0;
else
caseymdis
when1=>ym<=ym-1;
when0=>ifym/=speedthenym<=ym+1;endif;
endcase;
endif;
elsifrackety2-y=-1then
xmd<=0;
hit_flagl<=l;
hit_flag2<=0;
ifym=0then
ym<=1;ymd<=1;
else
caseymdis
when0=>ym<=ym-l;
when1=>ifym/=speedthenym<=ym+1;endif;
endcase;
endif;
endif;
elsif(rackety2-y=lorrackety2-y=-1)and(rackety2=1orrackety2=8)andym/=0then
ifracketx2-x=1then
xmd<=0;
ymd<=l-ymd;
hit_flagl<=l;
hit_flag2<=0;
ifxm/=speedthen
xm<=xm+l;
endif;
ifym/=speedthen
ym<=ym+l;
endif;
elsifracketx2-x=2then
xmd<=0;
ymd<=l-ymd;
hit_flagl<=l;
hit_flag2<=0;
ifxm/=speedthen
xm<=xm+l;
endif;
elsifracketx2=xthen
xmd<=0;
ymd<=l-ymd;
hit_flagl<=l;
hit_flag2<=0;
xm<=xm-l;
endif;
elsifx=7andracketx2=8and(rackety2=1andy=2)andym=0then
xmd<=0;
ymd<=1;
hit_flagl<=l;
hit_flag2<=0;
ym<=1;
elsifx=7andracketx2=8and(y=7andrackety2=8)andym=0then
xmd<=0;
ymd<=0;
hit_flagl<=l;
hit_flag2<=0;
ym<=l;
endif;
endif;
ifx=lthen-outofthetable
x<=0;--themarkoftime-out
ifscore20=9then
score21<=score21+1;
score20<=0;
else
score20<=score20+1;
endif;
elsifx=8then
x<=0;
ifscore10=9then
score11<=score11+1;
score10<=0;
else
score10<=score10+1;
endif;
elsif(y=lory=8)andx/=0then
x<=0;
ifx<=4then
ifscore20=9then
score21<=score21+1;
score20<=0;
else
score20<=score20+1;
endif;
else
ifscore10=9then
score11<=score11+1;
score10<=0;
else
score10<=score10+1;
endif;
endif;
endif;
ifscore11=2or(scorell=landscore10=1andscore21=0)or(score11=1andscore21=land
score10-score20=2)then—getoneinning
ifinnings1+innings2=0orinnings1+innings2=2orinningsI+innings2=4orinnings1+innings2=6
then-resettherighttoserve
serve_flag2<=2;
serve_flagl<=0;
else
serve_flagl<=2;
serve_flag2<=0;
endif;
innings1<=innings1+1;
score11<=0;
score10<=0;
score21<=0;
score20<=0;
elsifscore21=2or(score21=landscore20=landscore11=0)or(score11=1andscore21=land
score20-score10=2)then
ifinnings1+innings2=0orinnings1+innings2=2orinnings1+innings2=4orinnings1+innings2=6
then
serve_flag2<=2;
serve_flagl<=0;
else
serve_flagl<=2;
serve_flag2<=0;
endif;
innings2<=innings2+1;
score11<=0;
score10<=0;
score21<=0;
score20<=0;
endif;
ifreset=*rthen-reset
score11<=0;
score10<=0;
score21<=0;
score20<=0;
inningsl<=0;
innings2<=0;
x<=0;
serve_flagl<=2;
serve_flag2<=0;
endif;
endif;
endprocessp4;
p5:process(cl_1000)
-movetherackets
variablectu_l,ctul,ctu_2,ctu2,ctd_l,ctdl,ctd_2,ctd2:integerrange0to1000;—counteragainstthe
jitter
begin
ifcLIOOO'eventandcl_1000=,rthen
ifthen-againstthejitter
ifctu1=1000then
ctul:=0;
else
ctul:=ctul+l;
endif;
elsifctu1>50then
ifctu_l=1000then
ctu_l:=0;
else
ctu_l:=ctu_l+l;
endif;
else
ctul:=0;
ctu_l:=0;
endif;
ifctu1>50andctu_l>50then-deicdetheinputofbutton
ifrackety1/=8andracketx1=1then—movetheracket
rackety1<=rackety1+1;
elsifrackety1=8andracketxl/=4then
racketx1<=racketx1+1;
elsifrackety1=1then
racketx1<=racketx1-1;
endif;
ctul:=0;
ctu_l:=0;
endif;
iflf2='lrthen
ifctu2=1000then
ctu2:=0;
else
ctu2:=ctu2+l;
endif;
elsifctu2>50then
ifctu_2=1000then
ctu_2:=0;
else
ctu_2:=ctu_2+l;
endif;
else
ctu2:=0;
ctu_2:=0;
endif;
ifctu2>50andctu_2>50then
ifrackety2/=8andracketx2=8then
rackety2<=rackety2+1;
elsifracketx2/=5andrackety2=8then
racketx2<=racketx2-1;
elsifrackety2=1then
racketx2<=racketx2+1;
endif;
ctu2:=0;
ctu_2:=0;
endif;
ifril='rthen
ifctd1=1000then
ctdl:=0;
else
ctdl:=ctdl+l;
endif;
elsifctd1>50then
ifctd_l=1000then
ctd_l:=0;
else
ctd_l:=ctd_l+l;
endif;
else
ctdl:=0;
ctd_l:=0;
endif;
ifctdl>50andctd_l>50then
ifrackety1/=1andracketxl=lthen
rackety1<=rackety1-1;
elsifrackety1=1andracketxl/=4then
racketx1<=racketx1+1;
elsifrackety1=8then
racketx1<=racketx1-1;
endif;
ctdl:=O;
ctd_l:=O;
endif;
ifri2=Tthen
ifctd2=1000then
ctd2:=0;
else
ctd2:=ctd2+l;
endif;
elsifctd2>50then
ifctd_2=1000then
ctd_2:=0;
else
ctd_2:=ctd_2+l;
endif;
else
ctd2:=0;
ctd_2:=0;
endif;
ifctd2>50andctd_2>50then
ifrackety2/=landracketx2=8then
rackety2<=rackety2-1;
elsifrackety2=landracketx2/=5then
racketx2<=racketx2-1;
elsifrackety2=8then
racketx2<=racketx2+1;
endif;
ctd2:=0;
ctd_2:=0;
endif;
ifreset=Tthen
racketx1<=1;
racketx2<=8;
rackety1<=4;
rackety2<=5;
endif;
endif;
endprocessp5;
p6:process(cl_1000)
-digitron
variablecount?:integerrange1to6;
begin
ifcl_1000'eventandcl_1000=*rthen
ifcount7=6then-scanning
count7:=1;
else
count7:=count7+1;
endif;
casecount?is
when1=>cat<=ul11110";dig(inningsl,aap);—output
when2=>cat<='*111
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《平移、旋转和轴对称》(教学实录)-2023-2024学年四年级下册数学苏教版
- 企业并购中的财务审计计划
- 2024年个人住宅装修施工合同5篇
- 15《搭船的鸟》教学实录2024-2025学年统编版语文三年级上册
- 2024年度重庆驾驶员劳动安全与健康管理合同3篇
- 2024版建筑用材料运输及仓储服务合同示范3篇
- 2024学年九年级英语上册 Unit 6 Movies and Theater Lesson 36 Making Plays Is Fun教学实录(新版)冀教版
- 2024年度上海航空公司机票代理协议3篇
- 2024年度石膏板行业培训与合作合同3篇
- 无锡个人门面房买卖合同
- 愚公移山英文 -中国故事英文版课件
- 国开经济学(本)1-14章练习试题及答案
- 实验室内审员资格测验题及答案
- 工程量清单项目编码完整版
- 高三数学考试情况分析及复习建议
- 光学设计与光学工艺
- 项目工程质量管理体系
- 家长进课堂(课堂PPT)
- 定喘神奇丹_辨证录卷四_方剂树
- 货物运输通知单
- 部编版一年级上册形近字组词(共3页)
评论
0/150
提交评论