




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、上海交通大學- sjtu school of micro electronicsmips流水線實驗指導書目錄1. overview31.1實驗名稱31.2實驗目的31.3實驗范圍31.4實驗預計時間31.5實驗報告與驗收辦法32. 單周期mips流水線42.1模塊描述42.1.1總體結構42.1.2主控制單元模塊ctr52.1.3 alu控制單元模塊aluctr82.1.4 alu102.1.5 寄存器 regfile122.1.6內存單元模塊memory142.1.7帶符號擴展152.2頂層模塊top162.2.1模塊描述162.3流水線仿真183. 多周期mips流水線223實驗描述223
2、.1.1模塊描述223.1.2 新建模塊源文件top243.3編寫功能243.1.4仿真測試254. 附錄 modelsim 使用說明271 overview1.1實驗名稱類mips單周期/多周期處理器實現1.2實驗目的1. 用verilog實現單周期的類mips處理器2在單周期mips處理器基礎上完成多周期的類mips處理器,多周期處理器 有以下功能:1)實現多周期、單發射流水線2)實現forwarding和相關性停頓3)實現指令包括 lw,sw,add,sub,or,and,beq(optional),j(optional)4)可以從modelsim中看到仿真波形1.3實驗范圍木次實驗將覆
3、蓋以下范圍1modelsim的使用2使用veriloghdl進行邏輯設計(木實驗默認會使w verilog)1.4實驗預計時間1周1-5實驗報告與驗收辦法提交實驗報告;報告內容做成ppt進行答辯。2單周期mips流水線2.1模塊描述2.1.1總體結構instruction 25-0 f shift jump address 31-0pc + 4 31-28left 2instruction (31-26controlread addressregdst jump branch mem read memtoreg aluop momwrite alusrc rogwritee t 2instru
4、ction 25-21instruction(31-0in structionmemoryinstructs n (20-16m uinstructlo nread register 1readread register 2data 1write registerread data 2writedata registersinstructio n 15-016instruction 5-0msign extendalucontrolzeroaluresultaddess 鷲datam u x簡單的mips處理器由以下模塊構成1. 主控制單元模塊ctr (control)2. alu 控制單元模
5、塊 aluctr (alu control)3. alu4. 寄存器regfile5. 內存單元模塊memory6 帶符號擴展(sign extend)下面將介紹各個模塊的實現,關于modelsim的使用請參考附錄。2.1.2主控制單元模塊ctr2.1.2.1模塊描述主控制單元輸入為指令的opcode字段,即操作碼。操作碼經過主控制單元的譯碼, 給aluctr, data memory, registers, muxs等-部件輸出止確的控制信號。opcodersrtrdshamtfunct31262521 20161511 106 50opcodersrtimmediate3126252120
6、16150opcodeaddress3126250mips基本指令格式主控制模塊2.1.2.2新建源文件2122232425262728293031323334jump);module ctr(opcodef regdstf alusrcf memtoreg regwritememreadf memwritef branchy aluopf input 5:0 opcode;output regdst;output alusrc;output memtoreg;output regwrite;|output memread;output memwri匸e;output branch;outpu
7、t 1:0 aluop;endmoduleoutput jump;2.1.23編寫譯碼功能input or outputsignal namereformatlw$wbeqinputs0p501100p400000p300100p20001opl0110opo0110outputsregdst10xxalusrc0110memtoreg01xxregwrite1100memread0100memwrite0010branch0001aluopl1000aluopo0001主控制模塊真值表注:j指令,jump信號輸出1,其余輸出0指令opcoder 型:add, sub, and, or, si
8、t0000001 型:iw1000111 型:sw1010111 型:beq000100j型:j000010指令操作碼用verilog代碼寫出上述真值表內容。實現方式多種多樣,這里給出一種使用case語句的參考方案,如下圖:3435reg regdst; reg alusrc;59/ add r type here36reg memtoreg;60/ 61bxxxxxx:37reg regwrite;61/ begin38reg memread;62/39reg memwrite;63/ end40reg branch;6441reg 1:0j aluop;65/ add lw here42r
9、eg jump;66/ add sw here4367/ add beq here44always (opcode)6sdefault:45begin69begin46case (opcode)70regdst = 0;476'boooolo:/ jump71alusrc = 0;48begin72memtoreg = 0;49regdst = 0;73regwrite = 0;50alusrc = 0;74memread = 0;51memtoreg = 0;75memwrite = 0;52regwrite = 0;76branch = 0;53memread = 0;77aluo
10、p = 2'b00;54memwrite = 0;78j imp = 0;55branch = 0;79end56aluop = 2 *b00;80endcase57jump = 1;81end58end82endmodule2.124仿真測試如果邏輯比較復朵,可以對單個的模塊文件進行仿真測試,若邏輯簡單則 口j以省略,待整個project都寫好后一起仿真。1. 新建 test_for_ctr.v2. 參照附models!m使用方法,可以看到仿真結果(操作小技巧:小鍵盤,+,快速縮放波形視野)檢查波形。如果有錯,檢查代碼邏輯,重新仿真。p5 wave - default2.1.3 al
11、u控制單元模塊aluctr2.1.3.1模塊描述aluctr根據主控制器的aluop來判斷指令類型。根據指令的后6位區分r型指令。 綜合這兩種輸入,控制alu做止確的操作。opcodersrtrdshamtfunct312625212016151110650opcodersrtimmediate312625212016150opcodeaddress3126250aluctrout3:0add4>/ , aodtl bnmct)mmloreg controlinstruction |20-16)jinstrudioninatruction(25-21)instruction |1 s-o
12、inslructon 【37 instruction mofnoryaicontrolinstruction |5-0jaluwrite regtslersign extendread data 2read registec 1read data 1read regtste(2no丿、reqistersaluopalusrc regwrrtommread control /struction5:aluopl:0writedata wrtte memory2.1.3.2新建模塊源文件略2.1.3.3編寫譯碼功能我們約定aluctrout3:0的值與alu操作的對應關系如下:alu control
13、 linesfunction0000and0001or0010add0110subtract0111set on less than1100noraluctrout和alu操作的對應關系instruction opcode| aluopinstruction operationfunct fieldde&lred alu actionalu control inputlw00load wordxxxxxxadd0010sw00store wordxxxxxxadd0010branch equal01branch equalxxxxxxsubtract0110r-type10add100
14、000add0010r-type10subtract10(x)10subtract0110r-type10and100100and0000r-type10or100101or0001r-type10set on less than101010set on less than0111如果根據aluop控制位和r型指令的不同功能碼設置alu控制位 注:上圖中alu control input實際上是alu的輸入,aluctr的輸出輸入輸出真值表用verilog代碼寫出上述真值表內容。實現方式多種多樣,這里給岀一種使用casex語句的參考方案,如下圖:212223242526272829303132
15、3334endmodule注:a,b是位拼接運算符module aluctr(aluop, funct, aluctr); input 1:0 aluop;input 5:0 funct; output 3:0 aluctr;reg 3:0 aluctr;always (aluop or funct) casex (aluop, funct)8 oxxxxxx: aluctr = 4 b0010; / add other 7 situations here endcase2.1.3.4 m1. 根據z前記敘的方法新建test_for_aluctr.v2. 在testbench屮設定不同的輸入。
16、請覆蓋所冇的情況,以保證邏輯的正確。3. 用modelsim仿真,觀察波形是否滿足邏輯。如果有錯,檢查代碼,重新仿真。2.1.4 alu2.1.4.1實驗描述2.1.4.2模塊描述根據aluctr,對兩個輸入做對應的操作。alures輸出結果。如果是減法操作,若結果為(), zero輸岀置為1.輸入:input 1 (32bit), input2 (32bit), aluctr (4bit)輸 dll: zero(lbit), alures (32bit)mshift loft 2alu resultpcroad addressinstruction 【37 instruction memor
17、y、instruction 25-21instruction (20-16)instruction 15-0road regbtor 1read register 2wrre regtetecwrreregistersinstruction (5-0sign oxtondread data 2read data 1alu l control r3警data監evzeroalureqdstbranch momroadinstruction (31-26)"«fmoregi conz遼問i/ memv亦 alusrcregwrrte2.1.4.3新建模塊源文件略2.1.4.4實
18、現功能alu control linesfunction0000and0001or0010add0110subtract0111set on less than1100nor注:beq實際是個減法操作用verilog代碼實現alu功能。實現方式多種多樣,這里給出一種參考方案,如下圖:21module alu(inputinput2f aluctrr zeror alures);22input 31:0 inputl;23input 31:0 input2;24input 3:0 aluctr;25output zero;26output 31:0 alures;27reg zero;28reg
19、 31:0 alures;2930always (inputl or input2 or aluctr)31begin32if (aluctr = 4'boolo) / add33alures = inputl + input2;34else if(aluctr = 4 *b0110) / sub35begin36alures = inputl 一 input2;37 >if (alures = 0)38zero = 1;39else40zero = 0;41end42/ add andr orr sit here43end4445endmodule2.145仿真1. 根據之前記
20、敘的方法新建test_for_alu.v2. 在testbench中設定不同的輸入。覆蓋所有不同控制的情況,多選取一些輸入數據,以保 證邏輯的正確。3. 用modelsim仿真,觀察波形是否滿足邏輯。如果有錯,檢查代碼,重新仿真。2.1.5 寄存器 regfile2.1.5.1模塊描述寄存器是指令操作的主要對彖,mips中一共有32個32位的寄存器。 寄存器是指令操作的主要對彖,mips中一共有32個32位的寄存器。> data2.1.5.2新建模塊源文件2.1.5.3編寫功能這里需要注意的是,曲于不確定writereg, writedata, reg write信號的先后次序,我們 采
21、用時鐘的下降沿作為些操作的同步信號,防止發生錯誤。module register(clock_inf readreglr readreg2f writeregr w: input clock:_in;;25:21i readregl;inpt ;20:16; readreg2;:0i writereg;*31:0i writedata;inpt regwrite;output ;31:0i readdatal;reg 31:0reg 31:0reg 31:0output ;31:0i readdata2;readdatal; readdataz; regflle;31:0;;always( r
22、eadregl or readreg2 or regwrite) begin/ todoendalways( negedge clock_in ) begin/ todoendendmodle2.1.5.4仿真測試56 initial begin57 / currenttime:285ns5s#285;59 regwrite = i'bl;60 writereg = 5"blolol;61 writeda匸 at = 321blllllllllllllllloooooooooooooooo;62 /63 / currenttime:485ns64 #200;65 writer
23、eg = 5"bololo;66 writeda匸 at = 321boooooooooooooooollllllllllllllll;67 /6s/ currenttime:685ns69 #200;70 regwrite =71 writereg = 5b00000;72 writedata = 321boooooooooooooooooooooooooooooooo;7374#50;75readregl =5b10101;76readreg2 =5'bololo;77end運行仿真,可以看到仿真結果(操作小技巧:小鍵盤,+,快速縮放波形視野) 檢查波形。如果冇錯,檢查代
24、碼邏輯,重新仿真。2.1.6 內塊2.1.6.3編寫功存單元模memory2.1.6.1模塊描述本模塊與register類似,由于些數據也要考慮信號同步,因此也需要 clock_irio2.1.6.2新建模塊源文件module register (clocin, readregl, readreg2f wrireregf wx input clock_in;input 25:21 readregl;input 20:16i readreg2;input 4:0 writereg;input 31:0 wrltedata;input regwrite;output 31:0 readdatal;
25、output 31:0 readdara2;reg 31:0 readdaral;reg 31:0 readdata2;reg 31:0 regflle31:0;always®( /*conditions*/ ) begin/ todoendalways( /*which edge?*/ clock_in ) begin/ todoendendmodule2.1.6.4仿真測試新建testbench,參考代碼如下:52initial begin53/ current time:135ns54#185;55memwrite =二 l*bl;56address =32'boooo
26、oooooooooo000000000000001112;57writedata=32blilllllloooooooooooooooooooooooo;58/ -59#250;60memread =l'bl;61iriemwrite =lfb0;|62end用modelsim仿真,觀察波形是否滿足邏輯。如果冇錯,檢查代碼,重新仿真。wave - default2.1.7帶符號擴展2.1.7.1模塊描述將16位有符號數擴展為32位有符號數。補碼:(1) 正數的補碼:與原碼相同。+9的補碼是00001001 o(2) 負數的補碼:符號位為1,其余位為該數絕對值的原碼按位収反;然后整個數加
27、1。 求7的補碼。因為給定數是負數,則符號位為“1”。后七位:+7的原碼(0000111)按位取反(1111000)加1 (1111001) 所以7的補碼是llllloolo帶符號擴展只需要在詢而補足符號即可。2.1.7.2實現功能mod-dle signext (inst, data); input 15:0 inst; outp-dt 31:0 data;assign data = ;/ how toendmcdule|2.1.7.3仿真測試略2.2頂層模塊top2.2.1模塊描述并在top模塊中聲明定義它們。a)定義信號線為top模塊內的每一根/組連接信號線命名, 例如,主控制模塊輸出端
28、口上的連線:47wire reg_dst,48jump;493ranch,50mem_readz51mei匸 to_reg,52memwrite;53>wirel:0 alu_c54wire alu_src,一55reg write;regdst jump branch memread memtoreg aluop memwrite alusrc regwriteb)程序計數器pc這是這個簡陋cpu能夠跑起來的關鍵地方。定義一個32位reg類型pc,在吋鐘上升 沿(下降沿已經被我們用作寄存器的寫了)做pcv=pc+4。注:簡單的講,在組合邏輯中用阻塞賦值,時序邏輯中用非阻塞賦值“v二”
29、o 兩者綜合出來的電路不一樣,具體區別查閱參考書。時序邏借和組合邏借不要放在同一 個always塊屮。c)resetpc置0x00000000,各寄存器清零,這是reset要做的工作。同步或異步,邊沿或電 平,同學們可以自由實現。寄存器清零,所以要適當修改上次實驗的registerfile模塊,給模塊添加reset信號。 注:添加reset要注意,坊在原來“場”的always塊中。假如新加一個 always塊,當個兩個“寫” always同時滿足時,就混亂不知賦什么值了。d)模塊實例化,連接模塊實例化前兩次實驗中編寫的模塊,實例化的過程中連接模塊的端口。 實例化冇兩種方法:1. 嚴格按照模塊定
30、義的端口順序來連接,不用表明原模塊定義時規定的端口名 模塊模塊名(連接端口 1信號名,連接端口信號名2.)2. 在連接吋用符號,表明原模塊是定義吋規定的端口名 模塊模塊名(.端口 1名(信號1),.端口 2名(信號2) 推薦用第二種以主控制模塊為例,以卜代碼實例化一個cd mainctro并連接其端口。inst是定 義好的指令存儲器輸出的連接信號,其他信號線我們在3.3中已定義。100ctr mainctr(101.opcode(inst31:26).102regdsr(reg_dst)z103.jump(jump)r104.branch(branch).105.memread (1-
31、3;em_read),106.memt o re g (1-£em_to_re g),107.aluop(alu_op7r _108.memwrite(mem_write),109.alusrc(alu_src),110 c .regwrite(reg_write);實例化21 module ctr(opcode, regdstf jump, branch, menireadf memtoreg, alu0pr memwrite, alusrc, regwrite);cu模塊定義e) 連接其他信號線1. muxmux的實現很簡單,一個三口運算符assign out = sel ? i
32、nput 1 : input2;out, sel, input 1, input2都是預先定義的信號。mux1inputisil ld(mjt''1neut2:st dia enbsel;2. 左移兩位,用移位運算符:左移(“vvj,右移(“>>3. 加法器,直接用無符號加法運算。注:verilog中寄存器類型被解釋成無符號數,整數類型(integer)被解釋成二進制補碼 形式的有符號數。因此要綜合成無符號算術算符需要使用寄存器類型,而要得到有 符號算術算符就需要使用整數。網線類型被解釋成無符號數。4. 與門,使用位運算符&(位與) 注意&和&
33、;&的區別2.3流水線仿真1.編寫二進制測試程序請編寫自己的測試匯編。寫0101的確很麻煩,已經幫你們寫好了一個簡易匯編器。在偷懶之前還得強調一下基木知識:指令格式:opcodersrtrdshamtfunct31262521 20161511 106 50opcodersrtimmediate312625212016150opcodeaddress3126250mips基木指令格式匯編格式:注意匯編中寄存器的順序跟指令格式中的不一樣add $ 1 ,$2,$3:$1二$2 + $3sub $1,$2,$3:$l=$2-$3and $1,$2,$3:$1=$2 & $3or$l
34、,$2,$3:$1=$2i$3sit $1,$2,$3:if($2<$3)$l=l else $1=0lw$l,10($2):$ 1 =memory$24-10sw$l,l 0($2):memory$2+10=$ 1beq $ 1 ,$2,10:if($l=$2)goto pc+4+4010是pc+4后的指令間隔數,故為pc+4+40j 10000:goto 100002. 系統任務$readmemb和sreadmemh,放在initial初始化塊中。verilog屮這兩個系統任務用來從文件屮讀取數據到存儲器屮,使用格式如 下:$readmemxc'datafile' m
35、emoryname);$readmemxc'datafile' memoryname, startaddr);$readmemx(ttdatafile, memoryname, startaddr, endaddr);這里寫了 mem_data和mem_inst3兩個文件,分別裝入dmem和imemmem_data000000002 000000013 000000024 000000035 000000046 000000057 000000068 0000000700000008mem_inst3/ j a/ nop/ nop/ nop/ 1w $1, 276 ($0)/
36、lw $2, 264($0)/ add $3, $1, $2/ sub $4, $1, $2000010000000000000000000000001002 000000000000000000000000000000003 000000000000000000000000000000004 000000000000000000000000000000005 10001100000000010000000100010100 10001100000000100000000100001000700000000001000100001100000100000e 000000000010001000
37、10000000100010在top中添加initial塊initialbegin$readmemh("./mem_data", dmem.mem, 12'h40);$readmemb(n./mem_inst3", imem.mem, 8*h0);end3. 其他常用系統任務$monitor提供監控和輸出參數列表中的表達式或變量值的功能。 $monitor(44rxd=%b, rxb);$time返冋當前仿真時刻值$monitor($time);4. 新建 test bench waveform編'弓elk信號和reset信號5. modelsim
38、 仿真f wave defadtmessages1514ggll1051w國 4444444444444444topajut/inst/test_fbr_topajutfpc° /test_fbr_top/dk1 /test_fbr_top/reset aluwave0a500 ns1000 ns00242824i 000000203000 ns<11112345678910111213141516171819202122232425262728293031323334353637383940413多周期mips流水線3.1實驗描述由于單周期流水線實驗已經完成了 cpu各部分的
39、主要功能,因此只需要 完成top模塊。3.1.1模塊描述下而是流水的主耍結構:if: instruction fetch | id: instructsndecocte/ | ex: execute/ i mem: memory access | wb: write back register file read | address calculation將單周期cpu進行分割,插入4級寄存器,將其分割為if, id, ex, m, wb五大部分:if/idimucttoninductionw】q nmu pcirmtruclu<i memoryroad repiot ir心writew
40、me datadata 1read32instructionexecutlon/address calculation stage control linesmemory acce&s stage control lineswrite-back stage 1 control linesreg dstalu oplalu opoalu srcbranchmem readmemwritereg writemem toreg|r-format丄10000010000101011-x0010010xboqx0101000x3.1.2新建模塊源文件top略3.1.3編寫功能添加指令內存模塊:i
41、nstructionmemorymodule instructionmemory(addressr clkr reset, readdata); input 31:0 address;input clk;input reset; output reg 31:0 readdata;reg 31:0 membuffer 0:63;always(address)beginreaddata = membufferaddress>>2;endendmodule編寫top模塊:1module top(clock_inr reset, switch, led);2input clock_in;3
42、input reset;4input 3:0 switch;5output 3:0 led;o7/ for io8wire clk;9assign clk = clock_in;1011/ regs12/ pc13reg 31:0 pc;1415/ 1.0 for stage if to id16reg 31:0 if_id_pcadd4;17reg 31:0 if_id_instruction;1819/ 2.0 for stage id to ex20reg 31:0 id_ex_pcadd4;21reg 31:0 id_ex_readdatal;22reg 31:0 id_ex_re a
43、dda t a2;23reg 31:0 id_ex_signext;24reg (20:16 id_ex_in3thigh;25reg 15:11 id ex in3tlow;26/ 2.1 to ex 27reg id ex regdst;2sreg (17o_id_ex_aluop;29reg id ex alusrc;30/ 2.2_to_l<em31reg id ex branch;注意,由于各種變量名稱極為復雜,推薦在著手編碼之前為自己選擇一套命名規范。 另外,由于mem級的branch會影響pcsrc的值,從而影響下次pc,因此需要為 control加入reset功能,將br
44、anch置零。314仿真測試3. 編寫匯編代碼,并使用我們捉供的匯編器轉化為二進制代碼文件: 這里冇兩種選擇,推薦使用自己編寫的測試程序。;1;5;8;$4=6 ;$5=7 ;$6=1;1或者也可以使用下血的程序,注意,需要去除中間的data hazard: lw$l,40($0) lw $2, 44($0) lw $3, 48($0) add $4,$1,$2 sub $5, $3, $1 and s6, $2, $1 lw $10, 40($0) lw $10, 40($0) ; 1lw$10, 40($0) ; 1or $7, $331;$7=9sit $8, $3,$1;$8=0beq
45、 so, $0, end ; to endadd $9, $7, $8 ; $9=9, not executed end: lw$10, 40($0)lw$10, 40($0)lw$10, 40($0) lw$10, 40($0) ; 1lw$10, 40($0);14.將上述代碼轉為二進制codes,保存為文件,文件名自定,這里假定是result.txt, 將數據158保存為data.txt 然后在top中加入下而而代碼:initialsreadmembc'result.txf instmem.membuf, 8'h0); sreadmemb(udata.txf datame
46、m.membuf, 8'ha);end5. 新建 testbench48initial begin49505152/ #185; reset =/ / 二 lfbl;- currenttime :185ns/ /53/- currenttime :385ns54*200;|55reset =二 lfb0;56/ / /57/- currenttime:585ns58#250;59reset =二 i'bl;60/ / /61end6.運彳亍仿真,可以看到仿真結果(操作小技巧:小鍵盤+,快速縮放波形視野) 檢查波形。如果冇錯,檢查代碼邏輯,重新仿真。stlstl08'to
47、pjb-lajut/clk' jb-1ajut/reset _topjb_lmw a,.ajut/if jnstruction . ajut/regfile/regfie h j o d> 1d> 2i m8c0a0028561910_ - o-c-c-c-c-d 丄0 15867191workspace 二xjmjmmjmjmjmjmjmjm 廿廿a-_廿a-_廿a-_廿廿mtiavmlibrarysmodeljec 卜sv.stdlibrarysmodeljtechvital2000librarysmodeljec 卜ieeelibrarysmodeljtechmode
48、lsi miblibrarysmodeljec 卜stdlibrarysmodeljtechstd_developerskitlibrarysmodeljec 卜synopsyslibrarysmodeljtechveriloglibrarysmodeljec 卜name type path附錄modelsim使用說明這里將簡單介紹modeisim的使用,以及如何脫離ise進行仿真。首先,我們打開modelsimo workspace里而看到的是modelsim中的庫。al也我們在file->new->project添加一個新的工程:面 create project輸入名字,然后o
49、k。在岀來的對話框中添加已經存在的文件,或者新建文件。m add items to the projectclick on the icon to add items of that type: 一ocreate new fileadd existing filetacreate simulation口create new folderclos皂 |這里我們添加了z前各個模塊的文件,top文件,這里選擇將文件保留在原位置:并新建了一個test.v的測試用例。在該例屮,#50表示在上一句z后延時50個cycles, 一個cycle的時間為'timescale ins/ips 中的inso而always #50 clk=clk;則創建了一個周期100ns的時鐘。1 vtim
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 遼寧色彩考試題庫及答案
- 2025至2030寵物衣服行業發展趨勢分析與未來投資戰略咨詢研究報告
- 2025至2030外部硅膠嵌縫行業項目調研及市場前景預測評估報告
- 兒童疫苗的接種時間表與作用
- 2025年葡萄酒產區特色與品牌國際化產業鏈升級報告001
- 跨境貿易公司質檢細則
- 《數控編程與CAM技術》課件-第四章 復雜軸類零件加工
- 山西財經大學華商學院《國外社會主義研究》2023-2024學年第一學期期末試卷
- 湖北省恩施土家族苗族自治州利川市2024-2025學年七年級數學第一學期期末質量跟蹤監視試題含解析
- 和田職業技術學院《生物技術制藥》2023-2024學年第一學期期末試卷
- 2025年高中歷史會考會考全套知識復習
- 特殊作業安全管理監護人專項培訓課件
- 科幻中的物理學學習通超星期末考試答案章節答案2024年
- 安全、環境、職業健康安全目標、指標及管理方案
- 課件:《中華民族共同體概論》第一講 中華民族共同體基礎理論
- 中國人民抗日戰爭勝利紀念日紀念暨世界反法西斯戰爭勝利課件
- 殯葬禮儀策劃方案
- 行政效能提升路徑研究
- (完整版)無菌醫療器械耗材生產企業體系文件-質量手冊模板
- JBT 3300-2024 平衡重式叉車 整機試驗方法(正式版)
- 城軌行車組織實訓總結報告
評論
0/150
提交評論