本科电子信息工程专业《可编程逻辑器件与硬件设计》课程单元教学设计_第1页
本科电子信息工程专业《可编程逻辑器件与硬件设计》课程单元教学设计_第2页
本科电子信息工程专业《可编程逻辑器件与硬件设计》课程单元教学设计_第3页
本科电子信息工程专业《可编程逻辑器件与硬件设计》课程单元教学设计_第4页
本科电子信息工程专业《可编程逻辑器件与硬件设计》课程单元教学设计_第5页
已阅读5页,还剩16页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

本科电子信息工程专业《可编程逻辑器件与硬件设计》课程单元教学设计

单元三:硬件描述语言(HDL)的硬件建模与逻辑综合实践——从代码到门级网表

一、课程单元基本信息

1.所属学科门类与专业:工学;电子信息工程。

2.适用年级/学段:大学本科三年级(第六学期)。

3.课程名称:可编程逻辑器件与硬件设计。

4.本单元主题:硬件描述语言(HDL)的硬件建模与逻辑综合实践——从代码到门级网表。

5.课时安排:总计8学时(理论精讲2学时,项目实践4学时,综合研讨与评价2学时)。

6.前序知识:数字逻辑电路(组合与时序逻辑)、计算机组成原理基础、C语言编程。

7.后续衔接:FPGA原型验证、片上系统(SoC)设计、数字信号处理(DSP)硬件实现。

二、单元教学设计理念与思路

本单元教学设计立足于新工科工程教育认证的OBE(Outcome-BasedEducation)理念,以“解决复杂工程问题能力”的培养为核心目标。针对传统教学中存在的“重语法、轻思维;重仿真、轻综合;重实验箱、轻流程”的痛点,本设计进行了彻底的革新。

核心理念:

1.硬件思维先导:强调HDL是“硬件描述”语言而非“硬件编程”语言,教学全程贯穿并行性、时序性、资源有限性等硬件核心思维,与软件串行思维形成鲜明对比与深度融合。

2.工业流程贯通:将工业界主流的RTL设计、逻辑综合、静态时序分析(STA)流程无缝嵌入教学,使学生体验从抽象行为描述到具体物理实现的完整链条,理解工具链(Vivado/Quartus)在其中的角色与约束。

3.跨学科知识耦合:有机融合计算机体系结构(数据通路与控制单元)、半导体物理(逻辑单元结构)、电子设计自动化(EDA)算法等知识,构建从系统行为到晶体管级实现的多层级、跨学科认知图谱。

4.复杂问题分解:通过一个精心设计的、具备适度复杂度和可扩展性的“多模式可配置数字信号处理单元”项目,引导学生运用自顶向下(Top-Down)的设计方法与模块化、层次化的设计思想,将复杂系统分解为可管理、可实现的子模块。

设计思路:采用“双轮驱动、四阶递进”的教学模式。以“工业级设计流程”和“硬件描述语言核心语义”为两大驱动轮,引领教学全程。教学过程分为四个递进阶段:情境锚定与问题定义->核心概念精讲与工具赋能->项目迭代实施与综合优化->反思迁移与能力拓展。通过理论精讲、工具实操、项目实践、同行评议(PeerReview)与批判性反思的多元组合,确保知识、能力与素养三维目标的达成。

三、学习目标

(一)知识与技能目标

1.能够准确阐释硬件描述语言(以SystemVerilog为主,对比VHDL)在数字系统设计中的核心地位,区分其行为级、RTL级和门级描述风格及其应用场景。

2.能够熟练运用SystemVerilog的关键语法要素(如模块定义、数据类型logic

、wire

、reg

,操作符,always_comb

、always_ff

、always_latch

过程块,package

,interface

等),完成中等复杂度组合与时序逻辑电路的RTL建模。

3.能够深入理解并阐释逻辑综合(LogicSynthesis)的本质:将RTL代码转换为工艺库(TechnologyLibrary)相关的门级网表(Gate-LevelNetlist)的过程。掌握综合工具的基本约束方法(如时钟定义、输入输出延迟、伪路径等)。

4.能够独立操作业界主流EDA工具(如Vivado或QuartusPrime),完成一个包含多个功能子模块的数字系统的创建、RTL编码、约束文件(XDC或SDC)编写、综合、综合后仿真及基本时序分析。

