数字电子技术课程设计报告(LED矩形点阵)_通信电子-电子设计

上传人:桔**** 文档编号:568673423 上传时间:2024-07-26 格式:PDF 页数:17 大小:617.01KB
返回 下载 相关 举报
数字电子技术课程设计报告(LED矩形点阵)_通信电子-电子设计_第1页
第1页 / 共17页
数字电子技术课程设计报告(LED矩形点阵)_通信电子-电子设计_第2页
第2页 / 共17页
数字电子技术课程设计报告(LED矩形点阵)_通信电子-电子设计_第3页
第3页 / 共17页
数字电子技术课程设计报告(LED矩形点阵)_通信电子-电子设计_第4页
第4页 / 共17页
数字电子技术课程设计报告(LED矩形点阵)_通信电子-电子设计_第5页
第5页 / 共17页
点击查看更多>>
资源描述

《数字电子技术课程设计报告(LED矩形点阵)_通信电子-电子设计》由会员分享,可在线阅读,更多相关《数字电子技术课程设计报告(LED矩形点阵)_通信电子-电子设计(17页珍藏版)》请在金锄头文库上搜索。

1、- - - - z - 【设计题目】 LED点阵循环显示设计 【设计任务及要求】 利用EDA/SOPC 试验开发平台提供的16*16点阵LED以及EP2C35核心板,实现循环显示设定容,显示容为自己的“学号名字” 。 (1) 手动生成 “学号” 这几个字符在 16*16 点阵 LED上的字摸 (即控制某些 LED亮,某些 LED灭,可下载字摸软件帮助确定) 。 (2) 实现循环显示“学号” ,并要求左移 (3) 扩展要求:自主设计(如控制循环速度,方向等) 。 设计原理及方案: 1、16*16点阵 LED部结构如下图所示。 2、总体设计框图。 - - - - z - 计数器 列数据 列选择 F

2、PGA 3、各子模块的设计: (1)分频,扫描 module saomiao (clk_50Mhz,clk_1k); input clk_50Mhz; output clk_1k; reg24:0t; reg clk_1k; always (posedge clk_50Mhz) begin if (cnt25000) begin t=cnt+1; clk_1k=0; end 16*16点阵 系统时钟输入 输出 输出 为自己的学号名字手动生成学号这几个字符在点阵上的字摸即控制某些亮某些灭可下载字摸软件帮助确定实现循环显示学号并要求左移扩展要求自主设计如控制循环速度方向等设计原理及方案点阵部结构如

3、下图所示总体设计框图系入端口声明输出端口声明封装生成的模块如下显示控制输出控制左右移动学号值控制左右移动行使能封装生成的模块如下电路设计仿真与实现电路设计将封装好的三个模块连接起来电路如下电路仿真扫描模块和移动模块实际上都是的功能如下分频字体显示模块的仿真如下由于所给频率太高分频又太大仿真不易实现本仿真的取取取进行左移电路实现将连接好的电路的输入和输出端分别用对应的管脚封装起来便可以在实验室的平台上进行电路的实现了分析与讨- - - - z - else if(cnt50000) begin t=cnt+1; clk_1k=1; end else t=0; end endmodule 封装生成

4、的模块如下: (2)分频,移动,控制速度 module yidong (clk_50Mhz,clk_fourhz,k2,k3); input clk_50Mhz,k2,k3; / 输入端口声明 output clk_fourhz; / 输出端口声明 reg24:0 count,ccount; reg clk_fourhz; always (posedge clk_50Mhz) begin if (k2=0) & (k3=0) ccount=50000000; 为自己的学号名字手动生成学号这几个字符在点阵上的字摸即控制某些亮某些灭可下载字摸软件帮助确定实现循环显示学号并要求左移扩展要求自主设计如

