數(shù)字系統(tǒng)設計課程設計實驗報告基于VHDL的16位CPU設計_第1頁
數(shù)字系統(tǒng)設計課程設計實驗報告基于VHDL的16位CPU設計_第2頁
數(shù)字系統(tǒng)設計課程設計實驗報告基于VHDL的16位CPU設計_第3頁
數(shù)字系統(tǒng)設計課程設計實驗報告基于VHDL的16位CPU設計_第4頁
數(shù)字系統(tǒng)設計課程設計實驗報告基于VHDL的16位CPU設計_第5頁
已閱讀5頁,還剩34頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、數(shù)字系統(tǒng)設計課程設計實驗報告基于vhdl的16位cpu設計學 院 電子與信息學院 專 業(yè) 集成電路設計與系統(tǒng)集成 學生姓名 學 號 200830251089 指導教師 提交日期 2011-02-27 基于vhdl的16位cpu設計3一、 實驗目的3二、 什么是cpu3三、 整體的實驗原理圖7四、各模塊的設計分析和設計思路7、時鐘發(fā)生器72、指令寄存器73、累加器84、算術運算器85、數(shù)據(jù)控制器86、地址多路器87、程序計數(shù)器88、狀態(tài)控制器99、地址譯碼器1310、ram和rom13五、各模塊設計與實現(xiàn)131、時鐘發(fā)生器132、指令寄存器143、累加器154、算術運算器165、數(shù)據(jù)控制器176

2、、地址多路器187、程序計數(shù)器188、狀態(tài)控制器199、各模塊的整合2310、地址多路器2611、rom2712、ram29六、各模塊的波形仿真與分析301、時鐘發(fā)生器的仿真302、指令寄存器303、累加器314、算術運算器315、數(shù)據(jù)控制器326、地址多路器327、程序計數(shù)器328、狀態(tài)控制器329、地址譯碼器3510、rom3511、ram3612、整體的仿真36七、程序的下載指導36八、實驗總結與心得38基于vhdl的16位cpu設計一、 實驗目的 1、熟悉16位cpu各模塊的工作原理,從而熟悉cpu的工作機理,也加深對單片機以及嵌入式硬件的工作原理。 2、熟練的利用quartus ii

3、 9.0做一些中等難度的課題,增加自己的一些實踐經(jīng)驗,熟練vhdl的編程。 3、強化自身的系統(tǒng)設計能力,了解系統(tǒng)設計中的一般步驟,增加處理問題的經(jīng)驗。4、作為對vhdl 課程的一種總結,考察對數(shù)字系統(tǒng)設計掌握的程度。5、了解vhdl仿真和綜合工具的潛力。6、展示vhdl設計對軟硬件聯(lián)合設計和驗證的意義。二、 什么是cpucpu 即中央處理單元的英文縮寫,它是計算機的核心部件。計算機進行信息處理可分為兩個步驟:1) 將數(shù)據(jù)和程序(即指令序列)輸入到計算機的存儲器中。 2) 從第一條指令的地址起開始執(zhí)行該程序,得到所需結果,結束運行。cpu的作用是協(xié)調(diào)并控制計算機的各個部件執(zhí)行程序的指令序列,使其

4、有條不紊地進行。因此它必須具有以下基本功能: a)取指令:當程序已在存儲器中時,首先根據(jù)程序入口地址取出一條程序,為此要發(fā)出指令地址及控制信號。 b)分析指令:即指令譯碼。是對當前取得的指令進行分析,指出它要求什么操作,并產(chǎn)生相應的操作控制命令。 c)執(zhí)行指令:根據(jù)分析指令時產(chǎn)生的“操作命令”形成相應的操作控制信號序列,通過運算器,存儲器及輸入/輸出設備的執(zhí)行,實現(xiàn)每條指令的功能,其中包括對運算結果的處理以及下條指令地址的形成。cpu是一個復雜的數(shù)字邏輯電路,但是它的基本部件的邏輯并不復雜。可把它分成八個基本部件: 1)時鐘發(fā)生器 2)指令寄存器 3)累加器 4) cpu算術邏輯運算單元 5)