5.能够根据综合报告(资源利用率、时序违例等),对RTL代码进行初步优化,理解代码风格(CodingStyle)对综合结果(面积、时序、功耗)的直接影响。

(二)过程与方法目标

1.通过完成“多模式可配置数字信号处理单元”项目,掌握自顶向下的数字系统设计方法学,包括系统规格分解、模块接口定义、独立功能验证、系统集成与调试。

2.体验完整的“RTL设计->功能仿真->逻辑综合->时序验证”工业级前端设计流程,形成规范化的工程实践习惯。

3.学会利用版本控制工具(如Git)管理数字设计项目代码,撰写清晰的设计文档(DesignSpecification)和测试报告(TestReport)。

4.在小组研讨中,发展对比分析、批判性评价设计方案(如状态机编码方式选择、流水线设计权衡)的能力。

(三)情感、态度与价值观目标

1.培养严谨、精确的工程素养,深刻理解硬件设计中“差之毫厘,谬以千里”的特性,养成对每一行代码负责的态度。

2.激发对底层硬件实现的好奇心与探索欲,体会从抽象代码到具体硬件电路实现的创造乐趣与成就感。

3.树立工具为设计服务的正确观念,理解自动化工具的强大与局限,培养在工具辅助下进行创造性设计与问题解决的能力。

4.通过团队协作与方案研讨,培养开放、协作、分享的工程师精神,尊重知识产权,遵循工业界的道德与规范。

四、教学重点与难点

(一)教学重点

1.硬件描述语言的核心语义与硬件映射关系:重点讲解always_ff

块如何映射为触发器(Flip-Flop),always_comb

块如何映射为组合逻辑,阻塞赋值(=

)与非阻塞赋值(<=

)在仿真与综合中的根本区别及其对电路结构的影响。

2.可综合RTL代码的编写规范:明确可被综合工具正确理解的代码子集(SynthesizableSubset),强调避免使用不可综合的语句(如#

延时、initial

块用于初始化寄存器需转化为复位逻辑),建立良好的代码风格。

3.逻辑综合的原理与流程:重点讲解综合过程的三个阶段——转换(Translation)、优化(Optimization)、映射(Mapping),以及工艺库在其中的作用。使学生理解约束文件是指导综合工具实现设计意图的关键。

4.基于工具链的完整设计流程实践:将Vivado/Quartus的项目管理、约束编辑、综合实现、报告分析作为一个连贯的整体进行教学,而非孤立的功能点。

(二)教学难点

1.并行思维与顺序思维的转换:学生长期受软件编程训练,极易将HDL的“描述”误解为“执行”,难以建立所有并行语句在物理上同时存在的概念。突破点在于通过大量的RTL代码与综合后生成的电路原理图(Schematic)的直接对比可视化。

2.时序逻辑的建立/保持时间(Setup/HoldTime)概念及其在设计中的体现:这是连接RTL设计与物理实现的关键桥梁,抽象且至关重要。难点在于让学生理解时钟、数据路径延迟与寄存器时序参数之间的关系,并初步理解如何通过约束和设计来满足时序要求。

3.层次化设计与模块间接口的精准定义:学生习惯编写单一文件,对于如何合理地划分模块、设计清晰高效的接口(包括数据、控制和时钟复位信号)缺乏经验。需要通过具体的项目拆解实例和接口模板来引导。

4.综合优化策略的初步理解:理解面积(Area)与速度(Speed)的权衡,初步了解资源共享(ResourceSharing)、流水线(Pipelining)、寄存器配平(RegisterBalancing)等高级综合优化概念及其在代码层面的暗示。

五、教学资源与环境

1.硬件环境:

1.2.多媒体教学机房,配备高性能PC(支持运行大型EDA软件)。

2.3.每位学生配备一块基础型FPGA开发板(如XilinxArtix-7系列或IntelCycloneIV系列),用于最终的综合实现与板级验证(本单元侧重于综合,板级验证为延伸)。

4.软件环境:

1.5.统一安装XilinxVivadoHLxDesignSuite(或IntelQuartusPrimeProEdition)作为主设计平台。

