基于FPGA的智能交通灯设计附VHDL语言程序

上传人:仙*** 文档编号:135077898 上传时间:2022-08-14 格式:DOC 页数:26 大小:4.89MB
收藏 版权申诉 举报 下载
基于FPGA的智能交通灯设计附VHDL语言程序_第1页
第1页 / 共26页
基于FPGA的智能交通灯设计附VHDL语言程序_第2页
第2页 / 共26页
基于FPGA的智能交通灯设计附VHDL语言程序_第3页
第3页 / 共26页
资源描述:

《基于FPGA的智能交通灯设计附VHDL语言程序》由会员分享,可在线阅读,更多相关《基于FPGA的智能交通灯设计附VHDL语言程序(26页珍藏版)》请在装配图网上搜索。

1、目录第一章 设计原理11.1 使用VHDL语言实现对FPGA器件的编程11.2 使用的设计工具11.2.1 硬件部分11.2.2 软件部分11.3 软件框图11.4 红绿灯拓展模块2第二章 程序设计及分析32.1 分频器器件的设计32.2 数码管显示驱动器件的设计32.3 顶层器件设计42.3.1 按键消抖42.3.2 数码管扫描显示52.3.3 24小时时钟52.3.4 改变时间设定62.3.5 交通灯主控程序7第三章 使用说明及实验结果83.1 使用说明83.2 实验结果9第四章 结论与体会12附录 程序源码13第一章 设计原理1.1 使用VHDL语言实现对FPGA器件的编程FPGA(Fi

2、eldProgrammable Gate Array),即现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。对于目前的FPGA器件,可以使用硬件描述语言(Verilog或VHDL)完成电路设计,可以经过简单的综合与布局,快速的烧录至 FPGA 上进行测试,是现代 IC设计验证的技术主流。这些可编辑元件可以被用来实现一些基本的逻辑门电路(比如AND、OR、XOR、NOT)或者更复杂一些的组合功能比如解码器或数学方程式。1.2 使用的

3、设计工具1.2.1 硬件部分 Cyclone ii是一款FPGA器件,于2004年由Altera公司推出。Cyclone II FPGA的成本比第一代Cyclone器件低30%,逻辑容量大了三倍多,同时具有丰富的I/O引脚。实验板采用EP2C5T144C8芯片并配有SDRAM芯片,时钟频率为50MHz。同时,实验板包含4个数码管以及5个按键,同时将丰富的I/O口用排针进行了引出。从系统资源以及运行速度的方面考虑,均足以完成智能交通灯的设计。1.2.2 软件部分Quartus II 是Altera公司的综合性PLD/FPGA开发软件,原理图、VHDL、VerilogHDL以及AHDL(Alter

4、a Hardware 支持Description Language)等多种设计输入形式,内嵌自有的综合器以及仿真器,可以完成从设计输入到硬件配置的完整PLD设计流程。VHDL语言是一种用于电路设计的高级语言。它在80年代的后期出现。具有设计灵活、支持广泛、易于修改、独立于器件的设计或工艺等优秀的特性。十分适合于对FPGA器件进行编程。1.3 软件框图本系统包含一个顶层以及两个子器件(分频器以及数码管显示驱动)。分频器将系统时钟分为1000Hz,1Hz等待信号供顶层程序使用。顶层包含了整个系统关键性控制逻辑,在接收到分频器时钟信号以及按键信号后,由不同的进程进行处理,同时不同的进程间通过标志位信

5、号进行通信。处理完成的信息将传递给LED直接输出红绿灯信号或数码管驱动器件进行进一步的处理后输出给数码管进行显示。图1.11.4 红绿灯拓展模块为了达到更好的人机交互效果,本系统将红绿灯在电路板上通过不同的颜色的LED进行实物化。模块原理图如下:图1.2PCB设计如下:图1.3第二章 程序设计及分析2.1 分频器器件的设计本系统将分频器单独设置为一个器件,目的是便于对时间倍率进行修改以及方便调用。具体思路如下:(以1ms为周期的输出信号为例)图2.12.2 数码管显示驱动器件的设计实验板的数码管为共阳连接,含有4个位选信号以及8个段选信号,通过控制位选及段选可以实现数码管的显示。该子器件的输入

