数字时钟设计--EDA课程设计
EDA
数字时钟设计
姓 名:
学 号:
专 业:电子信息工程
班 级:
指导教师:
2012年 11月 8日
目 录
一、前言?????????????????????????????????????????????????????????2
1.1 EDA简介??????????????????????????????????????????????????2
1.2数字钟简介?????????????????????????????????????????????????2
1.3 Verilog HDL简介????????????????????????????????????????????2
二、题目分析?????????????????????????????????????????????????????2
1.1性能指标及功能设计 ????????????????????????????????????????3
1.2总体方框图?????????????????????????????????????????????????4
1.3 总体RTL电路图????????????????????????????????????????????4 三、各模块分析???????????????????????????????????????????????????5 四、仿真测试????????????????????????????????????????????????????13 4.1时序仿真图???????????????????????????????????????????????????13 4.2功能仿真图???????????????????????????????????????????????????13 五、
心得
信息技术培训心得 下载关于七一讲话心得体会关于国企改革心得体会关于使用希沃白板的心得体会国培计划培训心得体会
体会????????????????????????????????????????????????????14 六、参考文献????????????????????????????????????????????????????14 七、评分表??????????????????????????????????????????????????????15
1
一、前言
1.1 EDA简介
EDA是电子设计自动化(Electronic Design Automation)的缩写,在20世纪90年代初从计算机辅助设计(CAD)、计算机辅助制造(CAM)、计算机辅助测试(CAT)和计算机辅助工程(CAE)的概念发展而来的。EDA技术就是以计算机为工具,设计者在EDA软件平台上,用硬件描述语言HDL完成设计文件,然后由计算机自动地完成逻辑编译、化简、分割、综合、优化、布局、布线和仿真,直至对于特定目标芯片的适配编译、逻辑映射和编程下载等工作。 1.2数字钟简介
数字钟亦称数显钟(数字显示钟),是一种用数字电路技术实现时、分、秒计时的装置,与机械时钟相比,直观性为其主要显著特点,且因非机械驱动,具有更长的使用寿命,相较石英钟的石英机芯驱动,更具准确性。数字钟已成为人们日常生活中必不可少的必需品,广泛用于个人家庭以及车站、码头、剧院、办公室等公共场所,给人们的生活、学习、工作、娱乐带来极大地方便。 相对于其他时钟类型,它的特点可归结为“两强一弱 ”:比机械钟强在观时显著,比石英钟强在走时准确,但是它的弱点为显时较为单调。
1.3 Verilog HDL简介
Verilog HDL是一种硬件描述语言(HDL:Hardware Discription Language),是一种以文本形式来描述数字系统硬件的结构和行为的语言,用它可以表示逻辑电路图、逻辑表达式,还可以表示数字逻辑系统所完成的逻辑功能。 Verilog HDL和VHDL是目前世界上最流行的两种硬件描述语言,都是在20世纪80年代中期开发出来的。前者由Gateway Design Automation公司(该公司于1989年被Cadence公司收购)开发。两种HDL均为IEEE
标准
excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载
。
二、题目分析
用Verilog设计一个多功能的数字钟,具有下述功能:
(1)、计时功能:包括时,分,秒的计时;
(2)、定时与闹钟功能:能在设定的时间发出闹铃声;
(3)、校时功能:对时、分和秒能手动调整以校准时间;
(4)、整点报时功能:每逢整点,产生“滴滴滴滴-嘟”四短一长的报时音。
2
1.1性能指标及功能设计
1)时、分、秒计时器及整点报时功能
时计时器为一个24进制计数器,分、秒计时器均为60进制计数器。当秒计
,此时秒显示器将显示时器接受到一个秒脉冲时,秒计数器开始从1计数到60
00、01、02、...、59、00;每当秒计数器数到00时,就会产生一个脉冲输出送至分计时器,此时分计数器数值在原有基础上加1,其显示器将显示00、01、02、...、59、00;每当分计数器数到00时,就会产生一个脉冲输出送至时计时器,此时时计数器数值在原有基础上加1,其显示器将显示00、01、02、...、23、00。即当数字钟运行到23点59分59秒时,当秒计时器在接受一个秒脉冲,数字钟将自动显示00点00分00秒。
当数字钟运行到整点时,分钟和秒钟会全部显示为0,则会驱动蜂鸣器响产生报警。
2)实现的功能:
?时钟计数:
首先下载程序进行复位清零操作,电子钟从00:00:00计时开始。sethour可以调整时钟的小时部分, setmin可以调整分钟,步进为1。
由于电子钟的最小计时单位是1s,因此提供给系统的内部的时钟频率应该大于1Hz,这里取100Hz。CLK端连接外部10Hz的时钟输入信号clk。对clk进行计数,当clk=10时,秒加1,当秒加到60时,分加1;当分加到60时,时加1;当时加到24时,全部清0,从新计时。
用6位数码管分别显示“时”、“分”、“秒”,通过OUTPUT( 6 DOWNTO 0 )上的信号来点亮指定的LED七段显示数码管。
?时间设置:
手动调节分钟、小时,可以对所设计的时钟任意调时间,这样使数字钟真正具有使用功能。我们可以通过实验板上的键7和键4进行任意的调整,因为我们用的时钟信号均是1HZ的,所以每LED灯变化一次就来一个脉冲,即计数一次。
当开关拨至校时档时,电子钟秒计时工作,通过时、分校时开关分别对时、分进行校对,开关每按1次,与开关对应的时或分计数器加1,当调至需要的时与分时,拨动reset开关,电子钟从设置的时间开始往后计时。 ?清零功能:
reset为复位键,低电平时实现清零功能,高电平时正常计数。可以根据我们自己任意时间的复位。
3
1.2总体方框图
定调调时 时 分
时显示 24进制 控制单元 数 字 LED显示 使能端信号 分显示 60进制 时 钟
CLK信号 秒显示 60进制
整
点
报
时
1.3 总体RTL电路图
4
三、各模块分析
clk50m: 50MHZ时钟输入
mode: 模式选择 0:计时模式 1:设置闹钟模式 mcheck: 手动调整时间
turn: 手动调整时间时,在时丶分之间选择
change: 对选中的数据调整
led_hour1,led_hour0,led_minu1,led_minu0,led_sec1,led_sec0: 时丶分丶秒的led输出 alert: 闹钟输出
ld_alert: 是否设置了闹铃
ld_hour,ld_min,ld_sec:在调整时,指示选择中了时丶分还是秒
3.1 顶层
module
clock(clk50m,mode,turn,change,mreset,led_hour1,led_hour0,led_minu1,led_minu0,led_sec1,led_
sec0,alert,ld_alert,ld_check,ld_hour,ld_min,ld_sec);
input clk50m;
input mode; //接key0键
input turn; //接key1键
input change; //接key2键
input mreset; //switch0复位,低电平有效
output alert; //gpio0->IOA0 output ld_alert; //ledg0-led19 output ld_check; //ledg1-led22 output ld_min; //ledr9-led9 output ld_sec; //ledr7-led7 output[7:0] led_hour1;
output[7:0] led_hour0;
output[7:0] led_minu1;
output[7:0] led_minu0;
output[7:0] led_sec1;
output[7:0] led_SEC0;
reg[1:0]modestate;
//00:计时模式;10:闹钟模式;01:手动调整模式;11:非法模式 wire nowmode; //记录当前模式,0:计时模式;1:设置闹钟模式 wire ischecking; //是否在手动调整时间
assign{nowmode,ischecking}=modestate;
always@(negede mode) //两个按钮都是低电平有效
begin
case(modestate)
2'b00: modestate<=2'b10; //设置闹钟模式优先
2'b10: modestate<=2'b01; //手动调整模式
2'b01: modestate<=2'b00;
default: modestate<=2'b00;
endcase
end
wire reset,clk_1hz;
switch #(8) rmjitter(clk50m,mreset,reset); //reset=1时复位 clk50mto1 gen1hz(clk50m,clk_1hz); //生成1HZ的时钟
5
wier[2:0] selcode; //对turn信号在不同模式下的解码
bitsel seldecoder(nowmode,ischecking,turn,selcode,reset); wire[3:0] clocktime0,clocktime1,clocktime2,clocktime3,clocktime4,clocktime5;
//计时输出的时钟数值
wire clockalarmon; //整点报时的闹钟输出
wire[2:0] counterselcode;
assign counterselcode=(modestate==2’b01)?selcode:3’b000;
counter_time
clock_time(clk_1hz,counterselcode,~change,clocktime5,clocktime4,clocktime3,clocktime2,clockt
ime1,clocktime0,clockalarmon,reset);
wire[3:0] alarmtime0,alarmtime1,alarmtime2,alarmtime3; //闹钟时间
wire alarmon;
alarm_time alarm_time(clk_1hz,nowmode,selcode[2:1],change, {clocktime5,clocktime4,clocktime3,clocktime2,clocktime1}, {alarmtime3,alarmtime2,alarmtime1,alarmtime0},alarmon,reset); wire voiceout;
alarm alarmvoice(clk50m,{clockalarmon,alarmon},voiceout,reset);
//显示输出部分
//调整位显示
assign {1d_hour,1d_min,1d_sec}=(ischecking||nowmode)?selcode:3’b000;
assign alert=voiceout;
reg[3:0] showout2,showout3,showout4,showout5;
led led5(showout5,1’b1,led_hour1);
led led4(showout4,1’b0,led_hour0);
led led3(showout3,1’b1,led_minu1);
led led2(showout2,1’b0,led_minu0);
led led1(clocktime1,1’b1,led_sec1);
led led0(clocktime0,1’b1,led_sec0);
always
begin if(nowmode) //闹钟模式
begin showout5=alarmtime3; showout4=alarmtime2;
showout3=alarmtime1; showout2=alarmtime0; end
else begin
showout5=clocktime5; showout4=alarmtime4;
showout3=alarmtime3; showout2=alarmtine2; end end
assign 1d_alert=nowmode; assign 1d_check=ischecking;\ endmodule
6
3.2 闹钟模块
/*alarm.v: 闹铃模块
clk50m: 50MHz 输入时钟
alarmon: 闹钟是否打开, 2’b00: 不打开; 2’b01: 闹钟;2’b10: 整点报时 alarmout: 闹铃声音输出 */
module alarm(clk50m,alarmon,alarmout,reset); input[1:0] alarmon;input clk50m,reset; output reg alarmout;reg[15:0] counter_1k;wire clk_1k;
assign clk_1k=counter_1k[15];
always@(posedge clk50m)
begin if(counter_1k==50000) counter_1k<=0; else counter_1k<=counter_1k+1’b1; end
wire ddd_du_out,ddd_out;
sound_ddd_du add_du(clk,1k,alarmon[1],add_du_out);
sound_add add(clk_1k,alarmon[0],add_out); always
begin if(!reset)
begin if(alarmon[0]==1’b1) //ddd,闹钟的响铃优先级更高
alarmout=add_out;
else if(alarmon==2’b10) alarmout=add_du_out;
else alarmout=0;
end else alarmout=0;
end
endmodule
3.3闹钟时间设定
/*alarm_time.v:闹钟时间设定模块
enable:使能信号
sel:在时,分之间切换选择 10: 时;01:分
inc:对选中的信号自增
basetime:基准时钟 */
module alarm_time(clk_1hz,enable,sel,inc,basetime,alarmouttime,alarm_on,reset);
input clk_1hz,enable,inc,reset;
input[1:0] sel;input[4*5-1:0] basetime;output reg alarm_on;
output[4*4-1:0] alarmouttime;
reg[3:0] hourl,hour0,minul,minu0; //存储的设定时间
always@(posedge inc or posedge reset) begin if(reset) //reset=1时复位
begin {hour1,hour0,minu1,minu0}<=16’h0;end
else begin
if(enable) begin
if(sel==2’b10) //设置时
begin if({hour1,hour0}==8’h23) {minu1,minu0}<=8’h00;
else if(minu0==9)
begin hour0<=0;hour1<=hour1+1’b1; end
else hour0<=hour0+1’b1;
7
end
else if(sel==2’b01) //设置分
begin if({minu1,minu0}==8’h59) {minu1,minu0}<=8’h00;
else if(minu0==4’h9)
h0;minu1<=minu1+4’h1;end begin minu0<=4’
else minu0<=minu0+4’h1;end
else {hour1,hour0,minu1,minu0}<=16’h0;
end end
end
always //闹钟开始条件
begin
if(({hour1,hour0,minu1,minu0}==basetime[4*5-1:4])&&(basetime[3:0]<2))
alarm_on=1’b1;
else alarm_on=1’b0;end
assign alarmouttime={hour1,hour0minu1,minu0}; endmodule
3.4计时模块
/*counter_time.v:计时模块,并留有调整接口;
check:调整信号,3位,分别调整时,分,秒,调整方法:将计数输出给加法器,把调整信息转换成异步置数信息,将加法器的输出作为置数值;
hour1,hour0,minu1,minu0,sec1,sec0:输出的计时时钟;
alarmout:整点报时输出 */
module counter_time(clk_1hz,check,inc,hour1,hour0,minu1,minu0,sec1,sec0,alarmout,reset);
input clk_1hz,inc,reset;input[2:0] check; output[3:0] hour1,hour0,minu1,minu0,sec1,sec0; output reg alarmout;
reg clk_1hz_md;wire[6:0] carryclk;
reg[5:0] incplus; //自增脉冲
wire[5:0] carry; //进位时钟
wire[3:0] adderout0,adderout1,adderout2,adderout3,adderout4,adderout5;
wire[3:0] timerout0,timerout1,timerout2,timerout3,timerout4,timerout5;
hexcounter counter_sec0(carryclk[0],reset,4’d9,4’b0,timerout0,carry[0]); hexcounter counter_sec1(carryclk[1],reset,4’d5,4’b0,timerout1,carry[1]); hexcounter counter_minu0(carryclk[2],reset,4’d9,4’b0,timerout2,carry[2]); hexcounter counter_minu1(carryclk[3],reset,4’d5,4’b0,timerout3,carry[3]); wire[3:0] hour0max;
assign hour0max=(tinerout5==4’h2)?(4’h3):(4’h9);
hexcounter counter_hour0(carryclk[4],reset,hour0max,4’b0,timerout4,carry[4]); hexcounter counter_hour1(carryclk[5],reset,4’d2,4’b0,timerout5,carry[5]); //每个计时器的时钟,由前级进位和自增脉冲相加得到
assign carryclk[0]=clk_1hz_md|incplus[0]; assign carryclk[1]=carry[0]|incplus[1];
assign carryclk[2]=carry[1]|incplus[2]; assign carryclk[3]=carry[2]|incplus[3]; assign carryclk[4]=carry[3]|incplus[4]; assign carryclk[5]=carry[4]|incplus[5]; always //对异步置位信号进行解码
begin case(check)
8
3’b001:begin clk_1hz_md=0;
incplus={5’b00000,inc};end
3’b010:begin clk_1hz_md=0;
incplus={3’b000,inc,2’b00};end
’b100:begin //在正常的调节状态中 3
clk_1hz_md=0;
incplus={1’b0,inc,4’b000};end
default:begin incplus=6’b000000;
clk_1hz_md=clk_1hz;end
endcase end
always
begin if((timerout3==0)&&(timerout2==0)&&(timerout1<2) alarmout=1;
//时间小于20秒的时间内
else alarmout=0;end
assign hour1=timerout5; assign hour0=timerout4;
assign minu1=timerout3; assign min0=timerout2;
assign sec1=timerout1; assign sec0=timerout0;
endmodule
3.5 时钟分频
/*clk50mtol.v:50mhz 时钟分频到1hz */
module clk50m;to;(clk50m,clk1hz); Input clk50m;output clk1hz;
reg[25:0] counter_1hz;
assign clk1hz=counter_1hz[25];
always@(posedge clk50m)
begin if(counter _1hz==50000000) counter_1hz<=o;
b1;end else counter_1hzcounter_1hz+’
endmodule
3.6 led 译码显示模块
/*led.v: led 译码显示模块,该模块与上字节数字跑表的led模块相同*/ module led(datain,dotin,ledout); parameter INWIDTH=4;
parameter OUTWIDTH=8;
input[INWIDTH-1:0] datain;input dotin; output[OUTWIDTH-1:0] ledout reg[OUTWIDTH-2:0] dataout;wire dotout;
assign ledout[outwidh-1:1]=dataout; assginledout[0]=dotout;
assign dotout=dotin;
alaways begin case(datain);
9
0:dataout,=7’bl000000; 1:dataout,=7’b1111001;
2:dataout,=7’bl000000; 3:dataout,=7’b0110000;
4:dataout,=7’bl000001; 5:dataout,=7’b0010010;
6:dataout,=7’bl000010; 7:dataout,=7’b1111000;
bl000000; 9:dataout,=7’b0010000; 8:dataout,=7’
10:dataout,=7’bl000000; 11:dataout,=7’b000011;
12:dataout,=7’bl000110; 13:dataout,=7’b0200001;
14:dataout,=7’bl000110; 15:dataout,=7’b0001110;
default;dataout<=7'b1000000; endcase end
endmoule
3.7对开关的输入去抖动
/*switch.v:对开关的输入去抖动,该模块与上字节数字跑表中的swtich模块相同*/ module switch(clk,keyin,keyout); parmeter COUNTWIDTH=8;sire clk_use; input clk,keyin;output reg keyout;reg[COUTWIDTH-1:0] counter;
assign clk_use=counter[COUNTWIDTH-1]; alaways@(posedge clk) counter<=counter+1'b1;
always@(posedge clk_use) keyout<=keyin; endmodule
3.8分、秒的选择
/*bitsel.v将输出解码成时,分、秒的选择(并且分闹钟设置模式还是计时模式) alarmmode:是否是在设置闹钟模式
checkmode:是否是在调整时间模式
module bitsel(alarmmode,checkmode,sel,selcode,reset);
input alarmmode,checkmode,sel,reset;output reg[2:0] selcode;
reg[2:0]check_code;reg[1:0] alarm_code; aiways@(negedge sel or posedge reset); begin if(reset) check_code<=3'b000; //reset=1复位
else begin
case(check_code)
3'booo:check_code<=3'b001;
3'boo1:check_code<=3'b010;
3'bo10:check_code<=3'b100;
3'b1oo:check_code<=3'b001;
default:check_code<=3'b000;
endcase
end end
always@(negedge sel or posedge reset)
begin if(reset) alarm_code<=2'b00; //低电平复位
else begin
case(alarm_code)
2'b00: alarm_code<=2'b01;
2'b01: alarm_code<=2'b10;
2'b10: alarm_code<=2'b01;
default:alarm_code<=2'b00;
endcase end
10
end
always
begin if(alarmmode^checkmode) //两个当中只有1个为1
begin if(checkmode) selcode=check_clde;
else selcode={alarm_clde,1'b0};end
else selcode=3'b000;
end
endmodule
3.9加法器
/*adder.v:加法器*/
module adder(in1,in2,out);
parameter inlwidth=8;parameter in2width=8; parameter outwidth=8;
input[inlwidth-1:0] in1; input[in2width-1:0] in2; output[outwidth-1:0] out;
assign out=in1+in2;
endmodule
3.10 16进制记数的一个记数器
/*hexcounter.v:16进制记数的一个记数器*/
module hexcounter(clk,set,max,setdata,dataout,carryout);
input clk,set;input[3:0] max.setdata;output carryout; output[3:0] dataout;reg[3:0] counter;reg carrybit; assign carryout=carrybit; assign dataout=counter; always@(posedge clk or posedge set)
begin if(set) //set是高电平有效
begin couter<=setdata;
carrybit<=0;end
else begin if((counter==max)||(counter>max))
begin counter<=0;carrybit<=1;end
else begin counter<=counter+1'b1;carrybit<=0;end
end end
endmoudule
3.11发出滴滴滴闹铃声模块
/*sound_ddd.v:发出滴滴滴闹铃声模块*/
module sound_ddd(clk_lk,on,out);
parameter SOUNDSPACE=300;
parameter shotstopspace=200; //200ms,两个滴声的时间距离
parameter longstopspace=500; //500ms,连续三个滴后的时间距离、
input clk_1k,on;output reg out;reg sound; always@(posedge clk_lk)
begin sound<=~sound;end
reg[10:0] mscount;
always@(posedge clk_lk)
begin if(mscount==(soundspace*3+shotstopspace*2+longstopspace-1))
mscount<=0; else mscount<=mscount+1'b1; end
11
always@(negedge clk_lk)
begin if(on)
begin if((mscount>=0)&&(mscount
=soundspace)&&(mscount<(soundspace+shotspace)))
out<=0; else
if((mscount>=(soundspace+shotspace))&&(mscount<(soundspace+shotspace)+soundspace))
out<=sound; else
if((mscount>=(soundspace+shotspace)+soundspace)&&(mscount<(soundspace+shotspace)*2))
out<=0; else
if((mscount>=(soundspace+shotstopspace)*2)&&(mscount<((soundspace+shotstopspace)*2+soun
dspace)))
out<=sound; else out<=0;end
else outL<=0;
end
endmodule
3.12 发出声音滴滴滴-嘟声音模块
/*sound_ddd_du.v:发出声音滴滴滴-嘟声音模块*/
module sound_ddd_du(clk_1k,on,out);
parameter SOUNDSPACE=300;
partmeter shotstopspace=200; //200ms,两个嘀声的时间距离
partmeter longSOUNDSPACE=600; //嘟的长度
input clk_1k,on;output reg out;reg sound_di,sound_du;
always@(posedge clk_1k) sound_di<=~sound_di;
always@(posedge sound_di) sound_du<=~sound_du;
reg[11:0] mscount;
always@(posedge clk_1k)
begin if(on) begin
if(mscount<(SOUNDSPACE+shotstopspace)*3+longsoundspace+10)
mscount<=mscount+1’b1; end else mscount<=0;
end
always@(negedge clk_1k)
begin if(on)
begin if((mscount>=0)&&(mscount=SOUNDSPACE)&&(mscount<(SOUNDSPACE+shotstopspace))) out<=0; else
if((mscount>=(SOUNDSPACE+shotstopspace))&&(mscount<( (SOUNDSPACE+shotstopspace)+SOUNDSPACE)) out<=sound_di; else
if((mscount>=(SOUNDSPACE+shotstopspace)+SOUNDSPACE)&&(mscount<(SOUNDSPACE+shotstopspace)*2)) out<=0; else
if((mscount>=(SOUNDSPACE+shotstopspace)*2)&&(mscount<( (SOUNDSPACE+shotstopspace)*2+SOUNDSPACE))) out<=sound_di; else
if((mscount>=(SOUNDSPACE+shotstopspace)*2+SOUNDSPACE)&&(mscount<(SOUNDSPACE+shotstopspace)*3)) out<=0; else
12
if((mscount>=(SOUNDSPACE+shotstopspace)*3&&(mscount<( (soundspace+shotstopspace)*
3+longsoundspace))) out<=sound_du; else out<=0;
end end
endmodule
四、仿真测试
4.1时序仿真图
4.2功能仿真图
13
五、心得体会
一个星期的课程设计让我受益匪浅,也让我真正明白理论与实践相结合的重要性。通过具体实践才能让自己清楚哪些知识已经掌握,哪些知识仍需巩固加强。与此同时,我也对EDA以及Verilog HDL语言有了进一步了解,对于其结构、语法、功能等认识不少。当然,我目前所做的还仅仅只是一些基本操作,要想真正将其融会贯通还需要今后更多的学习与实践。虽然这次只是一个小设计,我却也从中学到了不少设计流程和一些相关问题。设计是一个十分严谨的过程,容不得随意和马虎。要想快速而高效地完成一项设计,必须先有一个清晰明了的设计思路,设想好一个整体框架,然后在此基础上,逐渐将各个部分功能进行完善。
在设计的过程中,也曾遇到不少困难,但正所谓坚持就是胜利,要想取得成功,必须要有努力付出,这样所取得的结果才更有意义。最后感谢我们的任课老师朱志甫老师和指导老师黄河老师对我的指导。
六、参考文献
1. 王金明, 《数字系统设计与Verilog HDL》 ,电子工业出版社。
14
七、评分表
东华理工大学长江学院
课程设计评分表
学生姓名: 班级: 学号:
课程设计题目:EDA数字时钟设计
项目内容 满分 实 评
能结合所学课程知识、有一定的能力训练。符合选题要求 10 选
题 工作量适中,难易度合理 10
能熟练应用所学知识,有一定查阅文献及运用文献资料能力 10 能 理论依据充分,数据准确,公式推导正确 10 力
能应用计算机软件进行编程、资料搜集录入、加工、排版、水 10 制图等 平
能体现创造性思维,或有独特见解 10
总体设计正确、合理,各项技术指标符合要求。 10
说明书
房屋状态说明书下载罗氏说明书下载焊机说明书下载罗氏说明书下载GGD说明书下载
综述简练完整,概念清楚、立论正确、技术用语准确、
结论严谨合理;分析处理科学、条理分明、语言流畅、结构10 成
严谨、版面清晰 果
设计说明书栏目齐全、合理,符号统一、编号齐全。 格式、质 10 绘图、
表格
关于规范使用各类表格的通知入职表格免费下载关于主播时间做一个表格详细英语字母大小写表格下载简历表格模板下载
、插图等
规范
编程规范下载gsp规范下载钢格栅规范下载警徽规范下载建设厅规范下载
准确,符合国家标准 量
有一定篇幅,字符数不少于5000 10
总 分 100 指导教师评语:
指导教师签名:
年 月 日
15