2.6.安装ModelSim或Vivado自带的仿真器用于功能验证。

3.7.安装GitforWindows/Linux,用于版本控制。

4.8.部署在线协作平台(如GitLab/Gitee课堂版),用于代码提交、文档管理和同行评议。

9.教学材料:

1.10.自编《硬件描述语言与逻辑综合实践指南》讲义,包含核心概念、代码范例、工具操作步骤和项目任务书。

2.11.工业界主流的工艺库文件(如Xilinxunisim库)简要说明文档。

3.12.精选的SystemVerilogIEEE标准文档节选、经典论文(如关于综合算法简介)作为拓展阅读材料。

4.13.“多模式可配置数字信号处理单元”项目的顶层设计框图、接口协议文档(APB/AXI-Lite简化版)及测试向量集。

六、教学实施过程(详案)

第一讲:破冰与锚定——从系统需求到HDL抽象(2学时)

阶段一:情境导入与认知冲突(30分钟)

1.现实问题锚定:展示一个现代通信设备(如5G小基站)或消费电子产品(如手机图像处理芯片)的内部板卡图片,引出其核心处理单元通常由“CPU+FPGA+ASIC”构成。提出问题:“如何设计这颗FPGA或ASIC内部的数字电路?难道要手工绘制数以亿计的门电路吗?”

2.历史脉络梳理:简述数字设计方法的演进:原理图输入->硬件描述语言(HDL)->高层次综合(HLS)。通过对比一张复杂的原理图(如一个32位加法器)和其等效的几行HDL代码,直观展示HDL在抽象层次和设计效率上的革命性提升。强调HDL是连接人类设计思想与硅片实现的“桥梁语言”。

3.提出核心挑战:给出“多模式可配置数字信号处理单元”的简化版需求文档:实现一个支持并行/串行输入、可配置系数的8位FIR滤波器,并可通过控制接口选择工作模式。引导学生思考:如何用形式化的、机器可读(可综合)的语言来描述这一硬件系统?

4.揭示本单元终极任务:正式发布“多模式可配置数字信号处理单元”项目任务书,明确最终交付物为:可综合的SystemVerilogRTL代码、综合约束文件、综合后网表及分析报告。将宏观任务分解为本单元各阶段子任务。

阶段二:HDL本质精讲——描述而非编程(50分钟)

1.核心概念辨析:“描述”vs“编程”。使用类比:软件编程是给一个现成的通用处理器(CPU)下达指令序列;硬件描述是定义一个处理器的结构(有哪些部件,如何连接)。播放一段简短的动画,展示同一段描述加法操作的HDL代码,在仿真时表现为随时间变化的波形,在综合后则对应一个由门电路构成的固定硬件结构。强调硬件是并行的、永存的。

2.SystemVerilog初探:简要介绍SystemVerilog作为SystemVerilog的超集,在RTL设计方面的增强特性(如logic

类型、增强的always

块、package

、interface

),明确本课程采用其可综合子集进行教学。对比介绍VHDL,说明其强类型、高严谨性的特点及其在航空航天等安全关键领域的应用,拓宽学生视野。

3.第一个可综合模块解剖:从一个最简单的D触发器模块开始。

systemverilog

moduled_flip_flop(

inputlogicclk,//时钟信号

inputlogicrst_n,//低有效异步复位

inputlogic[7:0]d,//数据输入

outputlogic[7:0]q//数据输出

);

always_ff@(posedgeclkornegedgerst_n)begin

if(!rst_n)begin

q<='0;//复位时输出清零

endelsebegin

q<=d;//时钟上升沿锁存数据

end

end

endmodule

1.4.逐行讲解:模块声明、端口列表与方向、logic

数据类型。

2.5.重点攻坚:always_ff

过程块。解释其敏感列表(posedgeclkornegedgerst_n

)如何精确地定义了硬件行为:仅在时钟上升沿或复位下降沿时,块内逻辑才被“评估”。强调这与软件中的“事件监听”有本质不同,它定义了一个硬件触发条件。

3.6.核心难点突破:非阻塞赋值<=

