收藏 分销(赏)

北京交通大学数电分析性学习报告集成电路EDA技术与可编程逻辑器件.doc

上传人:二*** 文档编号:4533414 上传时间:2024-09-27 格式:DOC 页数:40 大小:2.85MB 下载积分:5 金币
下载 相关 举报
北京交通大学数电分析性学习报告集成电路EDA技术与可编程逻辑器件.doc_第1页
第1页 / 共40页
本文档共40页,全文阅读请下载到手机保存,查看更方便
资源描述
. . 北 京 交 通 大 学 数字电子线路研究性学习(论文) 集成电路EDA技术与可编程逻辑器件 组员:: 学号: : 学号: 指导老师: 朱明强 二零一四年十二月 35 / 40 摘 要 本文通过介绍集成电路EDA技术以与可编程逻辑器件PLD来了解当前集成电路与PLD的发展。集成电路部分,我们介绍了传统设计方法和现代设计方法,然后系统的介绍了EDA技术。之后我们详细的介绍了可编程逻辑器件PLD的结构、分类、性能特点,以与对低密度和高密度PLD不同的设计方法。然后对国外大型的集成电路设计公司以与他们的产品进行了介绍。硬件的发展离不开软件平台的支持,文中对Max+plusⅡ设计平台的的特点进行了介绍。了解芯片上的文字信息也是一个学习集成电路技术的人必不可少的技能,文章的最后以FPGA为例,介绍了其片上信息的具体含义。 关键词:集成电路; 可编程逻辑器件; 公司介绍; Max+plusⅡ软件平台; FPGA片上信息 Abstract In this article, by introducing EDA technology of integrated circuits and programmable logic device PLD to understand the current integrated circuit, and the development of PLD. Integrated circuit part, we introduced the traditional design method and the modern design method, then the system of EDA technology is introduced. After our detailed introduces the programmable logic devices structure, classification and performance characteristics of PLD, and the design method of low density and high density PLD is different. Then the large integrated circuit design company at home and abroad are introduced and their products. The development of the hardware can't depart from the support of software platform, This paper the characteristics of design platform of Max + plus Ⅱ are introduced. Understand a text message on a chip is also a learning essential skills integrated circuit technology.The end of the article has the FPGA as the example, introduces the specific meaning of the information. Keywords:Integrated circuit; Programmable logic devices; Company introduction; The software platform; Information on the FPGA chip 目 录 摘要II ABSTRACTIII 1集成电路的设计方法1 1.1 传统数字系统设计方法1 1.2 现代数字系统设计方法1 1.3 EDA技术与现代数字系统设计流程1 2可编程逻辑器件3 2.1 可编程逻辑器件简介3 2.2 可编程逻辑器件PLD的基本结构3 2.3 可编程逻辑器件PLD的分类3 2.4 可编程逻辑器件PLD的性能特点6 2.5 可编程逻辑器件PLD的设计过程7 3当代集成电路设计公司9 3.1国集成电路设计公司简介9 3.2国外集成电路设计公司简介9 4可编程逻辑器件软件设计平台11 4.1Max+plusⅡ软件设计平台简介11 4.2Max+plusⅡ开发系统特点11 4.3Max+plusⅡ设计过程12 5FPGA片上文字信息分析13 6参考文献14 1 集成电路的设计方法 1.1 传统数字系统设计方法 传统的数字逻辑电路理论中,由真值表,卡诺图,逻辑方程,状态表与状态图来完成描述逻辑电路分功能。其特点是采用自下而上的设计方法,具体设计步骤为:分析设计要求,把用文字描述的设计要求抽象成输入、输出变量的逻辑关系,根据逻辑关系列出真值表描述,写出逻辑函数表达式,然后使用公式或卡诺图对真值表进行化简,得到最小的表达式,再根据化简结果画出电路原理图,制版实验,使用调试工具和仪器,对系统进行调试;若设计无误,则送制板厂制板,若有严重错误,则需修改设计,并重复实验。 按这样的过程设计产品,从根据设计目标得到真值表,到最后完成系统后的测试与调试,所有的工作均需人工完成。可以想象,随着数字集成电路的发展,从小规模集成电路(SSI)的小于10个逻辑门,到中规模集成电路(MSI)的几百个逻辑门,再到大规模集成电路的(LSI)几万门,最后甚至到超大规模集成电路(VLSI),甚大规模集成电路(ULSI)的几十万、几百万门电路,集成电路迅速的大规模化,使得传统设计方法根本无法完成得到真值表画出卡诺图等工作。而且,传统设计方法所用元件的种类和数量较多,一次性成功率低,开发周期长,系统可靠性差,体积和功耗较大,成本也高。由此可见,传统的集成电路设计方法效率极低。 1.2 现代数字系统设计方法 为了适应现代大规模和超大规模集成电路的设计,并使系统获得良好的性能和正确的结果,现代数字逻辑电路的设计通常采用从上至下(from top to down)的设计方法,这里的“上”就是指设计者从整个系统逻辑功能出发,进行最上层的系统设计;“至下”就是指按一定原则将全局系统划分为若干份子系统,逐级向下,再将每个子系统划分为若干个功能模块,模块还可以向下划分为子模块,直至可用基本模块实现。 如此一来,数字系统就被划分为控制电路和若干个受控电路的功能模块,相当于把一个复杂的系统设计工作化为了一个较小规模的时序电路和一些基本模块的问题,从而大大简化了设计难度,缩短了设计周期。 1.3 EDA技术与现代数字系统设计流程 EDA(电子设计自动化)技术是在计算机辅助设计技术(CAD)基础上发展起来的计算机软件系统,是指以计算机为工作平台,以EDA软件工具为开发环境,以硬件描述语言为设计语言,以可编程器件为实验载体,以专用集成电路、片上系统芯片为器件目标,以电子系统设计为应用方向的电子产品自动化设计过程。 现代数字系统从上至下的分层设计流程图如图1所示。每个层次上,大致都有描述、划分、综合、验证等四种工作。其中设计者只需利用图形输入或硬件描述语言VHDL完成系统描述,然后由计算机自动地完成逻辑编译、化简、分割、综合、优化、布局、布线和仿真,直至对于特定目标芯片的适配编译、逻辑映射和编程下载等工作。极提高了电路设计的效率和可操作性,减轻了设计者的劳动强度。 图 1 现代逻辑电路设计基本步骤 EDA设计过程是将传统的“电路设计——硬件搭试——调试焊接”模式变为“功能设计——软件模拟——编程下载”方式。利用EDA工具。电子设计师可以从概念、算法、协议等开始设计电子系统。大量工作可以通过计算机完成,并可以将电子产品从电路设计、性能分析到设计出IC版图或PCB版图的整个过程在计算机上自动处理完成。 2 可编程逻辑器件 2.1 可编程逻辑器件简介 在数字电子系统领域存在三种基本的器件类型:储存器,微处理器和逻辑器件。而逻辑器件是实现电路功能的核心组成部分。逻辑电路分为两大类型:固定逻辑器件和可编程逻辑器件。固定逻辑器件中的电路是在出厂前就设计好的,出厂后其功能是不可改变的。而可编程逻辑器件(PLD--Programmable Logic Device)的出现能够为使用者提供多种自行设计功能,特性,速度和电压特性的标准的器件。器件的功能不是固定不变的,而是可根据用户的需要而进行改变,即由编程的方法来确定器件的逻辑功能。 2.2 可编程逻辑器件PLD的基本结构 大多数典型的PLD器件是由二级组合网络构成的。通常第一级是“与”阵列;第二级是“或” 阵列。输入连接“与”阵列,在其中进行“与”逻辑组合,形成乘积项。然后乘积项转入“或” 阵列,在“或” 阵列中由不同的乘积项构成所要求的逻辑函数输出。 PLD基本结构框图如下: 图2 PLD基本结构框图 2.3 可编程逻辑器件PLD的分类 基于PLD与阵列和或阵列是否编程,可以分为三种基本类型:与阵列固定,或阵列可编程型。包括可编程只读存储器PROM和可擦除编程只读存储器EPROM;与阵列、或阵列均可编程。包括可编程逻辑阵列PLA;与阵列可编程,或阵列固定。包括可编程阵列逻辑PAL、通用列阵逻辑GAL和高密度可编程逻辑器件HDPLD。 1. 与阵列固定,或阵列可编程 代表器件是可编程只读存储器PROM,其结构为与阵列为全译码阵列,或阵列为可编程阵列。由于它以最小项为基础,因此在设计中无须对函数简化。能够较方便地实现多输入、多输出的组合逻辑电路。器件的规模将随着输入信号数量n的增加成2n指数级增长。因此PROM一般只用于数据存储器,不适于实现逻辑函数。4*2位PROM如图所示: 图3 4*2位PROM 2. 与或阵列均可编程 代表器件是可编程逻辑阵列PLA,由于它具有与阵列和或阵列均可编程的特点,在编程中,只要形成所需的乘积项,无关项不用构建。这样一来,大大减少了它的阵列规模。PLA与PROM相比,有效地提高了芯片利用率,缩小了体积。4*2PLA如图所示: 图44*2位PLA 3. 与阵列可编程,或阵列固定 代表器件是可编程阵列逻辑PAL和通用阵列逻辑GAL。这种结构中,或阵列固定若干个乘积项输出。为了满足不同用户的要求,PAL有各种不同的输出结构:如固定或门输出结构、带反馈的寄存器输出结构、异或型输出结构等。由于PAL工艺简单、速度快、功能多变,获得广泛接受。GAL基本上沿袭了PAL的结构。与PAL不同的是,GAL用可编程的输出逻辑宏单元OLMC代替了固定输出结构。用户可对OLMC自行组态,以构成不同的输出结构,因而GAL使用起来比PAL更灵活。PAL与GAL分别如图所示: 图5 PAL与GAL 图6 GAL16V8的结构图 基于PLD集成度,可将PLD分为低密度PLD和高密度PLD。低密度PLD主要包括PROM、PLA、PAL和GAL,高密度PLD主要包括复杂可编程逻辑器件CPLD和现场可编程门阵列FPGA。具体结果如下图: 图7 PLD分类结构图 复杂可编程逻辑器件CPLD与现场可编程门阵列FPGA都是一种用户可编程逻辑器件。它们是在PAL、GAL等逻辑器件的基础上发展起来的。同以往的PAL和GAL相比,FPGA/CPLD规模比较大,适合于时序、组合逻辑电路应用场合。编程方便、集成度高、开发周期短、速度快、价格合理等都是它的优点。 2.4 可编程逻辑器件PLD的性能特点 1. 减小系统体积:单片PLD有很高的密度,可容纳中小规模集成电路的几片到十几片。 2. 增强逻辑设计的灵活性:使用PLD器件设计的系统,可以不受标准系列器件在逻辑功能上的限制。 3. 缩短设计周期:由于可编程特性,用PLD设计一个系统所需时间比传统方式大为缩短。 4. 提高系统处理速度:用PLD与或两级结构实现任何逻辑功能,比用中小规模器件所需的逻辑级数少。这不仅简化了系统设计,而且减少了级间延迟,提高了系统的处理速度。 5. 提高系统处理速度:用PLD与或两级结构实现任何逻辑功能,比用中小规模器件所需的逻辑级数少。这不仅简化了系统设计,而且减少了级间延迟,提高了系统的处理速度。 6. 提高系统的可靠性:用PLD器件设计的系统减少了芯片数量和印制板面积,减少了相互间的连线,增加了平均寿命, 提高了抗干扰能力,从而提高了系统的可靠性。 7.某些PLD器件,如GAL器件或高密度可编程逻辑器件本身具有加密功能。设计者在设计时选中加密项,可编程逻辑器件就被加密,器件的逻辑功能无法被读取出来,有效的防止逻辑系统被抄袭。 2.5 可编程逻辑器件PLD的设计过程 1. 低密度PLD的设计过程 低密度PLD一般采用书面逻辑设计,将电路所需要实现的功能用状态转换图,状态转换表,真值表或逻辑方程等方式进行表达,然后根据整个电路的输入、输出端数以与所需要的各类门和触发器来选择能够满足设计要求的器件系列和型号。器件的选择上,除了对功能的的要求外,还应该考虑器件的引脚数,速度,功耗以与结构等特点。 2. 高密度PLD的设计过程 复杂的逻辑功能需要使用高密度PLD的编程来实现。由于功能的复杂,不能再使用传统的书面逻辑设计思路,而是采用“自顶向下(TOP-DOWN)”的设计方法。这里的“顶”指系统的功能,“向下”指将系统由小到大、由粗到细、由复杂变简单进行分解。自定向下的设计过程由四部分组成。如下图所示: 明确系统功能 确定总体方案 子系统具体实现 系统仿真实现 图8 Top-Down设计 第一步为明确系统功能,即对设计的系统的任务、要求、原理以与使用环境进行考虑,从而明确设计目标、确定系统功能,是一件至关重要的事。因为只有把它做好了,后面的设计工作才有意义,才有效率。 第二步为确定总体方案,在明确了设计目标、确定系统功能之后,接下来要做的工作就是根据系统功能确定出系统设计的总体方案。采用什么原理和方法来实现预定功能,是这一步中必须认真考虑的事。因为同一功能的系统有多种工作原理和实现方法可供选择,方案的优劣直接关系到所设计的整个数字系统的质量,所以必须周密思考、反复比较和慎重选择。总的原则是,所选择的方案既要能满足系统的要求,又要具有较高的性能价格比。 第三步为系统具体实现,在系统方案确定以后.再从结构上对系统进行逻辑划分,导出系统的结构框图。一般把系统从逻辑上划分为数据子系统和控制子系统两部分。然后,再将各自划分为多个子系统模块,各模块的输入、输出信号要明确。这些子系统就可以依据基础的数字设计确定具体电路实现。系统如果有控制算法也包括选择控制算法与实现。 第四步为系统仿真实现,在系统设计完成之后,最好先采用EDA软什对所设计的系统进行仿真后再用具体器件搭电路.以保证系统设计的正确性和可靠性。电路实现时,一般按自底向上的顺序进行。这样做不仅行利于单个电路的调试,而且也利于整个系统的联调。因此,严格地讲,数字系统的完整设计过程应该是“自顶向下设计。自底向上集成”。 3 数字电路设计实例——数字钟 3.1 设计任务与要求 (1) 设计一个数字钟。 (2) 用 2 个数码管分时显示小时、分钟、秒,用个位数码管上的OP 发光点表示小时。 (3) 数字钟采用 24进制计时。 (4) 可分别进行小时、分、秒的手动校正。 3.2 器件选择 EPM7128S、共阴极七段数码管、开关、电阻和电容。 3.3 程序设计过程 数字钟总体框图如图所示。 图9 数字钟设计框图 在程序设计中,本实例遵循了“从上向下”的设计思路,从整个系统的逻辑功能出发,进行上层的系统设计,与调用在下层设计的各种逻辑模块,从整体上对各个逻辑模块进行进行连接,从而达到整个系统逻辑功能的实现。电子钟的下层是各个不同功能的逻辑模块,包括分频器模块、控制信号产生模块、控制模块、译码显示电路模块、 防抖动模块。分频器模块即对GLK信号进行分频,得到需要的频率,做计数定时使用。控制信号产生模块产生对控制模块的控制信号,在不同的条件下,产生不同的控制信号,使控制电路的状态不同,包括对小时,分钟,秒的显示切换以与校正。译码显示模块即对输入的信号进行译码,驱动数码管显示数字。防抖动模块完成按键消抖的功能。上层通过对这几类下层模块的调用,建立起下层模块的相互关联,从而达到了电子时钟所需要的各类功能。上层以与下层具体程序如下: 3.4 VHDL程序设计 (1)上层模块 library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_arith.all; use ieee.std_logic_unsigned.all; entity whole is port(seechange : in std_logic; --看表/校表切换控制信号。 hourmins : in std_logic; --时/分/秒切换控制信号。 increase : in std_logic; --手动校表时钟信号。 clki : in std_logic; --时钟信号,1 MHz。 sel : out std_logic_vector(2 downto 1); --数码管片选信号。 seg : out std_logic_vector(7 downto 0) ); --数码管的驱动信号。 end; architecture behave of whole is signal seechangeo: std_logic; signal hourminso : std_logic; signal increaseo: std_logic; signal aclkf : std_logic; signal clk,clk_dis : std_logic; signal low,high : std_logic_vector(3 downto 0); signal n : std_logic; signal ap : std_logic; component kongjian_count --调用控制模块。 port(clk : in std_logic; n : in std_logic; hourmins : in std_logic; increase : in std_logic; low : out std_logic_vector(3 downto 0); high : out std_logic_vector(3 downto 0); p : out std_logic); end component; component divid --调用分频器模块。 port(clki: in std_logic; clk_dis,clk,clkf : out std_logic); end component; component control is --调用控制信号产生模块。 port(clk : in std_logic; seechange : in std_logic; n : out std_logic); end component; component display --调用译码显示模块。 port(clk_dis,p : in std_logic; low : in std_logic_vector(3 downto 0); high : in std_logic_vector(3 downto 0); sel : out std_logic_vector(2 downto 1); seg : out std_logic_vector(7 downto 0)); end component; component keyin --调用防抖动模块。 port(clk : in std_logic; keyin : in std_logic; keyout : out std_logic); end component; begin u1 : component keyin port map(aclkf,seechange,seechangeo); u2 : component keyin port map(aclkf,hourmins,hourminso); u3 : component keyin port map(aclkf,increase,increaseo); u4 : component divid port map(clki,clk_dis,clk,aclkf); u5 : component control port map(clk,seechangeo,n); u6 : component kongjian_count port map(clk,n,hourminso,increaseo,low,high,ap); u7 : component display port map(clk_dis,ap,low,high,sel,seg); end behave; (2)下层模块 ① 分频器模块 library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_arith.all; use ieee.std_logic_unsigned.all; entity divid is port(clki : in std_logic; --时钟信号,1 MHz。 clk_dis,clk,clkf : out std_logic); --显示、计时和防抖电路的输入时钟。 end; architecture d of divid is signal clk1,clk2,clk3,clk4,clk5,clk6 : std_logic; signal count1,count2,count3: std_logic_vector(4 downto 1); signal count4,count5,count6 : std_logic_vector(4 downto 1); begin process begin wait until clki=′1′; if count1(4 downto 1)="0100" then count1<="0000"; clk1<=not clk1; else count1<=count1+1; end if; end process; process begin wait until clk1=′1′; if count2(4 downto 1)="0100" then count2<="0000"; clk2<=not clk2; else count2<=count2+1; end if; end process; process begin wait until clk2=′1′; if count3(4 downto 1)="0100" then count3<="0000";clk3<=not clk3; else count3<=count3+1; end if; end process; process begin wait until clk3=′1′; if count4(4 downto 1)="0100" then count4<="0000";clk4<=not clk4; else count4<=count4+1; end if; end process; process begin wait until clk4=′1′; if count5(4 downto 1)="0100" then count5<="0000"; clk5<=not clk5; else count5<=count5+1; end if; end process; process begin wait until clk5=′1′; if count6(4 downto 1)="0100" then count6<="0000"; clk6<=not clk6; else count6<=count6+1; end if; end process; clk<=clk6; clk_dis<=clk4; clkf<=clk5; end d; ②控制信号产生模块 library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_arith.all; use ieee.std_logic_unsigned.all; entity control is port(clk : in std_logic; --计时时钟,1 Hz。 Seechange : in std_logic; --看表/校表切换控制信号。 n : out std_logic); --n 为看表/校表状态标志,n=′0′为看表状态;n=′1′为校表状态。 end; architecture c of control is type states1 is(t0,t1); signal state2 : states1; signal kz : std_logic; signal m : std_logic; begin process --本进程描述起始状态标志的产生。 begin wait until clk=′1′; kz<=′1′; end process; process(seechange) --本进程描述seechange 按键的控制。 begin if kz=′0′ then state2<=t0; elsif (seechange′event and seechange=′1′) then case state2 is when t0=>state2<=t1; when t1=>state2<=t0; end case; end if; end process; process(state2) --本进程描述状态标志信号的产生。 begin case state2 is when t0=>m<=′0′; --m=′0′为看表状态。 when t1=>m<=′1′; --m=′1′为校表状态。 end case; end process; n<=m; end c; ③控制模块 library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_arith.all; use ieee.std_logic_unsigned.all; entity kongjian_count is port(clk : in std_logic; --计时时钟信号,1 Hz。 n : in std_logic; --看表/校表状态标志。 hourmins : in std_logic; --时/分/秒切换控制信号。 increase : in std_logic; --手动校表时钟信号。。 low : out std_logic_vector(3 downto 0); --低位数码管显示信号。 high : out std_logic_vector(3 downto 0); --高位数码管显示信号。 p : out std_logic); --p 是显示小数点灯的控制标志。 end; architecture c of kongjian_count is signal ahour_h : std_logic_vector(3 downto 0); signal ahour_l : std_logic_vector(3 downto 0); signal amin_h : std_logic_vector(3 downto 0); signal amin_l : std_logic_vector(3 downto 0); signal asec_h : std_logic_vector(3 downto 0); signal asec_l : std_logic_vector(3 downto 0); signal alow : std_logic_vector(3 downto 0); signal ahigh : std_logic_vector(3 downto 0); type states is (s0,s1,s2); signal state : states; begin process(clk) begin wait until clk=′1′; if n=′0′ then -- n=′0′为看表,将自动计时。 asec_l<=asec_l + 1; if asec_l="1001" then asec_l<="0000"; asec_h<=asec_h + 1; if asec_h="0101" then asec_h<="0000"; amin_l<=amin_l + 1; if amin_l="1001" then amin_l<="0000"; amin_h<=amin_h + 1; if amin_h="0101" then amin_h<="0000"; ahour_l<=ahour_l + 1; if ahour_l="1001" then ahour_l<="0000"; ahour_h<=ahour_h + 1; elsif (ahour_h="0010" and ahour_l="0011") then ahour_h<="0000"; ahour_l<="0000"; end if; end if; end if; end if; end if; elsif(n=′1′ and increase=′1′)then case state is when s0=> ahour_l<=ahour_l+1; if ahour_l="1001" then ahour_l<="0000"; ahour_h<=ahour_h + 1; elsif (ahour_h="0010" and ahour_l="0011") then ahour_h<="0000"; ahour_l<="0000"; end if; when s1=> amin_l<=amin_l+1; if amin_l="1001" then amin_l<="0000"; amin_h<=amin_h+1; if (amin_h="0101" and amin_l="1001") then amin_h<="0000"; amin_l<="0000"; end if; end if; when s2=> asec_l<=asec_l + 1; if asec_l="1001" then asec_l<="0000"; asec_h<=asec_h + 1; if asec_h="0101" and asec_l<="1001" then asec_l<="0000"; asec_h<="0000"; end if; end if; end case; end if; if (state=s0) then --观看小时指示数。 alow<=ahour_l; ahigh<=ahour_h; p<=′1′; end if; if (state=s1) then --观看分钟指示数。 alow<=amin_l; ahigh<=amin_h; p<=′0′; end if; if (state=s2) then --观看秒针指示数。 alow<=asec_l; ahigh<=asec_h; p<=′0′; end if; end process; process(hourmins) --本进程描述时、分、秒三个状态转换。 begin if (hourmins′event and hourmins=′1′) then case state is when s0=> state<=s1; when s1=> state<=s2; when s2=> state<=s0; end case; end if; end process; low<=alow; high<=ahigh; end c; ④译码显示电路模块 library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_arith.all; use ieee.std_logic_unsigned.all; entity display is port(clk_dis : in std_logic; --时钟信号,100 Hz。 p : in std_logic; --小数点灯的控制信号。 Low : in std_logic_vector(3 downto 0); --低位数码管的信号。 high : in std_logic_vector(3 downto 0); --高位数码管的信号。 sel : out std_logic_vector(2 downto 1); --数码管片选信号。 seg : out std_logic_vector(7 downto 0) ); --数码管的驱动信号。 end; architecture d of display is signal num : std_logic_vector(3 downto 0); signal numlet : std_logic; signal segsig : std_logic_vector(7 downto 0); signal selsig : std_logic_vector(2 downto 1); signal ahigh : std_logic_vector(3 downto 0); signal alow : std_lo
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 教育专区 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服