5、數(shù)據(jù)控制器 6)狀態(tài)控制器 7)程序計數(shù)器 8)地址多路器 各部件的相互連接關系見圖 1 cpu結構圖,具體的線路連接見圖 2 cpu的線路連接。其中時鐘發(fā)生器利用外來時鐘信號進行分頻生成一系列時鐘信號,送往其他部件用作時鐘信號。各部件之間的相互操作關系則由狀態(tài)控制器來控制。各部件的具體結構和邏輯關系在下面的小節(jié)里逐一進行介紹。圖 1 cpu結構圖圖 2 cpu的線路連接三、 整體的實驗原理圖 圖 3 cpu調(diào)試電路圖調(diào)試cpu 需要外圍模塊,包括ram和rom,以及ram和rom 的選擇器。這樣一個完整的內(nèi)部電路就出來了。四、各模塊的設計分析和設計思路、時鐘發(fā)生器時鐘發(fā)生器利用外來時鐘信號c

6、lk 來生成一系列時鐘信號clk1、fetch、alu_clk 送往cpu的其他部件。其中fetch是外來時鐘 clk 的八分頻信號。利用fetch的上升沿來觸發(fā)cpu控制器開始執(zhí)行一條指令,同時fetch信號還將控制地址多路器輸出指令地址和數(shù)據(jù)地址。clk1信號用作指令寄存器、累加器、狀態(tài)控制器的時鐘信號。alu_clk 則用于觸發(fā)算術邏輯運算單元。2、指令寄存器顧名思義,指令寄存器用于寄存指令。指令寄存器的觸發(fā)時鐘是clk1,在clk1的正沿觸發(fā)下,寄存器將數(shù)據(jù)總線送來的指令存入高8位或低8位寄存器中。但并不是每個clk1的上升沿都寄存數(shù)據(jù)總線的數(shù)據(jù),因為數(shù)據(jù)總線上有時傳輸指令,有時傳輸數(shù)

7、據(jù)。什么時候寄存,什么時候不寄存由cpu狀態(tài)控制器的load_ir信號控制。load_ir信號通過ena 口輸入到指令寄存器。復位后,指令寄存器被清為零。 每條指令為2個字節(jié),即16位。高3位是操作碼,低13位是地址。(cpu的地址總線為13位,尋址空間為8k字節(jié)。)本設計的數(shù)據(jù)總線為8位,所以每條指令需取兩次。先取高8位,后取低8位。而當前取的是高8位還是低8位,由變量state記錄。state為零表示取的高8位,存入高8位寄存器,同時將變量state置為1。下次再寄存時,由于state為1,可知取的是低8位,存入低8位寄存器中。3、累加器累加器用于存放當前的結果,它也是雙目運算其中一個數(shù)據(jù)

8、來源。復位后,累加器的值是零。當累加器通過ena口收到來自cpu狀態(tài)控制器load_acc信號時,在clk1時鐘正跳沿時就收到來自于數(shù)據(jù)總線的數(shù)據(jù)。4、算術運算器算術邏輯運算單元 根據(jù)輸入的8種不同操作碼分別實現(xiàn)相應的加、與、異或、跳轉(zhuǎn)等8種基本操作運算。利用這幾種基本運算可以實現(xiàn)很多種其它運算以及邏輯判斷等操作。5、數(shù)據(jù)控制器數(shù)據(jù)控制器的作用是控制累加器數(shù)據(jù)輸出,由于數(shù)據(jù)總線是各種操作時傳送數(shù)據(jù)的公共通道,不同的情況下傳送不同的內(nèi)容。有時要傳輸指令,有時要傳送ram區(qū)或接口的數(shù)據(jù)。累加器的數(shù)據(jù)只有在需要往ram區(qū)或端口寫時才允許輸出,否則應呈現(xiàn)高阻態(tài),以允許其它部件使用數(shù)據(jù)總線。 所以任何部

