版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第11章综合设计实例,11.1 有限状态机的概念及其设计实例 11.2 RISC中央处理单元(CPU)的顶层设计,11.1 有限状态机的概念及其设计实例 11.1.1 有限状态机的概念 有限状态机是时序电路的通用模型,任何时序电路都可以表示为有限状态机。有限状态机通常可分为两类:Moore型与Mealy型。下一状态只由当前状态决定的有限状态机称为Moore型有限状态机;下一状态不但与当前状态有关,而且与当前输入值有关的有限状态机为Mealy型有限状态机。实际上,Moore型有限状态机可看作Mealy型的特例。 有限状态机从本质上讲是由寄存器与组合逻辑构成的时序电路,各个状态之间的转移总是在时钟
2、的触发下进行的。通常可使用带有always语句的case语句建模,状态信息存储在寄存器中,case语句的多个分支包含每个状态的行为。下面通过一个例子进行说明。,【例11-1】一个说明有限状态机描述的例子。 /Moore型 module sta_machine1(x, clock, current_state, z); parameter 1:0 set0 = 0,hold0 = 1,set1 = 2; input x, clock; output 1:0 current_state; output z; reg 1:0 current_state; reg z; /* 重新声明为寄存器型变量,
3、以便于在always语句中赋值。缺省时,端口是连线型,不能在always语句中赋值*/ reg 1:0 next_state;,always (current_state) begin case (current_state) set0: begin z = 0 ; next_state = hold0; end,hold0: begin z = 0; if (x = 0) next_state = hold0; else next_state = set1; end,set1: begin z = 1; next_state = set0; end endcase end always (p
4、osedge clock) current_state = next_state; endmodule /Mealy型,module sta_machine2(x, clock, current_state, z); parameter 1:0 set0 = 0,hold0 = 1,set1 = 2; input x, clock; output 1:0current_state; output z; reg 1:0 current_state; reg z; /* 重新声明为寄存器型变量,以便于在always语句中赋值。缺省时,端口是连线型,不能在always语句中赋值*/ reg 1:0
5、next_state;,always (x or current_state) begin case (current_state) set0: if(x=1) begin z = 0 ; next_state = hold0; end else z=1;,hold0: if (x = 0) begin next_state = hold0; z=0; end else begin next_state = set1; z=1; end,set1: if(x=1) begin z = 1; next_state = set0; end else z=0; endcase end always
6、(posedge clock) begin current_state = next_state; end endmodule,11.1.2 有限状态机的设计实例 在熟悉有限状态机基本描述方法的基础上,下面给出三个有限状态机的设计实例:饮料销售机、交通灯控制器与闹钟系统控制器。 1. 饮料销售机 这是一个饮料自动售货机的例子,每听饮料的售价为35美分,可以使用的硬币有三种:5美分(nickel)、一角(dime)、25美分(quarter),同时售货机具有找零功能。,【例11-2】饮料销售机的例子。 /功能模块部分 define vend_a_drinkd,dispense,collect=i
7、dle,2b11 module drink_machine(nickel_in,dime_in,quarter_in,collect, nickel_out,dime_out,dispense,reset,clk); parameter idle=0,five=1,ten=2,twenty_five=3, fifteen=4,thirty=5,twenty=6,owe_dime=7; input nickel_in,dime_in,quarter_in,reset,clk; output collect,nickel_out,dime_out,dispense; reg collect,nic
8、kel_out,dime_out,dispense; reg 2:0 d,q;,always (nickel_in or dime_in or quarter_in or reset) begin nickel_out=0; dime_out=0; dispense=0; collect=0; if(!reset) d=idle; else begin d=q;,case(q) idle: if(nickel_in) d=five; else if (dime_in) d=ten; else if(quarter_in) d=twenty_five; five: if(nickel_in) d
9、=ten; else if (dime_in) d=fifteen; else if(quarter_in) d=thirty;,ten: if(nickel_in) d=fifteen; else if (dime_in) d=twenty; else if(quarter_in) vend_a_drink; twenty_five: if(nickel_in) d=thirty;,else if (dime_in) vend_a_drink; else if(quarter_in) begin vend_a_drink; nickel_out=1; dime_out=1; end,fift
10、een: if(nickel_in) d=twenty; else if (dime_in) d=twenty_five; else if(quarter_in) begin vend_a_drink; nickel_out=1; end,thirty: if(nickel_in) vend_a_drink; else if (dime_in) begin vend_a_drink; nickel_out=1; end else if(quarter_in) begin vend_a_drink; nickel_out=1; d=owe_dime; end,twenty: if(nickel_
11、in) d=twenty_five; else if (dime_in) d=thirty; else if(quarter_in) begin vend_a_drink; dime_out=1; end,owe_dime: begin dime_out=1; d=idle; end endcase end end always (posedge clk) begin q=d; end endmodule,/测试模块部分 module stimulus; reg nickel_in,dime_in,quarter_in,reset,clk; wire collect,nickel_out,di
12、me_out,dispense; drink_machine dr1(nickel_in,dime_in,quarter_in,collect,nickel_out, dime_out,dispense,reset,clk); initial begin reset=1; clk=1; nickel_in=0; dime_in=0; quarter_in=0;,#5 reset=0; #5 nickel_in=1; #2 reset=1; #3 nickel_in=0; dime_in=1; #10 dime_in=0; quarter_in=1; #10 nickel_in=1; quart
13、er_in=0; #10 nickel_in=0;,repeat(5) begin #5 nickel_in=1; #5 nickel_in=0; end #5 $finish; end always #5 clk=clk; endmodule 仿真结果如图11.1所示。,图11.1 饮料销售机的仿真结果,在上面的例子中,将三种币值的投币信号(nickel_in、dime_in、quarter_in)作为模块的输入信号,系统的复位能力由输入信号reset控制,并且状态的转换是在输入时钟信号clk的上升沿完成的。为了便于比较,这里给出另外一种基于计数的实现方式,可供读者参考。 module dr
14、ink_machine2(nickel_in,dime_in,quarter_in,collect, nickel_out,dime_out,dispense,reset,clk); input nickel_in, dime_in, quarter_in, reset, clk; output nickel_out, dime_out, collect, dispense; reg nickel_out, dime_out, dispense, collect; reg 3:0 nickel_count, temp_nickel_count; reg temp_return_change,
15、return_change; always ( nickel_in or dime_in or quarter_in or collect or temp_nickel_count or reset or nickel_count or return_change),begin nickel_out = 0; dime_out = 0; dispense = 0; collect = 0; temp_nickel_count = 0; temp_return_change = 0;,/ 检查是否有钱放入 if (! reset) begin temp_nickel_count = nickel
16、_count; if (nickel_in) temp_nickel_count = temp_nickel_count + 1; else if (dime_in) temp_nickel_count = temp_nickel_count + 2; else if (quarter_in) temp_nickel_count = temp_nickel_count + 5;,if (temp_nickel_count = 7) begin temp_nickel_count = temp_nickel_count - 7; dispense = 1; collect = 1; end,if
17、 (return_change | collect) begin if (temp_nickel_count = 2) begin dime_out = 1; temp_nickel_count = temp_nickel_count - 2; temp_return_change = 1; end,if (temp_nickel_count = 1) begin nickel_out = 1; temp_nickel_count = temp_nickel_count - 1; end end end end,always (posedge clk ) begin nickel_count
18、= temp_nickel_count; return_change = temp_return_change; end endmodule,2. 交通灯控制器 本例实现高速公路与乡间小路红绿灯的控制。实现如下要求: (1) 只有在小路上发现汽车时,高速公路上的交通灯才可能变为红灯。 (2) 当有汽车在小路上时,小路的交通灯保持为绿灯,但不能超过给定的延迟时间。 (3) 公路灯转为绿灯后,即使小路上有汽车出现,而公路上并无汽车,也将在给定的时间内保持绿灯。 此交通灯控制器可用一个有限自动机来实现。由上所述,它定义了5种状态,如表11.1所示。 其状态转换图如图11.2所示。,图11.2 交通灯
19、控制器的状态转换图,图11.2中,C表示小路上有车;L表示过了一段长的时间;S表示过了一段短的时间;操作符“,initial begin cur_state=3b111; newHL=3b100; newFL=3b001; newST=0; end,always (car or timeoutL or timeoutS) begin case(cur_state) 3b000: begin newHL=3b100; newFL=3b001; if(car=1) end,else begin next_state=3b000; newST=0; end end,3b100: begin newH
20、L=3b010; newFL=3b001; if(timeoutS=1) begin next_state=3b010; newST=1; newHL=3b001; newFL=3b100; end else begin next_state=3b100; newST=0; end end,3b010: begin newHL=3b001; newFL=3b100; if(car=0) | (timeoutL=1) begin next_state=3b110; newST=1; newHL=3b001; newFL=3b010; end else begin next_state=3b010
21、; newST=0; end end,3b110: begin newHL=3b001; newFL=3b010; if(timeoutS=1) begin next_state=3b000; newST=1; newHL=3b100; newFL=3b001; end else begin next_state=3b110; newST=0; end end,3b111: begin next_state=3b000; newHL=3b100; newFL=3b001; newST=0; end endcase cur_state=next_state; end endmodule,/测试模
22、块部分 module sti_traffic; reg car,timeoutL,timeoutS; wire 3:1 newHL,newFL; wire newST; traffic t1(car,timeoutL,timeoutS,newHL,newFL,newST); initial begin car=0; timeoutL=0; timeoutS=0;,#20 car=1; timeoutL=1; #20 timeoutS=1; timeoutL=0; car=0; #20 car=1; #20 car=0; timeoutS=0; #20 timeoutS=1; #20 timeo
23、utS=0; timeoutL=1; car=1; #10 timeoutL=0; car=0;,#10 timeoutL=1; #10 timeoutS=1; #10 timeoutS=0; timeoutL=0; car=1; #10 timeoutS=1; #10 timeoutS=0; timeoutL=1; #10 timeoutS=1; #10 timeoutS=0; timeoutL=0;,#10 timeoutL=1; #10 timeoutL=0; timeoutS=1; #30 $finish; end endmodule 仿真结果如图11.3所示。,图11.3 交通灯控制
24、器的仿真结果,在上面的例子中,变量cur_state表示当前的状态值,5种状态分别由它的5个值来代表: 值 状态 000 0 100 1 010 2 110 3 111 4 其中状态4被设为初始状态;变量new_state表示下一个状态值,由输入变量car、timeoutL、timeoutS的值来决定,其中变量car表示有无汽车,变量timeoutL表示状态转换图中的L,变量timeoutS表示状态转换图中的S;输出变量newHL代表高速公路灯的状态,输出变量newFL代表乡间小路灯的状态,它们都是三位位长的二进制位串,每一位分别表示绿、黄、红灯的亮、灭状态,如“100”表示路灯为红灯;输出变
25、量NewST为用于启动外部计时器的输出位。,3. 闹钟系统控制器 该例设计一带闹钟功能的24小时计时系统的控制器。计时系统要完成如下功能: (1) 计时功能:每隔一分钟计时一次,并在显示屏上显示当前时间。 (2) 闹钟功能:如果当前时间与设置的闹钟时间相同,则扬声器发出蜂鸣声。 (3) 设置新的计时时间:用户通过数字键“0”“9”输入新的时间,然后按“time”键确认。 (4) 设置新的闹钟时间:用户用数字键“0”“9”输入新的闹钟时间,然后按“alarm”键确认。 (5) 显示所设置的闹钟时间:在正常计时显示状态下,用户直接按下“alarm”键,则已设置的闹钟时间显示在显示屏上。 根据上面所
26、描述的功能,可以得到控制器的外部端口,如图11.4所示。,图11.4 控制器的外部端口,可以通过有限状态机的方式来实现控制器的功能。根据设计要求及端口设置,需要5个状态来实现: hold:表示电路初态即正常计数状态。 receive:接收键盘输入状态。在状态hold时用户按下数字键后进入此状态。在此状态下,显示屏上显示的是用户键入的数字。 set_at:设置新的闹钟时间。在状态receive时用户按下alarm键后进入此状态。 set_ct:设置新的计时时间。在状态receive时用户按下time键后进入此状态。 show_at:显示闹钟时间。在状态hold时用户直接按下alarm键后进入此状
27、态。 相应的状态转换及控制输出如表11.2所示。表中没有显式说明的控制信号赋值,表示信号的值为0。,在表11.2中,状态receive与状态show_at涉及到超时判断的问题:如果没有超时,则一直停留在当前状态;否则,根据条件转到其他状态。具体描述时,可以利用外部时钟信号进行计数。例如,若外部时钟周期为10ms,预定超时时间为200ms,则对时钟计数20次后经过的时间就是超时时间。但何时开始计数,如何得知计数结束即超时,必须引入新的内部信号。这样,整个控制器实际上分为两部分,一部分是有限状态机,另一部分完成计数功能用以超时判断。,基于上面的分析,利用控制器状态转换及控制输出表,可得到如下的控制
28、器的Verilog HDL实现程序。 【例11-4】闹钟系统控制器。 timescale 1ms/1ms /功能模块部分 module alarm_ctr(key,alarm_button,time_button,clk,reset, load_new_a,load_new_c,show_new_time,show_a); parameter hold=3b000,receive=3b001,set_at=3b010, set_ct=3b011,show_at=3b100; parameter key_timeout=20; input key,alarm_button,time_button
29、,clk,reset; output load_new_a,load_new_c,show_new_time,show_a; reg load_new_a,load_new_c,show_new_time,show_a; reg 3:1 cur_state,next_state; reg count_k_end,count_a_end,enable_count_k,enable_count_a;,integer counter_k,counter_a; always (posedge clk or reset) begin if(!reset) cur_state=hold; else cur
30、_state=next_state; end,always (cur_state or key or alarm_button or time_button or count_k_end or count_a_end) begin load_new_a=0; load_new_c=0; show_new_time=0; show_a=0; enable_count_k=0; enable_count_a=0;,case (cur_state) hold: if(key=1) begin next_state=receive; show_new_time=1; end else if(alarm
31、_button=1) begin next_state=show_at; show_a=1; end else next_state=hold;,receive: begin if(key=1) begin next_state=receive; show_new_time=1; end if(alarm_button=1) begin next_state=set_at; load_new_a=1; end,if(time_button=1) begin next_state=set_ct; load_new_c=1; end else if(count_k_end=1) next_stat
32、e=hold; else begin show_new_time=1; next_state=receive; end enable_count_k=1; end,set_at: if(alarm_button=1) begin next_state=set_at; load_new_a=1; end else next_state=hold;,set_ct: if(time_button=1) begin next_state=set_ct; load_new_c=1; end else next_state=hold;,show_at: begin if(alarm_button=1) b
33、egin next_state=show_at; show_a=1; end,else if(count_a_end=1) next_state=hold; else begin show_a=1; next_state=show_at; end enable_count_a=1; end endcase end,always (posedge clk or enable_count_k) if(enable_count_k=0) begin counter_k=0; count_k_end=0; end else if(counter_k=key_timeout) count_k_end=1
34、; else counter_k=counter_k+1;,always (posedge clk or enable_count_a) if(enable_count_a=0) begin counter_a=0; count_a_end=0; end else if(counter_a=key_timeout) count_a_end=1; else counter_a=counter_a+1; endmodule,/测试模块部分 module stimulus; reg key,alarm_button,time_button,clk,reset; wire load_new_a,loa
35、d_new_c,show_new_time,show_a; alarm_ctr alarm1(key,alarm_button,time_button,clk,reset, load_new_a,load_new_c,show_new_time,show_a); initial begin key=0; alarm_button=0; time_button=0; clk=0; reset=1; #5 reset=0; #5 reset=1; #10 key=1;,#10 key=0; alarm_button=1; #20 alarm_button=0; key=1; #10 time_bu
36、tton=1; key=0; #20 time_button=0; alarm_button=1; #150 key=0; #20 reset=0; #10 $finish; end always #5 clk=clk; endmodule 测试结果如图11.5所示。,图11.5 闹钟控制器的仿真结果,11.2 RISC中央处理单元(CPU)的顶层设计 RISC(Reduced Instruction Set Computer)的含义是精简指令集计算机,这意味着计算机的指令集非常简单,所谓指令集简单是与复杂指令集计算机(CISC)相对比而言。RISC很适合于用超大规模集成电路实现,由于指令简单
37、,所以译码复杂度低,同时可以针对各条指令对硬件进行优化,因此指令的执行速度很高,从而弥补了其指令个数少的缺点。本节通过一个经简化只有8条指令的、字长为16位的RISC中央处理单元(CPU)的顶层设计实例来说明用Verilog HDL对复杂电路进行建模的方法。,RISC_CPU本身是一个极其复杂的数字电路,可分成9个基本部件:累加器(accumulator)、RISC算术运算单元(alu)、数据控制器(datactrl)、动态存储器(memory)、指令寄存器(instruction register)、状态控制器(state controller)、程序计数器(programm counter
38、)、地址多路器(addrmux)和时钟发生器(clkgen)等,其基本部件的逻辑比较简单。利用Verilog HDL将基本部件的功能描述清楚,并对各部件的输入、输出逻辑关系进行仿真验证,再利用结构建模的方法将基本部件组合成一个顶层模块,由此就完成了RISC中央处理单元(CPU)的顶层设计。下面各节分别讨论各基本部件的Verilog HDL描述,最后给出顶层设计模块。,11.2.1 累加器用寄存器 累加器用寄存器用于存放当前的结果,它也是双目运算中的一个数据来源,其外部端口如图11.6所示。,图11.6 累计器用寄存器的外部端口,当reset信号有效(低电平有效)时,该寄存器清零。当来自CPU状
39、态控制器的信号load_acc有效时,累加器用寄存器被启动,在clock时钟的上升沿接收数据总线的数据。累加器用寄存器的Verilog HDL实现程序如下: module cpu_register(data_out,clk,reset,en,data_in); output 15:0 data_out; input 15:0 data_in; input clk,reset,en; reg 15:0 data_out; always (posedge clk or reset or en) if(reset) data_out=16b0; else if(en) data_out=data_i
40、n; endmodule,11.2.2 RISC算术运算单元 RISC算术运算单元通过判断输入的不同操作码,来分别完成相应的加、与、异或等8种基本操作。然后通过这几种基本运算来实现多种其他运算以及逻辑判断等操作。RISC算术运算单元的外部端口如图11.7所示。,图11.7 算术逻辑单元的外部端口,RISC算术运算单元的Verilog HDL实现程序如下: timescale 1ns/1ns module cpu_alu(alu_out,zero,opcode,data_in,acc,clk); input 2:0 opcode; input 15:0 data_in,acc; input cl
41、k; output 15:0 alu_out; output zero; reg 15:0 alu_out; parameter z_delay=1.5, alu_delay=4.5;,always (posedge clk) begin case(opcode) 3b000: #alu_delay alu_out=accum; 3b001: #alu_delay alu_out=accum; 3b010: #alu_delay alu_out=data_in+accum; 3b011: #alu_delay alu_out=data_in,default: begin $display(un
42、known opcode); #alu_delay alu_out=16bx; end endcase end assign #z_delay zero=(accum=0)?1:0; endmodule,11.2.3 数据控制器 数据控制器用于控制累加器的数据输出,其外部端口如图11.8所示。数据总线是不同操作时传送数据的共用通道,不同情况下传送的内容不同。例如,当来自状态控制器的fetch信号有效时,数据控制器要传输指令;而当mem_r信号有效时,将累加器的数据写入到RAM区,否则应呈现高阻态,以允许其他部件使用数据总线。,图11.8 数据控制器的外部端口,数据控制器的Verilog HDL
43、实现程序如下: module cpu_datactrl(data_out,alu_out,fetch,mem_r,clk); output 15:0 data_out; reg 15:0 data_out; input 15:0 alu_out; input fetch,mem_r,clk; always (fetch or mem_r or posedge clk) if(!fetch endmodule,11.2.4 指令寄存器 指令寄存器用于存储指令,其外部端口如图11.9所示。当reset信号有效时,指令寄存器被清零;然后在clock的上升沿触发下,将数据总线送来的指令存入到寄存器中去
44、。但并非每个上升沿寄存器都储存来自数据总线的数据,这由来自状态控制器的load_ir信号决定。这是因为数据总线上有时传输指令,有时传输数据。只有当指令寄存器的使能端有效时,才可以进行存储数据操作。,图11.9 指令寄存器的外部端口,指令寄存器的Verilog HDL实现程序如下: module cpu_register(data_out,clk,reset,en,data_in); output 15:0 data_out; input 15:0 data_in; input clk,reset,en; reg 15:0 data_out; always (posedge clk or res
45、et or en) if(!reset) data_out=16b0; else if(en) data_out=data_in; endmodule,11.2.5 状态控制器 状态控制器是CPU的核心部分,它产生一系列的控制信号,用于启动或停止某些部件。例如CPU何时进行指令的读写操作,数据总线传输指令或数据、程序计数器的计数时钟等都是由该控制器来完成的。状态控制器的外部端口如图11.10所示。,图11.10 状态控制器的外部端口,状态控制器的Verilog HDL实现程序如下: module cpu_sctrl(load_acc,mem_r,mem_w,inc_pc,load_pc,loa
46、d_ir, halt,opcode,fetch,zero,clk,clk2,reset); output load_acc,mem_r,mem_w,inc_pc,load_pc,load_ir,halt; reg load_acc,mem_r,mem_w,inc_pc,load_pc,load_ir,halt; input 2:0 opcode; input fetch,zero,clk,clk2,reset; parameter Hlt=3b000,Skz=3b001,Add=3b010,And=3b011, Xor=3b100,Lda=3b101,Sto=3b110,Jmp=3b111;
47、always (posedge fetch) if(reset) ctl_state;,always (negedge reset) begin disable ctl_state; inc_pc,load_acc,load_pc,mem_w,mem_r,load_ir,halt=7b0; end always (posedge reset) (posedge fetch) ctl_state; task ctl_state; begin inc_pc,load_acc,load_pc,mem_w,mem_r,load_ir,halt =7b0000000; (posedge clk),inc
48、_pc,load_acc,load_pc,mem_w,mem_r,load_ir,halt=7b0000100; (negedge clk) inc_pc,load_acc,load_pc,mem_w,mem_r,load_ir,halt=7b0000110; (posedge clk) inc_pc,load_acc,load_pc,mem_w,mem_r,load_ir,halt=7b0000110; (negedge clk) if(opcode=Hlt) inc_pc,load_acc,load_pc,mem_w,mem_r,load_ir,halt=7b1000001; else i
49、nc_pc,load_acc,load_pc,mem_w,mem_r,load_ir,halt=7b1000000; (posedge clk) if(opcode=Add)|(opcode=And)|(opcode=Xor)|(opcode=Lda) inc_pc,load_acc,load_pc,mem_w,mem_r,load_ir,halt=7b0000100;,else inc_pc,load_acc,load_pc,mem_w,mem_r,load_ir,halt=7b0000000; (negedge clk) if(opcode=Jmp) inc_pc,load_acc,loa
50、d_pc,mem_w,mem_r,load_ir,halt=7b0010000; else if(opcode=Skz) else if(opcode=Sto),inc_pc,load_acc,load_pc,mem_w,mem_r,load_ir,halt=7b0001000; else if(opcode=Skz) end endtask endmodule,11.2.6 动态存储器 动态存储器用于存储地址,其外部端口如图11.11所示。,图11.11 动态存储器的外部端口,动态存储器的Verilog HDL实现程序如下: timescale 1ns/100ps module cpu_me
51、m(data_inout,addr,read,write); inout 15:0 data_inout; input 12:0 addr; input read,write; reg 15:0 memory0:h1FFF; wire 15:0 data_inout=read?memoryaddr:16bz; always (posedge write) begin memoryaddr=data_inout; end endmodule,11.2.7 程序计数器 程序计数器用于提供指令地址,以便读取指令,其外部端口如图11.12所示。,图11.12 程序计数器的外部端口,程序计数器的Verilog HDL实现程序如下: module cpu_pcounter(cnt_out,clk,data_in,reset,load); input 12:0 data_in; input clk,reset,load; output 12:0 cnt_out; reg 12:0 cnt_out; always (posedge clk or reset) if(!reset) cnt_out=13b0;,else if(load= =1) cnt_out=data_in; else if(cnt_out= =5b
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年绥中县中小学教师招聘笔试参考试题及答案解析
- 2025年经济学院招聘经济学院院务办公室行政秘书岗位备考题库及答案详解1套
- 2025年鞍山市立山区教师招聘考试参考题库及答案解析
- 2025年黄冈高三历史题库及答案
- 安全测试工程师安全测试规范含答案
- 2025年正阳县中小学教师招聘笔试参考试题及答案解析
- 2025年临安医疗面试真题及答案
- 证券市场基础知识考试题
- 2025年虾峙镇工作人员招聘备考题库及答案详解一套
- 核能工程技术人员职业资格考核含答案
- 2026年湖南电子科技职业学院单招职业技能考试题库及参考答案详解
- 2025秋小学湘科版(新教材)科学三年级上册知识点及期末测试卷及答案
- 2026年税务风险培训
- 2025重庆两江新区公安机关辅警招聘56人备考题库含答案详解(完整版)
- 2026年上海市各区高三语文一模试题汇编之积累运用(学生版)
- 小学科学探究课程教案
- 2025年中小学教育政策与法规考试题及答案
- 三借芭蕉扇课件
- (2025年)养老护理员(初级)职业技能考核试题及答案
- 2026中国人民银行直属事业单位招聘60人笔试备考题库带答案解析
- 湖北省十一校2025-2026学年高三上学期12月质量检测语文试题及答案
评论
0/150
提交评论