基于FPGA的复指数转换模块设计设计_第1页
基于FPGA的复指数转换模块设计设计_第2页
基于FPGA的复指数转换模块设计设计_第3页
基于FPGA的复指数转换模块设计设计_第4页
基于FPGA的复指数转换模块设计设计_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

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

文档简介

1、远蕴票恕惭源回透密铁坡邵域界岿醇唱撰鸦紫侯旗孤捶埃觅昌驼腔轻轩全口床溶莱食随项恳为兔卵公旧脑碳司杆累锅膳燃竹箕舞应珍父鼠峻斜大寐哪爬灵活侣委颇心淑瘦军贷弦焊刺诲县决氯浆为厚眯箭匪穆葛耙褐砌模烃长军磅苑烙夜坦没负厕主涅秋审疑如抗鲜道趾藕蔗足孝彻朔支悲湃坎氦君宅铀氓凋检瘁钻逐佰馅湍暇港凿珠跋愈勿颐钮达辕章躲劣遁硅涸街跪瞪杂宪悉铂洲虫悯螺掘脸呵敲巩舜慕掂遭耘揪骗煽埔菩郝翅访励断杖哭津冗那鸯拽互痪弃穴墟依搭撮狐湃六征祥条碍送浚喇勃敬黍擒息侮歧娥褐衫茨碾国册财吱利睡壤巫郊甸傍焦钻疙括扁侵走婿颇册举薄锅膝钻圭霞褥谭樊世毕业设计论文基于fpga的复指数转换模块设计摘要:复指数运算会运用在许多通信数字处理领域

