收藏 分销(赏)

基于VHDL硬件描述语言的篮球比赛计时器的设计与仿真.doc

上传人:仙人****88 文档编号:11207318 上传时间:2025-07-07 格式:DOC 页数:65 大小:3.17MB 下载积分:10 金币
下载 相关 举报
基于VHDL硬件描述语言的篮球比赛计时器的设计与仿真.doc_第1页
第1页 / 共65页
基于VHDL硬件描述语言的篮球比赛计时器的设计与仿真.doc_第2页
第2页 / 共65页


点击查看更多>>
资源描述
武汉工程大学邮电与信息工程学院毕业设计论文 武汉工程大学邮电与信息工程学院 毕业设计( 论 文 )说明书 论文题目 基于VHDL硬件描述语言的篮球比赛计时器的设计与仿真 学 号 学生姓名 专业班级 指导教师 总评成绩 年 月 日 - 2 - 摘 要 随着EDA技术的高速发展,VHDL硬件描述语言作为硬件电路设计的一种重要工具成为现代高科技社会的一个闪亮标志。VHDL发展的目的是为了将电子电路的设计和内部的含义用文件的方式存储起来,以便其他人能够轻易地了解电路的设计意义。这也就是说设计电路可以通过文子描述的方式完成设计工作,电子电路也可以当做文件一样来存储。VHDL主要用于描述数字系统的结构,行为,功能和接口。除了含有许多具有硬件特征的语句外,VHDL的语言形式和描述风格与句法是十分类似于一般的计算机高级语言。 本文讲述了基于VHDL硬件描述语言的篮球比赛计时器的基本原理,组成与设计,程序的编译,与MAX+plus II软件的仿真等相关技术。首先把计时器的设计分为顶层和底层两部分,在底层中划分多个模块并分别进行程序设计,最后运用MAX+plus II软件进行仿真调试。 关键词:VHDL 篮球比赛计时器 模块 MAX+plus II仿真 - 11 - Abstract With the rapid development of EDA technology, VHDL hardware description language hardware circuit design as an important tool for modern high-tech society has become a shining symbol. VHDL is designed for the development of electronic circuit design and the meaning of the internal use of papers stored so that other people can easily understand the meaning of circuit design. That is to say the design of the circuit can be described by way of sub-text to complete the design work, the electronic circuit can also be the same as a file to store. VHDL description of digital systems primarily for the structure, behavior, functions and interfaces. In addition to containing many features of the statement outside the hardware, VHDL description of the language forms and style and syntax are very similar to the general high-level language computer. This thesis describes VHDL hardware description language based on the basketball game timer basic principles, composition and design, procedures for compiling, with the MAX + plus II simulation software and other related technologies. First of all, the design of the timer into the top and the bottom two parts, divided at the bottom in a number of modules and procedures were designed, and finally the use of MAX + plus II simulation software debugging. Key words:VHDL basketball game timer module MAX+plus II simulation 目 录 1. 前 言 - 1 - 2. 设计思想及原理 - 2 - 3. 按键输入模块的设计 - 5 - 3.1 设计思想 - 5 - 3.2 程序及仿真 - 5 - 4. 时钟分频模块的设计 - 8 - 4.1 设计思想 - 8 - 4.2 程序及仿真 - 8 - 5. 计时器控制模块的设计 - 13 - 5.1设计思想 - 13 - 5.2 程序及仿真 - 13 - 6. 计时模块的设计 - 16 - 6.1设计思想 - 16 - 6.2 程序及仿真 - 16 - 7. 显示模块的设计 - 24 - 7.1 设计思想 - 24 - 7.2 程序及仿真 - 26 - 8. 顶层设计 - 35 - 8.1模块综合 - 35 - 8.2 全电路仿真 - 35 - 9. 结束语 - 40 - 参考文献 - 41 - 附录1 - 42 - 附录2 - 43 - 附录3 - 45 - 附录4 - 46 - 附录5 - 49 - 1. 前 言 随着EDA技术的高速发展,VHDL硬件描述语言作为硬件电路设计的一种重要工具成为现代高科技社会的一个闪亮标志。VHDL发展的目的是为了将电子电路的设计和内部的含义用文件的方式存储起来,以便其他人能够轻易地了解电路的设计意义。这也就是说设计电路可以通过文子描述的方式完成设计工作,电子电路也可以当做文件一样来存储。VHDL主要用于描述数字系统的结构,行为,功能和接口。除了含有许多具有硬件特征的语句外,VHDL的语言形式和描述风格与句法是十分类似于一般的计算机高级语言。 VHDL主要用于描述数字系统的结构,行为,功能和接口。除了含有许多具有硬件特征的语句外,VHDL的语言形式和描述风格与句法是十分类似于一般的计算机高级语言。VHDL的程序结构特点是将一项工程设计,或称设计实体(可以是一个元件,一个电路模块或一个系统)分成外部(或称可是部分,及端口)和内部(或称不可视部分),既涉及实体的内部功能和算法完成部分。在对一个设计实体定义了外部界面后,一旦其内部开发完成后,其他的设计就可以直接调用这个实体。这种将设计实体分成内外部分的概念是VHDL系统设计的基本点。 本文说要的是如何通过VHDL硬件描述语言来设计简易的篮球比赛计时器。 2. 设计思想及原理 一般的,篮球比赛计时器采用数字电路系统,计时器内部电路使用通用的集成逻辑器件设计,通过LED显示器直观的显示给比赛场中的所有人,而这种方法设计复杂,工序繁琐,器件较多,体积较大。采用可编程逻辑器件设计的数字系统体积小,功耗低,可靠性高而且易于修改,而VHDL硬件描述语言作为可编程逻辑器件的基本工具,用户只需通过计算机和开发工具,将所设计的电路或系统用VHDL编程并下载到可编程逻辑芯片上就完成了系统的功能设计。因此,使用VHDL硬件描述语言对篮球比赛计时器的电路进行设计是一种更快速,便捷的方法,也是当今社会数字电路设计的主流选择。 篮球比赛计时系统的设计内容如下: ⑴ 采用6个LED七段显示器,1个启动/暂停键,1个复位键。 ⑵ 计时器的计时最长为20分钟,精确到0.01秒,以倒计时的方式计时到0,计时到0时重新计时。 ⑶ 计时期间可以任意暂停,复位。 篮球比赛计时系统的VHDL程序设计如下: ①底层设计 按键输入模块:消除按键的弹跳抖动 时钟分频模块:将外部时钟信号进行分频给计时器各个模块 篮球比赛计时器控制模块:产生用于控制比赛计时器的使能信号 比赛时间计时模块:20分钟倒计时计数 显示模块:将计时效果通过LED七段显示器显示出来 ②顶层设计 各模块综合 根据篮球比赛计时系统的设计要求,工作原理和基本设计方案,它的设计系统结构框图如下图2-1所示: 图2-1 篮球比赛计时器的系统结构框图 根据设计系统结构框图,可以看出系统的输入输出信号包括: 外部时钟信号clk:输入信号; 比赛时间复位开关信号reset:输入信号; 启/停开关信号on_off:输入信号; LED七段显示数码管的选通信号choose[7:0]:输出信号; LED七段显示数码管的输出信号segment[6:0]:输出信号; 给出设计的系统结构框图后,接下来的工作就是进行系统的模块划分以及确定这些模块之间的连接关系。 因为计时系统的复位开关和启/停开关采用按键的输入方式,其产生时刻和持续时间的长短是随机不定的,且存在因开关簧片反弹引起的电平抖动现象,因此必须在每个开关后面安排一个消抖和同步化电路模块,以保证系统能捕捉到输入脉冲,并保证每按一键,只形成一个宽度为系统时钟周期的脉冲。 由于外部时钟信号clk的频率为1000HZ,而实际需要的内部计时时钟频率为100HZ,提供给消抖同步电路的频率为25HZ,因此需要一个时钟分频电路,通过这个分频电路,对外部时钟信号clk进行分频操作,用来产生所需的时钟信号。 计时操作是在复位开关信号无效,并且两次启/停开关信号有效之间才能够进行的,因此需要一个电路用来产生使能信号。只有当这个使能信号有效时,系统才能进行计时操作。 系统还要将计时的结果显示出来,为了节省资源,这里采用循环点亮LED七段显示数码管的方法来显示秒表的计时输出。通过choose(5 DOWNTO 0)来进行6个LED七段显示数码管的选择,从而将输出信号segment(6 DOWNTO 0)送到相应的LED七段显示数码管上已完成计时的显示。 通过上面的说明,可以将篮球比赛计时器划分为5个模块:按键输入模块,时钟分频模块,计时器控制模块,计时模块,显示模块。根据系统的工作原理,可以给出系统的各个模块之间的具体连接关系,如图2-2所示。 图2-2 系统各个模块的连接关系图 3. 按键输入模块的设计 3.1 设计思想 由于系统的复位开关和启/停开关采用按键的输入方式,其产生时刻和持续时间的长短是随机不定的,且存在因开关簧片反弹引起的电平抖动现象,因此必须在每个开关后面加一个按键输入模块,即同步消抖电路。按键输入模块的作用是保证系统能捕捉到输入脉冲,并保证每按一次键,只形成一个宽度为模块时钟周期的脉冲。 按键输入模块的工作原理是:每按一下复位开关reset,按键输入模块将输出一个宽度为1ms的复位脉冲reset0;每按一下启/停开关on_off,按键输入模块将输出一个宽度为1ms的启/停脉冲on_off0。 图3.1-1给出了按键输入模块中输入信号reset和输出信号reset0之间的定时关系。 图3.1-1 按键输入模块中的定时关系 通过图3.1-1所示的定时关系可以看出:状态控制信号reset_temp1是复位信号reset在时钟信号clk0的下降沿进行锁存的锁存信号,状态控制信号reset_temp2是状态控制信号reset_temp1在时钟信号clk0的下降沿进行锁存的锁存信号,控制信号reset_temp3是状态控制信号reset_temp2的反相信号,复位脉冲就是时钟信号clk0,控制信号reset_temp1,控制信号reset_temp3的逻辑与。 3.2 程序及仿真 根据图3所示的定时关系,下面给出按键输入模块的部分VHDL设计程序,完整的程序见附录1。 USE定义部分: LIBRARY IEEE; --标准定义库 USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; --引用IEEE中 STD_LOGIC_1164,STD_LOGIC_ARITH,STD_LOGIC_UNSIGNED的全部定义 实体部分: ENTITY keyin IS PORT(reset : IN STD_LOGIC; --复位键输入信号 on_off : IN STD_LOGIC; --启停键输入信号 clk : IN STD_LOGIC; --时钟输入信号 clk0 : IN STD_LOGIC; --按键输入模块的时钟信号 reset0 : OUT STD_LOGIC; --消抖后的复位信号 on_off0 : OUT STD_LOGIC); --消抖后的启停信号 END keyin; 结构体部分: ARCHITECTURE rtl OF keyin IS SIGNAL reset_temp1 : STD_LOGIC; SIGNAL reset_temp2 : STD_LOGIC; SIGNAL reset_temp3 : STD_LOGIC; --复位信号的三种状态 SIGNAL on_off_temp1 : STD_LOGIC; SIGNAL on_off_temp2 : STD_LOGIC; SIGNAL on_off_temp3 : STD_LOGIC; --启停信号的三种状态 . . . . . . PROCESS (clk) --进程语句,有时钟信号变化时执行 BEGIN IF(clk’event AND clk =’1’)THEN --时钟上升沿有效 reset0<= clk0 AND reset_temp1 AND reset_temp3; on_off0<= clk0 AND on_off_temp1 AND on_off_temp3; --三种信号逻辑与 END IF; END PROCESS; END rtl; 按键输入模块的仿真图如下: 图3.2-1 按键输入模块的仿真图 可以看出,图3.2-1所示仿真波形的定时关系与图3.所示的定时关系是相同的。通过图4.可以看出复位脉冲reset0和启/停脉冲on_off的宽度为一个clk时钟周期,通过上面的仿真操作,验证了VHDL设计程序的正确性。 4. 时钟分频模块的设计 4.1 设计思想 时钟分频模块的功能是将输入的外部时钟信号clk进行分频,从而产生用来消除抖动的25HZ时钟信号clk0和用于计时的1HZ的时钟信号clk1。外部的时钟信号clk经过10次分频后可以得到100HZ的时钟信号clk1,再进行4次分频就可以得到25HZ的时钟信号clk0, 4.2 程序及仿真 下面给出10分频电路和4分频电路的VHDL设计程序 10分频电路的部分VHDL设计程序,完整程序见附录2 结构体部分: ARCHITECTURE rtl OF clk_div10 IS SIGNAL count : STD_LOGIC_VECTOR(3 DOWNTO 0); --定义一个计数信号 BEGIN PROCESS(clk) BEGIN IF(clk’event AND clk = ‘1’)THEN IF(reset = ‘1’)THEN count <= (OTHERS => ‘0’); --当复位信号有效时,计数清0 ELSIF(count = “1001”)THEN count <=(OTHERS => ‘0’); ELSE count <= count + 1; --当复位信号无效时,技术到9复位到0开始 END IF; END IF; END PROCESS; PROCESS(clk) BEGIN IF(clk’event AND clk = ‘1’)THEN IF(count = “1001”)THEN clk_div <= ‘1’; --当计数到1001时,clk_div输出为1 ELSE clk_div <= ‘0’; ……. 10分频电路的仿真图如下: 图4.2-1 10分频电路的仿真图 由图4.2-1的仿真图可以看出clk_div的频率是clk的十分之一,证明程序正确。 4分频电路的部分VHDL设计程序,完整程序见附录2,其程序与10分频电路类似,下面给出与10分频电路不同的地方: 结构体部分: …… PROCESS(clk) BEGIN IF(clk’event AND clk = ‘1’)THEN IF(count = “11”)THEN clk_div <= ‘1’; --当计数到11时clk_div输出1 ELSE clk_div <= ‘0’; END IF; END IF; END PROCESS; END rtl; 4分频电路的仿真图如下: 图4.2-2 4分频电路的仿真 由图4.2-2的仿真图可以看出clk_div的频率是clk的四分之一,证明程序正确。 时钟分频模块设计时,只需采用元件调用语句将上文中已设计保存的10分频与4分频的程序进行调用。 时钟分频模块的部分VHDL设计程序如下,完整程序见附录2 实体部分: ENTITY clk_div IS PORT(clk : IN STD_LOGIC; --时钟输入信号 clk0 : IN STD_LOGIC; --按键输入模块的时钟信号 clk1 : OUT STD_LOGIC); --计时以及控制模块的时钟信号 END clk_div; 结构体部分: ARCHITECTURE rtl OF clk_div IS COMPONENT clk_div10 PORT(clk : IN STD_LOGIC; reset : IN STD_LOGIC; clk_div : OUT STD_LOGIC); END COMPONENT; COMPONENT clk_div4 PORT(clk : IN STD_LOGIC; reset : IN STD_LOGIC; clk_div : OUT STD_LOGIC); END COMPONENT; SIGNAL clk0_temp : STD_LOGIC; SIGNAL clk1_temp : STD_LOGIC; BEGIN U0 : clk_div10 PORT MAP(clk , clk1_temp); --对10分频程序进行元件调用 U1 : clk_div4 PORT MAP(clk1_temp , clk0_temp); --对4分频程序进行元件调用 clk0 <= clk1_temp AND clk0_temp; --将10分频和4分频进行级联,得到25HZ时钟信号 clk1 <= clk1_temp; END rtl; 时钟分频模块的仿真图如下: 图4.2-3 时钟分频模块的仿真图 由图4.2-3的仿真图可以看出,clk1,clk0的频率分别是输入时钟信号clk频率的十分之一和四十分之一,从而证明程序的正确性。 5.计时器控制模块的设计 5.1设计思想 计时器控制模块的功能是用来产生计时器内部比赛时间定时计数的计数允许信号en。当复位信号reset0有效时,计数允许信号en无效;当复位信号reset0无效时,且去除抖动后的启/停信号on_off0有效时,计数允许信号en开始有效,直到下一次启/停信号on_off0有效时变成无效。 这里定义一个“乒乓信号”,它的作用是在启/停信号on_off0有效时进行一次反向操作,然后以这个信号作为选通信号,从而得到计数允许信号en。图5.1-1给出了上述信号的具体时序关系,其中信号strobe就是定义的“乒乓信号”。 图5.1-1 比赛时间控制模块中的时序关系 5.2 程序及仿真 计时器控制模块的部分VHDL设计程序如下,完整程序见附录3 实体部分: ENTITY time_control IS PORT(reset0 : IN STD_LOGIC; --消抖后的复位信号 on_off0 : IN STD_LOGIC; --消抖后的启停信号 clk1 : IN STD_LOGIC; --分频后的时钟信号 en : OUT STD_LOGIC); --计时允许信号 END time_control; 结构体部分 ARCHITECTURE rtl OF time_control IS SIGNAL strobe : STD_LOGIC; --定义一个乒乓信号 BEGIN PROCESS(reset0,on_off0)--进程语句,当消抖后复位或启停信号有作用时有效 BEGIN IF(reset0= ‘1’)THEN strobe<= ‘0’; --当复位信号有效时,乒乓信号为0 ELSIF(on_off0’ event AND on_off0 = ‘1’)THEN strobe<= NOT strobe; --启停信号的上升沿有效时乒乓信号取反 END IF; END PROCESS; en<= clk1 AND strobe; --时钟信号与乒乓信号进行逻辑与得到计时允许信号 END rtl; 计时器控制模块的仿真图如下: 图5.2-1 计时器控制模块的仿真图 由图5.2-1中的仿真波形图与图5.1-1所示的时序关系是相同的,可以验证程序正确。 6. 计时模块的设计 6.1设计思想 比赛时间计时模块主要用来实现系统内部比赛时间的定时计数功能。此模块的输入信号包括去除抖动后的复位信号reset0,计时时钟clk1和定时计数的使能信号en。它的输出信号就是比赛时间的计时信息,包括分钟十位信号min10,分钟个位信号min,秒十位信号sec10,秒个位信号sec,0.1秒位信号sec_1,0.01秒位信号sec_0。 对于计时模块,可以采用计数器的串联来实现,实现的结构框图如图6.1-1所示: 图6.1-1 计时模块的结构框图 由图6.1-1所示的结构框图可以看出,比赛时间计时模块是由1个二进制减法计数器,1个六进制减法计数器和4个十进制减法计数器串联一起来实现的。 在对比赛时间计时模块进行具体的VHDL设计之前,首先需要对它的各个子模块进行设计,这些子模块包括二进制减法计数器,六进制减法计数器和十进制减法计数器。 二进制减法计数器: 由图6.1-1可以看出,设计的减法计数器的输入端口需要包括复位端口reset,使能端口enable和时钟输入端口clk;输出端口包括计数输出端口q和借位输出端口bout。 6.2 程序及仿真 二进制减法计数器的部分VHDL设计程序如下,完整程序见附录4 实体部分: ENTITY count2 IS PORT(reset : IN STD_LOGIC; --复位输入信号 enable : IN STD_LOGIC; --使能信号 clk : IN STD_LOGIC; --时钟输入信号 bout : OUT STD_LOGIC; --借位输出信号 q : OUT STD_LOGIC_VECTOR(1 DOWNTO 0)); --计数信号 END count2; 结构体部分: ARCHITECTURE rtl OF count2 IS SIGNAL q_temp : STD_LOGIC_VECTOR(1 DOWNTO 0);--计数状态信号 BEGIN PROCESS(clk) BEGIN IF(clk’ event AND clk = ‘1)THEN –时钟上升沿有效 IF(reset =‘1’)THEN q_temp<= “01”; --当复位信号有效时,计数为01 ELSIF(enable = ‘1’)THEN IF(q_temp = “00”)THEN q_temp<= “01”; --当复位信号无效,使能信号有效时计数到00时回到01 ELSE q_temp<= q_temp – 1; --否则进行减法计数 END IF; END IF; END IF; q<= q_temp; END PROCESS; bout<= ‘1’ WHEN q_temp = “00” AND enable = ’1’; ELSE ‘0’; --当计数到00并且使能信号有效时,借位信号输出1,否则为0 END rtl; 二进制减法计数器的仿真图如下: 图6.2-1 二进制减法计数器的仿真图 由图6.2-1的仿真波形图可以看出当复位信号无效而使能信号有效时,开始进行减法计数,减到0时,借位信号输出一个波形,可以验证程序正确。 六进制减法计数器与二进制减法计数器类似,下面只给出不同之处。 六进制减法计数器的部分VHDL设计程序如下,完整程序见附录4 实体中计数信号要定义为3位: q : OUT STD_LOGIC_VECTOR(2 DONWTO 0)); 结构体中: IF(reset =‘1’)THEN q_temp<= “101”; --当复位信号有效时,计数为101 ELSIF(enable = ‘1’)THEN IF(q_temp = “000”)THEN q_temp<= “101”; --当复位信号无效,使能信号有效时计数到000时回到101 六进制减法计数器的仿真图如下: 图6.2-2 六进制减法计数器的仿真图 由图6.2-2的仿真波形图可以看出当复位信号无效而使能信号有效时,开始进行减法计数,减到0时,借位信号输出一个波形,可以验证程序正确。 十进制减法计数器的部分VHDL设计程序如下,完整程序见附录4 实体中需讲计数信号定义为4位 q : OUT STD_LOGIC_VECTOR(3 DONWTO 0)); 结构体中 IF(reset =‘1’)THEN q_temp<= “1001”; --当复位信号有效时,计数为1001 ELSIF(enable = ‘1’)THEN IF(q_temp = “0000”)THEN q_temp<= “1001”; --当复位信号无效,使能信号有效时计数到0000时回到1001 十进制减法计数器的仿真图如下: 图6.2-3 十进制减法计数器的仿真图 由图6.2-3的仿真波形图可以看出当复位信号无效而使能信号有效时,开始进行减法计数,减到0时,借位信号输出一个波形,可以验证程序正确。 最后用元件调用语句将以上设计的二进制,六进制和十进制减法计数器的程序进行调用即可构成计时模块的程序设计。 下面给出计时模块的部分VHDL程序,完整程序见附录4 实体部分: ENTITY time_counter IS PORT(reset0 : IN STD_LOGIC; en : IN STD_LOGIC; clk1 : IN STD_LOGIC; min10 : OUT STD_LOGIC_VECTOR(1 DOWNTO0);--分十位 min : OUT STD_LOGIC_VECTOR(3 DOWNTO0);--分个位 sec10 : OUT STD_LOGIC_VECTOR(2 DOWNTO0);--秒十位 sec : OUT STD_LOGIC_VECTOR(3 DOWNTO0);--秒个位 sec_1 : OUT STD_LOGIC_VECTOR(3 DOWNTO0);--0.1秒 sec_0 : OUT STD_LOGIC_VECTOR(3 DOWNTO0));--0.01秒 END time_counter; 结构体部分: ARCHITECTURE rtl OF time_counter IS COMPONENT count10 PORT(reset : IN STD_LOGIC; enable : IN STD_LOGIC; clk : IN STD_LOGIC; bout : OUT STD_LOGIC; q : OUT STD_LOGIC_VECTOR(3 DONWTO 0)); END COMPONENT; COMPONENT count6 PORT(reset : IN STD_LOGIC; enable : IN STD_LOGIC; clk : IN STD_LOGIC; bout : OUT STD_LOGIC; q : OUT STD_LOGIC_VECTOR(2 DONWTO 0)); END COMPONENT; COMPONENT count2 PORT(reset : IN STD_LOGIC; enable : IN STD_LOGIC; clk : IN STD_LOGIC; bout : OUT STD_LOGIC; q : OUT STD_LOGIC_VECTOR(1 DONWTO 0)); END COMPONENT; SIGNAL bo1,bo2,bo3,bo4,bo5,bo6 : STD_LOGIC; --定义借位信号 SIGNAL reset_temp : STD_LOGIC; --定义复位信号 U0: count10 PORT MAP (reset_temp, en, clk1, bo1, sec_0); U1: count10 PORT MAP (reset_temp, bo1, clk1, bo2, sec_1); U2: count10 PORT MAP (reset_temp, bo2 clk1, bo3, sec); U3: count6 PORT MAP (reset_temp, bo3, clk1, bo4, sec10); U4: count10 PORT MAP (reset_temp, bo4, clk1, bo5, min); U5: count2 PORT MAP (reset_temp. bo5, clk1, bo6, min10);
展开阅读全文

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


开通VIP      成为共赢上传

当前位置:首页 > 学术论文 > 其他

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

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

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

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

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

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

客服