6、信号为0-15的整数,输出为显示16进制相应字符的段选信号。程序主体采用case语句,对输入信号进行选择并相应的输出。图2.22.3 顶层器件设计2.3.1 按键消抖本系统对于按键采取了消抖的处理办法,可以有效的增加稳定性。消抖的实现原理基于计数器,当检测到有按键按下则开始计数,当计数达到设定值时给出按键按下的信号并执行相应功能,其中key5实现模式选择,其余按键实现对时间设定的更改。图2.32.3.2 数码管扫描显示实验板采用了四个共阳的数码管,若需要让每个数码管都显示不一样的内容,则需要对数码管进行扫描显示。本系统采用1000Hz的频率对数码管进行扫描显示,实际效果可以稳定的显示而不会出现

7、闪烁的现象。程序设计方面采用了两个process,分别对数码管位选进行扫描以及输入段选信号图2.4图2.52.3.3 24小时时钟为了实现白天与夜间的模式切换效果,需要加入24小时制的时钟。本系统对于时钟的实现依然基于计数器。具体流程如下:对分频器输出的分钟信号进行检测,当检测到上升沿时执行计数,当达到该位最大值时执行进位与清零。图2.62.3.4 改变时间设定本程序实现了对行人通行时间,汽车通行时间以及夜间时间段的设定。设定方式为由按键实现加减。主要代码已经内嵌于按键消抖程序中。图2.6图2.72.3.5 交通灯主控程序本程序实现了对白天夜间模式的判断以及不同模式下对红绿灯的控制。程序框图如

8、下:图2.8具体程序代码详见附录。第三章 使用说明及实验结果3.1 使用说明本系统基本实现了题目要求的所有功能。具备了白天、夜间模式的功能及其自动切换及其时间点设置,行人、汽车通行时间设置,24小时电子钟,通行时间倒数等功能。同时为了实现更好的人机交互以及获得更明显的实验效果,接入了专用的红绿灯模块并将电子时钟加快了1000倍,红绿灯计时器加快了10倍。具体使用方法如下:(1)初始值:系统上电后时钟初始值为0点。夜间时间初始值为22:00-8:00,行人通行时间,车辆通行时间初始值分别为15s,30s.(2)系统模式选择:数码管共用4种显示模式,可以通过key5(s6)对模式进行切换(上电后将

9、默认进入模式0)。同时,在不同模式下按键也具有不同的功能。模式0:电子时钟显示模式(为上电后的默认显示模式),左边两个数码管显示小时,右边两个数码管显示分钟。四个数码管共同构成当天系统时间(是白天、夜间的切换的基准时间)。模式1:通行剩余时间显示。右边两个数码管将显示红绿灯当前状态还将持续的剩余时间。当进入夜间模式且无行人通过时,数码管将显示-。模式2:行人,车辆通行时间设置模式。此模式下左边两个数码管显示车辆通行时间,右边两个数码管为行人通行时间。按下S2将使车辆通行时间+1s,按下S3将使车辆通行时间+1s。同样,S4与S5将分别控制行人通行时间的改变。模式3:夜间时间点设置模式。此模式下

10、左边两个数码管显示进入白天的时间点,右边两个数码管显示进入夜间的时间点(单位均为小时)。同样,此时S2、S3将控制进入白天时间点,S4、S6将控制进入夜间的时间点。(3)白天模式:当系统时钟为设定的白天区间内,交通灯将执行白天模式,此时人行道和车行道的红绿灯自动切换,人行道和车行道的通行时间分别为30秒和15秒。同时车行道的绿灯到红灯的切换有3秒过渡时间(亮黄灯)。(4)夜间模式:当系统时钟为设定的夜间区间内,交通灯将执行白天模式,无行人过马路时,车行道持续亮绿灯让车通行,直到有行人按过街按钮,才执行人、车通行的切换。行人按下按钮后延时30秒,切换到人行道通行15秒,然后切换到车通行。此后,若