9、件往總線上輸出數(shù)據(jù)時,都需要一控制信號。而此控制信號的啟、停,則由cpu狀態(tài)控制器輸出的各信號控制決定。數(shù)據(jù)控制器何時輸出累加器的數(shù)據(jù)則由狀態(tài)控制器輸出的控制信號datactl_ena決定。6、地址多路器地址多路器用于選擇輸出的地址是pc(程序計數(shù))地址還是數(shù)據(jù)/端口地址。每個指令周期的前4個時鐘周期用于從rom中讀取指令,輸出的應是pc地址。后4個時鐘周期用于對ram或端口的讀寫,該地址由指令中給出。地址的選擇輸出信號由時鐘信號的8分頻信號fetch提供。7、程序計數(shù)器程序計數(shù)器用于提供指令地址。以便讀取指令,指令按地址順序存放在存儲器中。有兩種途徑可形成指令地址:其一是順序執(zhí)行的情況,其二

10、是遇到要改變順序執(zhí)行程序的情況,例如執(zhí)行jmp指令后,需要形成新的指令地址。下面就來詳細說明pc地址是如何建立的。復位后,指令指針為零,即每次cpu重新啟動將從rom的零地址開始讀取指令并執(zhí)行。每條指令執(zhí)行完需2個時鐘,這時pc_addr已被增2,指向下一條指令。(因為每條指令占兩個字節(jié)。)如果正執(zhí)行的指令是跳轉(zhuǎn)語句,這時cpu狀態(tài)控制器將會輸出load_pc信號,通過load口進入程序計數(shù)器。程序計數(shù)器(pc_addr)將裝入目標地址(ir_addr),而不是增2。8、狀態(tài)控制器狀態(tài)控制器由兩部分組成: 1.狀態(tài)機2.狀態(tài)控制器狀態(tài)機控制器接受復位信號reset,當reset有效時通過信號e

11、na使其為0,輸入到狀態(tài)機中停止狀態(tài)機的工作。 狀態(tài)機是cpu的控制核心,用于產(chǎn)生一系列的控制信號,啟動或停止某些部件。cpu何時進行讀指令讀寫i/o端口,ram區(qū)等操作,都是由狀態(tài)機來控制的。狀態(tài)機的當前狀態(tài),由變量state記錄,state的值就是當前這個指令周期中已經(jīng)過的時鐘數(shù)(從零計起)。狀態(tài)控制器的主要思路為在8個時鐘周期中對其進行不同的操作,具體如下:1) 第0個時鐘,因為cpu狀態(tài)控制器的輸出:rd和load_ir為高電平,其余均為低電平。指令寄存器寄存由rom送來的高8位指令代碼。 2) 第1個時鐘,與上一時鐘相比只是inc_pc從0變?yōu)?故pc增1,rom送來低8位指令代碼,

12、指令寄存器寄存該8位代碼。 3) 第2個時鐘,空操作。 4) 第3個時鐘, pc增1, 指向下一條指令。 若操作符為hlt, 則輸出信號hlt為高。 如果操作符不為hlt,除了pc增一外(指向下一條指令),其它各控制線輸出為零。 5) 第4個時鐘,若操作符為and、add、xor或lda,讀相應地址的數(shù)據(jù);若為jmp,將目的地址送給程序計數(shù)器;若為sto,輸出累加器數(shù)據(jù)。 6) 第5個時鐘,若操作符為andd、add或xorr,算術運算器就進行相應的運算;若為lda,就把數(shù)據(jù)通過算術運算器送給累加器;若為skz,先判斷累加器的值是否為0,如果為0,pc就增1,否則保持原值;若為jmp,鎖存目的

13、地址;若為sto,將數(shù)據(jù)寫入地址處。 7) 第6個時鐘,空操作。 8) 第7個時鐘,若操作符為skz且累加器值為0,則pc值再增1,跳過一條指令,否則pc無變化。 a、狀態(tài)控制器的asm圖狀態(tài)控制器的asm圖如下。 temp1=inc_pc,load_acc,load_pc,rd; temp2=wr,load_ir,datactl_ena,halt;noena=1ena=1?temp2=0000state=0temp1=0000yesstate=1temp1=0001temp2=0100state=0?yesnostate=1?yesnostate=2temp1=1001temp2=0100s