。使用两个串联的D触发器示例,对比阻塞赋值(=

)与非阻塞赋值(<=

)在仿真结果和综合电路上的天壤之别。通过仿真波形图和综合出的电路图,直观展示非阻塞赋值如何模拟寄存器间数据传输的物理并行性,从而得到正确的移位寄存器电路。这是建立硬件思维的第一道关键门槛。

7.层次化设计思想萌芽:展示“多模式可配置数字信号处理单元”的顶层模块框图,将其分解为“控制路径”(ControlPath)和“数据路径”(DataPath)。数据路径进一步分解为“数据接口模块”、“FIR计算核心”、“结果输出模块”。控制路径分解为“配置寄存器组”和“有限状态机(FSM)”。让学生初步感受模块化、接口化的设计思想。

阶段三:任务布置与工具初识(10分钟)

1.课后实践任务一:在EDA工具(Vivado)中创建第一个项目,输入并综合上述D触发器模块,观察综合后的原理图。修改代码,尝试将非阻塞赋值改为阻塞赋值,再次综合并观察电路变化,记录差异。

2.工具导航:快速演示Vivado创建项目、添加源文件、运行综合(Synthesis)的基本流程,指出关键报告文件(如综合后的原理图和资源报告)的位置。

3.预习要求:阅读《实践指南》中关于组合逻辑描述(always_comb

、连续赋值assign

)和模块实例化的章节,思考如何用HDL构建一个4选1数据选择器(MUX)和一个简单的算术逻辑单元(ALU)切片。

第二、三讲:深化与实践——构建数据路径(4学时,项目实践课)

阶段一:回顾与进阶(30分钟)

1.问题研讨:针对上节课后实践中学生遇到的普遍问题(如工具使用不熟、不理解综合报告)进行集中解答。展示几个典型的由阻塞赋值误用导致的非预期电路,进行案例分析。

2.组合逻辑建模精讲:

1.3.讲解always_comb

过程块:强调其用于描述组合逻辑,敏感列表自动包含所有读取的信号,避免因列表不全导致仿真/综合不匹配(Synthesis-SimulationMismatch)。

2.4.对比连续赋值语句assign

:适用于简单的组合逻辑或线网连接。明确always_comb

内部应使用阻塞赋值(=

)来描述纯组合逻辑。

3.5.关键设计模式:通过一个带使能端的2-4译码器例子,引入“default

case”的重要性,强调在组合逻辑中描述所有可能的输入情况,避免生成锁存器(Latch),除非设计意图如此(使用always_latch

)。

systemverilog

//好的风格:完全的条件覆盖,避免锁存器

always_combbegin

y=4'b0000;//默认赋值

if(en)begin

case(sel)

2'b00:y[0]=1'b1;

2'b01:y[1]=1'b1;

2'b10:y[2]=1'b1;

2'b11:y[3]=1'b1;

default:;//这里可省略,因为case项已覆盖所有2位值

endcase

end

end

阶段二:项目任务实施——数据路径模块开发(150分钟)

学生以2人小组为单位,开始“多模式可配置数字信号处理单元”数据路径部分的核心模块开发。教师巡回指导,进行个性化问题解答和思路点拨。

1.任务1:FIR计算核心模块:

1.2.要求:根据提供的滤波器系数和结构(直接型或转置型),实现一个8位数据输入、16位数据输出、系数可配置(通过模块参数parameter

或输入端口)的FIR滤波器计算单元。

2.3.能力点:运用parameter

进行模块参数化设计;使用for

generate循环(可综合)来实例化多个乘法累加单元,以应对可变阶数;理解有符号数(signed

)运算在HDL中的处理;初步考虑流水线设计(插入寄存器)来提高吞吐率。

3.4.教师点拨重点:乘法器的资源消耗问题,引导学生思考何时使用内嵌DSP硬核(通过综合属性(*use_dsp48="yes"*)

引导)与通用逻辑实现。讨论饱和运算(Saturation)与溢出处理。

5.任务2:数据接口模块:

1.6.要求:实现一个数据接口模块,根据模式控制信号,将外部输入的并行数据或串行数据(假设串行数据遵循一个简单的协议,如带有起始位)转换为FIR计算核心所需的并行数据格式。

