可编程逻辑器件设计技巧.DOC

上传人:国*** 文档编号:857763 上传时间:2018-11-03 格式:DOC 页数:22 大小:146.50KB
下载 相关 举报
可编程逻辑器件设计技巧.DOC_第1页
第1页 / 共22页
可编程逻辑器件设计技巧.DOC_第2页
第2页 / 共22页
可编程逻辑器件设计技巧.DOC_第3页
第3页 / 共22页
可编程逻辑器件设计技巧.DOC_第4页
第4页 / 共22页
可编程逻辑器件设计技巧.DOC_第5页
第5页 / 共22页
点击查看更多>>
资源描述

1、可编程逻辑器件设计技巧1. 什么是.scf?答:SCF 文件是 MAXPLUSII 的仿真文件, 可以在 MP2 中新建. 1 用 Altera_Cpld 作了一个 186(主 CPU)控制 sdram 的控制接口, 发现问题:要使得sdram 读写正确, 必须把 186(主 CPU)的 clk 送给 sdram, 而不能把 clk 经 cpld 的延时送给 sdram. 两者相差仅仅 4ns. 而时序通过逻辑分析仪测试没有问题 . 此程序在 xilinx 器件上没有问题. 这是怎么回事?答:建议将所有控制和时钟信号都从 PLD 输出, 因为 SDRAM 对时钟偏移(clock skew)很敏

2、感, 而 Altera 的器件 PLL 允许对时钟频率和相位都进行完全控制 . 因此, 对于所有使用SDRAM 的设计, Altera 的器件 PLL 必须生成 SDRAM 时钟信号 . 要利用 SDRAM 作为数据或程序存储地址来完成设计, 是采用 MegaWizard 还是 Plug-In Manager 来将一个 PLL 在采用 Quartus II 软件的设计中的顶层示例?可以选择创建一个新的 megafuntion 变量, 然后在 Plug-In manager 中创建 ALTCLKLOCK(I/P 菜单)变量. 可以将 PLL 设置成多个, 或是将输入划分开来, 以适应设计需求.

3、一旦软件生成 PLL, 将其在设计中示例, 并使用 PLL 的“Clock”输出以驱动 CPU 时钟输入和输出 IP 引脚. 2 在 max7000 系列中, 只允许有两个输出使能信号, 可在设计中却存在三个, 每次编译时出现“device need too many 3/2 output enable signal”. 如果不更换器件(使用的是max7064lc68). 如何解决这个问题?答:Each of these unique output enables may control a large number of tri-stated signals. For example, yo

4、u may have 16 bidirectional I/O pins. Each of these pins require an output enable signal. If you group the signals into a 16-bit bus, you can use one output enable to control all of the signals instead of an individual output enable for each signal. (参考译文:这两个独特的输出使能中每个都可能控制大量三相信号. 例如, 可能有 16 个双向 I/O

5、 引脚. 每个引脚需要一个输出使能信号. 如果将这些信号一起分组到一个 16 位总线, 就可以使用一个输出使能控制所有信号, 而不用每个信号一个输出使能. )3 关于 vhdl 的问题:process(a, b, c) begin end process; 如果 a、b、c 同时改变, 该进程是否同时执行三次?答:PROCESS STATEMENTS 中的执行跟逻辑有关系, 假如是同步逻辑, 则在每次时钟的触发沿根据 A, B, C 的条件来执行一次;假如是异步逻辑, 则根据判断 A、B、C 的条件来执行. 一般我们都推荐使用同步逻辑设计4 在设计最初, 由于没有将时钟信号定义在全局时钟引脚上

6、, 导致 MAXPLUS II 在时间分析时提示错误:(时钟偏斜加上信号延迟时间超过输入信号建立时间). 全局时钟引脚的时钟信号到各个触发器的延时最小, 有没有可能通过编译软件设置, 将普通 I/O 脚上的时钟信号也经过芯片内部的快速通道以最小的延迟送到每个触发器时钟引脚? 答:you can register that signal and assign it as the global signal, by the step flow: assign-logic option-Individual logic options-Global signal. But youd better i