5、控制循环速度方向等设计原理及方案点阵部结构如下图所示总体设计框图系入端口声明输出端口声明封装生成的模块如下显示控制输出控制左右移动学号值控制左右移动行使能封装生成的模块如下电路设计仿真与实现电路设计将封装好的三个模块连接起来电路如下电路仿真扫描模块和移动模块实际上都是的功能如下分频字体显示模块的仿真如下由于所给频率太高分频又太大仿真不易实现本仿真的取取取进行左移电路实现将连接好的电路的输入和输出端分别用对应的管脚封装起来便可以在实验室的平台上进行电路的实现了分析与讨- - - - z - if (k2=0) & (k3=1) ccount=100000000; if (k2=1) & (k3=

6、0) ccount=5000000; if (k2=1) & (k3=1) ccount=10000000; if(countccount) begin count=count+1b1; clk_fourhz=0; end else begin count=0; clk_fourhz=1; end end endmodule 封装生成的模块如下: 为自己的学号名字手动生成学号这几个字符在点阵上的字摸即控制某些亮某些灭可下载字摸软件帮助确定实现循环显示学号并要求左移扩展要求自主设计如控制循环速度方向等设计原理及方案点阵部结构如下图所示总体设计框图系入端口声明输出端口声明封装生成的模块如下显示控制

7、输出控制左右移动学号值控制左右移动行使能封装生成的模块如下电路设计仿真与实现电路设计将封装好的三个模块连接起来电路如下电路仿真扫描模块和移动模块实际上都是的功能如下分频字体显示模块的仿真如下由于所给频率太高分频又太大仿真不易实现本仿真的取取取进行左移电路实现将连接好的电路的输入和输出端分别用对应的管脚封装起来便可以在实验室的平台上进行电路的实现了分析与讨- - - - z - (3)显示,控制输出,控制左右移动 module xianshi(clk_saomiao,clk_pingyi,row,con,k); input clk_saomiao,clk_pingyi,k; output15:0

8、 row; output15:0 con; reg15:0 row; reg15:0 con; integert=0,b=0; reg15:0 r111:0; initial begin / 学号: r0=16b1111_0111_1011_1111; r1=16b1111_0111_1101_1111; r2=16b1111_0000_0001_1111; r3=16b1111_0111_1111_1111; r4=16b1111_0111_1111_1111; r5=16b1111_1111_1111_1111; 为自己的学号名字手动生成学号这几个字符在点阵上的字摸即控制某些亮某些灭可下载

9、字摸软件帮助确定实现循环显示学号并要求左移扩展要求自主设计如控制循环速度方向等设计原理及方案点阵部结构如下图所示总体设计框图系入端口声明输出端口声明封装生成的模块如下显示控制输出控制左右移动学号值控制左右移动行使能封装生成的模块如下电路设计仿真与实现电路设计将封装好的三个模块连接起来电路如下电路仿真扫描模块和移动模块实际上都是的功能如下分频字体显示模块的仿真如下由于所给频率太高分频又太大仿真不易实现本仿真的取取取进行左移电路实现将连接好的电路的输入和输出端分别用对应的管脚封装起来便可以在实验室的平台上进行电路的实现了分析与讨- - - - z - r6=16b1111_0111_0011_11

10、11; r7=16b1111_0111_1101_1111; r8 =16b1111_0111_1101_1111; r9=16b1111_1000_0011_1111; r10=16b1111_1111_1111_1111; r11 =16b1111_1111_1111_1111; r12 =16b1111_1000_0011_1111; r13 =16b1111_0111_1101_1111; r14=16b1111_0111_1101_1111; r15 =16b1111_1000_0011_1111; /100 r16 =16b1111_0111_1011_1111; r17 =16b

11、1111_0111_1101_1111; r18 =16b1111_0000_0001_1111; r19 =16b1111_0111_1111_1111; r20 =16b111_0111_1111_1111; r21 =16b1111_1111_1111_1111; r22 =16b1111_0011_1011_1111; r23 =16b1111_0101_1101_1111; r24=16b1111_0110_1101_1111; r25=16b1111_0111_0011_1111; r26=16b1111_1111_1111_1111; 为自己的学号名字手动生成学号这几个字符在点阵

12、上的字摸即控制某些亮某些灭可下载字摸软件帮助确定实现循环显示学号并要求左移扩展要求自主设计如控制循环速度方向等设计原理及方案点阵部结构如下图所示总体设计框图系入端口声明输出端口声明封装生成的模块如下显示控制输出控制左右移动学号值控制左右移动行使能封装生成的模块如下电路设计仿真与实现电路设计将封装好的三个模块连接起来电路如下电路仿真扫描模块和移动模块实际上都是的功能如下分频字体显示模块的仿真如下由于所给频率太高分频又太大仿真不易实现本仿真的取取取进行左移电路实现将连接好的电路的输入和输出端分别用对应的管脚封装起来便可以在实验室的平台上进行电路的实现了分析与讨- - - - z - r27=16b

