VHDL语言的出租车计费器设计说明370.pdf

上传人:得** 文档编号:75416180 上传时间:2023-03-03 格式:PDF 页数:23 大小:752.48KB
返回 下载 相关 举报
VHDL语言的出租车计费器设计说明370.pdf_第1页
第1页 / 共23页
VHDL语言的出租车计费器设计说明370.pdf_第2页
第2页 / 共23页
点击查看更多>>
资源描述

《VHDL语言的出租车计费器设计说明370.pdf》由会员分享,可在线阅读,更多相关《VHDL语言的出租车计费器设计说明370.pdf(23页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、用 VHDL 语言设计出租车计价器 1 个报价 近年来,出租车行业发展迅速。全国有数千家出租车公司,出租车计价器市场巨大。随着电子科学技术的不断发展,特别是集成电路的飞速发展,电子设计自动化已经成为主要的设计手段。随着EDA 技术的蓬勃发展和 FPGA 等数字可编程器件的出现,数字出租车计价器的设计变得更加简单,性能更加稳定,可以实现更加复杂的功能。此外,利用 EDA 软件可以方便地在计算机上实现设计和仿真。本设计基于VHDL(FPGA)语言,是电子设计领域最具活力和前景的技术,未来必将取代一些过时的数字元件。1.1 课程设计的目的 随着电子技术的不断发展和进步,集成电路的设计方法也在不断更新

2、。今天,传统的手工设计过程已经被先进的电子设计自动化(EDA)工具所取代。只有基于硬件描述语言和逻辑综合的子项下的电路设计方法,才能满足集成电路系统设计日益复杂的要求,缩短设计周期,满足集成电路系统设计日益迫切的要求。在这种情况下,传统的出租车计价器的设计方法已经跟不上现在的节奏,过去的出租车计价器的功能也远远不能满足实际需要。以往出租车计价器的不稳定和功能短是大家开始寻找功能更强大、性能更稳定、价格更低廉的新型出租车计价器的缺点。大规模可编程逻辑器件和VHDL 硬件描述语言的出现使这一切成为可能。本设计的研究目标和意义是使用价格低廉、性能稳定、价格低廉、扩展性强的出租车计价器,满足当前出租车

3、市场的需求,从而解决当前出租车计价器存在的一系列问题。1.2 课程设计要求 1.它可以实现充电功能。收费标准为:按里程收费,起步费 10.00 元,车库 3 公里后再按 2 元/公里收费。计价器收费或超过一定收费(如 20 元)时,每公里收取车费的50%,车停止收费。2.实现预设功能:可以预设起步费,每公里收费,车行里程。3.实现模拟功能:可以模拟汽车的启动、停止、暂停、速度等状态。4.设计一个动态扫描电路:用两位小数显示票价。5.用 VHDL 语言设计一个满足上述功能要求的出租车计价器,并用层次化设计方法设计电路。6.通过功能仿真验证每个计数器的计数状态,通过相关波形确认电路设计是否正确。7

4、.所有电路设计完成后,通过下载系统实验箱验证设计的正确性。1.3 设计平台 MAX+plus是美国 Altera 公司的一款 EDA 软件,用于开发数字系统设计的 CPLD和 FPGA。2 应用工具介绍 EDA 技术作为目前最流行的计算机软件系统,它以计算机为基础,集成了应用电子技术、计算机技术、信息处理和智能技术的最新成果,进行电子产品的自动化设计。EDA 可以提供文本输入和图形编辑,以程序或图形的方式表达设计者的意图,而我们经常使用的VHDL是用来编写源程序的最常见的硬件描述语言(HDL)之一。2.1 EDA 技术简介 EDA 是电子设计自动化的缩写。它是在 20 世纪 90 年代初从计算

5、机辅助设计(CAD)、计算机辅助制造(CAM)、计算机辅助测试(CAT)和计算机辅助工程(CAE)的概念发展而来的。EDA 技术是在电子 CAD 技术基础上发展起来的计算机软件系统。它是指基于计算机的电子产品的自动设计,集成了应用电子技术、计算机技术、信息处理和智能技术的最新成果。EDA 技术是利用计算机作为工具。设计人员使用硬件描述语言HDL 在 EDA 软件平台上完成设计文件,然后计算机自动完成逻辑编译、化简、分割、综合、优化、布局、布线和仿真,直到针对特定目标芯片的自适应编译、逻辑映射和编程下载。典型的 EDA工具必须包含两个特殊的软件包,即合成器和适配器。合成器的功能是针对给定的硬件系

6、统组件,对设计者在EDA 平台上完成的一个系统项目的 HDL、原理图或状态图描述进行编译、优化、转换和合成,最终得到我们想要实现的功能的描述文件。合成器工作前,必须给出要实现的硬件结构参数。它的作用是以某种方式将软件描述与给定的硬件结构联系起来。换句话说,合成器是软件描述和硬件实现之间的桥梁。综合过程是将电路的高级语言描述转换成可与目标器件FPGA/CPLD映射的低级网表文件。今天,EDA 技术已经成为电子设计的通用工具。没有 EDA 工具的支持,很难设计芯片或系统。EDA 工具已经成为设计人员不可或缺的武器,发挥着越来越重要的作用。从目前的 EDA 技术来看,其发展趋势是政府重视,普遍使用,

7、应用广泛,工具多样,软件功能强大。EDA 技术发展迅速,可以用日新月异来形容。EDA 技术应用广泛,现在已经涉及到各行各业。EDA 水平不断提高,设计工具趋于完善。2.2 VHDL 语言简介 电子设计自动化(EDA)的关键技术之一是用形式化方法描述数字系统的硬件电路。VHDL 硬件描述语言在电子设计自动化中起着重要的作用,是 EDA 技术研究的重点之一。硬件描述语言是 EDA 技术的重要组成部分。VHDL 是电子设计的主流硬件描述语言。VHDL(超高速集成电路硬件描述语言)由美国国防部于 1983 年发起并创建,由 IEEE 进一步开发,并于 1987 年作为 IEEE 标准 10760 发布

8、。因此,VHDL 已经成为硬件描述语言的行业标准之一。VHDL 作为 IEEE 的行业标准硬件描述语言,得到了很多 EDA 公司的支持,成为电子工程领域事实上的通用硬件描述语言。VHDL 语言具有强大的电路描述和建模能力,可以从多个层次对数字系统进行建模和描述,从而大大简化了硬件设计的任务,提高了设计效率和可靠性。利用VHDL 语言,我们可以根据系统的总体要求,从上到下进行细化设计,最终完成系统硬件的总体设计。一个完整的VHDL 程序包括以下基本组件:实体、架构、包和库。其中,实体是 VHDL 程序的基本单位,由实体描述和结构组成。实体描述用于描述设计系统的外部接口信号。结构用于描述系统的行为

9、、系统数据流或系统的组织结构。包存储数据类型,常数,子程序等。可以由每个设计模块共享。库用于存储编译后的实体、机构、包和配置。VHDL语言编译环境有不同的版本。我们使用的是Altera公司的 Maxplus软件,其操作顺序如下:用 TEXTEDITOR 编写 VHDL 程序,用编译器编译 VHDL 程序;用WAVE2FORMEDITOR,SIMULAROT 模拟实验;TIMINGANALTZER 用于分析芯片的时序;使用FLOORPLANEDITOR 锁定芯片引脚位置;使用编程器将编译好的 VHDL 程序下载到芯片中。VHDL 在工程设计中的优势是显而易见的。1.与其他硬件描述语言相比,VHD

10、L 具有更强的行为描述能力,这使它成为系统设计领域中最好的硬件描述语言。2.VHDL 具有丰富的仿真语句和库函数,使得任何大型系统设计的前期都可以检查设计系统的功能可行性,随时可以对设计进行仿真。3.3.行为描述能力和程序结构。VHDL 语句决定了它具有支持大规模设计分解和现有设计重用的功能。一个满足市场需求的大系统的高效率、高速度的完成,只有多人甚至多代群体并行工作才能实现。4.对于用 VHDL 完成的确定性设计,可以使用 EDA 工具进行逻辑综合和优化,并且可以将 VHDL 描述设计自动转换为门级网表。5.VHDL 对设计的描述是相对独立的。设计者可以在不知道硬件结构和管理最终设计的目标器

11、件的情况下独立设计。6.用 VHDL 语言编写的源程序便于文档管理,用源代码的描述设计复杂的控制逻辑灵活方便,也便于设计结果的交换、保存和重用。3 设计原则 图 3.1 系统的顶层框图 计 价器 按 里 程计 费,每100 米开始计 费。每个 模 块 的功能如下:(1)车速控制模块 当 启停 键 处 于启 动 状 态速度选择 启动/停止开关 基本运费率 重置 扫描时钟 显示显示输出 机动车的速度 控制模块 计费动态显示 英里数 动态显示(高电平)时,模块根据车速选择和基本车速发出响应频率的脉冲,驱动计费器和里程显示模块计数;当处于停止状态时,脉冲停止,仪表和里程显示模块相应停止计数。(2)动态

12、里程显示模块 包括对车速控制模块发送的脉冲进行计数以动态显示计数显示,并对每个脉冲的里程值加 0.1(控制器发送的每个脉冲代表跑了0.1km)。(3)充电动态显示模块 它的初始值是10 元。当里程超过3km 时,由速度控制模块发送的脉冲驱动,计数显示动态显示。每一个脉冲(代表跑 0.5km),价值加 1 元,过路费超过 20 时,价值加1.5 元。4 个设计步骤 VHDL 设计流程图(如图 4.0 所示):图 4.0 VHDL 设计流程图 4.1 编程 VHDL 文本编辑 VHDL 文本编辑 FPGA/CPLD 适配器 FPGA/CPLD 编辑下载程序 极 高 密度 脂 蛋FPGA/CPLD器

13、件和电路系统 序列和功能模拟器 图 4.1 系统总体模块图 (1)模块 MS 的实现(如图 4.1.1 所示)图 4.1.1 模块质谱图 MS,输入口 CK0 和 CK1 是两个不同的时钟信号来模拟汽车的加速和匀速,JS 加速键。(2)sout 模块的实现(如图 4.1.2 所示)图 4.1.2 模块的 SOUT 图 该模块实现车库状态输出的功能,其中 clk 为时钟信号,enable 为启动使能信号,sto 为暂停信号,clr 为复位信号,st 为状态信号。(3)模块脉冲的实现(如图 4.1.3 所示)图 4.1.3 模块的脉冲图 该模块实现了时钟信号 5 分频的功能。(4)模块计数器结果的

14、验证(如图 4.1.4 所示)图 4.1.4 模块计数器图 实现汽车的模拟充电功能。Clr1 是复位信号,si 是状态信号,C1、C2 和 C3 是用于显示的三个电荷。(5)模块 SCAN_LED 的实现(如图 4.1.5 所示)图 4.1.5 模块的扫描 LED 图 该模块实现了显示票价的功能。BT 是位选择信号,SG 对信号进行解码。4.2 系统模拟:当难以对实际系统进行实验研究时,系统仿真是一个不可或缺的工具。它是指通过系统模型实验来研究现有的或设计的系统的过程。总的来说就是进行模型实验。因此,系统仿真的结果决定了整个课程设计任务的完成程度。程序输入后,会进行编译。编译完成后,就可以模拟

15、设计了。本课程设计的仿真平台是 MAX+plus。通过编译VHDL 源程序进行错误检测,得到一个波形文件(后缀。scf),添加输入输出变量,选择适用的芯片设置仿真结束时间,设置初始输入值进行仿真,得到仿真波形图:1.验证模块MS 的结果(如图 4.2.1所示)图 4.2.1 JS 为高电平时,根据 CLK1 输出 CLK _ OUT;在低电平时,根据 CLK0 输出。模块 SOUT 结果的验证(如图 4.2.2 所示)当使能电平为高电平时,CQI 计数将在时钟的每个上升沿增加 1。如果 CQI=30,州将被赋予 01,当 CQI =80 是 30 时,州将被赋予 10 个州,.;当 enabl

16、e 为低电平时,CQI 计数暂停并保持不变。图 4.2.2 3 模块脉冲结果的验证(如图 4.2.3 所示)在 CLK0 的每个上升沿,CNT 计数递增 1,当递增 4 时,在时钟的下一个上升沿被赋值为 0;当 cnt 不为 0 时,Fout 被指定为高电平,否则为低电平。图 4.2.3 4 模块计数器结果的验证(如图 4.2.4 所示)SI 为滑行状态信号:“00”表示收费值停止,Q1Q3 不变;“01”计费清零,设为起步价 10 元,Q2=1,Q3=0,Q1=0;“10”正常计费,每公里 1 元,“11”超过 20 元后每公里 1.5 元;Q1、Q2 和 Q3 的信号分别分配给 C1、C2

17、 和 C3。图 4.2.4 5 模块 SCAN_LED 结果的验证(如图 4.2.5 所示)BT 位选择和 SG 解码对应数字 0 9。图 4.2.5 6 模块滑行结果的验证(如图 4.2.6 所示)图 4.2.6 4.3 结果分析 出租车计价器系统的设计已经完成,可以模拟出租车的起步、停车、暂停等功能。根据预期效果,设计了动态扫描电路来显示票价数字,并由动态扫描电路来完成。汽车临时停车不收费,票价不变。如果停了,车费会被清零,等待下一次计费。出租车计价器系统的设计已经完成,可以模拟出租车的起步、停车、暂停等功能。根据预期效果,设计了动态扫描电路来显示票价数字,并由动态扫描电路来完成。汽车临时

18、停车不收费,票价不变。如果停了,车费会被清零,等待下一次计费。每个模块完成后,当它们组合成一个完整的滑行系统时,控制系统的纠错功能需要在设计过程中进行改进。出租车计费系统的设计体现了VHDL 覆盖面广、描述能力强的特点,是一种多层次的硬件描述语言,也体现了 PLD 器件速度快、易用、易修改的特点。该设计具有一定的实用价值。5 结束语 课程设计是对我们专业课程知识综合应用的实践训练,是我们步入社会、从事专业工作前的必经过程。千里之行始于足下。通过这次课程设计,我深刻体会到了这句名言的真谛。我今天认真的设计了课程,脚踏实地的学会了走这一步,就是为明天在社会大潮中稳健奔跑打下坚实的基础。通过这次实验

19、,我收获很大,加深了对书本的理论知识,初步掌握了 MAXPLUSII软件的一些设计和使用方法。对一些设备的使用有了更深入的了解,比如一些设备的使能端的功能。有一些实验感受如下。1、应该对实验原理有深刻的理解;2、做实验不能操之过急,看到别的同学做也不能失去冷静。3、还要掌握其他软件,如Matlab、Excel、Word等。4、你必须学会自己调试电路。一般第一次设计的电路都会编译失败,所以要学会调试电路,而不是等待老师的回答或者同学的帮助;致谢 经过三周的努力,我的课程设计终于完成了。在没有做课程设计之前,我觉得课程设计只是对这半年来所学知识的简单总结。但是,通过这次课程设计,我发现我的观点有点

20、太片面了。课程设计不仅是对之前知识的检验,更是对自己能力的提升。在这次课程设计中,我们同学之间的关系得到了进一步的改善。学生互相帮助。有不懂的地方可以一起讨论,听听不同的看法,更好的理解我们的知识。所以我觉得对这里的同学很有帮助。在这里,我想感受一下导师们的悉心指导和老师们对我们的帮助。在设计过程中,通过查阅大量相关资料,与同学交流经验和自己学习,咨询老师,学到了很多知识,经历了很多磨难,也收获了很多。参考 1辛炎,聂.EDA 技术实验与课程设计M。清华大学 2萧玉,方强,黄万宁。EDA 技术与 VHDL 电路开发及应用实践M。电子工业 3宋,黄,。EDA 技术实用教程(第三版)M。科学 4严

21、玲,纯等.MAX+PLUSII 平台下用 VHDL 进行数字电路设计.:西电,2005 5康主编。电子技术基础模拟部分。:高等教育,2006 年 6阎石,主编。数字电子技术基础。:高等教育,2003 年 附录 1:模块 MS 列表 /程序名:MS/程序功能:模块 MS,输入端口 CK0 和 CK1 是两个不同的时钟信号,模拟汽车的加速和匀速。JS 加速按钮。/程序金/最后修改日期:2010 年 12 月 31 日 图书馆 IEEE 使用 IEEE。STD_LOGIC_1164。所有;实体 MS 是 端口(CK0:在 STD_LOGIC中;/慢档时钟信号 CK1:在 STD_LOGIC中;/快档

22、时钟信号 JS:在 STD_LOGIC中;/Shift键信号 CLK _ OUT:OUT STD _ LOGIC);结束 MS;MS 的架构之一是 开始 流程(JS,CK0,CK1)开始 如果 JS=0 那么 CLK _ OUT =CK0;/JS 低,那就是慢。ELSE CLK _ OUT 0);/CLR 为低电平,CQI 清零。Elsclk 事件且 clk=1 则/clk 上升沿触发 如果 STO=1,则说明:=00;CQI:=CQI;/当/STO 为高电平时,状态赋为 00状态。ELSIF ENABLE=1 则/ENABLE 为高,CQI 计数加 1。CQI:=CQI+1;如果 CQI=3