2.7.能力点:设计一个简单的串并转换器(Serializer/Deserializer),这必然涉及一个有限状态机(FSM)。借此机会,引入FSM的HDL描述方法(两段式或三段式),重点讲解状态寄存器(state_reg

,next_state

)的分离描述风格。

systemverilog

//三段式FSM示例(Moore型)

typedefenumlogic[1:0]{IDLE,RECEIVE,PROCESS,OUTPUT}state_t;

state_tstate_reg,next_state;

//时序逻辑部分:状态寄存器更新

always_ff@(posedgeclkornegedgerst_n)begin

if(!rst_n)state_reg<=IDLE;

elsestate_reg<=next_state;

end

//组合逻辑部分:次态逻辑

always_combbegin

next_state=state_reg;

case(state_reg)

IDLE:if(start)next_state=RECEIVE;

RECEIVE:if(data_valid)next_state=PROCESS;

...//其他状态转移

endcase

end

//组合逻辑部分:输出逻辑(Moore型输出仅与当前状态有关)

always_combbegin

out_valid=1'b0;

case(state_reg)

PROCESS:out_valid=1'b1;

...

endcase

end

1.8.教师点拨重点:状态编码的选择(二进制、格雷码、独热码)及其对面积、速度和功耗的影响。强调FSM描述的可读性和可维护性。

9.任务3:模块集成与接口连接:

1.10.要求:创建顶层模块(如data_path

),将FIR核心、数据接口等子模块通过实例化连接起来。编写简单的测试平台(Testbench),对数据路径进行初步的功能仿真,验证数据流的正确性。

2.11.能力点:模块实例化语法(模块名实例名(.端口名(连接信号))

);使用interface

简化模块间连接(引入SystemVerilog接口概念);编写基础的测试激励,使用$display

或$monitor

进行调试。

3.12.教师点拨重点:如何设计清晰、一致的接口命名规范;时钟和复位信号在层次间的传递;测试平台编写的基本套路。

阶段三:中期检查与反馈(60分钟)

1.小组间代码走查(CodeWalkthrough):随机选取1-2个小组,将其代码投影至大屏幕,由小组代表讲解其FIR核心或FSM的设计思路。其他小组和教师进行提问和评议。焦点集中于代码的硬件对应性、可读性和潜在问题(如是否可能生成锁存器、时序路径是否过长)。

2.共性难点集体攻关:针对走查中暴露的共性问题,如状态机输出有毛刺(Glitch)的风险、参数化设计的技巧等,进行集中讲解和示范。

3.引入逻辑综合预备知识:提出疑问:“你的RTL代码在仿真中正确,就能保证在真实的FPGA上正确工作吗?”引出时序(Timing)的概念。简要介绍建立时间/保持时间的基本定义,为下一阶段学习逻辑综合与约束奠定基础。

第四讲:跃迁与优化——逻辑综合及约束(2学时)

阶段一:逻辑综合原理深度剖析(50分钟)

1.揭开综合的黑箱:逻辑综合不是“翻译”,而是“设计空间探索与实现”。详细讲解综合三步曲:

1.2.转换(Translation):将HDL描述的RTL设计转换成通用的、与工艺无关的布尔等式和寄存器组成的中间表示(如GTECH网表)。此阶段主要进行语法和基本语义检查。

2.3.优化(Optimization):在布尔逻辑层面进行优化。讲解常量传播、逻辑简化(如利用卡诺图或奎因-麦克拉斯基算法)、资源共享等概念。举例说明一段包含多个加法的代码,在资源受限约束下,综合工具可能将其优化为时分复用一个加法器。

3.4.映射(Mapping):将优化后的逻辑门映射到目标工艺库(如Xilinx的LUT、FF、DSP48E1,Intel的ALM、DSPBlock)中的具体物理单元。这是将设计“锚定”到具体硬件的过程。展示工艺库文件内容片段,解释其如何描述一个LUT或触发器的功能、时序和功耗特性。

5.约束:引导综合的工具:强调没有约束,综合工具将盲目优化,结果往往不可用。系统讲解SDC/XDC约束的基本类型:

1.6.时钟约束:create_clock

,定义时钟周期、占空比、端口。这是最重要的约束。

2.7.输入/输出延迟约束:set_input_delay

,set_output_delay

,定义芯片外部信号的时序关系。