11、无人按过街按钮,则保持车通行状态,若继续有人按下过街按钮,则执行人、车分别15秒和30秒的轮换通行。车行道的绿灯到红灯的切换有3秒过渡时间(亮黄灯),人行道则只有红、绿灯,且无过渡时间。3.2 实验结果具体实验结果可以扫描以下二维码观看。图3.1部分视频截图如下:图3.2图3.3图3.4图3.5图3.6图3.7图3.8第四章 结论与体会通过借助网络工具以及对书本的学习,本次成功的完成了智能交通灯的设计,并实现了题目要求的所有功能。但是过程中却不是很顺利,主要体现在按键的使用以及不同process间通过信号量进行通信等,特别是当使用较多信号进行参数传递时经常忽略信号量的值不能在两个process

12、中同时进行修改,而导致不能成功通过编译。另外对于编程的整体思路也与之前接触过的单片机大为不同,单片机的MCU只支持单个进程运行,需要加入各种中断处理后才可以做到宏观上的多进程并行运行,而FPGA则支持数个进程同时运行,大大的提高了代码运行速度的同时却导致了整体设计构思发生了较大的转变。另外,对于程序模块化的设计也有了较为初步的理解,通过模块化的方法可以使代码的可读性、可移值性均大大的提高,同时还十分便于修改,甚至由于可以实现模块化调用而大大缩减了代码量。总结:FPGA很强大,我学会了很多。附录 程序源码-By Hypo 20170520 交通灯主程序LIBRARY IEEE;USE IEEE.

13、STD_LOGIC_1164.ALL;ENTITY test ISPORT( key1,key2,key3,key4,key5,key6: IN STD_LOGIC;-按键输入 sysclk: IN STD_LOGIC;-时钟输入led_c_r,led_c_y,led_c_g,led_p_r,led_p_g: OUT STD_LOGIC;-led输出seg7data:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);-数码管位选seg7com: OUT STD_LOGIC_VECTOR(3 DOWNTO 0)-数码管段选);END test;ARCHITECTURE main

14、OF test ISCOMPONENT seg7led IS -数码管PORT (int_in: IN INTEGER RANGE 0 TO 16;data_out:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);END COMPONENT seg7led;COMPONENT clkdiv IS-分频器 PORT( clk_in:IN STD_LOGIC; -时钟信号输入 clk_out_ms:OUT STD_LOGIC; -毫秒信号输出 clk_out_s:OUT STD_LOGIC; -秒信号输出 clk_out_min:OUT STD_LOGIC; -分钟信号输出 cl

15、k_out_h:OUT STD_LOGIC; -时钟信号输出 clk_out_50ms : OUT STD_LOGIC ); END COMPONENT clkdiv;-数码管扫描SIGNAL tmp_seg7data :integer range 0 to 16;SIGNAL data_count_seg:integer range 0 to 10;-分频器输出SIGNAL tmp_sig_s,tmp_sig_ms,tmp_sig_min,tmp_sig_h,tmp_sig_50ms :STD_LOGIC;-分频器输出时钟信号-24小时时钟SIGNAL data_min_low:intege

16、r range 0 to 20;SIGNAL data_min_high:integer range 0 to 10;SIGNAL data_min:integer range 0 to 100;SIGNAL data_h_low:integer range 0 to 20;SIGNAL data_h_high:integer range 0 to 10;SIGNAL data_h:integer range 0 to 100;-数码管显示模式切换SIGNAL data_mode: integer range 0 to 10:=0;SIGNAL data_count_key:integer r

17、ange 0 to 100;-交通灯主控程序SIGNAL led_p :integer range 0 to 3;-车道灯SIGNAL led_c :integer range 0 to 3:=1;-人行道灯SIGNAL key_flag :integer range 0 to 1:=0;SIGNAL data_time_count:integer range 0 to 1000;-时间计数SIGNAL data_mode_led: integer range 0 to 10:=0;-红绿灯剩余时间显示-夜间模式初始化设置SIGNAL data_time_nightin: integer ra