23、0,则说明:=01;/当 CQI 30 岁,CQI=80 岁,则说明:=10;/当 30 CQI 80时,状态被赋值为11。结束 IF;结束 IF;结束 IF;ST =STATE 结束进程;结束一;附录 3:模块脉冲 /程序名:PULSE/程序功能:该模块实现时钟信号 5 分频的功能。/程序金/最后修改日期:2010 年 12 月 31 日 图书馆 IEEE 使用 IEEE。STD_LOGIC_1164。所有;使用 IEEE。STD_LOGIC_UNSIGNED 所有;实体脉冲是 端口(CLK0:在 STD_LOGIC 中;FOUT:OUT STD _ LOGIC);结束脉冲;建筑一脉相承的是

24、 开始 进程(CLK0)变量 CNT:STD _ LOGIC _ VECTOR(2 down to 0);变量 FULL:STD _ LOGIC;开始 如果 CLK0 事件和 CLK0=1 则 如果 CNT=100,则/CNT 计数为 5(“100”)CNT:=000;/CNT 被清除 满:=1;/全高电平 其他 CNT:=CNT+1;/否则,计数 CNT 加 1 完整:=0;/FULL 变为低电平。结束 IF;结束 IF;FOUT Q1:=Q1;Q2:=Q2;Q3:=Q3;当“01”=Q1:=“0000”;Q2:=0000;Q3:=0001;/起步价 10 元 当 10=如果 Q21001