13、1111_1111_1111_1111; r28=16b1111_1011_0011_1111; r29=16b1111_0111_1101_1111; r30=16b1111_0111_1101_1111; r31=16b1111_1001_0011_1111; /123 r32 =16b1111_1111_1111_1111; r33=16b1111_1111_1111_1111; r34=16b1110_1111_1111_1111; r35=16b1110_1111_1110_1111; r36=16b1110_1111_1111_0111; r37=16b1110_0000_0000

14、_0111; r38=16b1110_1111_1111_1111; r39=16b1110_1111_1111_1111; r40=16b1111_1111_1111_1111; r41 =16b1110_1111_1111_1111; r42 =16b1110_1111_1110_1111; r43 =16b1110_1111_1111_0111; r44 =16b1110_0000_0000_0111; r45 =16b1110_1111_1111_1111; r46 =16b1111_1111_1111_1111; r47 =16b1111_1111_1111_1111; /11 为自

15、己的学号名字手动生成学号这几个字符在点阵上的字摸即控制某些亮某些灭可下载字摸软件帮助确定实现循环显示学号并要求左移扩展要求自主设计如控制循环速度方向等设计原理及方案点阵部结构如下图所示总体设计框图系入端口声明输出端口声明封装生成的模块如下显示控制输出控制左右移动学号值控制左右移动行使能封装生成的模块如下电路设计仿真与实现电路设计将封装好的三个模块连接起来电路如下电路仿真扫描模块和移动模块实际上都是的功能如下分频字体显示模块的仿真如下由于所给频率太高分频又太大仿真不易实现本仿真的取取取进行左移电路实现将连接好的电路的输入和输出端分别用对应的管脚封装起来便可以在实验室的平台上进行电路的实现了分析与

16、讨- - - - z - /: r48 =16b1111_1111_0110_1111; r49=16b1101_1111_0111_1111; r50=16b1110_1111_0111_1011; r51=16b1111_0111_0111_1011; r52=16b1111_1011_0111_1011; r53=16b1111_1101_0111_1011; r54=16b1111_1110_0111_1010; r55=16b0000_0000_0000_1001; r56 =16b1111_1110_0111_1011; r57 =16b1111_1101_0111_1011; r

17、58 =16b1111_1011_0111_1011; r59 =16b1111_0111_0111_1011; r60 =16b1110_1111_0111_1011; r61 =16b1101_1111_0110_1011; r62 =16b1101_1111_0111_0011; r63 =16b1111_1111_1111_1111; r64=16b1111_1111_0111_1111; r65=16b1111_1111_1011_1111; r66=16b1111_1111_1101_1111; 为自己的学号名字手动生成学号这几个字符在点阵上的字摸即控制某些亮某些灭可下载字摸软件帮

18、助确定实现循环显示学号并要求左移扩展要求自主设计如控制循环速度方向等设计原理及方案点阵部结构如下图所示总体设计框图系入端口声明输出端口声明封装生成的模块如下显示控制输出控制左右移动学号值控制左右移动行使能封装生成的模块如下电路设计仿真与实现电路设计将封装好的三个模块连接起来电路如下电路仿真扫描模块和移动模块实际上都是的功能如下分频字体显示模块的仿真如下由于所给频率太高分频又太大仿真不易实现本仿真的取取取进行左移电路实现将连接好的电路的输入和输出端分别用对应的管脚封装起来便可以在实验室的平台上进行电路的实现了分析与讨- - - - z - r67=16b0000_0000_0000_1111;

19、r68=16b1111_1111_1111_0000; r69=16b1011_1111_1011_1111; r70=16b1011_1011_1011_0111; r71=16b1011_1011_1011_0111; r72 =16b1011_1011_1011_0111; r73=16b1000_0000_0000_0000; r74=16b1011_1011_1011_0111; r75 =16b1011_1011_1011_0111; r76 =16b1011_1011_1011_0111; r77 =16b1011_1011_1011_0111; r78=16b1011_1111