18、nge 0 to 100:=22;SIGNAL data_time_nightout: integer range 0 to 100:=8;SIGNAL night :STD_LOGIC:=0;-红绿灯时间设置SIGNAL data_time_cp : integer range 0 to 100:=30;-车通行30秒SIGNAL data_time_pp : integer range 0 to 100:=15;-人通行15秒BEGINdiv: clkdiv PORT MAP ( -分频器clk_in = sysclk,clk_out_s = tmp_sig_s,clk_out_ms =

19、tmp_sig_ms,clk_out_min = tmp_sig_min,clk_out_h = tmp_sig_h,clk_out_50ms = tmp_sig_50ms);dis: seg7led PORT MAP ( -数码管int_in = tmp_seg7data,data_out = seg7data);-process(sysclk,key5) -按键5消抖+数码管模式选择(s6)variable COUNT1 :integer range 0 to 1000000; begin if key5=0 then if RISING_EDGE(sysclk) thenif COUNT

20、11000000 then COUNT1:=COUNT1+1; else COUNT1:=COUNT1;end if; if COUNT1=999999 then data_mode = data_mode+1;else data_mode = data_mode; end if; end if; else COUNT1:=0;END if; if(data_mode = 4)thendata_mode = 0;end if;end process ;-process(sysclk) -按键1 2 3 4消抖+改变设定时间(s2 s3 s4 s5)variable COUNT1 :intege

21、r range 0 to 1000000; beginif key1=0 or key2=0 or key3=0 or key4=0 then if rising_edge(sysclk) thenif COUNT11000000 then COUNT1:=COUNT1+1; else COUNT1:=COUNT1;end if; if COUNT1=999999 then if(key1=0)thenif(data_mode = 2)thendata_time_cp = data_time_cp+1;elsif(data_mode =3)thendata_time_nightout = da

22、ta_time_nightout+1;end if;end if; if(key2=0)thenif(data_mode = 2)thendata_time_cp = data_time_cp-1;elsif(data_mode =3)thendata_time_nightout = data_time_nightout-1;end if;end if;if(key3=0)thenif(data_mode = 2)thendata_time_pp = data_time_pp+1;elsif(data_mode =3)thendata_time_nightin = data_time_nigh

23、tin+1;end if;end if; if(key4=0)thenif(data_mode = 2)thendata_time_pp = data_time_pp-1;elsif(data_mode =3)thendata_time_nightin = data_time_nightin-1;end if;end if;end if; end if; else COUNT1:=0;end if; end process;-process(sysclk) -红绿灯点亮定义beginif(led_c = 0)thenled_c_r = 1;led_c_g =0;led_c_y =0;elsif