25、那么 Q2:=Q2+1;其他 Q2:=0000;如果 Q3 如果 Q10101 那么 Q1:=Q1+5;其他 Q1:=0000;结束 IF;如果 Q1=0101 那么 如果 Q2“1001”那么 Q2:=Q2+1;其他 Q2:=0000;如果 Q3“1001”,则 Q3:=Q3+1;结束 IF;结束 IF;其他 如果 Q2“1001”那么 Q2:=Q2+2;其他 Q2:=0001;如果 Q3 NULL 结束案例;结束 IF;C1 =Q1;C2 =Q2;C3 =Q3;结束进程;结束一;附录 5:模块 SCAN_LED 的实现 /程序名:SCAN_LED/程序功能:该模块实现显示票价的功能。BT

26、是位选择信号,SG 解码该信号。/程序金/最后修改日期:2010 年 12 月 31 日 图书馆 IEEE 使用 IEEE。STD_LOGIC_1164。所有;使用 IEEE。STD_LOGIC_UNSIGNED 所有;实体扫描_LED 为 PORT(DI1:IN STD _ LOGIC _ VECTOR(3 down to 0);DI2:在 STD_LOGIC_VECTOR 中(3 下降到 0);DI3:在 STD_LOGIC_VECTOR 中(3 下降到 0);CLK2:在 STD_LOGIC 中;SG:OUT STD _ LOGIC _ VECTOR(6 down to 0);BT:OU

27、T STD _ LOGIC _ VECTOR(2 down to 0);END SCAN _ LED SCAN_LED 的架构之一是 信号 CNT4:STD_LOGIC_VECTOR(1 下降到 0);信号 A:STD_LOGIC_VECTOR(3 降 0);开始 P1:进程(CLK2)变量 SQ:STD_LOGIC_VECTOR(1 向下到 0);开始 如果“CLK2”事件和 clk 2=“1”,则 如果 SQ=10 那么 SQ:=00;/位选择信号,1-3 位周期 其他 SQ:=SQ+1;结束 IF;结束 IF;CNT4 BT =“001”时;A BT =010A BT =100A BT

28、=100 一个 NULL 结束案例;结束流程 P2;P3:进程(A)开始 一种情况是/根据 a 的值,显示 0 9。当 0000 =SG SG SG SG SG SG SG SG SG SG NULL 结束案例;结束流程 P3;结束一;附录 6:模块出租车 /程序名:TAXI/程序功能:这个模块是最后的顶层模块。/程序金/最后修改日期:2010 年 12 月 31 日 图书馆 IEEE 图书馆 IEEE 使用 IEEE。STD_LOGIC_1164。所有;实体出租车是 端口(T_CLK0:在 STD_LOGIC 中;T_CLK1:在 STD_LOGIC 中;T_CLK2:在 STD_LOGIC

29、 中;T_JS:在 STD_LOGIC 中;T_ENABLE:在 STD_LOGIC 中;T_CLR:在 STD_LOGIC 中;T_STO:在 STD_LOGIC 中;t _ BT:OUT STD _ LOGIC _ VECTOR(2 down to 0);t _ SG:OUT STD _ LOGIC _ VECTOR(6 down to 0);结束滑行;TAXI 的体系结构是/顶层模块设计 组件 MS 端口(CK0:在 STD_LOGIC 中;CK1:在 STD_LOGIC 中;JS:在 STD_LOGIC 中;CLK _ OUT:OUT STD _ LOGIC);末端组件;组件 SOUT

30、 端口(CLK:在 STD_LOGIC 中;启用:在 STD_LOGIC 中;STO:在 STD_LOGIC 中;CLR:在 STD_LOGIC 中;ST:OUT STD_LOGIC_VECTOR(1 向下到 0);末端组件;分量脉冲 端口(CLK0:在 STD_LOGIC 中;FOUT:OUT STD _ LOGIC);末端组件;组件计数器 端口(CLK 分区:在标准逻辑中;CLR1:在 STD_LOGIC 中;SI:在 STD_LOGIC_VECTOR 中(1 向下到 0);C1:OUT STD _ LOGIC _ VECTOR(3 down to 0);C2:OUT STD _ LOGI

31、C _ VECTOR(3 down to 0);C3:OUT STD _ LOGIC _ VECTOR(3 down to 0);末端组件;组件扫描_LED PORT(DI1:IN STD _ LOGIC _ VECTOR(3 down to 0);DI2:在 STD_LOGIC_VECTOR 中(3 下降到 0);DI3:在 STD_LOGIC_VECTOR 中(3 下降到 0);CLK2:在 STD_LOGIC 中;SG:OUT STD _ LOGIC _ VECTOR(6 down to 0);BT:OUT STD _ LOGIC _ VECTOR(2 down to 0);末端组件;信

32、号 L _ CLK:STD _逻辑;信号 L _ FOUT:STD _逻辑;信号 L_ST:STD_LOGIC_VECTOR(1 降 0);信号 L _ C1:STD _逻辑_向量(3 降 0);信号 L _ C2:STD _逻辑_向量(3 降 0);信号 L _ C3:STD _逻辑_向量(3 降 0);开始/组件实例化 U0:MS 端口映射(CK0=T_CLK0,CK1=T_CLK1,JS=T_JS,CLK _ OUT=L _ CLK);U1:SOUTPORT MAP(CLK=L_CLK,ENABLE=T_ENABLE,CLR=T_CLR,STO=T_STO,ST=L _ ST);U2:PULSEPORT MAP(CLK0=L_CLK,FOUT=L _ FOUT);U3:计数器端口映射(CLR1=T_CLR,SI=L_ST,CLK_DIV=L_FOUT,C3=L_C3,C2=L_C2,C1=L _ C1);U4:SCAN_LED 端口映射(CLK2=T_CLK2,DI3=L_C3,DI2=L_C2,DI1=L_C1,BT=T_BT,SG=T _ SG);结束结构;结束一;

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

当前位置:首页 > 应用文书 > 工作报告

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

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