组合与时序逻辑电路设计演示文档

上传人:文*** 文档编号:372447 上传时间:2018-07-06 格式:PPT 页数:78 大小:2.27MB
返回 下载 相关 举报
组合与时序逻辑电路设计演示文档_第1页
第1页 / 共78页
组合与时序逻辑电路设计演示文档_第2页
第2页 / 共78页
组合与时序逻辑电路设计演示文档_第3页
第3页 / 共78页
点击查看更多>>
资源描述
201801,.,第4章 组合与时序逻辑电路设计,201801,.,主要内容, 一、基本组合电路设计 二、基本时序电路设计,201801,.,1、组合逻辑电路概念:是由门电路组合而成的具有某种功能的电路,电路中没有记忆单元,没有反馈电路,输入决定输出。,每个输出变量是输入变量的逻辑函数,每个时刻的输出状态仅与当时输入有关,与输入的原状态无关。,一、 基本组合电路设计,201801,.,2、组合逻辑电路设计方法,传统逻辑电路设计方法,Verilog HDL逻辑电路设计方法,只需根据实际的逻辑功能用Verilog HDL语言对其进行描述就可以,然后仿真得到结果,观察是否符合实际逻辑功能。,常用三种描述方法是:结构描述法、数据流和行为描述方法。,传统方法通常采用逻辑电路图输入方式,由底层到高层进行设计。缺点是效率低,设计设计时间长,容易出错。前面章节介绍的各种算数路径电路、数字选择电路等均是典型组合电路例子,下面通过程序输入法设计较复杂组合逻辑电路。,201801,.,简单组合电路设计(可采用结构描述和数据流描述),门级结构描述 module gate1(F,A,B,C,D);input A,B,C,D;output F;wire F1,F2;/ 中间变量可以省略定义nand(F1,A,B); /调用门元件and(F2,B,C,D);or(F,F1,F2);endmodule,数据流描述module gate2(F,A,B,C,D);input A,B,C,D;output F;assign F=(Aendmodule,201801,.,3、典型组合电路设计,多位二进制加法器设计由于位数较多采用结构描述和层次调用相对复杂,所以直接采用行为描述进行设计。,例4.1 8位二进制加法器设计,201801,.,仿真结果,这种描述设计比较抽象但简单,无需了解内部是怎样的逻辑实现方式。,201801,.,BCD编解码器设计,BCD码是一种二进制数字编码形式,利用4位二进制单元存储一位十进制的数码,使得二进制与十进制转换得以快速进行。BCD码有多种编码方式,现采用8421码编码。,如图in0in9代表对应09共10个数字输入端,输入高电平为有效输入,out0out3对应输出的BCD码。,201801,.,BCD编码器真值表,201801,.,由BCD码真值表可得其输入与输出的逻辑关系为:,out0=in8+in9out1=in4+in5+in6+in7out2=in2+in3+in6+in7out3=in1+in3+in5+in7+in9,可以根据上述输入与输出的逻辑关系采用结构描述和数据流描述实现该BCD编码器逻辑电路功能。,201801,.,module BCD_Enc(in,out);input9:0 in;output3:0 out; reg3:0out; always (in) /always过程语句 begin case(in) 10b00_0000_0001:out=0; 10b00_0000_0010:out=1; 10b00_0000_0100:out=2; 10b00_0000_1000:out=3; 10b00_0001_0000:out=4; 10b00_0010_0000:out=5; 10b00_0100_0000:out=6; 10b00_1000_0000:out=7; 10b01_0000_0000:out=8; 10b10_0000_0000:out=9; endcase endendmodule,BCD码编码器程序,例4.2,201801,.,仿真结果如图:,可见输出完全由输入决定,为组合逻辑电路。,下面的译码器设计电路功能正好与编码器相反设计过程,详细设计作业。,201801,.,module bcd_enc(in,out); input9:0in; output3:0out; assign out=func_enc(in); /函数调用 function 3:0 func_enc; /函数定义 input9:0 in; case(in) 10b00_0000_0001:func_enc=0; 10b00_0000_0010:func_enc=1; 10b00_0000_0100:func_enc=2; 10b00_0000_1000:func_enc=3; 10b00_0001_0000:func_enc=4; 10b00_0010_0000:func_enc=5; 10b00_0100_0000:func_enc=6; 10b00_1000_0000:func_enc=7; 10b01_0000_0000:func_enc=8; 10b10_0000_0000:func_enc=9;endcaseendfunctionendmodule,也可以通过以下函数调用方法实现:,例4.3,201801,.,BCD加法器设计,对多位BCD码做加法与减法运算时,当结果对应的BCD值超宽9或低位向前有进位或借位时就要进行+6与-6修正。,【例4.5】 一位BCD码加法器设计程序module add4_bcd(cout,sum,ina,inb,cin);input cin; input3:0 ina,inb;output3:0 sum; reg3:0 sum; output cout; reg cout; reg4:0 temp;always (ina,inb,cin) /always过程语句 begin temp9) cout,sum=temp+6; /两重选择的IF语句 else cout,sum=temp; endendmodule,201801,.,一位BCD码加法器仿真结果,作业:设计一位BCD码减法器。,201801,., 74LS138译码器的Verilog描述,【例4.6】74LS138译码器module ttl74138(a,y,g1,g2a,g2b);input2:0 a; input g1,g2a,g2b; output reg7:0 y;always (*) begin if(g1 endendmodule,201801,.,8线3线优先编码器74LS148的Verilog描述,【例4.7】module ttl74148(din,ei,gs,eo,dout);input7:0 din; input ei; output reg gs,eo; output reg2:0 dout;always (ei,din) begin if(ei) begin dout=3b111;gs=1b1;eo=1b1; endelse if(din=8b111111111) begin dout=3b111;gs=1b1;eo=1b0;endelse if(!din7) begin dout=3b000;gs=1b0;eo=1b1;endelse if(!din6) begin dout=3b001;gs=1b0;eo=1b1;endelse if(!din5) begin dout=3b010;gs=1b0;eo=1b1;endelse if(!din4) begin dout=3b011;gs=1b0;eo=1b1;endelse if(!din3) begin dout=3b100;gs=1b0;eo=1b1;endelse if(!din2) begin dout=3b101;gs=1b0;eo=1b1;endelse if(!din1) begin dout=3b110;gs=1b0;eo=1b1;endelse begin dout=3b111;gs=1b0;eo=1b1;end endendmodule,201801,.,【例4.8】 module parity(even_bit,odd_bit,a);input7:0 a; output even_bit,odd_bit;assign even_bit=a; /是规约运算符,异或 /生成偶校验位assign odd_bit=even_bit; /生成奇校验位endmodule,奇偶校验位生成电路,201801,.,通用奇偶校验发生器,module parity_gen(bout,ain);input7:0 ain; output 8:0 bout;assign temp=ain;assign bout=temp,ain ;endmodule /1的个数为偶首位加0,否则加1,【例4.9】,201801,.,二、 Verilog基本时序电路设计,1、时序电路概述,时序逻辑电路:电路的任意时刻的输出状态不仅取决于该时刻的输入状态,还与电路的原状态有关。所以时序电路都有记忆功能。,时序电路状态的改变只发生在时钟边缘触发的一瞬间,该时刻的输入决定输出,其它时间都是由系统当前状态决定。,201801,.,2、时序电路设计方法,时序电路一般都是采用过程语句进行硬件描述,采用边沿或电平触发进行控制。常见的时序电路有各种触发器、锁存器、寄存器、移位寄存器、分频器和计数器等。下面将对各种时序电路进行Vierlog设计。,基本触发器的Vierlog描述,【例4.10】 一位D触发器的Verilog描述module dff(Q,D,clk);input D,clk; output reg Q;always (posedge clk)begin Q=D;endendmodule,D触发器,201801,.,【例4.11】 JK触发器module jkff_rs(clk,j,k,q);input clk,j,k; output reg q;always (posedge clk)begin case(j,k)2b00:q=q;2b01:q=1b0;2b10:q=1b1;2b11:q=q;default:q=1bx;endcaseendendmodule,JK触发器描述,作业:设计RS和T触发器,并仿真。,201801,.,寄存器和锁存器的Vierlog设计 触发器是时序逻辑电路中最基本的存储单元。由于寄存器和锁存器均由触发器组成,并带有复位或置位等功能。下面介绍的寄存器和锁存器均由D触发器构成。,当D和Q定义多位矢量时,可形成多位寄存器。,寄存器设计,A:一位简单寄存器设计:一个D触发器就是一位寄存器,如例4.10程序描述。,不带复位端口的简单寄存器可以由一个在always语句中被赋值的变量描述,并且该always语句的敏感列表中只包含一个边沿敏感的信号。在描述寄存器的always语句中,应该使用非阻塞赋值(Non-blocking assignment)来给变量赋值,以保证生成正确的寄存器电路,并且在仿真中避免产生竞争(Simulation race)。,201801,.,异步寄存器设计,B:带异步复位和使能的一位寄存器设计:,可见寄存器的复位和使能都不受时钟控制,只要满足条件就可能发生复位的过程为异步控制过程。即各输入控制相对独立。,例4.12 带异步复位和使能的一位寄存器,201801,.,【例4.13】 带异步清0/异步置1(低电平有效)的一位寄存器module dff_asyn(q,qn,d,clk,set,reset);input d,clk,set,reset; output reg q,qn;always (posedge clk , negedge set , negedge reset) beginif(reset) begin q=1b0;qn=1b1; end/异步清0,低电平有效else if(set) begin q=1b1;qn=1b0; end/异步置1,低电平有效else begin q=d;qn=d; end endendmodule,异步寄存器设计,201801,.,带异步复位或置位端口的寄存器可以由一个在always语句中被赋值的变量描述,并且该always语句的敏感列表中包含至少两个边沿敏感的信号,但不包含任何电平敏感的信号。此外,该always语句必须包含一个if条件语句,来指定寄存器的第一个异步赋值行为(如异步复位、置位等等),以及可选的else if嵌套条件语句来指定额外的异步赋值行为。最后一个else语句用于指定同步的寄存器赋值行为。异步赋值语句的输入信号通常连接到寄存器的复位或置位端口,而同步赋值语句的输入信号则连接在寄存器的数据输入端口,即通常所说的D端口。,异步寄存器设计,201801,.,C:带同步复位的一位寄存器设计:,可见复位的发生是由时钟决定的,也就是说无论复位和使能都在时钟统一控制下进行的过程为同步寄存器。,例4.14 带同步复位的一位寄存器,同步寄存器设计,201801,.,【例4.15】 带同步清0/同步置1(低电平有效)的一位寄存器module dff_syn(q,qn,d,clk,set,reset);input d,clk,set,reset; output reg q,qn;always (posedge clk) begin if(reset) begin q=1b0;qn=1b1;end/同步清0,低电平有效else if(set) begin q=1b1;qn=1b0;end/同步置1,低电平有效else begin q=d; qn=d; end endendmodule,同步寄存器设计,201801,.,锁存器设计,在描述锁存器时,always语句中所有赋值表达式等号右边参与赋值的信号必须全部在敏感列表中列出,并且应该使用非阻塞赋值(Non-blocking assignment)来给锁存器变量赋值。该变量在always语句中存在有没有赋值的情况。,A: 一位简单锁存器,注意这里采用触发条件是电平触发(与寄存器采用的边缘触发不同),并且条件语句是不完备的。,201801,.,B: 含清0控制的锁存器及其Verilog表述,201801,.,module sel(CLK,D,Q);input CLK,D;output reg Q;always (CLK or D) if (CLK) Q = D;else Q = 1b0;endmodule,注意触发器与组合逻辑电路区别,都采用过程语句描述,又都是电平触发,区别是触发器不用完备的赋值,而组合电路必须将所有可能的赋值都考虑到。,/ 变量Q不会生成锁存器,而是生产组合逻辑,因为在always语句中,q没有存在不被赋值的情况,即条件判别的所有分支都给Q指定了赋值语句。,201801,.,3、时序电路设计典型应用,移位寄存器设计 由于存放二进制数据、信息的电路称为寄存器。用移位方式存储数据的寄存器,称为移位寄存器。可以在移位脉冲作用下将寄存器内部的二进制数据顺序向左或向右移动,实现数据的串、并行转换和处理等操作。,单向移位寄存器工作原理,是将寄存器的数据在相邻位之间单方向移动过程,分为左移移位寄存器和右移移位寄存器。串行输入数据一般是从低位开始输入。,如下4位移位寄存器,首先初始复位,4个触发器输出均为0,以后每一个CP上升沿到来,将D=1101数据右移一次,4个CP后,串行输入完毕。,201801,.,右移输出例表,在CP脉冲作用下,输入一个脉冲,数据就向右移动一位。输出可以有两种方式:一种是数据从右端Q0依次输出,称为串行输出,这种输出至少需要8个时钟脉冲才能完成输出;另一种是由Q3 、Q2、Q1 、Q0端同时输出,称为并行输出,这种输出只需4个时钟脉冲就可同时输出。所以并行输出比串行输出速度快。,201801,.,双向移位寄存器工作原理,如上图,双向移位寄存器就是数据既可以从Q3输入实现右移操作,相反也可以从Q0输入实现向左操作的过程。,下图为4位双向移位寄存器,通过控制dir实现左移和右移。si为串行输入口,set为置位端,clk为时钟输入端,clr为清零端。,201801,.,可见实现双向控制的逻辑电路是非常复杂,位数越大越复杂,采用传统方式设计就容易出现错误。下面采用Verilog硬件描述方法进行设计。,/移位寄存器shft_regmodule shft_reg(data_out,clk,clr,set,dir,si);output3:0 data_out;input clk,clr,set,dir,si;reg3:0data_out;always (posedge clk)beginif(!clr)data_out=4b0000;else if(!set)data_out=4b1111;else if(dir)data_out=si,data_out3:1;else data_out=data_out2:0,si;Endendmodule,201801,.,上图演示的是si给定0时,dir=0左移操作,si给定1时,dir=1右移操作的过程仿真结果。,通过Verilog语言描述设计的双向移位寄存器比传统设计相对简单,这充分体现硬件描述语言的优势。,201801,.,生成的双向移位寄存器逻辑功能示意图(RTL),201801,.,计数器设计,计数器能够累计输入脉冲个数,包含若干个触发器,并按预定顺序改变各触发器的状态,是一种应用广泛的时序电路,按照各个触发器状态翻转的时间,可分为同步和异步计数器;按照计数过程中的数字的增减规律,可分为加法、减法和可逆计数器;按照计数器循环长度,可分为二进制和N进制计数器。,二进制计数器设计,/异步使能二进制计数器:module count_w(en,clk,reset,out);input clk,reset,en;parameter WIDTH=2; /参数定义outputWIDTH-1:0 out; regWIDTH-1:0 out;always (posedge clk or negedge reset)if(!reset) out=0;else if(en) out=out+1;endmodule,当width=2时,为二位二进制加法计数器。,也称四进制加法计数器,201801,.,module jsq_b(en,clk,reset,out);input clk,reset,en;parameter WIDTH=4; /参数定义outputWIDTH-1:0 out; regWIDTH-1:0 out;always (posedge clk )if(reset) out=0;else if(en) out=out+1;endmodule,当width=4时,为4位同步复位和使能的二进制加法计数器,201801,.,当width为任意N位二进制值时,则可实现N位二进制加法计数器。也可以设为减法计数器。,N=4时的四位加法计数器仿真结果,也可称为16进制加法计数器。,如何实现10进制加法计数器?,右图可见,只有选择00001001这10个状态作为10进制的基本状态,并构成循环。其它状态均是无效状态,如果不加以限制就是普通的二进制加法计数器(或称16进制加法计数器),201801,.,10进制加法计数器电路结构图,201801,.,同步十进制加法计数器,/clr为清零输入端,/C为进位输出端,/为避免进入无效状态,初始清零,可见这种硬件描述设计比直接电路设计相对简单,凸显这种设计的优越性。,201801,.,生成的10进制加法计数器电路RTL,201801,.,二位十进制计数器设计,通常采用多位十进制计数器进行计数,优点是输出便于显示控制。,201801,.,分频器设计,分频器是数字系统设计中的基本电路,也是FPGA设计中频繁使用的基本单元之一,尽管目前在大部分设计中还广泛使用集成锁相环(PLL)来进行时钟的分频、倍频以及相移设计。但是,对于时钟要求不太严格的场合,通过自行设计分频器进行时钟分频的方法仍然非常流行。首先,这种方法可以节省锁相环资源,其次,这种方式只消耗不多的逻辑单元就可以达到对时钟的操作的目的。,分频器就是使得单位时间内的脉冲次数减小的电路,亦即降低脉冲频率。降低1/2倍频率的为二分频器,降低1/4倍频率的为4分频器,以此类推。,偶数倍分频器设计,201801,.,由上图可知每输入一个脉冲,触发器状态翻转一次,每翻转两次,触发器的输出可以得到一个完整的矩形波,即触发器翻转两次所用的前沿脉冲来自原始时钟信号的两个周期波形。所以,一个D触发器实现了2分频电路,两个D触发器可实现4分频器电路,以此增加触发器个数可以得到8、16、32等类型的触发器。,偶数分频器工作原理:,A:简单偶数倍分频器设计:,201801,.,2/4分频器Verilog描述程序:可实现2和4分频功能,module div_2_4(reset,clk_in,clk2_out,clk4_out); input clk_in,reset; output clk2_out,clk4_out; reg clk2_out,clk4_out; always (posedge clk_in) /时钟上升沿触发 begin if(reset)begin /同步复位 clk2_out=0; clk4_out=0; end else begin clk2_out= clk2_out ; if( clk2_out) clk4_out= clk4_out ; end endendmodule,201801,.,2/4分频器仿真结果,如再加入一个触发器可以得到什么分频器结果?可见这种方法只能得到2、4、8、16、32等偶数倍分频器。考虑如何得到其它更多偶数倍分频器设计?如6、10、12、14等分频器。,2T,4T,一般偶数倍分频器可以通过待分频的时钟触发计数器计数,当计数器从0计数到N/2-1时,输出时钟进行翻转并给计数器一个复位信号,以使下一个时钟从零开始计数,以此循环,就可以实现任意的偶数倍分频。,B:一般任意偶数分频器设计:,201801,.,1/6分频参考程序,module div_6(reset,clk_in,clk6_out); input clk_in,reset; output clk6_out; reg clk6_out; parameter WIDTH=2; reg WIDTH:0temp; always (posedge clk_in) begin if(reset)begin clk6_out2) begin clk6_out= clk6_out ; temp=0; end end endendmodule,201801,.,1/6分频仿真结果,想一想?如何得到奇数倍的分频电路设计。,作业:设计1/10分频器,并给出仿真结果。,6T,201801,.,奇数倍分频器设计,当分频器系数N为奇数时,考虑采用双计数器计数,两个计数器同时计数,一个对输入时钟信号的上升沿计数,另一个则对信号的下降沿计数。计数器从0到N-1循环计数,且计数器的计数值小于(N-1)/2时输出1,计数值大于或等于(N-1)/2时输出0。在这样的控制方式下,分频后输出的波形恰好相差1/2时钟周期,将两个波形进行或(OR)操作后,即可得到所要的波形(占空比50%)。,201801,.,三分频器实现原理图,T,3T,采集上升沿,计数小于(N-1)/2置1,否则置0,采集下升沿,计数小于(N-1)/2置1,否则置0,N=3,从0到N-1重复计数,将采集的上升和下降沿进行相“或”运算,得到1/3分频输出。,201801,.,占空比为50%的三分频器Verilog描述程序,module fen3(clkin,qout1,qout2,clkout); input clkin; output reg qout1,qout2; output clkout; wire clkout; assign clkout=qout1|qout2; always (posedge clkin) begin : blk1 reg1:0 cnt; if(clkin=1b1)begin if(cnt1) cnt=0;end end end,always (negedge clkin) begin : blk2 reg1:0 cnt; if(clkin=1b0)begin if(cnt1) cnt=0;end end end endmodule,201801,.,三分频器Verilog仿真结果,3T,201801,.,module fen3(clkin,qout1,qout2,clkout); input clkin; output qout1,qout2; output clkout; reg qout1,qout2; wire clkout; assign clkout=qout1|qout2; always (posedge clkin) begin:blk1 reg 1:0 cnt; if(clkin=1b1)begin if(cnt=2)begin cnt=0; qout1=1b1; end else begin cntcnt+1; qout1=1b0; end endend,always (negedge clkin) begin:blk2 reg 1:0 cnt; if(clkin=1b1)begin if(cnt=2)begin cnt=0; qout2=1b1; end else begin cntcnt+1; qout2=1b0; end endendendmodule,占空比为50%的三分频器Verilog描述参考程序,201801,.,结束,201801,.,【例7.30】 电平敏感的1位数据锁存器module latch1(q,d,le);input d,le; output q;assign q=le?d:q; /le为高电平时,将输入端数据锁存endmodule,201801,.,【例7.31】 带置位/复位端的1位数据锁存器module latch2(q,d,le,set,reset);input d,le,set,reset; output q;assign q=reset?0:(set? 1:(le?d:q);endmodule,201801,.,【例7.32】 8位数据锁存器(74LS373)module ttl373(le,oe,q,d);input le,oe; input7:0 d; output reg7:0 q;always * /或写为always (le,oe,d)begin if(oe endendmodule,201801,.,【例7.33】 数据寄存器module reg_w(dout,din,clk,clr);parameter WIDTH=7;input clk,clr; inputWIDTH:0 din;output regWIDTH:0 dout;always (posedge clk, posedge clr)begin if(clr) dout=0;else dout=din; endendmodule,201801,.,【例7.35】 可变模加法/减法计数器module updown_count(d,clk,clear,load,up_down,qd);input clk,clear,load,up_down;input7:0 d; output7:0 qd; reg7:0 cnt;assign qd=cnt;always (posedge clk)begin if(!clear) cnt=8h00; /同步清0,低电平有效else if(load) cnt=d;/同步预置else if(up_down) cnt=cnt+1;/加法计数else cnt=cnt-1;/减法计数endendmodule,201801,.,7.9 三态逻辑设计,【例7.39】 行为描述的三态门module tristate1(in,en,out);input in,en; output reg out;always (in or en)begin if(en) out=in; else out=1bz; endendmodule,201801,.,【例7.40】 调用门元件bufif1描述的三态门module tristate2(in,en,out);input in,en; output out; tri out;bufif1 b1(out,in,en);/注意三态门端口的排列顺序endmodule,201801,.,【例7.41】 数据流描述的三态门module tristate3(out,in,en);input in,en; output out;assign out=en?in:1bz; /若en=1,out=in;/若en=0,out为高阻态endmodule,201801,.,【例7.42】 三态双向驱动器module bidir(y,a,en,b);input a,en; output b; inout y;assign y=en?a:bz; assign b=y;endmodule,201801,.,【例7.44】 三态双向总线缓冲器module ttl245(a,b,oe,dir);input oe,dir; /使能信号和方向控制inout7:0 a,b; /双向数据线assign a=(oe,dir=2b00)?b:8bz;assign b=(oe,dir=2b01)?a:8bz;endmodule,201801,.,7.10 RAM存储器设计,生成一个新的宏模块,201801,.,设置输出文件的类型、目录和名字,201801,.,定制RAM模块的数据宽度和深度,201801,.,指定RAM模块的初始化数据文件,201801,.,【例7.46】 用文本方式调用RAM存储器模块module ram_dy(addr,clk,din,wr,qout); /端口定义input6:0 addr;input clk; input7:0 din;input wr; output7:0 qout;myram u1(address(addr),.clock(clk),.data(din),.wren(wr),.q(qout);/元件例化endmodule,201801,.,7.11 FIFO缓存器设计,用MegaWizard Plug-in Manager工具定制FIFO模块,201801,.,定制FIFO模块的数据宽度和深度,201801,.,定制FIFO模块的端口,201801,.,设定速度优先还是面积优先,201801,.,FIFO模块的功能仿真波形图(Quartus ),201801,.,习 题 7,7.1 Verilog支持哪几种描述方式,各有什么特点?7.2 分别用结构描述和行为描述方式设计一个基本的D触发器,在此基础上,采用结构描述的方式,用8个D触发器构成一个8位移位寄存器。7.3 分别用结构描述和行为描述方式设计一个JK触发器,并进行综合。7.4 试编写同步模5计数器程序,有进位输出和异步复位端。7.5 编写4位串/并转换程序。7.6 编写4位并/串转换程序。7.7 编写4位除法电路程序。,201801,.,7.8 用Verilog编写一个将带符号二进制数的8位原码转换成8位补码的电路,并基于Quartus 软件进行综合和仿真。7.9 编写一个8路彩灯控制程序,要求彩灯有以下3种演示花型。(1)8路彩灯同时亮灭;(2)从左至右逐个亮(每次只有1路亮);(3)8路彩灯每次4路灯亮,4路灯灭,且亮灭相间,交替亮灭;在演示过程中,只有当一种花型演示完毕才能转向其他演示花型。,习 题 7,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 大学资料


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!