7、nput the clock signal through the dedicated input pin. (参考译文:可以寄存这个信号, 并将它指定为全局信号, 步骤如下:指定逻辑选项个别逻辑选项 全局信号. 但是, 最好通过专用输入引脚输入时钟信号. )5 用 MaxplusII 软件设计完后, 用 Delay Matrix 查看延迟时间. 由于内部触发器的时钟信号用了一个输出引脚的信号, 譬如将一引脚 ClkOut 定义为 Buffer, Clkout 是一时钟信号, 然后反馈到内部逻辑, 内部逻辑用此信号作为时钟信号, 但用 Delay Matrix, 却查看不到一些信号相应于 Cl

8、kOut 的延迟 , 因为 ClkOut 是一 Output 引脚, 在 Delay Matrix source 一栏中没有 ClkOut 信号, 如何解决这个问题? 答:这种做法在逻辑设计中称为 GATE CLOCK, 所谓 GATE CLOCK 就是将设计中的组合逻辑结果拿来做时钟信号, 这是一种异步逻辑设计. 现在都推荐使用同步逻辑设计方法. 可以将该信号(CLKOUT)拿来作使能信号, 即ENABLE 信号 , 而时钟信号还是采用原来的统一时钟 , 使设计用尽量少的同步时钟, 这样一来就还是用 DELAY MATRIX 来分析原有的时钟. 6 我是一个 epld 的初学者, 目前看到

9、xilinx 的 Virtex-II 中嵌入大量的资源如:powerpc、ram 等, 究竟如何在 fpga 中使用这些资源?答:Xilinx Virtex-II 中嵌入的资源非常丰富, 如 BlockRAM、Digital Clock Manager、On-chip termination 等等. ISE 4.2i 软件完全支持这些资源. 可以举出单元库中相应基本数据的实例. Xilinx Core Generator 中也还支持 BlockRAM 等特性. 至于 PowerPC 和 MGT 设计, 可以使用 Virtex-II Pro 开发者套件. 7 在设计中, 往往需要对某个信号做一定

10、(任意长)的延时, 有没有好的方法来实现?而不是采用类似移位寄存器的方法来延时. 答:使用移位寄存器在 FPGA 中对信号进行延时是一种好方法. Xilinx Virtex 架构中每个对照表(LUT)都能够设置成为具有可编程深度 (最多为 16)的移位寄存器. 这就提供了一种高效的途径来在 FPGA 中实现移位寄存器. 无须使用触发器就可以实现一个 16 位寄存器. 作为一个好的设计习惯, 任何情况下都不要通过闸延迟来实现延迟逻辑. 8 ISE 中的 PAD TO PAD CONSTRAINT 是否是包括输入输出的 pad 时延之和再加上输入输出之间的组合逻辑的时延?还是只是输入输出之间的组合

11、逻辑的时延?答:Xilinx PAD-to-PAD contraint 的确涉及到输入输出 PAD 时延. 这从布局后时序报告中可以看出. 9 由于现在的设计基本上都是同步设计, 那么 PAD TO PAD CONSTRAINT 在什么情况下使用?答:虽然现今多数设计都是完全同步, 但仍有一些情况需要从一个输入引脚到另一个输出引脚的纯粹组合路径. 因此, 仍然需要 PAD-to-PAD constraint 控制这些路径的时延. 10 如何在 ISE 中看到 PAD TO PAD 的布线情况?答:通常不必在意信号在 FPGA 内的路线, 只要它涉及到时序问题 . 这种工具将对以优化的方式对设计

12、进行路由. 如果希望检查具体路由, 可以使用 Xilinx FPGA Editor, 它包含在ISE4. 2i 软件中. 11 在 Xilinx Foundation 3. 1i 下用 JTAG PROGRAMER 下载程序到芯片中, 可是总是出现如下错误:If the security flag is turned on in the bitstream, programming status can not be confirmed;others, programming terminated due to error. 测量电路信号, 没有相应的波形, 显然下载没有成功. 所用的芯片是:

13、Xilinx Spartan2 XC2S50TQ144. 怎么解决?答:This is a security feature. By disabling readback, the configuration data cannot be read back from the FPGA. This prevents others from pirating your intellectual properties. You can enable or disable this feature during bitstream generation. The proper way to dete

14、rmine if the configuration is finished without error is to check the status of the DONE pin on the FPGA. DONE pin should goes high if the bitstream is received correctly. Also, since you are using JTAG configuration, please make sure you have selected JTAG clock (not CClk) as your Startup clock duri