14、tate=2?yesstate=3temp1=0000temp2=0000yesstartrst=0?ena=0nofetch=1?yesnonostate=4?state=3?noyesstate=4temp1=1000temp2=0001code=hlt?yestemp1=1000temp2=0000yesstate=5temp1=0010temp2=0001code=jmp? yes nonocondition represent for:code=add|code=andd| code=xorr| code=ldayescondition=1?state=5temp1=0001temp

15、2=0000yescode=sto?temp1=0000temp2=0010nonotemp1=0000temp2=0000yesyescode=jmp?state=6temp1=0001temp2=0000noyescode=sto?temp1=0000temp2=1010nonostate=5?yescondition=1?state=6temp1=0101temp2=0000noyescode=skz and zero=1?temp1=1000temp2=0000nostate=6temp1=0000temp2=0000state=6?yescode=sto?state=7temp1=0

16、000temp2=0010noyescondition=1?temp1=0001temp2=0000noyesnotemp1=0000temp2=0000state=7?noyesstate=0temp1=1000temp2=0000code=skzand zero=1?yestemp1=0000temp2=0000temp1=0000temp2=00009、地址譯碼器地址譯碼器用于產(chǎn)生選通信號,選通rom或ram。 ffffh-1800h ram 1800h-0000h rom10、ram和romrom用于裝載測試程序,可讀不可寫。ram用于存放數(shù)據(jù),可讀可寫。五、各模塊設計與實現(xiàn)1、時鐘發(fā)

17、生器其vhdl 程序見下面的模塊:library ieee;use ieee.std_logic_1164.all;entity freqdivide isport(clk: in std_logic;-reset: in std_logic;clk1:out std_logic;alu_clk: out std_logic;fetch: out std_logic);end freqdivide;architecture win of freqdivide isbegin clk1state:=s1;when s1 =alu_clkalu_clkfetchstate:=s5;when s5