20、_1011_1111; r79 =16b1111_1111_1111_1111; r80 =16b1111_1111_1111_1111; r81 =16b1011_1101_1111_1111; r82 =16b1100_1110_1111_1111; r83 =16b1111_1111_0111_0111; r84 =16b1111_1111_1011_0111; r85 =16b1110_1111_1101_1111; r86 =16b1001_1111_1110_0111; r87 =16b1111_0000_0000_0000; 为自己的学号名字手动生成学号这几个字符在点阵上的字摸即

21、控制某些亮某些灭可下载字摸软件帮助确定实现循环显示学号并要求左移扩展要求自主设计如控制循环速度方向等设计原理及方案点阵部结构如下图所示总体设计框图系入端口声明输出端口声明封装生成的模块如下显示控制输出控制左右移动学号值控制左右移动行使能封装生成的模块如下电路设计仿真与实现电路设计将封装好的三个模块连接起来电路如下电路仿真扫描模块和移动模块实际上都是的功能如下分频字体显示模块的仿真如下由于所给频率太高分频又太大仿真不易实现本仿真的取取取进行左移电路实现将连接好的电路的输入和输出端分别用对应的管脚封装起来便可以在实验室的平台上进行电路的实现了分析与讨- - - - z - r88=16b1110_

22、1111_1110_0111; r89=16b1001_1111_1101_0111; r90=16b1111_1111_1011_0111; r91=16b1111_1111_0111_0111; r92=16b1110_1110_1111_0111; r93=16b1001_1101_1111_0111; r94=16b1111_1101_1111_1111; r95=16b1111_1111_1111_1111; r96=16b1111_1111_1111_1111; r97=16b1111_1111_1111_1111; r98=16b1111_1111_1111_1111; r99=

23、16b1111_1111_1111_1111; r100=16b1111_1111_1111_1111; r101=16b1111_1111_1111_1111; r102=16b1111_1111_1111_1111; r103=16b1111_1111_1111_1111; r104 =16b1111_1111_1111_1111; r105=16b1111_1111_1111_1111; r106=16b1111_1111_1111_1111; r107 =16b1111_1111_1111_1111; 为自己的学号名字手动生成学号这几个字符在点阵上的字摸即控制某些亮某些灭可下载字摸软件

24、帮助确定实现循环显示学号并要求左移扩展要求自主设计如控制循环速度方向等设计原理及方案点阵部结构如下图所示总体设计框图系入端口声明输出端口声明封装生成的模块如下显示控制输出控制左右移动学号值控制左右移动行使能封装生成的模块如下电路设计仿真与实现电路设计将封装好的三个模块连接起来电路如下电路仿真扫描模块和移动模块实际上都是的功能如下分频字体显示模块的仿真如下由于所给频率太高分频又太大仿真不易实现本仿真的取取取进行左移电路实现将连接好的电路的输入和输出端分别用对应的管脚封装起来便可以在实验室的平台上进行电路的实现了分析与讨- - - - z - r108 =16b1111_1111_1111_111

25、1; r109 =16b1111_1111_1111_1111; r110=16b1111_1111_1111_1111; r111 =16b1111_1111_1111_1111; end always(posedge clk_pingyi) begin if (k=0) /k 值控制左右移动 begin if (b=95) b=0; else b=b+1; end else begin if (b=0) b=96; else b=b-1; end end 为自己的学号名字手动生成学号这几个字符在点阵上的字摸即控制某些亮某些灭可下载字摸软件帮助确定实现循环显示学号并要求左移扩展要求自主设计如

26、控制循环速度方向等设计原理及方案点阵部结构如下图所示总体设计框图系入端口声明输出端口声明封装生成的模块如下显示控制输出控制左右移动学号值控制左右移动行使能封装生成的模块如下电路设计仿真与实现电路设计将封装好的三个模块连接起来电路如下电路仿真扫描模块和移动模块实际上都是的功能如下分频字体显示模块的仿真如下由于所给频率太高分频又太大仿真不易实现本仿真的取取取进行左移电路实现将连接好的电路的输入和输出端分别用对应的管脚封装起来便可以在实验室的平台上进行电路的实现了分析与讨- - - - z - always(posedge clk_saomiao) begin if(cnt=15) begin t=