24、(led_c = 1)thenled_c_r =0;led_c_g =1;led_c_y =0;elseled_c_r =0;led_c_g =0;led_c_y =1;end if;if(led_p = 0)thenled_p_r = 1;led_p_g = 0;elseled_p_r = 0;led_p_g = 1;end if;end process;-process(sysclk) -红绿灯主控程序beginif rising_edge(tmp_sig_s)thendata_time_count=data_time_count+1;if(night=1)then-黑夜模式if(key_

25、flag=1)thenif(data_time_count=data_time_cp)thenled_p =0; -进入黄灯led_c =2;data_mode_led =3;end if;if(data_time_count=(data_time_cp+3)thenled_p =1; -行人通行led_c =0;data_mode_led =2;end if;if(data_time_count=(data_time_cp+3+data_time_pp)thenled_p =0; -车通行led_c =1;key_flag =0;data_time_count =0;data_mode_le

26、d = 0;end if;else led_p =0;led_c =1;data_mode_led = 0;end if;end if;if(night=0)then-白天模式if(data_time_count =data_time_cp)thenled_p =0; -进入黄灯led_c =2;data_mode_led =3;end if;if(data_time_count = (data_time_cp+3)thenled_p =1; -行人通行led_c =0;data_mode_led =(data_time_cp+3+data_time_pp) )thenled_p =0; -车

27、通行led_c =1;data_time_count =0;data_mode_led =1;end if;end if;end if;if(key6=0 and key_flag = 0)thendata_time_count = 0;data_mode_led =1;end if;if(key6=0)thenkey_flag =1;end if;end process;- process(tmp_sig_ms,data_count_seg) -生成数码管位选扫描beginif rising_edge(tmp_sig_ms) thendata_count_seg = data_count_s

28、eg+1;if(data_count_seg = 4) thendata_count_seg = 0;end if;end if;end process;-process(sysclk)-数码管扫描各模式显示样式beginif(data_mode = 0)then- -模式0,时钟显示if(data_count_seg = 0)then-位选扫描输入seg7com =0111;-位选tmp_seg7data = data_min_low;-段选elsif (data_count_seg = 1)thenseg7com =1011;tmp_seg7data = data_min_high;els

29、if (data_count_seg = 2)thenseg7com =1101;tmp_seg7data = data_h_low;elseseg7com =1110;tmp_seg7data = data_h_high;end if;elsif(data_mode = 1)then-模式1,红绿灯剩余时间显示if(data_mode_led = 0)then-夜间模式一直车走,显示-if(data_count_seg = 0)thenseg7com =0111;tmp_seg7data = 16; elsif (data_count_seg = 1)thenseg7com =1011;tm

30、p_seg7data = 16;elsif (data_count_seg = 2)thenseg7com =1101;tmp_seg7data = 16; elseseg7com =1110;tmp_seg7data = 16; end if;elsif(data_mode_led = 1)then-车通行剩余时间if(data_count_seg = 0)thenseg7com =0111;tmp_seg7data = (data_time_cp - data_time_count)rem 10; elsif (data_count_seg = 1)thenseg7com =1011;tm

31、p_seg7data = (data_time_cp - data_time_count)/ 10;elsif (data_count_seg = 2)thenseg7com =1101;tmp_seg7data = 16; elseseg7com =1110;tmp_seg7data = 16; end if;elsif(data_mode_led = 2)then-人通行剩余时间if(data_count_seg = 0)thenseg7com =0111;tmp_seg7data = (data_time_cp+3+data_time_pp) - data_time_count)rem

32、10; elsif (data_count_seg = 1)thenseg7com =1011;tmp_seg7data = (data_time_cp+3+data_time_pp) - data_time_count)/ 10;elsif (data_count_seg = 2)thenseg7com =1101;tmp_seg7data = 16; elseseg7com =1110;tmp_seg7data = 16;end if;else -黄灯则显示00if(data_count_seg = 0)thenseg7com =0111;tmp_seg7data = 0; elsif (

33、data_count_seg = 1)thenseg7com =1011;tmp_seg7data = 0;elsif (data_count_seg = 2)thenseg7com =1101;tmp_seg7data = 16; elseseg7com =1110;tmp_seg7data = 16;end if;end if;elsif(data_mode = 2)then-模式2,红绿灯时间显示if(data_count_seg = 0)thenseg7com =0111;tmp_seg7data = data_time_pp rem 10; elsif (data_count_seg

34、 = 1)thenseg7com =1011;tmp_seg7data = data_time_pp / 10; elsif (data_count_seg = 2)thenseg7com =1101;tmp_seg7data = data_time_cp rem 10; elseseg7com =1110;tmp_seg7data = data_time_cp /10; end if;else-模式3,白天黑夜设定时间显示if(data_count_seg = 0)thenseg7com =0111;tmp_seg7data = data_time_nightin rem 10; elsif