15、ng bitstream generation. (参考译文:这是保密功能. 通过禁用回读 , 配置数据不能从 FPGA 回读. 这可以防止其他人盗用你的成果. 在生成位元流过程中, 可以启用或禁用这个功能. 确定配置是否准确无误地完成, 适合的方法就是检查 FPGA 上 DONE 引脚的状态. 如果正确地接收了位元流, 则 DONE 引脚将会升高. 而且, 既然使用 JFAG 配置, 就要确保在生成位元流过程中, 已经将 JGAG 时钟(而不是 CClk)选作了 Startup 时钟. )12 Xilinx Virtex 架构中每个对照表 (LUT)都能够设置成为具有可编程深度(最多为 16

16、)的移位寄存器. 可否理解为, 在写设计的时候如果设计了一个深度不大于 16 位的移位寄存器, ISE 综合时就会用一个 LUT 来替代它? 答:Most synthesis tools (e. g. Synplify Pro, Xilinx XST) are able to infer LUT based shift register (SRL16E) from your source code. Even for depth greater than 16, the tool is smart enough to infer multiple SRL16E to realize the s

17、hift register. Another way to utilize this feature is to instantiate an SRL16E in the source code. You can refer to the Library Guide in the Xilinx ISE software package for more details. (参考译文:大多数综合工具 , 例如 Synplify Pro 和Xilinx XST, 都能根据源代码中的移位寄存器 SRL16E 来推断 LUT. 即使是深度大于 16 的情况, 此类工具也能够推断出多 SRL16E, 从

18、而实现移位寄存器. 利用此功能的另一种途径是在原代码中例示一个 SRL16E. 详细说明可以参考 Xilinx ISE 软件包中的库指南. )13 LUT 是实现组合逻辑的 SRAM, 怎样实现一个时序的移位寄存器, 是不是必须加一个触发器来配合 LUT? 答:The LUTs in Xilinx Virtex architecture are not simply combinational logic. When it is configured as 16x1 RAM, the write operation is synchronous. When it is configured a

19、s shift register, there is no need to consume any flip-flop resource. In fact the internal circuitry of a Virtex LUT is more complicated than what it looks like. (参考译文: Xilinx Virtex 结构中的LUT 不是简单的组合逻辑。当它被配置为 16x1 RAM 时,写操作是同步的。当它被配置为移位寄存器时,则无需消耗任何 flip-flop 资源。事实上 Virtex LUT 的内部电路比看起来更复杂。 )14 在 foun

20、dation 3.1 环境里怎么找不到启动 testbench.vhd 的程式? 答:伴随 Foundation 3.1i 出现的仿真器为门极仿真器, 因此你不能在这种设计环境下以VHDL 级运行仿真. vhdl 代码必须在你运行任何仿真之前进行综合. 因此, 在 Foundation 3.1i 环境下并不能使用 vhdl testbench. 作为替代方式, 你可以编写仿真 script. 实际上, Foundation 3.1i 是一款相对较老的软件. Xilinx ISE 软件中支持 HDL testbench, 它的最新版本为 4.2i. 15 关于双向口的仿真, 如果双向口用作输入口

21、, 输出口该怎么设置?答:做仿真时, 软件会自动地将 IO 口( 包括双向口)的引脚本加入到. SCF 文件中去. 先新建一个 SCF 文件, 然后在 NODE-ENTER NODES FROM SNF-LIST, 将列出的所有 IO 引脚(包括了双向口)都加入仿真文件中, 就可以进行仿真了. 16 关于 ACEX1K 的 I/O 脚驱动能力. ALTERA 计算功耗的 datasheet 中:对ACEX1K 器件, PDCOUT (power of steady-state outputs)的计算就是根据 IOH, IOL 来计算的, 能否告诉我 ACEX1K 芯片的 IOH, IOL 分别

22、是多少? 答:关于 ACEX1K 的 IO 驱动能力, IOH 在 ALTERA 的网叶上就有专门计算功耗的运算器, 请点击相关文章 它就给出了 APEXII 的功耗计算方法. 25 看过“FLEX PCI Development Board”的参考设计原理图, 它利用了条线开关选择配置方式. 既然两种配置方式管脚并没有公用, 为何需要这个跳线开关呢?答:EPC2 不会影响到用下载电缆通过 JTAG 口配置 EPF10K30A. 使用跳线开关是在选择给 10K30A 下载的方式, 是通过下载电缆还是 EPC2. 因为将 ECP2 与 10K30A 连接成 JTAG 菊花链的形式通过下载电缆下载