27、0; end else t=cnt+1; case(cnt) 0: con=16b0000_0000_0000_0001; 1: con=16b0000_0000_0000_0010; 2: con=16b0000_0000_0000_0100; 3: con=16b0000_0000_0000_1000; 4: con=16b0000_0000_0001_0000; 5: con=16b0000_0000_0010_0000; 6: con=16b0000_0000_0100_0000; 7: con=16b0000_0000_1000_0000; 8: con=16b0000_0001_0

28、000_0000; 9: con=16b0000_0010_0000_0000; 10: con=16b0000_0100_0000_0000; 为自己的学号名字手动生成学号这几个字符在点阵上的字摸即控制某些亮某些灭可下载字摸软件帮助确定实现循环显示学号并要求左移扩展要求自主设计如控制循环速度方向等设计原理及方案点阵部结构如下图所示总体设计框图系入端口声明输出端口声明封装生成的模块如下显示控制输出控制左右移动学号值控制左右移动行使能封装生成的模块如下电路设计仿真与实现电路设计将封装好的三个模块连接起来电路如下电路仿真扫描模块和移动模块实际上都是的功能如下分频字体显示模块的仿真如下由于所给频率太

29、高分频又太大仿真不易实现本仿真的取取取进行左移电路实现将连接好的电路的输入和输出端分别用对应的管脚封装起来便可以在实验室的平台上进行电路的实现了分析与讨- - - - z - 11: con=16b0000_1000_0000_0000; 12: con=16b0001_0000_0000_0000; 13: con=16b0010_0000_0000_0000; 14: con=16b0100_0000_0000_0000; 15: con=16b1000_0000_0000_0000; endcase / 行使能 case(cnt) 0: row=rb+0; 1: row=rb+1; 2:

30、 row=rb+2; 3: row=rb+3; 4: row=rb+4; 5: row=rb+5; 6: row=rb+6; 7: row=rb+7; 8: row=rb+8; 9: row=rb+9; 10: row=rb+10; 11: row=rb+11; 12: row=rb+12; 13: row=rb+13; 为自己的学号名字手动生成学号这几个字符在点阵上的字摸即控制某些亮某些灭可下载字摸软件帮助确定实现循环显示学号并要求左移扩展要求自主设计如控制循环速度方向等设计原理及方案点阵部结构如下图所示总体设计框图系入端口声明输出端口声明封装生成的模块如下显示控制输出控制左右移动学号值控制

31、左右移动行使能封装生成的模块如下电路设计仿真与实现电路设计将封装好的三个模块连接起来电路如下电路仿真扫描模块和移动模块实际上都是的功能如下分频字体显示模块的仿真如下由于所给频率太高分频又太大仿真不易实现本仿真的取取取进行左移电路实现将连接好的电路的输入和输出端分别用对应的管脚封装起来便可以在实验室的平台上进行电路的实现了分析与讨- - - - z - 14: row=rb+14; 15: row=rb+15; endcase end endmodule 封装生成的模块如下: 【电路设计、仿真与实现】 (1) 电路设计 将封装好的三个模块连接起来。 电路如下:为自己的学号名字手动生成学号这几个字

32、符在点阵上的字摸即控制某些亮某些灭可下载字摸软件帮助确定实现循环显示学号并要求左移扩展要求自主设计如控制循环速度方向等设计原理及方案点阵部结构如下图所示总体设计框图系入端口声明输出端口声明封装生成的模块如下显示控制输出控制左右移动学号值控制左右移动行使能封装生成的模块如下电路设计仿真与实现电路设计将封装好的三个模块连接起来电路如下电路仿真扫描模块和移动模块实际上都是的功能如下分频字体显示模块的仿真如下由于所给频率太高分频又太大仿真不易实现本仿真的取取取进行左移电路实现将连接好的电路的输入和输出端分别用对应的管脚封装起来便可以在实验室的平台上进行电路的实现了分析与讨- - - - z - (2)

33、电路仿真 扫描模块和移动模块实际上都是分频器,只是分频不一样,前者的分频后频率高(看不到很明显地闪烁),后者低(控制移动速度便于观察)。这里只仿真分频器的功能如下(10 分频): 字体显示模块的仿真如下,由于所给频率太高,分频又太大,仿真不易实现。本仿真的 clk2 取 1ns,clk3 取 32ns,k取 0(进行左移)。 为自己的学号名字手动生成学号这几个字符在点阵上的字摸即控制某些亮某些灭可下载字摸软件帮助确定实现循环显示学号并要求左移扩展要求自主设计如控制循环速度方向等设计原理及方案点阵部结构如下图所示总体设计框图系入端口声明输出端口声明封装生成的模块如下显示控制输出控制左右移动学号值

