fpga课程设计-电压测量.doc_第1页
fpga课程设计-电压测量.doc_第2页
fpga课程设计-电压测量.doc_第3页
fpga课程设计-电压测量.doc_第4页
fpga课程设计-电压测量.doc_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

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

文档简介

西北工业大学课 程 设 计 报 告题 目: 电压测量 学 院: 班 级: 学生(学号): 学生(姓名): 学生(学号): 学生(姓名): 日期: 年 月 日摘 要 用FPGA开发板和 Verilog-HDL语言实现了学号循环显示以及电压测量这两个功能。其中学号循环显示在开发板的数码管上实现,数码管上呈现出两人学号后四位循环。电压测量通过开发板上LED小灯闪烁,电压在1v2v时LED1闪烁;电压在2v3v时LED2闪烁;电压在3v4v时LED3闪烁;电压在4v5v时LED4闪烁。与此同时,VGA屏幕显示准确电压测量值,误差0.1V。关键词: FPGA Verilog 学号循环显示 电压测量 VGA接口目 录一、 课程设计目的4 二、 设计任务与要求 5 三、方案设计与论证 6四、单元电路设计与参数计算 10 五、遇到问题的解决方法11 六、结论与心得12 七、参考文献13 八、附录(含代码)14题目:电压测量 一、课程设计目的1) 巩固和加深所学电子技术课程的基本知识,提高综合运用所学知识的能力;2) 培养学生根据课题需要选用参考书,查阅手册、图表和文献资料的能力,提高学生独立解决工程实际问题的能力;3) 通过设计方案的分析比较、设计计算、元件选择及电路安装调试等环节初步掌握单实用电路的工程设计方法;4) 提高学生的动手能力。掌握FPGA开发板以及Verilog的正确使用方法,学会对简单实用电路的实验调试和对整机指标的测试方法;5) 了解与课题有关的电路以及元器件的工程技术规范,能按课程设计任务书的要求编写设计说明书,能正确反映设计和实验成果。 二、设计任务与要求 一)任务: 1.显示学号 2.测量电压范围0-5V,误差0.1V 二)要求: 1. 采用数码管显示 循环显示2个人的学号后四位 2. 电压在1-2V: LED1 按1Hz闪烁 电压在2-3V: LED2 按1Hz闪烁 电压在3-4V: LED3 按1Hz闪烁 电压在4-5V: LED4 按1Hz闪烁 通过VGA显示测量结果三、方案设计与论证 一)学号循环显示设计方案该工程分为三个模块,分别是数码管译码模块、分频模块、学号循环显示模块。其中数码管译码模块的功能是将输入的整形变量译码成8位2进制数,8位二进制数分别对应七段数码管灯,不同的整形变量通过译码会点亮不同位置的灯(其中高电平1表示熄灭,低电平0表示点亮),从而显示不同的数字。分频模块是将50Mhz震荡频率通过计数法降低到频率为1hz的震荡信号。学号循环显示模块是通过检测震荡信号的上跳沿(分频后的)来控制输出两个不同的信号,周期为1S。并输出给数码管(通过数码管译码模块)。学号循环显示模块为主模块,它调用了分频模块与数码管译码模块。 二)电压测量显示设计方案该工程分为四个模块,分别是采集模块、数据转换模块、LED闪烁模块、VGA显示模块。1. 采集模块:通过PCF8591芯片将模拟电压信号转换成8位二进制数字信号。I2C 通信中只涉及两条信号线,即时钟线SCL和数据线SDA。时钟线的下降沿锁存数据。当时钟线SCL高电平时,如果把数据线SDA 从高电平拉到低电平,则表示通信开始;如果把数据线SDA 从低电平拉到高电平,则表示通信结束。该模块接口定义如下:信号名称方向描述clkInput时钟信号,50MHzrst_nInput复位信号,低电平有效renInput按键,低电平有效,进行读写操作scloutputPCF8591的时钟端口sdaInoutPCF8591的数字端口data_outoutput数据输出2. 数据转换模块:将PCF8591芯片对电压采集的8位二进制数字信号转化为两个4位二进制数字信号。3. LED闪烁模块:这个模块有三个输入信号,分别是clk(50MHz时钟信号),clr(复位信号)和Va3:0(表示高位的4位二进制数字信号)。有四个输出信号,分别为led0,led1,led2,led3(LED灯显示)。实现的功能是,当电压位于不同的区间时,所对应的led灯闪烁。当Va为12V,led0闪烁;当Va为23V,led1闪烁;当Va为34V,led2闪烁;当Va为45V,led3闪烁。4. VGA显示模块:其功能是通过程序逻辑设计实现对VGA屏幕的逐行逐列扫描,并定义了VGA上的有效显示区间并在有效区间上显示测量结果。FPGA是整个系统的核心,而VGA显示颜色则为本次课程设计的重点。通过Verilog可控制输出红、绿、蓝三基色信号和HS、VS行场扫描同步信号。当FPGA接受输出的控制信号后,内部的数据选择器模块根据控制信号选择相应的字符生成模块,输出字符信号,与行场扫描时序信号一起通过VGA接口电路送入显示器,VGA显示器上便可看到对应的测试结果。主时钟由外部提供,提供50MHz频率的时钟源。控制中,只需要考虑行同步信号(Hs)、场同步信号(Vs)以及红绿蓝(RGB)这5个信号。如果能从FPGA发出这5个信号到VGA接口,就可以实现对VGA的控制。通过对硬件进行编程,输出标准的VGA信号(红、绿、蓝三色信号和行、场同步信号),通过VGA接口输出至显示器,可具有显示驱动程序的能力,驱动显示器显示图像信号。板上的VGA接口只需使用其中的5个引脚,其中行、帧同步信号直接由FGPA输出;在硬件编程过程中,定义了三个颜色输出信号,通过定义二进制数来控制三个输出端输出与否,最后经由电阻网络D/A变换后输出值显示器。四、单元电路设计与参数计算1、数码管显示学号:50MHz信号时钟分频为1Hz学号循环显示数码管译码2、VGA显示用了五个进程实现VGA接口协议内容:1)使用分频器产生25MHz的脉冲信号2)行计数3)行同步4)场计数5)场同步五、遇到问题的解决方法1、在Verilog语言编译和实际应用中,这个问题着实困扰了我们很长时间,之前学习过C,VB等语言,主要通过VC6.0进行编译。众所周知,在VC6.0中集合的语言都为主流语言,突然接触一门新的,对我们来说比较陌生甚至偏门的语言让人很不适应,尤为特殊的是Verilog主要为了实现硬件功能,和上述其他语言还是有很大的不同。但是在花了一天时间看Verilog语法后,发现还是与通用语言有许多共通之处的,只不过是表示方法不同而已,比如说输出在C中是printf,在Verilog中却是output。在实际应用中,我们只需要写好正确并编译无误的程序并分配合适的管脚,实现功能还是相对简单的。总的来说,在初步入门之后,我们才发现Verilog的易读性和通用性有多强。2、遇到数码管显示时,显示学号的数字反向。因为编写代码时数码管译码高低位写反。3、VGA显示中,关于显示方面的知识之前完全没有接触过,也不知道显示原理什么的,书上讲的也比较少。但是在网上查资料与同学交流后,发现VGA显示的原理其实就是信号扫描,因此在定义了计数器后,我们将显示屏分成640*480的点阵,弄清楚VGA三原色即红绿蓝组成其他颜色的原理后,用2进制数进行控制,从而实现了显示三种颜色的任务要求。4、电压采集时,一开始对IIC协议并不是很了解,经过了查找资料和同学的交流,逐渐理解,数据采集的本质是将模拟信号转化成二进制数字信号最终通过编译显示出来的过程。六、结论与心得 虽然在数电实验课曾经对FPGA板子和Virelog语言有一些初步的了解,可是当题目给出时仍然手足无措,只有短短的一个多星期,我们做出了成果,此次课设收获颇丰。在数电实验课中,我们很少使用程序语言来进行开发,多半采用绘制电路图的简单方法,然而在多数复杂的项目中,我们必须使用程序语言进行硬件开发。此次课设中我们初步了解了硬件开发的过程以及硬件语言的使用,感受到了程序语言的简洁方便,也体会到Virelog语言比C语言在硬件开发方面更简便易懂,深深感受到了程序的功能强大。虽然刚开始设计开发时我们总是不断碰壁,无法看懂程序代码,无法缕清设计模块,甚至连PCF8591板如何连接如何采集也是一无所知,但是随着后来的查阅资料,咨询同学以及多次试验后我们渐渐感受到了课程设计的有趣之处,呆在实验室中用心钻研忘记吃饭互相探讨携手并进的时光仍令人怀念。当最后VGA屏幕上显示出我们的动态电压值时,那种激动的心情,是其他事情无法比拟的。课程设计注重知识与现实的结合,在此次课设中我们锻炼了动手能力,接触了课本以外的实体事物,了解到了数电的魅力。七、参考文献数字电路实验指导讲义(第二版),樊伟敏、祁才君编深入浅出玩转FPGA视频学习教程 附录(所编代码)一、学号循环显示module stu_num (clk,clr,led0,led1,led2,led3); input clk; /50MHzinput clr;output 7:0led0;output 7:0led1;output 7:0led2;output 7:0led3;reg7:0 led0;reg7:0 led1;reg7:0 led2;reg7:0 led3;reg25:0 cnt;reg1:0 num1;reg1:0 num2;always (posedge clk or negedge clr)beginif(!clr) beginnum1 = 2d0;cnt=25d0;endelse if(cnt=25h1ffffff)/225 device T=0.617beginnum2=num1;cnt=25d0;if(num12d2)num1=num1+1b1;else num1=2d0;end else cnt=cnt+1b1;endparameter a0=8b11111001, /数字1a1=8b10100100,/数字2a2=8b10110000, /数字3a3=8b10000000, /数字8a4=8b10010000; /数字9always (num2)begin case(num2)2d0: begin led3=a0; led2=a3; led1=a4; led0=a1;end2d1:begin led3=a0; led2=a3; led1=a4; led0=a2;endendcaseendendmodule二、电压采集module AD(clk, rst_n, ren, scl,sda,data_out);input clk,rst_n,ren;inout sda;output scl;output 7:0data_out;reg 7:0data_out;reg scl, sda; /I2C Serial BUSparameter fre=8d50; /T=1usreg 7:0 cnt;reg clk_in;/-reg 2:0start_check; /dismiss jitter of switch,get synchronizing signal start_enwire start_en;always(posedge clk or negedge rst_n)if(!rst_n) start_check=3d0;elsebegin start_check0=ren;start_check1=start_check0;start_check2=start_check1;end/en=1 assign start_en=start_check2&start_check1&start_check0;/-always(posedge clk ) /frequency divider,T(clk_in)=1us,used in I2C BUS if(start_en)begincnt1) begin clk_in=clk_in; end else if(cnt=fre) begin clk_in=clk_in;cnt=8d0; end end /*-I2C BUS to realize ADC of PCF8591 with 4 statesack=2b00 start()+write(AddrWr)/0x90ack=2b01 write(Control Byte) /0x02ack=2b10 start()+write(AddrRd)/0x91ack=2b10 Read(data) /data is the ADC output-*/reg 1:0ack;reg 7:0data,delay;reg temp;always(posedge clk_in or negedge rst_n)/1usif(!rst_n) begindelay=8d0;ack=2b00;endelsebegindelay =delay + 1b1;if(ack=2b00)case(delay)8d1 :sda=1;8d2 :scl=1; /scl=1;8d6 :sda=0;8d9 :scl=0;8d11:sda=1;/addwr h90 /18d15:scl=1;8d19:scl=0;8d21:sda=0; /0 8d25:scl=1;8d29:scl=0;8d31:sda=0; /0 8d35:scl=1;8d39:scl=0;8d41:sda=1; /18d45:scl=1; 8d49:scl=0; 8d51:sda=0; /08d55:scl=1;8d59:scl=0;8d61:sda=0; /08d65:scl=1;8d69:scl=0;8d71:sda=0; /08d75:scl=1;8d79:scl=0;8d81:sda=0; /08d85:scl=1;8d89:scl=0; /end8d91:sda=1bz;8d95:scl=1;8d98:temp100)/&(delay255)&(temp=0) begin ack=2b01; delay=8d0;scl=0; endendcaseelse if(ack=2b01)case(delay)8d2 :sda=0;/h02 control byte8d6 :scl=1;8d10:scl=0;8d12:sda=0; /08d16:scl=1;8d20:scl=0;8d22:sda=0; /08d26:scl=1;8d30:scl=0;8d32:sda=0; /08d36:scl=1; 8d40:scl=0; 8d42:sda=0; /08d46:scl=1;8d50:scl=0;8d52:sda=0; /08d56:scl=1;8d60:scl=0;8d62:sda=1; /18d66:scl=1;8d70:scl=0;8d72:sda=1; /08d76:scl=1;8d80:scl=0; /end8d82:sda=1bz;8d86:scl=1;8d89:temp90)/&(delay255)&(temp=0) begin ack=2b10; delay=8d0;scl=0; endendcaseelse if(ack=2b10)case(delay)8d1 :sda=1;8d2 :scl=1; /scl=1;8d6 :sda=0;8d9 :scl=0;8d11:sda=1;/addwr h91 /18d15:scl=1;8d19:scl=0;8d21:sda=0; /0 8d25:scl=1;8d29:scl=0;8d31:sda=0; /0 8d35:scl=1;8d39:scl=0;8d41:sda=1; /18d45:scl=1; 8d49:scl=0; 8d51:sda=0; /08d55:scl=1;8d59:scl=0;8d61:sda=0; /08d65:scl=1;8d69:scl=0;8d71:sda=0; /08d75:scl=1;8d79:scl=0;8d81:sda=1; /18d85:scl=1;8d89:scl=0; /end8d91:sda=1bz;8d95:scl=1;8d98:temp100)/ &(delay255)&(temp=0)begin ack=2b11; delay=8d0;/ sda=1bz;scl =1b0; endendcaseelse if(ack=2b11) /readADCcase(delay)8d1 :sda=1bz;8d3 :scl=1;8d5 :data7=sda;8d8 :scl=0;8d13:scl=1;8d15:data6=sda;8d18:scl=0;8d23:scl=1;8d25:data5=sda;8d28:scl=0;8d33:scl=1;8d35:data4=sda;8d38:scl=0;8d43:scl=1;8d45:data3=sda;8d48:scl=0;8d53:scl=1;8d55:data2=sda;8d58:scl=0;8d63:scl=1;8d65:data1=sda;8d68:scl=0;8d73:scl=1;8d75:data0=sda;8d78:scl=0;8d80:sda=0; /ack 8d83:scl=1;8d88:scl90) begin delay=8d0;sda=1bz; /data_out=data; ack=2b01; / xun huanack=2b11;data_out=data;endendcaseendendmodule三、数据转换LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY trans ISPORT(datain : IN STD_LOGIC_VECTOR(7 DOWNTO 0);q1, q2, q3, q4 : OUT STD_LOGIC_VECTOR(3 DOWNTO 0);END trans;ARCHITECTURE behave OF trans ISSIGNAL data0, data1 : STD_LOGIC_VECTOR(15 DOWNTO 0);SIGNAL sum1, sum2, sum3, sum4: STD_LOGIC_VECTOR(4 DOWNTO0);SIGNAL c1, c2, c3 : STD_LOGIC_VECTOR(4 DOWNTO 0);BEGINdata1 =0000000000000000 WHEN datain(7 DOWNTO 4)=0000 ELSE0000001100010100 WHEN datain(7 DOWNTO 4)=0001 ELSE0000011000100111 WHEN datain(7 DOWNTO 4)=0010 ELSE0000100101000001 WHEN datain(7 DOWNTO 4)=0011 ELSE0001001001010101 WHEN datain(7 DOWNTO 4)=0100 ELSE0001010101101001 WHEN datain(7 DOWNTO 4)=0101 ELSE0001100010000010 WHEN datain(7 DOWNTO 4)=0110 ELSE0010000110010110 WHEN datain(7 DOWNTO 4)=0111 ELSE0010010100010000 WHEN datain(7 DOWNTO 4)=1000 ELSE0010100000100100 WHEN datain(7 DOWNTO 4)=1001 ELSE0011000100110111 WHEN datain(7 DOWNTO 4)=1010 ELSE0011010001010001 WHEN datain(7 DOWNTO 4)=1011 ELSE0011011101100101 WHEN datain(7 DOWNTO 4)=1100 ELSE0100000001111000 WHEN datain(7 DOWNTO 4)=1101 ELSE0100001110010010 WHEN datain(7 DOWNTO 4)=1110 ELSE0100011100000110 WHEN datain(7 DOWNTO 4)=1111 ELSE0000000000000000;data0 =0000000000000000 WHEN datain(3 DOWNTO 0)=0000 ELSE0000000000100000 WHEN datain(3 DOWNTO 0)=0001 ELSE0000000000111001 WHEN datain(3 DOWNTO 0)=0010 ELSE0000000001011001 WHEN datain(3 DOWNTO 0)=0011 ELSE0000000001111000 WHEN datain(3 DOWNTO 0)=0100 ELSE0000000010011000 WHEN datain(3 DOWNTO 0)=0101 ELSE0000000100011000 WHEN datain(3 DOWNTO 0)=0110 ELSE0000000100110111 WHEN datain(3 DOWNTO 0)=0111 ELSE0000000101010111 WHEN datain(3 DOWNTO 0)=1000 ELSE0000000101110110 WHEN datain(3 DOWNTO 0)=1001 ELSE0000000110010110 WHEN datain(3 DOWNTO 0)=1010 ELSE0000001000010110 WHEN datain(3 DOWNTO 0)=1011 ELSE0000001000110101 WHEN datain(3 DOWNTO 0)=1100 ELSE0000001001010101 WHEN datain(3 DOWNTO 0)=1101 ELSE0000001001110101 WHEN datain(3 DOWNTO 0)=1110 ELSE0000001010000100 WHEN datain(3 DOWNTO 0)=1111 ELSE0000000000000000;sum1 =(0&data1(3 DOWNTO 0) + (0&data0(3 DOWNTO 0);c1 = 00000 WHEN sum1 01010 ELSE00001;sum2 =(0&data1(7 DOWNTO 4) + (0&data0(7 DOWNTO 4)+ c1;c2 = 00000 WHEN sum2 01010 ELSE00001;sum3 =(0&data1(11 DOWNTO 8) + (0&data0(11 DOWNTO 8)+ c2;c3 = 00000 WHEN sum3 01010 ELSE00001;sum4 =(0&data1(15 DOWNTO 12) + (0&data0(15 DOWNTO 12)+ c3;q1 = sum1(3 downto 0) WHEN sum1 01010 ELSEsum1(3 downto 0) + 0110;q2 = sum2(3 downto 0) WHEN sum2 01010 ELSEsum2(3 downto 0) + 0110;q3 = sum3(3 downto 0) WHEN sum3 01010 ELSEsum3(3 downto 0) + 0110;q4 = sum4(3 downto 0) WHEN sum4 01010 ELSEsum1(3 downto 0) + 0110;END behave;四、VGA显示模块 module vga(OSC_50,c,d,VGA_CLK,VGA_HS,VGA_VS,VGA_BLANK,VGA_SYNC,VGA_R,VGA_B,VGA_G);inputOSC_50,c,d;outputVGA_CLK,VGA_HS,VGA_VS,VGA_BLANK,VGA_SYNC;output9:0VGA_R,VGA_B,VGA_G;wire3:0 c;wire3:0 d; parameterH_FRONT = 16;parameterH_SYNC = 96;parameterH_BACK = 48;parameterH_ACT = 640;parameterH_BLANK = H_FRONT+H_SYNC+H_BACK;parameterH_TOTAL = H_FRONT+H_SYNC+H_BACK+H_ACT;parameterV_FRONT = 11;parameterV_SYNC = 2;parameterV_BACK = 31;parameterV_ACT = 480;parameterV_BLANK = V_FRONT+V_SYNC+V_BACK;parameterV_TOTAL = V_FRONT+V_SYNC+V_BACK+V_ACT;reg10:0H_Cont;reg10:0V_Cont;wire7:0VGA_R;wire7:0VGA_G;wire7:0VGA_B;regVGA_HS;regVGA_VS;reg10:0X;reg10:0Y;regCLK_25;always(posedge OSC_50)beginCLK_25=CLK_25;endassignVGA_SYNC = 1b0;assignVGA_BLANK = (H_ContH_BLANK)|(V_ContV_BLANK);assignVGA_CLK = CLK_to_DAC;assignCLK_to_DAC = CLK_25;always(posedge CLK_to_DAC)beginif(H_ContH_TOTAL)H_Cont=H_Cont+1b1;elseH_Cont=0;if(H_Cont=H_FRONT-1)VGA_HS=1b0;if(H_Cont=H_FRONT+H_SYNC-1)VGA_HS=H_BLANK)X=H_Cont-H_BLANK;elseX=0;endalways(posedge VGA_HS)beginif(V_ContV_TOTAL)V_Cont=V_Cont+1b1;elseV_Cont=0;if(V_Cont=V_FRONT-1)VGA_VS=1b0;if(V_Cont=V_FRONT+V_SYNC-1)VGA_VS=V_BLANK)Y=V_Cont-V_BLANK;elseY=0;endregvalid_yr;always(posedge CLK_to_DAC)if(V_Cont = 10d32)valid_yr=1b1;elseif(V_Cont=10d512) valid_yr=1b0;wirevalid_y=valid_yr;regvalid_r;always(posedge CLK_to_DAC)if(H_Cont = 10d32)&valid_y)valid_r=1b1;elseif(H_Cont=10d512)&valid_y) valid_r=1b0;wirevalid = valid_r;wire10:0x_dis;wire10:0y_dis;assignx_dis=X;assigny_dis=Y;reg 31:0char_line09:0;reg 31:0char_line19:0;reg 31:0char_line29:0;reg 31:0char_line39:0;reg 31:0char_line49:0;reg 31:0char_line59:0;reg 31:0char_line69:0;reg 31:0char_line79:0;reg 31:0char_line89:0;reg 31:0char_line99:0;reg 31:0char_line109:0;reg 31:0char_line119:0;reg 31:0char_line129:0;reg 31:0char_line139:0;reg 31:0char_line149:0;reg 31:0char_line159:0;reg 31:0char_line169:0;reg 31:0char_line179:0;reg 31:0char_line189:0;reg 31:0char_line199:0;reg 31:0char_line209:0;reg 31:0char_line219:0;reg 31:0char_line229:0;reg 31:0char_line239:0;reg 31:0char_line249:0;reg 31:0char_line259:0;reg 31:0char_line269:0;reg 31:0char_line279:0;reg 31:0char_line289:0;reg 31:0char_line299:0;reg 31:0char_line309:0;reg 31:0char_line319:0;wire 319:0line0; /第1行wire 319:0line1; /第2行wire 319:0line2; /第3行wire 319:0line3; /第4行wire 319:0line4; /第5行wire 319:0line5; /第6行wire 319:0line6; /第7行wire 319:0line7; /第8行wire 319:0line8; /第9行wire 319:0line9; /第10行wire 319:0line10; /第11行wire 319:0line11; /第12行wire 319:0line12; /第13行wire 319:0line13; /第14行wire 319:0line14; /第15行wire 319:0line15; /第16行wire 319:0line16; /第17行wire 319:0line17; /第18行wire 319:0line18; /第19行wire 319:0line19; /第20行wire 319:0line20; /第21行wire 319:0line21; /第22行wire 319:0line22; /第23行wire 319:0line23; /第24行wire 319:0line24; /第25行wire 319:0line25; /第26行wire 319:0line26; /第27行wire 319:0line27; /第28行wire 319:0line28; /第29行wire

温馨提示

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

评论

0/150

提交评论