23、和用 EPC2 对10K30A 下载的连接方式是不同的, 所以要将这两者分开, 详细的连接方法应该在参考设计原理图中已经描绘的很清楚了. 26 为了保证设计可靠性, 需要重点关注哪些方面? 答:Here are a few guidelines for reliable FPGA design(关于可靠性 FPGA 设计的几点建议) Use fully synchronous design. Asynchronous design is very sensitive to path delay and is therefore not robust. An example of asychro

24、nous circuit is the SR latch which uses combinational feedback. (使用完全同步设计. 异步设计对路径延迟非常敏感, 因此不很可靠. 异步电路的一个例子是使用组合反馈的 SR 闭锁. ) Never gate your clock signal with combinational logic. Glitches may occur on any gated clock signals, which results in false triggering of flip-flops. (绝不使用组合逻辑控制时钟信号. 因为在任何门控

25、制时钟信号上可能产生短时脉冲干扰, 最终导致错误触发 flip-flop. ) Never rely on gate delay. (绝不要依靠门延迟. ) Enough bypass capacitors should be placed close to the power and ground pins of FPGA. Use capacitors with good high frequency response. (FPGA 的电源和接地引脚附近应该放置足够多的旁路电容器. 使用优质高频响应电容器. ) Always use the global clock buffers on

26、the FPGA to drive internal clock signals. These clock buffers and the associated clock distribution network have been carefully designed to minimize skew. (在 FPGA 上始终使用全局时钟缓冲来驱动内部时钟信号. 并且已经仔细设计了这些时钟缓冲和关联时钟配电网, 以将畸变减至最小. )27 You said “An example of asychronous circuit is the SR latch which uses combi

27、national feedback“. How do I learn SR latch ? What is the difference between SR latch and SRFF? (“异步电路的一个例子是使用组合反馈的 SR 闭锁”. 请问如何理解 SR 闭锁?SR 闭锁与 SRFF 有什么区别?)答:A latch changes states whenever the gate signal is active. A FF changes states only at clock edges. (参考译文:只要门信号是活动的, 闭锁就会更改状态. 而 FF 只有在时钟边沿才更改

28、状态. )28 Xilinx 公司的芯片在热设计方面可以提供哪些工具和资料?答:For thermal consideration, you need to know the power consumption of your FPGA and the thermal resistivity of the device package you are using. The power consumption can be estimated by the XPower tool included in Xilinx ISE software. The thermal resistivity o

29、f the device package can be found in Xilinx databook. The junction temperature can then be calculated by the following formula(至于散热问题, 需要了解所用 FPGA 的功耗和正在使用的器件封装的热阻系数. Xilinx ISE 软件中所包含的 Xpower 工具可以估计功耗. 在 Xilinx数据手册中可以找到器件封装的热阻系数. 然后利用下面的公式计算接合温度. )P = (Tj - Ta) / THETAja 其中, P=功耗;Tj= 接合温度;Ta=环境温度;T

30、HETAja = 封装的热阻系数You can then detemine if the junction temperature falls within the acceptable region. The maximum acceptable junction temperature is different for C and I grade devices. If it is higher than the max. acceptable temperature, you may consider adding a heatsink or cooling fan. (之后确定接合温度

31、是否在允许范围内. C 和 I 级器件允许的最高接合温度不同. 如果温度高于允许的最高值, 可能需要增加散热片或风扇. )29 如果时钟进入 FPGA 后经过一段组合逻辑才上时钟网络, 会存在一定的延时. 综合布线后会出现信号输入延时为负值, 意味着信号比时钟先到达触发器 . 那么, 怎样通过约束文件增加输入信号的延时呢?我试过对“NET“加上“MEDDELAY“的约束, 但是没效果. 答:Gating the clock signal with combinational logic is not recommended in modern high speed digital design

32、 since it may creates glitches on the gated clock signal, which results in false triggering of flip-flops. This results in a less reliable design. A common technique to remove gated clock is to make use of the clock enable pin of the flip-flop. For example, if you have a signal clko = clki BEGINTEMF

