FPGA设计流程.ppt_第1页
FPGA设计流程.ppt_第2页
FPGA设计流程.ppt_第3页
FPGA设计流程.ppt_第4页
FPGA设计流程.ppt_第5页
已阅读5页,还剩181页未读 继续免费阅读

下载本文档

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

文档简介

第2章FPGA设计流程,2.1Quartus设计流程概述2.2设计输入2.3设计约束和分配2.4设计综合2.5布局布线2.6基于模块的设计2.7仿真2.8时序分析2.9时序逼近2.10用Quartus完成FPGA设计的实例,2.1Quartus设计流程概述AlteraQuartus设计软件提供完整的多平台设计环境,能够直接满足特定的设计需要,为可编程芯片系统提供全面的设计工具。Quartus软件含有FPGA和CPLD设计所有阶段的解决方案。Quartus的主要设计流程如图2.1所示。,图2.1Quartus的设计流程,Quartus为设计流程中每一个阶段提供的主要工具和功能如下。1)设计输入(DesignEntry)(1)文本编辑器(TextEditor)是一个灵活的工具,用于以AHDL、VHDL和VerilogHDL语言以及Tcl脚本语言输入文本型设计。还可以使用TextEditor输入、编辑和查看其他ASCII文本文件,包括为Quartus软件或由Quartus软件建立的文本文件。(2)模块编辑器(BlockEditor)用于以原理图和框图的形式输入和编辑图形设计信息。,(3)符号编辑器(SymbolEditor)用于查看和编辑代表宏功能、宏功能模块、基本单元或设计文件的预定义符号。(4)使用MegaWizardPlug-inManager建立Altera宏功能模块、LPM功能和IP功能,用于Quartus软件和EDA设计输入与综合工具中的设计。,2)约束和分配输入(ConstraintandAssignmentEntry)(1)分配编辑器(AssignmentEditor)界面用于在Quartus软件中建立、编辑节点和实体级别的分配。分配用于在设计中为逻辑指定各种选项和设置,包括位置、I/O标准、时序、逻辑选项、参数、仿真和引脚分配等。(2)引脚规划器(PinPlanner)。Assignments菜单下的引脚规划器中,可视化工具为引脚和引脚组分配提供了另一种途径。它包括器件的封装视图,以不同的颜色和符号表示不同类型的引脚,并以其他符号表示I/O块。引脚规划器使用的符号与器件系列数据手册中的符号非常相似,它还包括已分配和未分配引脚的列表。,(3)Settings对话框。可以使用Settings对话框(Assignments菜单)为工程指定分配和选项,可以设置一般工程范围的选项以及综合、适配、仿真和时序分析选项。(4)平面布局图编辑器(FloorplanEditor)可以用来直观地分配资源。(5)设计分区窗口用以建立和修改设计分区。,3)综合(Synthesis)(1)可以使用分析和综合(Analysis并有相应的提示,这表明该操作实际上是调用update_timing_netlist这条TCL指令的。所有TimeQuest的操作都可以用TCL指令来完成,每一次操作所调用的指令都会在控制台窗格中出现,如果熟悉TCL指令,可直接在控制台窗格输入TCL指令完成各种操作。,(5)生成时序报告。用任务窗格中的命令,可以生成各种时序报告,同时还可以自定义报告,所有的命令也都可以用TCL指令完成。在TimeQuest查看窗格中可以迅速查看时序分析的结果。TimeQuest时序分析仪快速提供交互式报告,使用户能够迅速收集所选时序通道的详细信息。查看松弛(Slack)报告后,用户可以使用TimeQuest时序分析仪得到特定通路上更详细的信息。,(6)保存SDC文件。所有的约束设置都不会自动保存,因此在结束分析之前,使用任务窗格中的WriteSDCFiles把约束设置文件保存起来。TimeQuest时序分析仪使用灵活、功能非常强大,这里只列出了使用的简单流程及主要特性,具体使用时请参照QuartusVersion6.0HandbookVolume3:VerificationChapter6的相关内容。,2.9时序逼近Quartus软件提供集成的时序逼近流程,通过控制设计的综合和布局布线来达到时序目标。使用时序逼近流程可以对复杂的设计进行更快的时序逼近,以减少优化迭代次数并自动平衡多个设计约束。时序逼近流程可以执行初始编译和查看设计结果,进一步高效优化设计。在综合之后以及在布局布线期间,可以使用时序逼近平面布局图(TimingClosureFloorplan)分析设计并进行分配,使用时序优化顾问(TimingOptimizationAdvisor)查看Quartus对优化设计时序的建议,还可以使用LogicLock区域分配和DesignSpaceExplorer进一步优化设计。图2.12为Quartus的时序逼近流程。,图2.12时序逼近流程,使用时序逼近平面布局图查看Fitter生成的逻辑布局、用户分配、LogicLock区域分配以及设计的布线信息,可以使用这些信息在设计中识别关键路径,进行时序分配、位置分配和LogicLock区域分配,达到时序逼近。可以使用View菜单中提供的选项自定义时序逼近平面布局图来显示信息的方式。可以按照封装引脚及其功能显示器件,也可以按内部MegaLAB结构、LAB和单元显示器件,还可以按芯片的区域、所选信号的名称和位置显示器件。,可以使用FieldView命令(View菜单),在时序逼近平面布局图的高级轮廓视图中显示器件资源的主要分类。在Field视图中用彩色区域表示分配,这些彩色区域显示用户已分配的数量、已布置的Fitter以及器件中每个结构未分配的逻辑。可以使用Field视图中的信息进行分配,达到设计的时序逼近。时序逼近平面布局图可同时显示用户分配和Fitter分配。用户分配是用户在设计中所做的所有位置分配与LogicLock区域分配;Fitter分配是Quartus软件在上次编译之后布置的所有节点的位置。可以使用Assignments命令(View菜单)显示用户分配和Fitter分配。,时序逼近平面布局图显示器件资源以及所有设计逻辑的相应布线信息。使用Routing命令(View菜单),可以选择器件资源,并查看以下布线信息类型:(1)节点之间的路径:显示所选逻辑单元、I/O单元、嵌入式单元和相互连接引脚之间的路径。(2)节点扇入和扇出:显示所选嵌入式单元、逻辑单元、I/O单元和引脚的节点的扇入和扇出布线信息。(3)布线延时:显示引至或源自特定逻辑单元、I/O单元、嵌入式单元、引脚、所选节点之间以及一个或多个关键路径上的布线延时。(4)连接计数:显示或隐藏连接至所选对象、从所选对象或所选对象之间连接的数量。,(5)物理时序估计:显示从一个物理资源至另一个物理资源的近似延时。选择一个物理资源后,用可能目标资源的阴影区表示延时(资源的阴影越深,延时越长),可以将鼠标放置在另一个物理资源之上以数字形式显示到达目标资源的延时。(6)布线拥塞:用图形显示设计中的布线拥塞。阴影越深,布线资源利用率越高。也可以选择布线资源,然后指定该资源的拥塞阈值(在器件中以红色区域显示)。(7)关键路径:显示设计中的关键路径,包括路径边缘和布线延时。默认关键路径视图可以显示寄存器至寄存器的路径,还可以查看源节点和目标节点之间最差路径的所有组合节点。可以通过指定时钟域、源节点名称和目标节点名称以及要显示的关键路径数和信号延迟来指定滤除显示关键路径的标准。,用时序逼近平面布局图还可以查看LogicLock区域的布线信息,包括连接和区域内延时。LogicLock区域连接用于显示分配给LogicLock区域的实体之间的连接,区域内延时用于显示LogicLock区域(包括其子区域)中源和目标路径之间的最大延时。为了便于达到时序逼近,时序逼近平面布局图允许直接在布局图中进行位置和时序分配。可以在时序逼近平面布局图的自定义区域和LogicLock区域中建立和分配节点或实体,编辑对引脚、逻辑单元、行、列、区域、MegaLAB结构和LAB的现有分配;还可以查找节点或节点组,并在AssignmentEditor中进行分配。,可以使用以下方法在时序逼近平面布局图中进行编辑分配:(1)剪切、复制和粘贴节点和引脚的分配。(2)启动AssignmentEditor进行分配。(3)使用NodeFinder协助分配工作。(4)在LogicLock区域中建立和分配逻辑。,(5)用鼠标从ProjectNavigator的Hierarchy选项标签、LogicLock区域和时序逼近平面布局图中拖出节点和实体,放到布局图的其他区域中。TimingOptimizationAdvisor可以在以最大频率(fMAX)、建立时间(tSU)、时钟至输出延时(tCO)和传播延时(tPD)等几个方面针对设计的时序优化提出建议。打开一个工程后,通过选择TimingOptimizationAdvisor命令(Tools菜单)查看TimingOptimizationAdvisor。如果还没有编译工程,则TimingOptimizationAdvisor只为时序优化提供一般建议。如果工程已经编译完毕,则TimingOptimizationAdvisor能够根据工程信息和当前设置,提供特定的时序建议。,Quartus软件的网表优化选项可用于在综合以及布局布线期间进一步优化设计。网表优化通过修改网表以提高性能,从而改进fMAX结果。不管使用何种综合工具,均可应用这些选项。根据设计条件,不同的选项效果会有所不同。在Settings对话框的SynthesisNetlistOptimizations和PhysicalSynthesisOptimizations页面中指定综合和物理综合的网表优化选项。,使用LogicLock区域达到时序逼近的方法如下:在时序逼近平面布局图中分析设计,然后将关键逻辑约束在LogicLock区域中。LogicLock区域通常为分层结构,使设计者对模块或模块组的布局和性能有更强的控制。可以在个别节点上使用LogicLock功能,比如将沿着关键路径的节点分配给LogicLock区域。要在设计中使用LogicLock区域成功地改进性能,需要详细掌握设计的关键路径。一旦在LogicLock区域内达到了所要的性能,就可以对该区域的内容进行反标,以锁定逻辑布局。应用软LogicLock区域可以使这种方法更灵活有效。增量编译也可以用来实现时序逼近,通过分配设计分区,在编译、处理其他设计分区时,只修改设计中的关键单元布局来达到时序逼近。,2.10用Quartus完成FPGA设计的实例本节通过设计一个如图2.13(a)所示的灯光控制电路来熟悉Quartus软件的使用,开关x1和x2都可以用来控制灯f,设开关闭合为逻辑1,图2.13(b)为这个电路的真值表,这是一个简单的异或电路,但这里我们用门电路来实现。,图2.13灯光控制电路(a)电路;(b)真值表,2.10.1建立一个新工程Quartus软件设计的一个电路或者电路模块称做工程。Quartus软件同时只能处理一个工程,所有与该工程相关的内容都保存在一个目录下。要设计一个电路,第一步就是建立一个工程,我们使用introtutorial这个目录保存工程文件。运行Quartus软件,图2.14是Quartus6.0刚启动时的图形界面。Quartus的大多数功能都是通过菜单操作完成的,如单击File菜单,选中Exit可退出Quartus。图2.15是File菜单的例子。,图2.14Quartus6.0的图形界面,图2.15File菜单的例子,按照以下步骤使用新建工程向导建立一个新工程:(1)选择FileNewProjectWizard菜单,显示如图2.16所示的对话框,告诉使用者本向导能够完成哪些工作,如果以后不需要这个对话框出现,则选中Dontshowmethisintroductionagain,按Next按钮,出现如图2.17所示的对话框。,图2.16新建工程向导完成的任务,图2.17建立一个新工程,(2)设定工程的工作目录为C:de2introtutorial,当然也可以选其他目录。工程必须有一个名字,一般情况下,这个工程的名字与设计的顶层实体同名,这里我们将工程命名为light。按Next按钮,由于目录C:de2introtutorial不存在,Quartus会出现如图2.18的对话框,按是(Y)按钮,显示如图2.19所示的对话框。,图2.18Quartus为工程新建一个目录,图2.19加入设计文件,(3)用向导可以加入已有的设计文件,如果不需要加入已有的文件,则按Next按钮,出现如图2.20所示的对话框,我们这里假设没有已经设计好的文件。,图2.20选择器件,(4)选择Cyclone系列FPGA作为目标器件系列,Availabledevices框中列出当前版本Quartus支持的该系列的所有器件,具体的器件可以由Quartus自动选择,也可以由用户选择,DE2平台上使用的FPGA是EP2C35F672C6,因此直接选择该器件。按Next按钮后出现如图2.21所示的对话框。,图2.21选择其他的EDA工具,(5)Quartus支持第三方提供的EDA工具,在这个对话框中可以选择使用第三方的设计输入/综合工具、EDA仿真工具和时序分析工具,本例中全部使用Altera的EDA工具。(6)按Next按钮出现如图2.22所示的汇总对话框,按Finish按钮,返回Quartus主界面,工程light已经成为当前工程了,如图2.23所示。,图2.22工程设置汇总对话框,图2.23新工程建立之后Quartus的主界面,2.10.2设计输入Quartus软件中可以用图形编辑器和文本编辑器来完成设计输入,我们先用图形编辑器完成如图2.13所示的电路。用FileNew菜单打开如图2.24所示的对话框,选择BlockDiagram/SchematicFile,单击OK按钮,打开图形编辑器。首先为新建立的文件命名,用FileSaveas菜单打开如图2.25所示的对话框,在保存类型中选择BlockDiagram/SchematicFile(*.bdf),在文件名中输入light,这个文件名称应与图2.17中的完全一致,选中Addfiletocurrentproject,单击保存(S)按钮,将文件在目录C:de2introtutorial中保存为light.bdf并把该文件加入到工程中作为顶层实体,完成之后显示如图2.26所示的图形编辑窗口。用图形编辑器输入图2.13所示电路的过程可分为四步:导入逻辑门电路符号、导入输入/输出符号、用线连接节点、编译电路。,图2.24选择用图形编辑器输入设计,图2.25为文件命名,图2.26图形编辑窗口,1导入逻辑门电路符号用鼠标双击图形编辑器窗口的空白处或者单击图形编辑器窗口左侧工具条中的图标,弹出如图2.27所示的对话框。展开Libraries框中的层次结构,先展开c:/altera/quartus60/libraries/,然后展开primitives库,再展开logic库,在logic库中包含了基本的逻辑电路。选择二输入与门and2,单击OK按钮,二输入与门的符号就会出现在图形编辑器窗口,将鼠标移动到想要放置二输入与门的位置并单击鼠标即可将二输入与门放置到图形编辑器中。可以重复上述步骤放置第二个与门,也可以将鼠标移至已有的二输入与门,按鼠标右键并拖动到目标位置,放开鼠标右键,在弹出的菜单中选择Copyhere,复制一个二输入与门,或者按Ctrl键的同时,用鼠标左键拖动已有二输入与门至目标位置,这样也可以复制一个二输入与门。按以上步骤放置其他门电路,选中门电路,单击图标,可以将门电路旋转90。在图形编辑器中放置的门电路符号如图2.28所示。,图2.27从符号库中选择符号,图2.28在图形编辑器中放置门电路符号,2导入输入/输出符号按照同样的步骤,从primitives/pin库中选择input(输入引脚)和output(输出引脚)放置在电路中,如图2.29所示。,图2.29放置输入/输出引脚,双击左上方的引脚,弹出如图2.30所示的对话框,在Pinname(s)栏中输入x1,将该引脚命名为x1,用同样的方法命名x2和f。,图2.30为引脚命名,3用线连接节点点击直角连线工具图标,将鼠标置于x1引脚的右边沿,按下鼠标左键保持不放,拖动连线至与门上面引脚的端点,放开鼠标,即可将输入引脚x1和与门的引脚相连,依次按照图2.31所示连接各节点。注意当两条线相连时,在连接点会出现一个圆点。如果连线有误,可用鼠标选中错误的连线,按Del键删除。连完线以后,点击选择与聪明连线工具,可以选择、拖动、删除连线和符号。完成之后的原理图如图2.31所示。最后保存light.bdf文件。,图2.31完成之后的原理图,4编译电路编译器调用一系列的工具对输入的电路原理图文件light.bdf进行分析、综合电路,并针对目标器件生成一个实现。使用processingstartcompilation菜单或者单击工具按钮运行编译器。编译过程分多个步骤完成,编译过程中各步骤的进程在Quartus窗口左侧的Status窗格中显示,如果编译过程中没有错误出现,会弹出一个编译成功的提示框,单击确定按钮后,Quartus显示如图2.32所示的界面。在Quartus窗口下部的Messages窗格中,将会显示编译过程中出现的提示信息。,图2.32成功编译之后的显示,编译结束之后,Quartus还会自动打开一个CompilationReport窗口,这个窗口可以拖动、关闭、最大化或最小化,关闭后用ProcessingCompilationReport命令可以重新打开该窗口。报告表明实现这个电路只占用了1个逻辑单元和3个引脚。用窗口左侧的层次结构可以查看各部分的详细报告。如果在编译过程中有错误出现,编译会自动终止,并在消息框中显示错误信息,每一个错误有单独的一个错误信息提示。双击消息框中的错误信息提示,Quartus会自动定位错误的位置,要获得关于该错误的帮助,可以选中该错误信息,并按F1键。如果在编译过程中有警告信息,也会在消息框中列出,使用相同的方法可以定位产生警告的电路的位置。,我们这里可以看一下编译出错的情况。打开light.bdf,删除上边的与门和或门之间的连线,保存文件,重新编译工程。Quartus弹出一个窗口,提示编译不成功,按OK按钮关闭该窗口,在编译报告窗口中选择Analysis&synthesis栏中的Messages,显示如图2.33所示的窗口,第一个错误信息指出或门的一个输入没有源信号,双击这个信息,Quartus自动打开light.bdf,并选中错误位置,如图2.34所示。修改错误并重新编译工程。,图2.33编译错误信息,图2.34确定错误位置,2.10.3分配引脚在前面的编译过程中,Quartus自动为设计选择输入/输出引脚,而在DE2平台上,FPGA与外部器件的连线是确定的,要让电路在DE2平台上正常工作,我们必须为设计分配引脚。我们选择SW1和SW0作为输入x1和x2,参照本书附录B可知,它们分别对应FPGA的引脚N26和N25。选择绿色发光二极管LEDG0作为输出,指示f的状态,对应FPGA的引脚AE22。用AssignmentsPins菜单打开如图2.35所示的引脚规划器,在引脚规划器下部的AllPins窗格中列出了所有引脚,节点f、x1和x2对应的Location一栏都是空的,说明没有分配引脚,单击节点f的location栏,在下拉框中选择PIN_AE22,并用同样的方法分别为x1和x2分配引脚PIN_N26和PIN_N25。,图2.35引脚规划器窗口,引脚分配的结果可以导出到.qsf文件中,以用于其他工程的引脚分配,也可以导入其他工程已经分配好的引脚。DE2系统光盘中提供了一个名为DE2_pin_assignments.csv的文件,包含了DE2平台上FPGA的引脚分配,用AssignmentsImportAssignments菜单并选择文件名,可导入DE2_pin_assignments.csv中的引脚配置。但在此例中,如果要用该文件中的引脚配置,则需要在light.bdf中将节点名称f改为LEDG0,将x1和x2分别改为SW1和SW0并重新编译。,2.10.4电路仿真在DE2平台上实现该电路之前,我们先在Quartus软件中对电路进行功能仿真,以测试设计的正确性。在仿真之前,先要建立一个矢量波形文件,包含输入信号的波形,另外还要指定所要观察的输出信号。仿真时仿真工具将矢量波形作为输入加到电路模型上并观察其响应,按照以下步骤建立矢量波形文件:(1)用FileNew菜单打开如图2.36所示的对话框。,图2.36建立一个矢量波形文件,(2)单击OtherFiles,选择VectorWaveformFile,单击OK按钮,打开矢量波形编辑器窗口,如图2.37所示。(3)保存矢量波形文件为light.vwf。用EditEndTime菜单设定仿真终止时间为200ns。用ViewFitinWindow菜单在窗口中显示整个仿真的时间范围。,图2.37矢量波形编辑器窗口,(4)将要仿真的输入/输出等电路节点加入到波形中来。用EditInsertNodeorBus菜单打开如图2.38所示的窗口,可以在Name框中直接输入节点的名字并按OK按钮添加电路节点。更方便的方法是用NodeFinder工具,单击图2.38中的“NodeFinder”按钮,打开如图2.39所示的窗口,在Filter下拉框中选择所要寻找节点的类型,这里我们选择Pins:all,单击List按钮,在NodesFound框中列出所有的引脚。,图2.38InsertNodeorBus对话框,图2.39NodeFinder窗口,(5)单击信号x1,然后单击按钮,将x1添加到右边的SelectedNodes框中,用同样的方法将信号x2和f添加进来,单击OK按钮关闭NodeFinder对话框,再按OK按钮返回波形编辑器窗口,如图2.40所示。,图2.40需要仿真的节点,(6)接下来要做的事情是确定输入信号x1和x2,输出f的逻辑值由仿真器自动生成。在本例中,x1和x2只有四种可能的输入组合。可以用选择工具和波形编辑工具绘制输入x1和x2的波形。用波形编辑工具选中所要编辑的波形区间,用EditValue菜单下的各种工具修改波形,或者用窗口左侧工具栏中对应的工具改变波形。按图2.41所示编辑x1和x2的波形,并保存矢量波形文件。,图2.41测试用的矢量波形,前文提到过,仿真分为功能仿真(FunctionalSimulation)和时序仿真(TimingSimulation)。功能仿真认为FPGA中的逻辑单元和连线是完美的,且信号传输中不存在传输延迟,这种仿真比较简单。功能仿真用来考察电路功能的正确性,在输入端加入各种可能的激励,观察输出端的响应是否满足设计要求,当设计规模比较大时,可能无法列出所有可能的输入状态。时序仿真则比较复杂,考虑了信号传输中的延迟。,功能仿真的步骤如下:(1)用AssignmentsSettings菜单打开Settings窗口。(2)在窗口左侧的设置分类列表中,选择SimulatorSettings,Quartus已经把工程中唯一的.vwf文件light.vwf作为仿真输入文件。(3)在Simulationmode中选择Functional,如图2.42所示。,图2.42设置仿真模式,(4)按OK按钮,完成设置。(5)用ProcessingGenerateFunctionalSimulationNetlist菜单产生功能仿真所需要的网表。(6)用ProcessingStartSimulation菜单或工具按钮启动功能仿真。仿真结束后,Quartus提示仿真完成,并自动切换到SimulationReport窗口,窗口的左侧是仿真报告的分类列表,窗口右侧是仿真波形图,并在窗口中提示仿真模式为功能仿真,如图2.43所示。,图2.43功能仿真结果,时序仿真的步骤如下:(1)用AssignmentsSettings菜单打开Settings窗口。(2)在窗口左侧的设置分类列表中选择SimulatorSettings,Quartus已经把工程中唯一的.vwf文件light.vwf作为仿真输入文件。(3)在Simulationmode中选择Timing。(4)按OK按钮,完成设置。(5)用ProcessingStartStartAnalysis&Synthesis菜单、ProcessingStartStartFitter菜单和ProcessingStartStartTimingAnalyzer菜单生成时序仿真所需要的网表。(6)用ProcessingStartSimulation菜单或工具按钮启动时序仿真。,仿真结束后,Quartus提示仿真完成,并自动切换到SimulationReport窗口,窗口中提示仿真模式为时序仿真,如图2.44所示。注意图中从x2状态变化到输出f状态发生相应的变化之间有11ns左右的延时,而从输入x1状态变化到输出f状态发生相应的变化之间有约6ns的延时,这些延时都是由FPGA内部逻辑单元和连线的延时造成的,不同的布线,延时长短也不一样。另外请注意,在约106ns处,f由1变为0,然后在约111ns处f又由0变为1,这是因为x1的传输延时为6ns,在106ns处x1的改变已经生效而x2的改变还未生效,所以得到x1=1、x2=0时相应的输出,到111ns左右,x2的改变才生效,f输出高电平。,图2.44时序仿真结果,2.10.5编程与配置FPGADE2平台上内嵌了USBBlaster下载组件,可以通过一条USB连接线与电脑相连,并且通过两种模式配置FPGA:一种是JTAG模式,通过USBBlaster直接配置FPGA,但掉电后,FPGA中的配置内容会丢失,再次上电需要用电脑对FPGA重新配置;另一种模式是在AS模式下,通过USBBlaster对DE2平台上的串行配置器件EPCS16进行编程,平台上电后,EPCS16自动配置FPGA。通过DE2平台上的SW19选择配置模式,SW19置于RUN位置,即选择JTAG模式配置;SW19置于

温馨提示

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

评论

0/150

提交评论