34、控制左右移动行使能封装生成的模块如下电路设计仿真与实现电路设计将封装好的三个模块连接起来电路如下电路仿真扫描模块和移动模块实际上都是的功能如下分频字体显示模块的仿真如下由于所给频率太高分频又太大仿真不易实现本仿真的取取取进行左移电路实现将连接好的电路的输入和输出端分别用对应的管脚封装起来便可以在实验室的平台上进行电路的实现了分析与讨- - - - z - (3)电路实现 将连接好的电路的输入和输出端分别用对应的 FBGA 管脚封装起来,便可以在实验室的平台上进行电路的实现了。 【分析与讨论】 这次数电课程设计我一共去下载了三次, 第一次的时候在那个模版上没有显示,只是看到了列的灯有亮的,回去检

35、查的时候发现是扫描的频率太小了, 之前设定的频率只有 2Hz ,这样的情况下每秒只会显示两列数据,不能得出所需要的显示。将扫描的频率改成 10kHz 后为自己的学号名字手动生成学号这几个字符在点阵上的字摸即控制某些亮某些灭可下载字摸软件帮助确定实现循环显示学号并要求左移扩展要求自主设计如控制循环速度方向等设计原理及方案点阵部结构如下图所示总体设计框图系入端口声明输出端口声明封装生成的模块如下显示控制输出控制左右移动学号值控制左右移动行使能封装生成的模块如下电路设计仿真与实现电路设计将封装好的三个模块连接起来电路如下电路仿真扫描模块和移动模块实际上都是的功能如下分频字体显示模块的仿真如下由于所给

36、频率太高分频又太大仿真不易实现本仿真的取取取进行左移电路实现将连接好的电路的输入和输出端分别用对应的管脚封装起来便可以在实验室的平台上进行电路的实现了分析与讨- - - - z - 去下载的时候发现能够正常地循环显示了,这也完成了基本的设计。我中午回去后又对原有程序进行了改写,多加了三个输入端,其中两个输入端用来控制字幕移动的速度,另一个用来控制左右移动,编了一个中午,程序没有错误后,仍然有点忐忑的去下载(quartus 只能检查错误不能检验功能,而且这是最后一次下载机会了) ,不过去老师那里下载的时候,模版上正常循环我的学号名字显示,而且通过三个附加的输入端可以控制它的左右移动以及移动速度

37、(移动的速度共设定了 4 个) ,看到自己所编译的功能都实现后,心情还是很愉悦的。个人感觉整个编译过程中,写自己名字的二进制代码太费劲了。通过这次课程设计,我巩固了之前数电实验课上学的 quartus 的一些基本操作,并且会自己编写简单的 verilog 程序了,有些东西和我们之前学过的一些语言很是相像。 最重要的还是我自己学会了如何将之前所学过的知识和查找的资料有机的融合在一起, 并且得到自己想要的结果。非常感老师在我设计过程中的指导。 【参考文献】 1 Verilog 数字系统设计教程(第 2 版)(夏宇闻 ,航空航天大学出版) 2 Verilog HDL 入门(第3版) 3 数字电子技术

38、基础(润华,于云华,中国石油大学,2008 ) 为自己的学号名字手动生成学号这几个字符在点阵上的字摸即控制某些亮某些灭可下载字摸软件帮助确定实现循环显示学号并要求左移扩展要求自主设计如控制循环速度方向等设计原理及方案点阵部结构如下图所示总体设计框图系入端口声明输出端口声明封装生成的模块如下显示控制输出控制左右移动学号值控制左右移动行使能封装生成的模块如下电路设计仿真与实现电路设计将封装好的三个模块连接起来电路如下电路仿真扫描模块和移动模块实际上都是的功能如下分频字体显示模块的仿真如下由于所给频率太高分频又太大仿真不易实现本仿真的取取取进行左移电路实现将连接好的电路的输入和输出端分别用对应的管脚封装起来便可以在实验室的平台上进行电路的实现了分析与讨

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号