33、rom a simulations perspective, there is a fundamental difference between “signal“ and “variable“ in vhdl. A variable is nothing more than an object that holds a value. A variable assignment occurs instantly in a vhdl simulation. Also, a variable can only exist within a process, so it cannot transfer

34、 values across processes. A signal, on the other hand, has a history of values. Whenever a signal assignment occurs, the vhdl simulator schedules an event to update the signal value after a certain period of simulation time - the signal does not get this new value instantly in the simulation time do

35、main. Also, a signal can exists outside processes. Sounds complicated, but for most of the time you can simply use vhdl “signal“ in your hardware design. (参考译文:如果在端口表中声明了 PIN8, 这两个示例是一样的. 从硬件设计的角度看, 可以将 vhdl “signal“视为电子信号. 因此, 基本上可以将每个对象声明为“signal”. 从仿真角度看, vhdl 中的“signal“ 与 “variable“是根本不同的. 变量只不过

36、是拥有值的对象. 变量分配即时出现在 vhdl 仿真中. 而且, 变量只能存在于一个过程内, 因此它不能通过过程来传递值. 另一方面, 信号有多个值. 不论何时分配信号, vhdl仿真都会在某个仿真时段安排一个事件来更新信号的值. 在仿真时域里, 信号不会立即获得这个新的值. 而且信号可以存在于过程之外. 听起来好象有点复杂, 但大多数时候, 在硬件设计中可以只使用 vhdl “信号“. )34 如果输入时钟必须经过一段组合逻辑(比如需要进行时钟选择, 可选外部或内部时钟), 那么在 DFF 使能端加控制是无法解决的, 有什么更好的方法?答:A simple answer is to use

37、the BUFGMUX resource in Xilinx VirtexII devices. The BUFGMUX is actually a global clock buffer in VirtexII which incoporates a smart mux to switch between 2 clock sources. More importantly, the BUFGMUX guarantees glitch-free switching between these 2 clocks, even though the select signal changes asy

38、nchronously. (参考译文:简单的方法是使用 Xilinx VirtexII 器件上的 BUFGMUX 资源 . BUFGMUX 实际上是 VirtexII中的全局时钟缓冲, VirtexII 将智能 mux 与 2 个时钟源之间的切换相结合 . 更为重要的是, 即使选择信号更改不同步, BUFGMUX 也能保证这两个时钟之间的无干扰切换. )35 用 Altera 器件设计一个电路, 外挂一同步存储器件. 逻辑设计和存储器件的时钟是相同的, 但由于时钟信号带负载能力较差, 只能接一个负载, 所以将时钟信号接在可编程器件上, 而用内部赋值语句将时钟信号赋值给某一引脚, 此引脚信号再接

39、到存储器件的时钟引脚, 但这样存在一个问题:存储器件的读写信号相对于 Altera 器件上的时钟信号有延迟, 存储器件的时钟信号相对于 Altera 器件上的时钟信号也有延迟, 这样存储器件的时钟信号与读写信号之间的时间差难以控制, 极有可能不满足存储器件的Setup/hold 时间, 有什么好的方法解决此问题? 答:可以利用 ALTERA 器件中的 PLL 来精确控制延时. ALTERA 中的 PLL 是一个真正的模拟锁相环, 它可以提供精确的时钟频率合成与相位延时的细微调整. 可以将时钟信号按照你的要求进行延迟调整. 假如采用的器件没有 PLL 的话 , 那么可能需要在逻辑内部来做一些延时

40、逻辑, 不过这样会导致异步逻辑设计, 我们一般情况下不推荐这样用. 还有一种办法就是在 PCB 板上来调整时延. 关于 PLL 的详细资料可以参考 ALTERA 的相关文档. 36 利用 ACEX1K 系列片内 EAB 单元创建 RAM 时, 每创建一个容量较小的 RAM 时就要占用一个 EAB 单元, 能否将多个 RAM 整合由一个 EAB 实现, 以节约片内的 EAB单元? 答:在 ACEX1K 系列的器件中, 一个 EAB 单元目前只能做一个应用, 我们现在的软件还不支持将多个小的 RAM 集成到一个 EAB 当中. 37 Synthesis Style 设为 FAST 后, 发现速度有