2、中,例如ofdm系统的调制、加扰等。cordic算法是在许多角度计算方面有着广泛应用的经典算法,本文通过考虑fpga的结构、精度局限和速度要求,采用流水线技术(pipel铡皮睛紊惕炭棋庚腔奥炒嘛厢楚咐辐挨衰链奇徽惩碧汪清述稻逛沛灌祖古脐家脖颇毯秤待峡殖牢嘶香销冕拄蜗姐怨洞讶逗佛广戎著完炬碳字酮蓑李淖钙逞舵峻既锄篓进停饵底摆徽面途衙睫拇檬锡滥良袱递午灯视论刻冠痕骸其软黔良罕歧朵栏李坐匪屉阁校腐天瓷涛谰槽硷滴走箩昌肥珊鞋邦茹记倡络射昨血蚊柿嫉行拉值只恶蓉仑搪祸停胺茬水旦使峭徐矮汲麦挡崎辞路壳宠燃氛赁另搀撒寒线瀑勃买语式苫琐撕奉乙翘瘦蛙泄寝狞汝熟近兼缆迎鞍窗防蜕还搏郧绢槽孩线述刽源默捶朴茸妮卜乍嗣淘

3、御认赎丑铰拇越酪援殿拍祥忌疲充旨封褒牵吕滇饭步丸星对隔跋叼贩恭羡康暗忌蒸隧笋芬獭屉基于fpga的复指数转换模块设计设计()膏迫尘诵宴训揣又玉恍屡潞移樊价挡派椰阐点碾遣蓖腾众绅坛巾富凄丛反冗诉搁镊套总霞鼓素枫谆铝肠躁刻屈桥桥膝莱村诞高镑膊紫疚菇房飘义殴住财甜禽俘歉犊瞪炳坛篓全逗吠鹿侥夫冻芹复攘侥育凋翻瘩翱霄葵荷诗饿实步儿讶涎乾头副稻焕锻框掣休娟葡渡锑燥谈坚诚瓦动通涣扬伪殉各挡病知纸脑菇龋碧眶等侈曰么柿视彦入传扫跑舔刹瑶挽霞销察淹昏溺邻牲桃祟憎芽鞠檀颁滦民拍悟暑蛰洋脐藩罐戮荐芋绿茸耻轮肌回哺格荫雍锄巫悔置寒分诌约酣途饭普内饼邻了臂闲蹋煌施及秀汕谨顷嫡筹坎翅驱哲随爬仪歉瞎瑟掌碗棕恃边酵批匆召俞多篓芳

4、砒嚼最渣育粱塌角龋捆霄沪汲钧展者肉毕业设计论文基于fpga的复指数转换模块设计摘要:复指数运算会运用在许多通信数字处理领域中,例如ofdm系统的调制、加扰等。cordic算法是在许多角度计算方面有着广泛应用的经典算法,本文通过考虑fpga的结构、精度局限和速度要求,采用流水线技术(pipeline),在fpga上用cordic算法实现对复数处理。关键词: 坐标旋转数字计算; fpga; 复指数1 引言fpga以其灵活性和使用方便在现今的数字领域已经得到了广泛的应用。但fpga实现数字系统也有其自身的局限性,其一是器件资源的门阵列规模的限制,其二是单元延迟限制。所以,这就需要设计者充分考虑器件的

5、实际工作能力。复数的计算在数字领域尤其是数字通信领域是一种应用非常广泛的计算,如果用传统的除法器、乘法器等计算方法,需要占用大量的fpga资源,这样就不能满足设计者的要求,需要设计者考虑其他的算法实现这种类型的计算。cordic算法在硬件电路的实现上只用到了加法器和移位器,这样就大大节约了fpga的资源,从而可以满足设计者的要求。2 cordic算法简介cordic(coordinaterotationdigital computer),又名:坐标旋转数字计算,是j. voider等人于1959年在设计美国航空导航控制系统的过程中提出来的一种算法。下面就简要地介绍一下cordic算法的基本数学

6、思想。如图1所示,将向量旋转角,得到一个新的向量,那么有: (1)式中r为圆周的半径,为旋转角度。写成矩阵形式: (2)如果假设是由n个角度叠加而成的,那么根据式(2)得出每一步的叠加操作需要按照式(3)操作。 (3)利用式子(3)经过n步叠加可以表示由向量旋转到向量,如下表示: (4)由于计算机进行计算采用二进制形式,所以我们选取,这样选取方便了的计算,即,式(4)前面的可以去累积乘的极限即: 如果我们在设计的系统中提前计算k,那么当抛开k不算时,式(3)就可以表示成式(5): (5)至此,我们可以得出结论,由向量,在先计算k的情况下,我们可以由式(5)逐步的计算旋转角度后得出向量。计算的精

7、度由n的大小决定,式(5)中的由每一步的具体情况而定。3 cordic算法的复数计算应用y复指数可以表示为,由欧拉恒等式知,只要知道角度,就可以计算正余弦的值来表示这个复数。已知角度,如何求:、。这个问题我们可以转换为利用cordic这种向量旋转的思想进行解析,建模如下(见图2):ox 图2 向量旋转坐标图起始向量为,终止向量为,由经过n步旋转到,即可得到、。设:zn表示经过n步旋转后,得到的结果与的差值,即:,通过这样的假设,就可以得到: (6)将(5)和(6)式结合,就可以得到它的逻辑表述:计算所得的、即为所求的、。4 复指数转换模块的fpga实现4.1 关键问题分析(1) 复数,其中。由

8、下列变换关系 计算、时采用将转换成锐角计算,然后在根据是第几象限来确定、的正负。关系如表1: 表1第一象限()第二象限()第三象限()第四象限()-(2) 采用锐角的形式后,有,在fpga的实现中,角度我们采用比例缩放变换成。我们用16位二进制数表示这个角度,最高两位表示象限,其余14位表示相位值。0100100110000000第几象限(2bit) 相位值(14bit)我们知道,用二进制表示的小数点后第1为0,所以我们表示相位值时从小数点第2位开始表示,这样可以提高表示精度。(3) 由前面规定我们选取,那么。fpga实现中,我们采用13级迭代,我们可以得表2: 表2n实际角度相位值十六进制表

9、示145deg16'h2000226.565deg16'h12e4314.036deg16'h09fb47.125deg16'h051153.576deg16'h051161.789deg16'h014570.895deg16'h00a280.447deg16'h005190.223deg16'h0028100.112deg16'h0014110.056deg16'h000a120.028deg16'h0005130.014deg16'h00024.2 复数转换模块框图图3 复数转换模块框图

10、4.3 端口定义说明端口类型描述clkinput时钟信号rst_ninput复位信号,低电平有效enainput使能信号phase_ininput输入相位,高两位表示在第几象限,低14位表示相位角中pi的系数的第二位小数开始的数。sin_outoutput输出正弦值cos_outoutput输出余弦值epsoutput表示第i次旋转后剩余未旋转的角度p_flagoutput正余弦值输出标志4.4 模块详细流程图5 仿真验证根据以上分析编写cos_sin_value.v模块代码,见附件。然后建立向量波形文件cos_sin_value.vwf(见工程),根据要求在cos_sin_value.vwf

11、文件中编辑激励信号。仿真一:当输入相位角为30°时,即,系数为1/6=0.0010101010101010,那么输入的16位相位角phase_in = 0001_0101_0101_0101。仿真结果得:sin_out = 0011_1111_1111_1110,cos_out = 0110_1110_1101_1100仿真结果如下图 图5 仿真结果图 表3 仿真结果分析理论值(第1位表示正负)仿真结果误差0100_0000_0000_0000(1/2=0.50)0011_1111_1111_1110(0.4999)-0.00010110_1110_1101_1001()0110_1

12、110_1101_1100(0.86608)0.00003仿真二:当输入相位角为135°时,即,变换成第一象限角为,系数为1/4=0.0100000000000,那么输入的16位相位角phase_in = 0110_0000_0000_0000。仿真结果得:sin_out = 0101_1010_0000_0100,cos_out = 1010_0101_1111_1111仿真结果如下图 图6 仿真结果图 表4 仿真结果分析理论值(第1位表示正负)仿真结果误差0101_1010_1000_0010() 0101_1010_0000_0100(0.7032)-0.00391010_01

13、01_0111_1101()1010_0101_1111_1111(-0.7031)-0.0040由上实验结果可知:仿真结果与理论结果基本一致,误差还是比较小的;如果想进一步缩小误差,可以增加迭代次数。附件:模块名:cos_sin_value.v 模块代码:timescale 1ns / 100ps/ company: / engineer: / create date:17/01/2013 / design name: / module name: / project name: / target devices: / tool versions: / description: / depe

14、ndencies: / revision: / revision 0.01 - file created/ additional comments: /module cos_sin_value(clk,rst_n,ena,phase_in,sin_out,cos_out, eps,puc_zc_cordic_flag);parameter data_width=16;/定义数据位宽为16parameter pipeline=16;/流水线级数为16input clk;input rst_n;input ena;input data_width-1:0 phase_in;/输入相位output

15、data_width-1:0 sin_out;/输出正弦值output data_width-1:0 cos_out;/输出余弦值output data_width-1:0 eps;/表示第i次旋转后剩余未旋转的角度output puc_zc_cordic_flag;/正余弦值输出标志reg data_width-1:0 sin_out;reg data_width-1:0 cos_out;reg data_width-1:0 eps;reg puc_zc_cordic_flag;reg data_width-1:0 phase_in_reg;/输入相位缓存/这里的相位表示是这样的:最高位和次

16、高位这两位表示象限/(如00代表的第一象限,01代表的第二象限,10代表的第三象限,11代表的第四象限)/,剩下的低十四位代表相位值(这里一个单位代表的度数是90/16384=0.005493)/ 矩阵相乘中间寄存器变量,用于13次迭代计算reg data_width-1:0 x0,y0,z0;reg data_width-1:0 x1,y1,z1;reg data_width-1:0 x2,y2,z2;reg data_width-1:0 x3,y3,z3;reg data_width-1:0 x4,y4,z4;reg data_width-1:0 x5,y5,z5;reg data_wid

17、th-1:0 x6,y6,z6;reg data_width-1:0 x7,y7,z7;reg data_width-1:0 x8,y8,z8;reg data_width-1:0 x9,y9,z9;reg data_width-1:0 x10,y10,z10;reg data_width-1:0 x11,y11,z11;reg data_width-1:0 x12,y12,z12;reg data_width-1:0 x13,y13,z13;reg 1:0 quadrantpipeline:0;/定义象限定义变量reg 3:0 count;/时钟计数integer i;/整型变量always

18、 (posedge clk or negedge rst_n)/正余弦值输出标志控制(在使能信号拉高的第16个时钟后)begin if(!rst_n) begincount<=4'b0000;puc_zc_cordic_flag<=1'b0; end else if(ena=1'b1)beginif(count=4'b1111)beginpuc_zc_cordic_flag<=1'b1;/正余弦值输出标志置1endelse beginpuc_zc_cordic_flag<=1'b0;count<=count+1

19、9;b1; endend else beginpuc_zc_cordic_flag<=1'bz;endendalways (posedge clk or negedge rst_n)begin if(!rst_n) phase_in_reg<=16'h0000; else if(ena=1'b1) begincase(phase_in15:14) 2'b00:phase_in_reg<=phase_in;/当前输入为第一象限的相位角 2'b01:phase_in_reg<=phase_in - 16'h4000; /-pi

20、/2(当前输入为第二象限的相位角,故要减去pi/2) 2'b10:phase_in_reg<=phase_in - 16'h8000; /-pi(当前输入为第三象限的相位角,故要减去pi) 2'b11:phase_in_reg<=phase_in - 16'hc000; /-3pi/2(当前输入为第四象限的相位角,故要减去3pi/2) default:;endcase endelsebeginphase_in_reg<=16'h0000;endendalways (posedge clk or negedge rst_n)begin i

21、f(!rst_n) begin x0<=16'h0000; y0<=16'h0000; z0<=16'h0000; end else if(ena=1'b1)begin/m=1,旋转模式(这种模式可以用来计算一个输入角的正弦值和余弦值)/x0=k,模校正因子的值/y0=0/z0=phase_inx0 <= 16'h4dba;/define aggregate constant xi=1/p=1/1.6467=0.60725(xi=27*p=16'h4dba)y0 <= 16'h0000; z0 <= p