3.8.时序例外:set_false_path

,set_multicycle_path

,告知工具某些路径无需满足默认的单周期时序要求。

4.9.物理约束:如set_propertyLOC

管脚约束,本单元仅提及,重点在前端。

10.代码风格对综合结果的影响:通过对比实验,展示不同编码方式对最终面积和时序的影响。

1.11.案例1:使用if-else

vscase

语句实现多路选择器,分析其可能综合出的优先级编码器与并行多路选择器的区别。

2.12.案例2:在复杂算术运算中,使用括号明确运算顺序,以指导综合工具保持特定的数据流结构,从而影响时序。

3.13.案例3:寄存器输出vs组合逻辑输出,对时序收敛难易度的影响。

阶段二:项目综合、分析与优化实践(40分钟)

1.任务:为数据路径添加约束并进行综合:

1.2.学生为自己的data_path

模块编写基本的约束文件:定义主时钟(假设100MHz),为输入数据、有效信号设置合理的输入延迟,为输出数据设置输出延迟。

2.3.运行综合(Synthesis)并打开综合后的设计。

4.关键动作:阅读与分析综合报告:

1.5.资源利用率报告:查看LUT、FF、DSP等资源的消耗情况。判断是否与预期相符,是否存在资源浪费。

2.6.时序报告:重点关注“最差负时序裕量(WorstNegativeSlack,WNS)”和“总负时序裕量(TotalNegativeSlack,TNS)”。解释WNS为负意味着存在建立时间违例。带领学生查看具体违例路径的详细信息,理解路径起点(LaunchFlip-Flop)、组合逻辑云、路径终点(CaptureFlip-Flop)的分析视图。

3.7.原理图视图:查看综合后网表的图形化表示,与学生自己编写的RTL代码进行对照,直观理解代码到硬件的映射。寻找是否存在意外的逻辑结构(如意想不到的优先级逻辑)。

8.初步优化迭代:

1.9.如果发现时序违例,引导学生分析原因。是组合逻辑路径过长(关键路径)?还是时钟约束过紧?

2.10.提供初级优化策略:策略A(代码层面):考虑在长组合逻辑路径中插入流水线寄存器(PipelineRegister),将单周期长路径拆分为多周期短路径。策略B(约束层面):若确定某条路径实际允许多个周期完成,则添加set_multicycle_path

约束。

3.11.学生修改代码或约束,重新综合,观察WNS/TNS的改善情况。体验“设计->综合->分析->优化”的迭代过程。

阶段三:单元总结与能力拓展展望(10分钟)

1.知识图谱串讲:回顾本单元核心线索:从系统需求出发,运用硬件思维,使用SystemVerilog进行RTL层次化建模,通过逻辑综合工具和工艺库将代码转换为门级网表,并利用约束指导优化,最终实现时序闭合的初步目标。强调这是一个环环相扣的工程链。

2.前沿视野拓展:简要介绍本单元知识的延伸方向:

1.3.形式验证(FormalVerification):如何数学化地证明RTL代码与设计规范的一致性,超越仿真测试。

2.4.静态时序分析(STA)深度:更复杂的时钟模型(时钟偏移、抖动)、片上变异(OCV)等。

3.5.高层次综合(HLS):从C/C++直接生成RTL代码,是更高层次的抽象,但其生成的代码质量仍依赖于对底层RTL和综合的理解。本单元所学是理解和优化HLS结果的基石。

6.最终项目任务布置:要求学生课后完成“多模式可配置数字信号处理单元”的控制路径(配置寄存器与顶层控制FSM)设计,并与数据路径集成,形成完整设计。进行最终的综合,生成门级网表,并撰写一份综合分析报告,涵盖资源、时序分析及优化思考。报告将通过在线平台提交,并安排同行互评。

七、学习评价设计

本单元评价采用多元化、过程性、能力导向的评价体系,涵盖个人与团队、过程与结果、知识与技能、实践与反思等多个维度。

1.过程性评价(40%):

1.2.课堂参与与提问(10%):记录学生在问题研讨、代码走查中的发言质量。

2.3.实践任务完成度与代码质量(20%):通过在线平台检查各阶段任务(D触发器实验、FIR核心模块、数据接

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论