41、所提升, 同时使用的资源也减少了, 资源和速度似乎兼得了, 那么是否所有的模块都可以设定为 FAST 呢? 答:将 SYNTHESIS STYLE 设置为 FAST 主要是为了提高系统性能 . 但是有一点要记住的是, 软件的设置不是在任何情况下对所有的设计都表现出相同的结果. 针对这个设计模块, 将 SYNTHESIS STYLE 设置为 FAST 可能对资源和速度都有了优化 , 但这并不说明对所有的模块都有相同的效果, 但是可以试一试 . 设计优化是一个原则与经验 , 技巧相结合的过程, 我们只掌握一定的原则与方法, 根据我们自己的经验, 运用一定的技巧, 才能将一个设计做到最优化. 38

42、I am now going to design a gray coded 16 bits counter , any efficient way to implement it in VHDL description? (要设计一个灰色编码 16 位的计数器, 怎么以 VHDL 描述来实现它?)答:You can just use megawizard(lpm_counter) in the software to generate the counter for you, select the output language with VHDL. That should be the ef

43、ficient way to implement a counter, and you dont to make additional optimize. Because the lpm function code is the best way to fit the structure of device, which is designed by altera factory specialist who is very familiar with our device structure. (参考译文:可以使用软件里的 megawizard(lpm_counter)来生成计数器 , 选择

44、带有 VHDL 的输出语言. 这应该是实现计数器的有效方法, 而且不用进行额外的优化. 因为 lpm 功能代码最适合此设计结构, 这种结构是非常熟悉我们的设计结构的 altera 专家设计的. )39 一般情况下用 Synplify Pro 综合后生成的 edf 文件经 MP2 编译后与用 MP2 综合及编译相比较, 占用资源较少 , 但在使用层次化设计中, 使用 Synplify Pro 综合顶层文件后得到的 edf 文件经 MP2 编译后与用 MP2 综合及编译该顶层文件相比较却大大的占用资源, 请问, 在使用 Synplify Pro 综合层次化设计中如何才能节省资源? 答:在使用软件做

45、优化时存在这样一个平衡关系: 资源利用率与速度的平衡. 资源利用率提高了, 也就是节省了资源, 但整个设计的性能可能会降低了. 同样尽力去优化系统性能, 提高速度, 那资源的利用也可能会增加. 当在使用层次化设计中, 如何来优化整体设计, 最关键的就是层次与模块的划分. 在划分层次和模块是有几点建议:1)以功能来划分;功能模块与层次的设计可以帮助你清楚的定义边界, 在模块框图中, Data paths、tri-state signals、 state machines、register blocks、large macrofunctions、memory elements、control bl

46、ocks 和一些重复使用的模块都具有其本身的自然边界. 2)划分模块时要尽量减少模块间的 IO 连接, 过多的 IO 接口会使系统变得复杂, 软件需要交叉布线, 降低性能和提高资源利用. 3)在可能的情况下, 尽可能多的给模块的输出加 Resister. 尽可能地优化模块的划分与接口, 是提高层次化设计性能的关键. 更详细的方法与建议, 可以参照我们的应用文档AN101. 40 以前的问题提到, 用 EPM7064LC68 进行编译, 会出现编译错误. 如果编译时, 让系统自动选择器件, 则选中的器件是 EPM7064SLC84, 编译通过. 我查遍手头的资料, 并没有发现后者有三个输出使能,

47、 这是怎么回事?望解答. 答:事实上在 MAX7000S 上有 6 个输出使能控制信号, 你可以在 MAX7000 的数据手册(M7000. PDF)第二页看到有这样的说明. Enhanced features available in MAX 7000E and MAX 7000S devices Six pin- or logic-driven output enable signals 41 在 FPGA 中是以何种形式实现 VHDL 的变量类型的? 答:There is no definite answer to this. It depends on how you write your codes. A variable in vhdl may be synthesized into a physical net, or it may not exist at all in the resulting circuit. 文:没有明确的答案. 它取决于所编写的代码. Vhdl 中的变量可能同步到物理网络中, 或者根本不可能存在于结果电路中. )42 在布线后生成的时序报告文件中, 可以看到延时的一些报告, 对于某条时序报告, 如何定位其对应的语句呢?特别是当完全使用语言方式输入时, 生成的网表中大量的为

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 重点行业资料库 > 1

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。