35、 (data_count_seg = 1)thenseg7com =1011;tmp_seg7data = data_time_nightin / 10; elsif (data_count_seg = 2)thenseg7com =1101;tmp_seg7data = data_time_nightout rem 10; elseseg7com =1110;tmp_seg7data = data_time_nightout / 10; end if;end if;end process;-process(sysclk) -24小时时钟计数 begin if rising_edge(tmp_

36、sig_min) then -输入信号为分钟,当分钟输入信号为上升沿时触发data_min_low=data_min_low+1; -开始计数if(data_min_low = 9)then -分钟低位达到最大值,执行进位data_min_low =0; -清零data_min_high=data_min_high+1;if(data_min_high = 5)then -满一小时进位给小时data_min_low =0; -清零data_min_high =0;data_h_low = data_h_low+1;data_h = data_h+1;if(data_h_low = 9 )the

37、n -小时低位满进位给小时高位data_min_low =0; -清零data_min_high =0;data_h_low =0;data_h_high =data_h_high+1;end if;end if; end if; end if;if(data_h = 24)then -满24小时,全部清零data_min_low =0;data_min_high =0;data_h_low =0;data_h_high =0;data_h = data_time_nightin or data_h data_time_nightout)then -白天黑夜判断night =1;elsenig

38、ht =0;end if;end process;-END main;-分频器器件-library ieee;USE ieee.std_logic_1164.all;ENTITY clkdiv IS PORT( clk_in:IN STD_LOGIC; -时钟信号输入 clk_out_ms:OUT STD_LOGIC; -时钟信号输出 clk_out_s:OUT STD_LOGIC; -时钟信号输出 clk_out_min:OUT STD_LOGIC; clk_out_h:OUT STD_LOGIC; clk_out_50ms : OUT STD_LOGIC ); end clkdiv;arc

39、hitecture div of clkdiv isSIGNAL data_ms:integer range 0 to 1000000;SIGNAL data_s:integer range 0 to 100000000;SIGNAL data_min:integer range 0 to 100;SIGNAL data_h:integer range 0 to 100;SIGNAL data_50ms:integer range 0 to 10000000;SIGNAL Q_ms,Q_s,Q_min,Q_h,Q_50ms:std_logic;beginprocess(clk_in) -1ms

40、 系统时钟输入begin if rising_edge(clk_in) then-当检测到时钟信号为上升沿时if(data_ms=25000) then -由计数器实现分频的功能, -由50M/(25000*2)得到信号翻转周期。-修改data_ms的判断值就可以实现不同的分频比 data_ms=0; Q_ms=not Q_ms; -对暂存状态量进行翻转else data_ms=data_ms+1;end if; end if;clk_out_ms=Q_ms; -将暂存量进行输出end process;process(clk_in) -50ms 当前输出为实际时间(最终没有用到) begin

41、if rising_edge(clk_in) then if(data_50ms=1250000) then -此句为你想要的分频比,in/out=data*2+1 ; data=(in/out -1)/2 data_50ms=0; Q_50ms=not Q_50ms; else data_50ms=data_50ms+1; end if; end if;clk_out_50ms=Q_50ms;end process;process(clk_in) -1s 已缩短10倍 begin if rising_edge(clk_in) thenif(data_s=2500000) then -data

42、_s=25000000正常 data_s=2500000时1s已经缩短10倍-data_s=250000时1s已经缩短100倍 data_s=0; Q_s=not Q_s; else data_s=data_s+1; end if; end if;clk_out_s=Q_s;end process;process(Q_ms) -1min 已缩短1000倍 begin if rising_edge(Q_ms) then if(data_min=30) then data_min=0; Q_min=not Q_min; else data_min=data_min+1; end if; end i

43、f;clk_out_min=Q_min;end process;process(Q_min) -1h 已经缩短1000倍(最终没有用到) begin if rising_edge(Q_min) then if(data_h=30) then data_h=0; Q_h=not Q_h; else data_h=data_h+1; end if; end if;clk_out_h data_out data_out data_out data_out data_out data_out data_out data_out data_out data_out data_out data_out data_out data_out data_out data_out data_out NULL;end case;end process;END example;25

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

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

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


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