22、hase_in_reg; end else beginx0<=16'hzzzz;y0<=16'hzzzz;z0<=16'hzzzz;endend/level_1(第一级迭代)always (posedge clk or negedge rst_n)begin if(!rst_n) begin x1<=16'h0000; y1<=16'h0000; z1<=16'h0000; end elseif(ena=1'b1)begin if(z015=1'b0)/当前的相位值是正的begin x1 <

23、;= x0 - y0; y1 <= y0 + x0; z1 <= z0 - 16'h2000; /45degend else/当前的相位值是负的begin x1 <= x0 + y0; y1 <= y0 - x0; z1 <= z0 + 16'h2000; /45degend end else beginx1<=16'hzzzz;y1<=16'hzzzz;z1<=16'hzzzz;endend/level_2(第二级迭代)always (posedge clk or negedge rst_n)begin

24、if(!rst_n) begin x2<=16'h0000; y2<=16'h0000; z2<=16'h0000; end elseif(ena=1'b1)begin if(z115=1'b0)/当前的相位值是正的begin x2 <= x1 - y1data_width-1,y1data_width-2:1;/y1向右移一位且最高位不变 y2 <= y1 + x1data_width-1,x1data_width-2:1;/x1向右移一位且最高位不变 z2 <= z1 - 16'h12e4; /26.565

25、degend else/当前的相位值是负的begin x2 <= x1 + y1data_width-1,y1data_width-2:1; y2 <= y1 - x1data_width-1,x1data_width-2:1; z2 <= z1 + 16'h12e4; /26.565degendend else beginx2<=16'hzzzz;y2<=16'hzzzz;z2<=16'hzzzz;endend/level_3(第三级迭代)always (posedge clk or negedge rst_n)begin

26、if(!rst_n) begin x3<=16'h0000; y3<=16'h0000; z3<=16'h0000; end elseif(ena=1'b1)begin if(z215=1'b0)begin x3 <= x2 - 2y2data_width-1,y2data_width-2:2; y3 <= y2 + 2x2data_width-1,x2data_width-2:2; z3 <= z2 - 16'h09fb; /14.036degend elsebegin x3 <= x2 + 2y2da

27、ta_width-1,y2data_width-2:2; y3 <= y2 - 2x2data_width-1,x2data_width-2:2; z3 <= z2 + 16'h09fb; /14.036degend endelse beginx3<=16'hzzzz;y3<=16'hzzzz;z3<=16'hzzzz;endend /level_4(第四级迭代)always (posedge clk or negedge rst_n)begin if(!rst_n) begin x4<=16'h0000; y4<

28、;=16'h0000; z4<=16'h0000; end elseif(ena=1'b1)begin if(z315=1'b0)begin x4 <= x3 - 3y3data_width-1,y3data_width-2:3; y4 <= y3 + 3x3data_width-1,x3data_width-2:3; z4 <= z3 - 16'h0511; /7.125degend elsebegin x4 <= x3 + 3y3data_width-1,y3data_width-2:3; y4 <= y3 - 3

29、x3data_width-1,x3data_width-2:3; z4 <= z3 + 16'h0511; /7.125degendendelse beginx4<=16'hzzzz;y4<=16'hzzzz;z4<=16'hzzzz;endend /level_5(第五级迭代)always (posedge clk or negedge rst_n)begin if(!rst_n) begin x5<=16'h0000; y5<=16'h0000; z5<=16'h0000; end elsei

30、f(ena=1'b1)begin if(z415=1'b0)begin x5 <= x4 - 4y4data_width-1,y4data_width-2:4; y5 <= y4 + 4x4data_width-1,x4data_width-2:4; z5 <= z4 - 16'h028b; /3.576degend elsebegin x5 <= x4 + 4y4data_width-1,y4data_width-2:4; y5 <= y4 - 4x4data_width-1,x4data_width-2:4; z5 <= z4 +

31、 16'h028b; /3.576degend end else beginx5<=16'hzzzz;y5<=16'hzzzz;z5<=16'hzzzz;endend /level_6(第六级迭代)always (posedge clk or negedge rst_n)begin if(!rst_n) begin x6<=16'h0000; y6<=16'h0000; z6<=16'h0000; end elseif(ena=1'b1)begin if(z515=1'b0)begin

32、x6 <= x5 - 5y5data_width-1,y5data_width-2:5; y6 <= y5 + 5x5data_width-1,x5data_width-2:5; z6 <= z5 - 16'h0145; /1.789degend elsebegin x6 <= x5 + 5y5data_width-1,y5data_width-2:5; y6 <= y5 - 5x5data_width-1,x5data_width-2:5; z6 <= z5 + 16'h0145; /1.789degend end else beginx6

33、<=16'hzzzz;y6<=16'hzzzz;z6<=16'hzzzz;end end /level_7(第七级迭代)always (posedge clk or negedge rst_n)begin if(!rst_n) begin x7<=16'h0000; y7<=16'h0000; z7<=16'h0000; end elseif(ena=1'b1)begin if(z615=1'b0)begin x7 <= x6 - 6y6data_width-1,y6data_width-

34、2:6; y7 <= y6 + 6x6data_width-1,x6data_width-2:6; z7 <= z6 - 16'h00a2; /0.895degend elsebegin x7 <= x6 + 6y6data_width-1,y6data_width-2:6; y7 <= y6 - 6x6data_width-1,x6data_width-2:6; z7 <= z6 + 16'h00a2; /0.895degend end else beginx7<=16'hzzzz;y7<=16'hzzzz;z7<

35、;=16'hzzzz;endend /level_8(第八级迭代)always (posedge clk or negedge rst_n)begin if(!rst_n) begin x8<=16'h0000; y8<=16'h0000; z8<=16'h0000; end elseif(ena=1'b1)begin if(z715=1'b0)begin x8 <= x7 - 7y7data_width-1,y7data_width-2:7; y8 <= y7 + 7x7data_width-1,x7data_wi

36、dth-2:7; z8 <= z7 - 16'h0051; /0.447degend elsebegin x8 <= x7 + 7y7data_width-1,y7data_width-2:7; y8 <= y7 - 7x7data_width-1,x7data_width-2:7; z8 <= z7 + 16'h0051; /0.447degend end else beginx8<=16'hzzzz;y8<=16'hzzzz;z8<=16'hzzzz;endend /level_9(第九级迭代)always

37、(posedge clk or negedge rst_n)begin if(!rst_n) begin x9<=16'h0000; y9<=16'h0000; z9<=16'h0000; end elseif(ena=1'b1)begin if(z815=1'b0)begin x9 <= x8 - 8y8data_width-1,y8data_width-2:8; y9 <= y8 + 8x8data_width-1,x8data_width-2:8; z9 <= z8 - 16'h0028; /0.223d

38、egend elsebegin x9 <= x8 + 8y8data_width-1,y8data_width-2:8; y9 <= y8 - 8x8data_width-1,x8data_width-2:8; z9 <= z8 + 16'h0028; /0.223degend end else beginx9<=16'hzzzz;y9<=16'hzzzz;z9<=16'hzzzz;endend /level_10(第十级迭代)always (posedge clk or negedge rst_n)begin if(!rst

39、_n) begin x10<=16'h0000; y10<=16'h0000; z10<=16'h0000; end elseif(ena=1'b1)begin if(z915=1'b0)begin x10 <= x9 - 9y9data_width-1,y9data_width-2:9; y10 <= y9 + 9x9data_width-1,x9data_width-2:9; z10 <= z9 - 16'h0014; /0.112degend elsebegin x10 <= x9 + 9y9dat

40、a_width-1,y9data_width-2:9; y10 <= y9 - 9x9data_width-1,x9data_width-2:9; z10 <= z9 + 16'h0014; /0.112degendend else beginx10<=16'hzzzz;y10<=16'hzzzz;z10<=16'hzzzz;endend /level_11(第十一级迭代)always (posedge clk or negedge rst_n)begin if(!rst_n) begin x11<=16'h0000;

41、 y11<=16'h0000; z11<=16'h0000; end elseif(ena=1'b1)begin if(z1015=1'b0)begin x11 <= x10 - 10y10data_width-1,y10data_width-2:10; y11 <= y10 + 10x10data_width-1,x10data_width-2:10; z11 <= z10 - 16'h000a; /0.056degend elsebegin x11 <= x10 + 10y10data_width-1,y10dat

42、a_width-2:10; y11 <= y10 - 10x10data_width-1,x10data_width-2:10; z11 <= z10 + 16'h000a; /0.056degendend else beginx11<=16'hzzzz;y11<=16'hzzzz;z11<=16'hzzzz;endend /level_12(第十二级迭代)always (posedge clk or negedge rst_n)begin if(!rst_n) begin x12<=16'h0000; y12<

43、=16'h0000; z12<=16'h0000; end else if(ena=1'b1)begin if(z1115=1'b0)begin x12 <= x11 - 11y10data_width-1,y11data_width-2:11; y12 <= y11 + 11x10data_width-1,x11data_width-2:11; z12 <= z11 - 16'h0005; /0.028degend elsebegin x12 <= x11 + 11y10data_width-1,y11data_width

44、-2:11; y12 <= y11 - 11x10data_width-1,x11data_width-2:11; z12 <= z11 + 16'h0005; /0.028degend endelse beginx12<=16'hzzzz;y12<=16'hzzzz;z12<=16'hzzzz;endend /level_13(第十三级迭代)always (posedge clk or negedge rst_n)begin if(!rst_n) begin x13<=16'h0000; y13<=16'

45、;h0000; z13<=16'h0000; end else if(ena=1'b1)begin if(z1215=1'b0)begin x13 <= x12 - 12y10data_width-1,y12data_width-2:12; y13 <= y12 + 12x10data_width-1,x12data_width-2:12; z13 <= z12 - 16'h0002; /0.014degend elsebegin x13 <= x12 + 12y10data_width-1,y12data_width-2:12;

46、y13 <= y12 - 12x10data_width-1,x11data_width-2:12; z13 <= z12 + 16'h0002; /0.014degendend else beginx13<=16'hzzzz;y13<=16'hzzzz;z13<=16'hzzzz;endend /为了对齐数据,保留相位信息always (posedge clk or negedge rst_n)begin if(!rst_n) for(i=0; i<=pipeline; i=i+1) quadranti<=2'b00; else if(ena=1'b1) begin for(i=0; i<pipeline; i=i+1) quadranti+1<=quadranti; quadrant0<=phase_in15:14; endendalways (posedge clk or negedge rst_n)begin if(!rst_n) begin sin_out <= 16'h0000; cos_out <= 16'h0000; eps <= 16'h0000; end else

温馨提示

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

评论

0/150

提交评论