18、=state:=s6;when s6 =state:=s7;when s7 =fetchstate:=s1;when others =state:=s0;end case;else null;end if;end process main;end win;2、指令寄存器其vhdl 程序見下面的模塊:library ieee;use ieee.std_logic_1164.all;entity instrreg isport(clk: in std_logic;reset: in std_logic;ena: in std_logic;data: in std_logic_vector(7 do

19、wnto 0);opc_iraddrs1:out std_logic_vector(2 downto 0);opc_iraddrs2:out std_logic_vector(12 downto 0);end instrreg;architecture win of instrreg isbegin main:process(clk,reset)type state_type is (s0,s1,s2);variable state:state_type;beginif(clkevent and clk=1)thenif(reset=1)thenopc_iraddrs1=111;opc_ira

20、ddrs2opc_iraddrs1=data(7 downto 5);opc_iraddrs2(12 downto 8)opc_iraddrs2(7 downto 0)opc_iraddrs1=zzz;opc_iraddrs2=zzzzzzzzzzzzz;state:=s2;end case;else state:=s0;end if;else null;end if;end process main;end win;3、累加器其vhdl 程序見下面的模塊:library ieee;use ieee.std_logic_1164.all;entity accumulator isport(cl

21、k: in std_logic;reset: in std_logic;ena: in std_logic;data: in std_logic_vector(7 downto 0);accum:out std_logic_vector(7 downto 0);end accumulator;architecture win of accumulator isbegin main:process(clk,reset,ena)beginif(clkevent and clk=1)thenif(reset=1)thenaccum=00000000;elsif(ena=1)thenaccum alu

22、_out alu_out alu_out alu_out alu_out alu_out alu_out alu_out alu_out=zzzzzzzz;end case;else null;end if;end process main;zero=not (accum(0) or accum(1) or accum(2) or accum(3) or accum(4) or accum(5) or accum(6) or accum(7);end win;5、數(shù)據(jù)控制器其vhdl 程序見下面的模塊:library ieee;use ieee.std_logic_1164.all;entit

23、y datactl isport(data_in: in std_logic_vector(7 downto 0);data_ena: in std_logic;data: out std_logic_vector(7 downto 0);end datactl;architecture win of datactl isbegin process(data_in,data_ena)beginif(data_ena=1)thendata=data_in;else data=zzzzzzzz;end if;end process;end win;6、地址多路器其vhdl 程序見下面的模塊:lib

24、rary ieee;use ieee.std_logic_1164.all;entity addrchos isport(fetch:in std_logic;pc_addr: in std_logic_vector(12 downto 0);ir_addr: in std_logic_vector(12 downto 0);addr: out std_logic_vector(12 downto 0);end addrchos;architecture win of addrchos isbegin process(pc_addr,ir_addr,fetch)beginif(fetch=1)

25、thenaddr=pc_addr;else addr=ir_addr;end if;end process;end win;7、程序計數(shù)器其vhdl 程序見下面的模塊:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity counter isport(ir_addr:in std_logic_vector(12 downto 0);load: in std_logic;clock: in std_logic;rst: in std_

26、logic;pc_addr:out std_logic_vector(12 downto 0);end counter;architecture win of counter issignal pc_addr_reg:std_logic_vector(12 downto 0);-signal pc_addr_rst:std_logic_vector(12 downto 0);begin process(rst,load,clock,ir_addr)-variable pc_addr_reg:std_logic_vector(12 downto 0);beginif(rst=0)thenif(c

27、lockevent and clock=1)thenif(load=0)thenpc_addr_reg=pc_addr_reg+1;else pc_addr_reg=ir_addr;end if;else null;end if;elsepc_addr_reg=0000000000000;end if;end process;pc_addr=pc_addr_reg;end win;8、狀態(tài)控制器1、狀態(tài)機模塊根據(jù)asm圖,程序如下:library ieee;use ieee.std_logic_1164.all;entity statectl isport(clk1: in std_logic

28、;-the clock of cpuzero: in std_logic;-data of acc is zeroena: in std_logic;-enable portopcode: in std_logic_vector(2 downto 0);-operation codeinc_pc:out std_logic;-increase pc pointload_acc: out std_logic;-acc output enableload_pc: out std_logic;-pc point loadrd:out std_logic;-read from romwr:out st

29、d_logic;-write to ramload_ir:out std_logic;-load target addressdatactl_ena:out std_logic;-data out enablehalt:out std_logic);-halt codeend statectl;architecture win of statectl isbegin main:process(clk1,zero,ena,opcode)type state_type is (clk_0,clk_1,clk_2,clk_3,clk_4,clk_5,clk_6,clk_7);-define eigh

30、t state represent for eight clocksvariable state:state_type;-define eight codes using constant standard logicconstant hlt:std_logic_vector:= 000;constant skz:std_logic_vector:= 001;constant add:std_logic_vector:= 010;constant andd:std_logic_vector:=011;constant xorr:std_logic_vector:=100;constant ld

31、a:std_logic_vector:= 101;constant sto:std_logic_vector:= 110;constant jmp:std_logic_vector:= 111;beginif(clk1event and clk1=0)then-the negative edge of clockif(ena=0)then-state loop enablestate:=clk_0;inc_pc=0;load_acc=0;load_pc=0;rd=0;wr=0;load_ir=0;datactl_ena=0;halt-the zreoth clockinc_pc=0;load_

32、acc=0;load_pc=0;rd=1;-read from romwr=0;load_ir=0;datactl_ena=0;halt-the first clockinc_pc=1;load_acc=0;load_pc=0;rd=1;-pc increase ,read from romwr=0;load_ir=1;datactl_ena=0;halt-the second clockinc_pc=0;load_acc=0;load_pc=0;rd=0;wr=0;load_ir=0;datactl_ena=0;halt-the third clockif(opcode=hlt)thenin

33、c_pc=1;load_acc=0;load_pc=0;rd=0;wr=0;load_ir=0;datactl_ena=0;halt=1;else inc_pc=1;load_acc=0;load_pc=0;rd=0;wr=0;load_ir=0;datactl_ena=0;halt-the forth clockif(opcode=jmp)theninc_pc=0;load_acc=0;load_pc=1;rd=0;wr=0;load_ir=0;datactl_ena=0;halt=0;elsif(opcode=add or opcode=andd or opcode=xorr or opc

34、ode=lda)theninc_pc=0;load_acc=0;load_pc=0;rd=1;wr=0;load_ir=0;datactl_ena=0;halt=0;elsif(opcode=sto)theninc_pc=0;load_acc=0;load_pc=0;rd=0;wr=0;load_ir=0;datactl_ena=1;halt=0;else inc_pc=0;load_acc=0;load_pc=0;rd=0;wr=0;load_ir=0;datactl_ena=0;halt-the fifth clockif(opcode=add or opcode=andd or opco

35、de=xorr or opcode=lda)theninc_pc=0;load_acc=1;load_pc=0;rd=1;wr=0;load_ir=0;datactl_ena=0;halt=0;elsif(opcode=skz and zero=1)theninc_pc=1;load_acc=0;load_pc=0;rd=0;wr=0;load_ir=0;datactl_ena=0;halt=0;elsif(opcode=jmp)theninc_pc=1;load_acc=0;load_pc=1;rd=0;wr=0;load_ir=0;datactl_ena=0;halt=0;elsif(op

36、code=sto)theninc_pc=0;load_acc=0;load_pc=0;rd=0;wr=1;load_ir=0;datactl_ena=1;halt=0;else inc_pc=0;load_acc=0;load_pc=0;rd=0;wr=0;load_ir=0;datactl_ena=0;halt-the sixth clockif(opcode=sto)theninc_pc=0;load_acc=0;load_pc=0;rd=0;wr=0;load_ir=0;datactl_ena=1;halt=0;-output the dataelsif(opcode=add or op

37、code=andd or opcode=xorr or opcode=lda)theninc_pc=0;load_acc=0;load_pc=0;rd=1;wr=0;load_ir=0;datactl_ena=0;halt=0;else inc_pc=0;load_acc=0;load_pc=0;rd=0;wr=0;load_ir=0;datactl_ena=0;halt-the seventh clockif(opcode=skz and zero=1)theninc_pc=1;load_acc=0;load_pc=0;rd=0;wr=0;load_ir=0;datactl_ena=0;ha

38、lt=0;else inc_pc=0;load_acc=0;load_pc=0;rd=0;wr=0;load_ir=0;datactl_ena=0;halt-for other state(s)inc_pc=0;load_acc=0;load_pc=0;rd=0;wr=0;load_ir=0;datactl_ena=0;halt=0;state:=clk_0;end case;end if;else null;end if;end process main;end win;2、狀態(tài)控制器模塊狀態(tài)控制器源代碼如下:library ieee;use ieee.std_logic_1164.all;

39、entity machinectl isport(clk:in std_logic;fetch: in std_logic;reset: in std_logic;ena: out std_logic);end machinectl;architecture win of machinectl isbegin process(clk,reset,fetch)beginif(clkevent and clk=0)thenif(reset=1)thenena=0;elsif(fetch=1)thenena=1;else null;end if;else null;end if;end proces

40、s;end win;9、各模塊的整合其vhdl代碼如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity main isport(clk:in std_logic;rst: in std_logic;addr:out std_logic_vector(12 downto 0);rd:out std_logic;wr:out std_logic;halt:out std_logic;data:inout std_logic_vec

41、tor(7 downto 0);end main;architecture behav of main iscomponent accumulatorport(clk: in std_logic;reset: in std_logic;ena: in std_logic;data: in std_logic_vector(7 downto 0);accum:out std_logic_vector(7 downto 0);end component;component addrchosport(fetch:in std_logic;pc_addr: in std_logic_vector(12

42、 downto 0);ir_addr: in std_logic_vector(12 downto 0);addr: out std_logic_vector(12 downto 0);end component;component aluport(alu_clk: in std_logic;opcode: in std_logic_vector(2 downto 0);accum: in std_logic_vector(7 downto 0);data: in std_logic_vector(7 downto 0);alu_out:out std_logic_vector(7 downto 0);zero: out std_logic);end component;component datactlport(data_in: in std_logic_vector(7 downto 0);data_ena: in std_logic;data: out std_logic_vector(7 downto 0);end

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論