版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第10章 數(shù)字系統(tǒng)的實(shí)際設(shè)計(jì)技巧10.1 數(shù)字系統(tǒng)優(yōu)化的基本方法10.2 數(shù)字系統(tǒng)設(shè)計(jì)中的工程實(shí)際問(wèn)題在線教務(wù)輔導(dǎo)網(wǎng):教材其余課件及動(dòng)畫素材請(qǐng)查閱在線教務(wù)輔導(dǎo)網(wǎng)QQ:349134187 或者直接輸入下面地址:在數(shù)字系統(tǒng)設(shè)計(jì)初期,人們根據(jù)系統(tǒng)功能總會(huì)畫出一些滿足系統(tǒng)要求的電路框圖,在這些電路框圖中往往存在一些不合理或冗余的部分需要進(jìn)行進(jìn)一步優(yōu)化,以提高系統(tǒng)的整體性能。這種冗余的部分在生成門級(jí)電路以后是很難去除的。因此,必須在電路框圖階段進(jìn)行優(yōu)化。10.1 數(shù)字系統(tǒng)優(yōu)化的基本方法10.1.1 相同電路的處理在系統(tǒng)設(shè)計(jì)的前期,設(shè)計(jì)人員不一定預(yù)先知道有多處存在著相同的運(yùn)算電路,只有在畫出電路框圖后才會(huì)
2、發(fā)現(xiàn)它們的存在。例如在圖10-1(a)中,2個(gè)狀態(tài)都需進(jìn)行B+1運(yùn)算,要正確實(shí)現(xiàn)其功能需要3個(gè)B+1的運(yùn)算電路。但是,進(jìn)行優(yōu)化以后實(shí)際上只要用1個(gè)B+1的運(yùn)算電路就可以實(shí)現(xiàn)正確的邏輯功能,如圖10-1(b)所示。圖10-1 多個(gè)相同運(yùn)算電路優(yōu)化實(shí)例(a) 有多個(gè)相同運(yùn)算的電路;(b) 優(yōu)化后采用一個(gè)運(yùn)算電路如圖10-1(a)所示,未優(yōu)化的VHDL語(yǔ)言程序清單如下:ARCHITECTURE rtl of test IS SIGNAL aReg,bReg,cReg:INTEGER RANGE 0 TO 1023;BEGINPROCESS(clk) ISBEGINIF(clk EVENT AND c
3、lk=1) THEN CASE stateReg ISWHEN SO=aReg=bReg+1;bReg=bReg+1;cReg=aReg;stateRegaReg=aReg;bReg=cReg;cReg=bReg+1;stateReg=S0;END CASE;END IF;END PROCESS;END ARCHITECTURE rtl 如圖10-1(b)所示,優(yōu)化后的VHDL語(yǔ)言程序清單如下:ARCHITECTURE rtl OF test IS SIGNAL node: INTEGER RANGE 0 TO 1023;BEGINnodeaReg=node;bReg=node;cReg=aR
4、eg;stateReg=S1;WHENaReg=aReg;bReg=cReg;cReg=node;stateRegaReg=aReg*bReg;bReg=bReg;cReg=cReg;stateRegaReg=aReg;bReg=cReg*dReg;cReg=cReg;stateReg=S0;END CASE;END IF;END PROCESS; 如圖10-3(b)所示,優(yōu)化后的VHDL語(yǔ)言程序清單如下:SIGNAL multin1:INTEGER RANGE 0 TO 1023;SIGNAL multin2:INTEGER RANGE 0 TO 1023;SIGNAL multiout:I
5、NTEGER RANGE 0 TO 1023;multin1= aReg WHEN stateReg =S0 ELSE cReg;multin2=bReg WHEN stateReg=S0 ELSE dReg;multoutaReg=multout;bReg=bReg;cReg=cReg;dReg=dReg;stateRegaReg=aReg;bReg=multout;cReg=cReg;dReg=dReg;stateRegaReg=aReg+bReg;bReg=bReg;stateReg=S1;WHEN aReg=aReg;bReg=aReg-bReg;stateReg=S0;END CAS
6、E;END IF;END PROCESS;如圖10-4(b)所示,優(yōu)化后的VHDL程序清單如下:SIGNAL addin1:INTEGER RANGE -512 TO 511;SIGNAL addin2:INTEGER RANGE -512 TO 511;SIGNAL addin3:INTEGER RANGE -512 TO 511;addin1=aReg;addin2=bReg WHEN stateReg=S0 ELSE -(bReg;)addoutaReg=addout;bReg=bReg;stateRegaReg=aReg;bReg=addout;stateRegaReg=in0;bRe
7、g=in1;cReg=in2;stateRegaReg=aReg* (bReg*cReg);臨界路徑bReg=bReg;cReg=cReg;stateRegaReg=aReg*2;bReg=bReg;cReg=cReg;stateReg=S0;END CASE;END IF;END PROCESS;從程序中可以看出,aReg=aReg*(bReg*cReg) 的路徑最長(zhǎng),因此,該系統(tǒng)的工作速度由該路徑中信號(hào)傳送的時(shí)間所確定。假設(shè)每個(gè)乘法器的運(yùn)算時(shí)間需要100 ns,每個(gè)選擇器的時(shí)間延時(shí)需要1 ns,那么只考慮2個(gè)乘法器所需的運(yùn)算處理時(shí)間就不能小于200ns。由此推斷,時(shí)鐘頻率一定不能高于5 M
8、Hz。2) 門電路之間延時(shí)時(shí)間的計(jì)算數(shù)字系統(tǒng)的延時(shí)也包含門電路之間的延時(shí)。門電路之間的延時(shí)由兩部分組成:門電路本身所產(chǎn)生的延時(shí)和連線所產(chǎn)生的傳輸延時(shí)。門電路之間的延時(shí)時(shí)間如圖10-5所示。一般來(lái)說(shuō),連線長(zhǎng)度和門的扇出數(shù)成正比,當(dāng)然也就和連線的延時(shí)時(shí)間成正比。如果某系統(tǒng)都是由門電路組成的,那么其系統(tǒng)總的延時(shí)時(shí)間應(yīng)為系統(tǒng)總的延時(shí)時(shí)間= 使用邏輯單元和宏單元的FPGA和CPLD器件的延時(shí),同樣可以用下面公式去估算:延時(shí)= 在ASIC芯片中,標(biāo)準(zhǔn)單元和門陣列的每個(gè)門延時(shí)約為0.10.5 ns;FPGA芯片中1個(gè)單元的延時(shí)約為幾個(gè)ns;LSTTL芯片每個(gè)門延時(shí)約為10 ns;ASIC芯片如果按1 ns延
9、時(shí)計(jì)算,則時(shí)鐘頻率可達(dá)1 GHz。由此可知,這就是ASIC芯片的工作速度比一般電路高得多的原因。3) 系統(tǒng)延時(shí)時(shí)間的評(píng)估在用EDA軟件工具對(duì)系統(tǒng)進(jìn)行綜合時(shí),軟件會(huì)自動(dòng)尋找系統(tǒng)的臨界路徑,并為設(shè)計(jì)者指出系統(tǒng)所能工作的最高頻率。由于沒(méi)有考慮系統(tǒng)的動(dòng)態(tài)工作特性,只以電路圖或網(wǎng)表為依據(jù)來(lái)尋找臨界路徑,因此把這種分析稱為靜態(tài)定時(shí)分析。例如,下面的VHDL語(yǔ)言程序清單中,EDA軟件把經(jīng)過(guò)2個(gè)乘法器的路徑認(rèn)定為該系統(tǒng)的臨界路徑,但是實(shí)際的信號(hào)傳輸路徑是經(jīng)過(guò)一個(gè)加法器和一個(gè)乘法器(見(jiàn)圖10-6)。圖10-6 實(shí)際信號(hào)傳輸路徑示意圖系統(tǒng)的VHDL語(yǔ)言程序描述如下: nodeaReg=node+cReg;bReg
10、=node;cReg=cReg;stateRegaReg=node*cReg;bReg=node;cReg=cReg;stateRegaReg=in0;bReg=in1;cReg=in2;stateReg aReg=aReg*bReg;bReg= bReg;cReg=cReg;stateReg=S2;WHEN S2 aReg=aReg*(cReg*2);bReg= bReg;cReg=cReg;stateReg=S0;END CASE;END IF;END PROCESS;經(jīng)修改后,臨界路徑變?yōu)閍RegaReg=aReg*bReg;bReg=bReg-1;stateRegaReg=aReg+1
11、;bReg=bReg+2;stateReg=S0;END CASE;END IF;END PROCESS;利用多周期路徑后的VHDL語(yǔ)言程序描述如下:SIGNAL node :INTEGER RANGE 0 TO (2*16-1);TYPE STATENAME IS (S0, Sadd, S1);SIGNAL stateReg:STATENAME;NodeaReg=aReg;bReg=bReg;stateRegaReg=node;bReg=bReg-1;stateRegaReg=aReg+1;bReg=bReg+2;stateReg=S0;END CASE;END IF;END PROCESS
12、;在例10-3修改前的S0狀態(tài)中,aReg*bReg在1個(gè)時(shí)鐘周期中是無(wú)法完成的,因此,在S0和S1狀態(tài)之間插入一個(gè)中間狀態(tài)Sadd。aReg*bReg在S0狀態(tài)開(kāi)始就進(jìn)行運(yùn)算,到Sadd狀態(tài)結(jié)束,aReg*bReg的中間值node形成,在S1狀態(tài)開(kāi)始node值被賦予aReg,然后完成最后的運(yùn)算。由VHDL語(yǔ)法知道,node=aReg*bReg語(yǔ)句和PROCESS語(yǔ)句是并發(fā)執(zhí)行的,引入的Sadd狀態(tài)是為了拉長(zhǎng)乘法時(shí)間,并使node= aReg*bReg運(yùn)算與PROCESS同步。假設(shè)aReg*bReg需2個(gè)時(shí)鐘周期,那么這種修改是有效的。這樣就縮短了臨界路徑長(zhǎng)度,提高了系統(tǒng)的整體工作速度。5)
13、減少臨界路徑上部件的扇出數(shù)眾所周知,一個(gè)部件的扇出數(shù)愈多,負(fù)載愈重,該部件對(duì)信號(hào)所產(chǎn)生的延時(shí)也就愈大。因此,減少臨界路徑上部件的扇出數(shù)無(wú)疑會(huì)提高系統(tǒng)的工作速度。圖10-10是減少臨界路徑上部件的扇出數(shù)來(lái)提高系統(tǒng)工作速度的實(shí)例。圖10-10(a)中,系統(tǒng)臨界路徑上部件的扇出數(shù)為3。將2個(gè)乘法器合并后,如圖10-10(b)所示,部件的扇出數(shù)變?yōu)?。圖10-10 減少臨界路徑上部件的扇出數(shù)來(lái)提高系統(tǒng)工作速度的實(shí)例(a) 系統(tǒng)原部件連接情況;(b) 利用共享乘法器減少扇出數(shù)情況利用計(jì)算系統(tǒng)的臨界路徑長(zhǎng)度來(lái)評(píng)估系統(tǒng)的工作速度,在大多數(shù)情況下是可行的,但是也有例外。例如,當(dāng)組合電路跨模塊進(jìn)行連接時(shí),有可能
14、使優(yōu)化效果變差。也就是說(shuō),多個(gè)組合電路模塊合并成一個(gè)模塊進(jìn)行優(yōu)化,其臨界路徑肯定會(huì)更短。另外,多模塊連接后的實(shí)際路徑長(zhǎng)度有可能比各模塊臨界路徑長(zhǎng)度之和要長(zhǎng)。10.2.2 縮小電路規(guī)模和降低功耗的方法1縮小電路規(guī)模的方法縮小電路規(guī)模的最基本方法是在設(shè)計(jì)時(shí)盡可能共享資源。1) 共享組合電路的部件使用EDA軟件達(dá)到理想的資源(部件)共享效果,這種情況大多是存在的。例如,在計(jì)算A+(BC)和(BC)2時(shí),(BC)是相同的,可以用一個(gè)電路來(lái)實(shí)現(xiàn)。2) 共享寄存器在用VHDL語(yǔ)言設(shè)計(jì)電路時(shí),要盡可能減少變量和信號(hào)量的設(shè)置,能共享的盡可能共享,因?yàn)槿哂嗟募拇嫫鲗?huì)增大電路規(guī)模和功耗,特別是位數(shù)較長(zhǎng)的寄存器更
15、是如此。假如現(xiàn)有100個(gè)32位的冗余寄存器,那么就需要3200個(gè)觸發(fā)器。這樣大的規(guī)模在當(dāng)前條件下是不能忽視的。3) 共享連線連線也是一種資源。利用三態(tài)門使多個(gè)輸出共享一條總線,這是共享總線的一種形式。當(dāng)然,在CMOS電路中為了防止總線浮動(dòng),通常在輸出端要接上拉電阻或者下拉電阻。為了降低功耗有時(shí)也不采用三態(tài)總線。4) 展開(kāi)處理時(shí)間實(shí)現(xiàn)資源共享如果在一個(gè)狀態(tài)中有幾次相同種類的運(yùn)算或譯碼,那么將幾個(gè)相同運(yùn)算依次分散到幾個(gè)狀態(tài)中進(jìn)行處理,此時(shí)可以利用共享部件的方法使多個(gè)相同運(yùn)算的電路用一個(gè)電路進(jìn)行分時(shí)處理。5) 展開(kāi)處理空間實(shí)現(xiàn)資源共享對(duì)數(shù)據(jù)流圖的處理順序進(jìn)行適當(dāng)調(diào)整就可以縮小數(shù)據(jù)流圖的規(guī)模。(1)
16、通過(guò)改變處理順序來(lái)縮小電路規(guī)模。圖10-11是通過(guò)改變處理順序來(lái)縮小電路規(guī)模的數(shù)據(jù)流圖。圖10-11(a)是未進(jìn)行修改的數(shù)據(jù)流圖;圖10-11(b)是修改處理順序后的數(shù)據(jù)流圖。兩個(gè)圖的不同點(diǎn)是后者先作加法,后作乘法。這樣修改以后可以節(jié)省3個(gè)乘法器和1個(gè)加法器,從而縮小了電路規(guī)模。圖10-11 通過(guò)改變處理順序來(lái)縮小電路規(guī)模的數(shù)據(jù)流圖(a) 未進(jìn)行修改的數(shù)據(jù)流圖;(b) 修改處理順序后的數(shù)據(jù)流圖(2) 通過(guò)串行處理來(lái)縮小電路規(guī)模。圖10-12是通過(guò)串行處理來(lái)縮小電路規(guī)模的數(shù)據(jù)流圖。圖10-12(a)是未進(jìn)行修改前的數(shù)據(jù)流圖,圖10-12(b)是進(jìn)行串行處理后的數(shù)據(jù)流圖。圖10-12(a)的運(yùn)算公
17、式為f1=3a+bf2=a+3bf3=f1+f2完成此運(yùn)算需要2個(gè)乘法器和3個(gè)加法器。如果直接對(duì)f3進(jìn)行運(yùn)算:f3=3a+b+a+3b=4a+4b=4(a+b)那么完成4(a+b)運(yùn)算只要1個(gè)加法器和進(jìn)行2次移位操作即可,如圖10-12(b)所示。這樣就大大縮小了電路的規(guī)模。圖10-12 通過(guò)串行處理縮小電路規(guī)模的數(shù)據(jù)流圖(a) 未修改前的數(shù)據(jù)流圖;(b) 進(jìn)行串行處理后的數(shù)據(jù)流圖(3) 復(fù)雜運(yùn)算化簡(jiǎn)成簡(jiǎn)單運(yùn)算。復(fù)雜的運(yùn)算通過(guò)適當(dāng)改變順序可以變成簡(jiǎn)單的運(yùn)算。例如,(a+1)+b)+2)可以用(a+b)+3)來(lái)替代。這樣就可以省掉1個(gè)加法器。(4) 利用數(shù)據(jù)流圖中的已有結(jié)果。在數(shù)據(jù)流圖中某些分支
18、可能會(huì)得到相同的結(jié)果,此時(shí)可省掉1個(gè)分支,利用1個(gè)分支已得到的結(jié)果參與下一級(jí)運(yùn)算,從而減少重復(fù)的運(yùn)算電路。2在RTL級(jí)上降低系統(tǒng)功耗的方法功耗是單片系統(tǒng)的一個(gè)很重要的指標(biāo),功耗愈低,系統(tǒng)的壽命、可靠性和體積也愈低。1) 縮小電路的規(guī)模電路規(guī)模愈小,功耗也就愈小。前述的縮小電路規(guī)模的方法對(duì)降低功耗都有實(shí)際意義。2) 停止不必要的運(yùn)算處理下面是某系統(tǒng)的VHDL語(yǔ)言程序描述清單,它由S0S3四個(gè)狀態(tài)組成。S0=1 WHEN stateReg=00 ELSE 0;S1=1 WHEN stateReg=01 ELSE 0;S2=1 WHEN stateReg=10 ELSE 0;S3=1 WHEN st
19、ateReg=11 ELSE 0;plus=aReg+bReg;minus=aReg-bReg;mult=aReg*bReg;nextA=plusWHEN S0=1 ELSEminusWHEN S1=1 ELSEmultWHEN S2=1 ELSEbReg; PROCESS(clk) IS BEGINIF(clkEVENT and clk=1) THENIF(reset=1) THENaReg=127;bReg=2;stateReg=00;ELSEaReg=nextA;bRegstateRegstateRegstateRegstateReg=00;END CASE END IF;END IF;
20、END PROCESS;上述程序中,S0進(jìn)行加法運(yùn)算,S1進(jìn)行減法運(yùn)算,S2進(jìn)行乘法運(yùn)算。經(jīng)編譯綜合后,其電路的基本結(jié)構(gòu)如圖10-13所示。這樣結(jié)構(gòu)的電路無(wú)論在何種狀態(tài)下,所有運(yùn)算電路都要進(jìn)行工作。但是實(shí)際上S0狀態(tài)下只要加法運(yùn)算器工作,S1狀態(tài)下乘法器就沒(méi)有必要進(jìn)行工作。這些運(yùn)算器沒(méi)有選擇的無(wú)用工作會(huì)增加電路的功耗。采用下面方法可以停止不必要的運(yùn)算處理。(1) 只允許必要的運(yùn)算電路工作。為了降低電路的功耗,只選擇必要的運(yùn)算電路進(jìn)行工作,對(duì)圖10-13進(jìn)行修改后電路結(jié)構(gòu)如圖10-14所示。圖10-14中,在各個(gè)運(yùn)算器的輸入端插入一個(gè)“與門”,在沒(méi)有工作必要時(shí)使該電路輸出為“0”。由此可知,S0
21、狀態(tài)下乘法運(yùn)算器和減法運(yùn)算器不工作,S1狀態(tài)下乘法器不工作。圖10-13 某系統(tǒng)的基本電路結(jié)構(gòu)圖10-14 圖10-13修改后的電路結(jié)構(gòu)圖10-14對(duì)應(yīng)的VHDL語(yǔ)言程序清單如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY hazard3 ISPORT(reset :IN STD_LOGIC;clk :IN STD_LOGIC;(途中省略)plusOut :OUT INTEGER RANGE 0 to (2*8-1);s3out :OUT STD_LOGIC;);END ENTITY
22、hazard3;ARCHITECTURE rtl OF hazard3 IS FUNCTION INTAND(val:INTEGER;cond : :STD_LOGIC)RETURN INTEGER ISBEGINvec:=CONV_STD_LOGIC_VECTOR(val,8);FOR i IN 0 TO 7 LOOPvec ( i ):=vec( i ) AND cond;END LOOP;RETURN CONV_INTEGER(UNSIGNED(vec);END FONCTION INTAND;FUNCTION INTOR4(val1,val2,val3,val4:INTEGER)RET
23、URN INTEGER ISVARIABLE vec1,vec2,vec3,vec4:STD_LOGIC_VECTOR(7 DOWNTO 0);BEGINvec1:=CONV_STD_LOGIC_VECTOR(val1,8);vec2:=CONV_STD_LOGIC_VECTOR(val2,8);vec3:=CONV_STD_LOGIC_VECTOR(val3,8);vec4:=CONV_STD_LOGIC_VECTOR(val4,8);RETURN CONV_INTEGER(UNSIGNED(vec1 or vec2 or vec3 or vec4);END FONCTION INTOR4;
24、SIGNAL aReg :INTEGER RANGE 0 to (2*8-1)(省略)SIGNAL S3:STD_LOGIC;BEGINS0 =1 WHEN stateReg=00 ELSE 0;S1 =1 WHEN stateReg=01 ELSE 0;S2 =1 WHEN stateReg=11 ELSE 0;S3 =1 WHEN stateReg=10 ELSE 0;aRegSt0 = INTAND (aReg , S0);aRegSt1 = INTAND (aReg , S1);aRegSt2 = INTAND (aReg , S2);aRegSt3 = INTAND (bReg ,
25、S3);bRegSt0 = INTAND (bReg , S0);bRegSt1 = INTAND (bReg , S1);bRegSt2 = INTAND (bReg , S2);plus = aRegSt0 + bRegSt0;minus = aRegSt1 -bRegSt1;mult = aRegSt2 *bRegSt2;nextA = INTOR4 (plus, minus, mult, aRegSt3);PROCESS (clk) IS(途中省略)END PROCESS;plusOut = plus;(省略)s3out = S3;END ARCHITECTURE rtl;(2) 盡可
26、能在數(shù)據(jù)流的前部分屏蔽數(shù)據(jù)流。數(shù)據(jù)流圖中的一個(gè)管道增加的控制“與門”像一個(gè)閥門,不需要進(jìn)行運(yùn)算的數(shù)據(jù)流應(yīng)盡可能早地在數(shù)據(jù)流的前部分屏蔽,這樣可以降低功耗。在進(jìn)行流水線操作時(shí),在沒(méi)有有效數(shù)據(jù)的情況下管道的輸入側(cè)如果屏蔽數(shù)據(jù),則會(huì)停止后階段的操作。如果控制數(shù)據(jù)流入的信號(hào)(如“與門”的輸入)與數(shù)據(jù)信號(hào)相比滯后,則會(huì)出現(xiàn)競(jìng)爭(zhēng)冒險(xiǎn)現(xiàn)象,從而降低減小功耗的效果。因此,必須消除這種競(jìng)爭(zhēng)冒險(xiǎn)現(xiàn)象。有關(guān)細(xì)節(jié)將在10.2.3節(jié)詳述。(3) 寄存器的值沒(méi)有必要改變時(shí)不要改變。若每個(gè)時(shí)鐘到來(lái)時(shí)寄存器的輸出值都要變化,那么它后面連接的組合電路也會(huì)隨之工作。另外,像移位寄存器等那樣的電路,即使沒(méi)有和組合電路相連接,只要數(shù)
27、據(jù)被移位,就會(huì)增加功耗。在運(yùn)算器輸入端設(shè)置專用的寄存器是一種降低功耗的方法。例如在圖10-14中,各運(yùn)算器在一個(gè)時(shí)鐘周期內(nèi)有2次動(dòng)作:第一次是當(dāng)數(shù)據(jù)輸入時(shí),第二次是當(dāng)狀態(tài)切換時(shí)。要使運(yùn)算器在一個(gè)時(shí)鐘周期只進(jìn)行一次動(dòng)作,就必須在運(yùn)算器輸入端設(shè)置專用寄存器。只有當(dāng)需要進(jìn)行運(yùn)算時(shí),才將其數(shù)據(jù)寫入該寄存器。這樣動(dòng)作減少了,當(dāng)然功耗也就降低了。3) 減少競(jìng)爭(zhēng)冒險(xiǎn)的總量由于組合電路的信號(hào)在多條路徑中的傳輸延時(shí)不同,因而就會(huì)產(chǎn)生競(jìng)爭(zhēng)冒險(xiǎn)現(xiàn)象。譬如,冒險(xiǎn)在信號(hào)流圖的前部分發(fā)生,就會(huì)向后面部分傳播,數(shù)量也會(huì)增加。特別地,多個(gè)處理串行連接時(shí)問(wèn)題就會(huì)更大。圖10-15是多個(gè)加法器串行連接的電路。圖中,加法器產(chǎn)生的冒
28、險(xiǎn)現(xiàn)象從前面向后面?zhèn)鞑?,最后一個(gè)輸出 node6out 比第一級(jí)加法器輸出 node1out的冒險(xiǎn)量增加了11倍。由此可見(jiàn),這種串行工作的電路其最后一級(jí)輸出的冒險(xiǎn)量與串聯(lián)的級(jí)數(shù)成正比。事實(shí)上,要完全消除冒險(xiǎn)現(xiàn)象是困難的,但是使其減少卻是完全可以做到的。圖10-15對(duì)應(yīng)的串接加法器的VHDL語(yǔ)言描述清單如下:node1= aReg +bReg;node2= cReg +node1;node3= dReg +node2;node4= eReg +node3;node11= fReg +node4;nextA = gReg +node11;通常減少串接電路數(shù)目就可以減少冒險(xiǎn)總量。將圖10-15所示的
29、串接加法器的結(jié)構(gòu)改為樹(shù)型,結(jié)果使其級(jí)數(shù)從6級(jí)減少為3級(jí),那么冒險(xiǎn)總量就會(huì)減少一半。樹(shù)型加法器連接的冒險(xiǎn)現(xiàn)象如圖10-16所示。圖10-15 多個(gè)加法器串行連接的電路圖10-16 樹(shù)型加法器連接的冒險(xiǎn)現(xiàn)象此外,還可以采取一些其它措施:減少參加運(yùn)算輸入信號(hào)到來(lái)的時(shí)間量;縮短頻繁變化信號(hào)的傳輸路徑;減少多位長(zhǎng)度的運(yùn)算;構(gòu)筑防止冒險(xiǎn)傳播的防傳輸墻等。詳細(xì)內(nèi)容將在10.2.3節(jié)中討論。圖10-16對(duì)應(yīng)的樹(shù)型加法器連接的VHDL語(yǔ)言程序清單如下:node1= aReg +bReg;node2= cReg +dReg;node3= eReg +fReg;node4= node1 +node2;node11=
30、 node3 +gReg;nextA =node4+node11;4) 控制時(shí)鐘通過(guò)降低時(shí)鐘頻率,用“與門”控制某些工作單元,使其在不工作期間不提供時(shí)鐘等措施,同樣也可以降低系統(tǒng)的功耗。10.2.3 系統(tǒng)誤操作的成因及其消除方法系統(tǒng)在工作過(guò)程中有可能出現(xiàn)誤操作,其產(chǎn)生原因是多方面的。由于設(shè)計(jì)不當(dāng)或存在的缺陷誘發(fā)的誤操作大致有以下幾種:(1) 冒險(xiǎn)現(xiàn)象。冒險(xiǎn)現(xiàn)象通常在信號(hào)發(fā)生變化時(shí)產(chǎn)生,其產(chǎn)生原因主要是輸入信號(hào)經(jīng)不同路徑傳輸而出現(xiàn)不同的延時(shí)所引起的。冒險(xiǎn)的傳播將危及后續(xù)的電路,特別是時(shí)序電路的正確工作。(2) 不遵守既定的定時(shí)關(guān)系。在用邊沿觸發(fā)器作為數(shù)據(jù)寄存器時(shí),觸發(fā)器的數(shù)據(jù)輸入端和時(shí)鐘觸發(fā)邊沿
31、應(yīng)保持嚴(yán)格的定時(shí)關(guān)系。圖10-17示出了寄存器的定時(shí)關(guān)系,在時(shí)鐘上升沿到來(lái)之前,觸發(fā)器的數(shù)據(jù)輸入端(D端)所加的信號(hào)必須有一段穩(wěn)定的時(shí)間,這段時(shí)間稱為建立時(shí)間。在時(shí)鐘上升沿到來(lái)以后,D端的輸入信號(hào)仍需穩(wěn)定地保持一段時(shí)間,該段時(shí)間稱為保持時(shí)間。建立時(shí)間和保持時(shí)間對(duì)不同的觸發(fā)器和不同工藝的電路都有明確不同的要求。如果在設(shè)計(jì)電路時(shí)破壞了這種定時(shí)關(guān)系,如建立時(shí)間不夠或保持時(shí)間不夠,則可能導(dǎo)致寄存器輸出值不穩(wěn)定,即“0”或“1”無(wú)法確定,從而使系統(tǒng)出現(xiàn)誤操作。圖10-17 寄存器的定時(shí)關(guān)系(3) 數(shù)據(jù)和時(shí)鐘的臨界競(jìng)爭(zhēng)。圖10-18是數(shù)據(jù)和時(shí)鐘的臨界競(jìng)爭(zhēng)實(shí)例及定時(shí)關(guān)系。電路輸入信號(hào)在時(shí)鐘上升沿到來(lái)時(shí),多個(gè)
32、寄存器或寄存器各位之間的值出現(xiàn)了參差不齊的變化,從而使輸出出現(xiàn)不穩(wěn)定,這種現(xiàn)象稱為數(shù)據(jù)時(shí)鐘的臨界競(jìng)爭(zhēng),也稱為競(jìng)爭(zhēng)。圖10-18 數(shù)據(jù)和時(shí)鐘的臨界競(jìng)爭(zhēng)實(shí)例及定時(shí)關(guān)系(a) 臨界競(jìng)爭(zhēng)電路實(shí)例;(b) 定時(shí)關(guān)系上述三個(gè)原因有可能導(dǎo)致系統(tǒng)或電路的誤操作。1設(shè)計(jì)時(shí)應(yīng)重點(diǎn)注意的地方上述導(dǎo)致誤操作的因素并不是在所有場(chǎng)合都會(huì)起作用,例如,對(duì)于冒險(xiǎn)現(xiàn)象來(lái)說(shuō),在寄存器與寄存器連接的同步電路中就可以不予考慮。下面列舉一些應(yīng)重點(diǎn)注意的場(chǎng)合。1) 必須消除冒險(xiǎn)現(xiàn)象的地方在與非同步電路的連接線上必須消除冒險(xiǎn)現(xiàn)象。(1) 控制存儲(chǔ)器和觸發(fā)器的控制信號(hào)。對(duì)于存儲(chǔ)器或觸發(fā)器,無(wú)論是邊沿控制還是電平控制,如DRAM的RAS、CA
33、S、WE及觸發(fā)器的置位/復(fù)位端和鎖存控制端,都不能有冒險(xiǎn)信號(hào)出現(xiàn),否則就會(huì)破壞存儲(chǔ)器和觸發(fā)器的正常數(shù)據(jù)。另外,邊沿觸發(fā)的觸發(fā)器時(shí)鐘端和CPU邊沿觸發(fā)的中斷輸入信號(hào)同樣也不應(yīng)混入冒險(xiǎn)信號(hào)。(2) 應(yīng)保持?jǐn)?shù)個(gè)時(shí)鐘周期的信號(hào)。當(dāng)CPU和存儲(chǔ)器等設(shè)備連接時(shí),對(duì)建立/保持時(shí)間都有嚴(yán)格規(guī)定。如果系統(tǒng)的時(shí)鐘頻率比較高,則建立/保持時(shí)間要跨越幾個(gè)時(shí)鐘周期。此時(shí)如果信號(hào)中混有冒險(xiǎn)信號(hào),那么有可能破壞這種定時(shí)關(guān)系。例如,所設(shè)計(jì)芯片與110ns建立時(shí)間的存儲(chǔ)器相連,芯片時(shí)鐘為100 MHz(周期為10 ns),如果數(shù)據(jù)總線混入了周期為10ns的冒險(xiǎn)信號(hào),那么就會(huì)使存儲(chǔ)器產(chǎn)生讀/寫錯(cuò)誤。2) 必須消除亞穩(wěn)定和競(jìng)爭(zhēng)的地
34、方需要接收來(lái)自非同步系統(tǒng)信號(hào)的地方必須考慮消除亞穩(wěn)定和競(jìng)爭(zhēng)。這里所說(shuō)的非同步系統(tǒng)是指同一芯片內(nèi)時(shí)鐘不同的模塊或芯片外連接的電路,而不是非同步電路。即使同一個(gè)時(shí)鐘驅(qū)動(dòng)的電路,如果位于其它芯片或端口上,也應(yīng)看做非同步系統(tǒng)。這是因?yàn)樾酒妮斎牒洼敵鲵?qū)動(dòng)等會(huì)使時(shí)鐘和數(shù)據(jù)的相位產(chǎn)生延時(shí)。2消除冒險(xiǎn)現(xiàn)象的方法消除冒險(xiǎn)現(xiàn)象的方法很多,這里只舉幾個(gè)常用的方法。(1) 利用專用寄存器輸出信號(hào)。電路的輸出信號(hào)不由組合電路輸出,而是通過(guò)專用寄存器直接輸出。圖10-19是未使用專用寄存器出現(xiàn)冒險(xiǎn)現(xiàn)象的實(shí)例。該實(shí)例的電路由一個(gè)八進(jìn)制計(jì)數(shù)器和1個(gè)3-8譯碼器組成。當(dāng)八進(jìn)制計(jì)數(shù)器工作時(shí),在其譯碼器輸出端y(0)y(7)就會(huì)
35、輪流出現(xiàn)1個(gè)時(shí)鐘周期的低電平。從圖10-19的仿真圖中可以發(fā)現(xiàn),在譯碼器的輸出端出現(xiàn)了不應(yīng)有的負(fù)向尖脈沖,也就是說(shuō)出現(xiàn)了冒險(xiǎn)現(xiàn)象。這些負(fù)向尖峰脈沖可能會(huì)對(duì)后接電路產(chǎn)生不利影響。為了消除這種冒險(xiǎn)現(xiàn)象,在其各輸出端加一個(gè)鎖存寄存器,使它們通過(guò)寄存器輸出,以消除冒險(xiǎn)現(xiàn)象。圖10-19 未使用專用寄存器出現(xiàn)冒險(xiǎn)現(xiàn)象的實(shí)例圖10-19對(duì)應(yīng)的VHDL語(yǔ)言程序清單如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY state_8 IS PORT( reset :IN STD_LOGIC; clk :I
36、N STD_LOGIC; y :OUT STD_LOGIC_VECTOR(7 DOWNTO 0) );END ENTITY state_8;ARCHITECTURE rtl OF state_8 IS SIGNAL S0,S1,S2,S3:STD_LOGIC; SIGNAL stateReg:STD_LOGIC_VECTOR(2 DOWNTO 0);BEGIN y(0)=0 WHEN statereg=000 ELSE 1; y(1)=0 WHEN statereg=001 ELSE 1; y(2)=0 WHEN statereg=010 ELSE 1; y(3)=0 WHEN statere
37、g=011 ELSE 1; y(4)=0 WHEN statereg=100 ELSE 1; y(11)=0 WHEN statereg=101 ELSE 1; y(6)=0 WHEN statereg=110 ELSE 1; y(7)=0 WHEN statereg=111 ELSE 1; PROCESS(clk) IS BEGIN IF(clkEVENT AND clk=1) THEN IF(reset=1) THEN stateReg stateReg stateReg stateReg stateReg stateReg stateReg stateReg stateReg y y y
38、 y y y y y y=11111111; END CASE; END IF; END PROCESS; PROCESS(clk) IS BEGIN IF(clkEVENT AND clk=1) THEN IF(reset=1) THEN stateReg stateReg stateReg stateReg stateReg stateReg stateReg stateReg stateReg=000; END CASE; END IF; END IF; END PROCESS;END ARCHITECTURE rtl;圖10-20是輸出端插入專用寄存器清除冒險(xiǎn)現(xiàn)象的實(shí)例。從圖10-20
39、中可以看出,在圖10-19中所出現(xiàn)的冒險(xiǎn)現(xiàn)象被專用寄存器屏蔽掉了。寄存器之所以能屏蔽冒險(xiǎn)現(xiàn)象,是因?yàn)榧拇嫫鞯妮敵鲋抵辉跁r(shí)鐘上升沿到來(lái)時(shí)采樣,在該時(shí)刻寄存器的數(shù)據(jù)輸入端處于穩(wěn)定的數(shù)據(jù)狀態(tài),從而避開(kāi)了數(shù)據(jù)動(dòng)態(tài)的變化過(guò)程。圖10-20 輸出端插入專用寄存器消除冒險(xiǎn)現(xiàn)象的實(shí)例(2) 輸入至輸出只經(jīng)過(guò)一條傳輸路徑。冒險(xiǎn)現(xiàn)象是由于變化信號(hào)經(jīng)過(guò)不同的路徑,產(chǎn)生不同延時(shí)而引起的。因此,在組合電路設(shè)計(jì)時(shí)使變化信號(hào)只通過(guò)一條路徑就可以消除冒險(xiǎn)現(xiàn)象。圖10-21(a)是輸入至輸出只經(jīng)過(guò)一條傳輸路徑消除冒險(xiǎn)現(xiàn)象的實(shí)例。圖10-21(a)中,輸入信號(hào)b到達(dá)輸出端有2條路徑,這必定會(huì)發(fā)生冒險(xiǎn)現(xiàn)象?,F(xiàn)在假設(shè)只有輸入信號(hào)b發(fā)
40、生變化或a、b、c 3個(gè)信號(hào)只有一個(gè)信號(hào)發(fā)生變化,經(jīng)調(diào)整后的邏輯電路如圖10-21(b)所示,此時(shí)輸入信號(hào)b從輸入到輸出只有一條傳輸路徑,因此該電路就不會(huì)發(fā)生冒險(xiǎn)現(xiàn)象。當(dāng)然,如果c和a(或b)同時(shí)發(fā)生變化,則在輸出端仍有可能發(fā)生冒險(xiǎn)現(xiàn)象。圖10-21 輸入至輸出只經(jīng)過(guò)一條傳輸路徑消除冒險(xiǎn)現(xiàn)象的實(shí)例(a) 原電路圖;(b) 修改后的電路圖(3) 組合電路輸入信號(hào)同時(shí)只變化1位。如上所述,如果組合電路的多個(gè)輸入信號(hào)只有1位同時(shí)發(fā)生變化,那么在邏輯設(shè)計(jì)時(shí)就容易做到無(wú)冒險(xiǎn)現(xiàn)象出現(xiàn)。例如,數(shù)字系統(tǒng)中的狀態(tài)機(jī)有多個(gè)狀態(tài),許多控制信號(hào)是對(duì)狀態(tài)機(jī)不同的狀態(tài)進(jìn)行譯碼產(chǎn)生的。圖10-22是8個(gè)狀態(tài)的狀態(tài)機(jī)編碼實(shí)例
41、。圖10-22(a)是一般編碼情況,從000111;圖10-22(b)則是漢明距離為1的編碼情況。前者在一個(gè)狀態(tài)向另一個(gè)狀態(tài)轉(zhuǎn)移時(shí)有可能同時(shí)使編碼值發(fā)生1位以上的變化,例如,111000就發(fā)生了3位變化;后者編碼按000000010011110010000000的規(guī)律進(jìn)行改變,狀態(tài)在轉(zhuǎn)移時(shí)狀態(tài)編碼只發(fā)生1位變化。當(dāng)然,這種方法并不能完全消除冒險(xiǎn)現(xiàn)象,通常要對(duì)狀態(tài)譯碼電路進(jìn)行分析,看在什么情況出現(xiàn)冒險(xiǎn)。得到確定出現(xiàn)冒險(xiǎn)現(xiàn)象的條件后,對(duì)邏輯電路進(jìn)行適當(dāng)修改,使其信號(hào)變化的輸入只有一條傳輸路徑,即可消除冒險(xiǎn)現(xiàn)象。圖10-22 8個(gè)狀態(tài)的狀態(tài)機(jī)編碼實(shí)例(a) 通常的編碼;(b) 漢明距離為1的編碼在某
42、些情況下,狀態(tài)編碼不能保證只有1位發(fā)生變化(即漢明距離超過(guò)1)時(shí),有2種編碼方法保證狀態(tài)圖編碼仍維持1位變化,如圖10-23所示。第一種方法是一個(gè)狀態(tài)分配多個(gè)編碼,如圖10-23(b)所示。原001狀態(tài)再分配1個(gè)010編碼,這樣可以保證漢明距離為1。例如,原110狀態(tài)轉(zhuǎn)移至001狀態(tài),狀態(tài)編碼發(fā)生了3位變化。現(xiàn)在加了010編碼,那么該狀態(tài)編碼為001和010。110與該狀態(tài)的010編碼對(duì)照,只改變1位編碼。其余依次類推,也可得到相似的結(jié)果。第二種方法是在狀態(tài)譯碼時(shí)采用分組譯碼,如圖10-23(c)所示。1011轉(zhuǎn)移至0001時(shí)只對(duì)低2位譯碼,這樣就保證了只有1位發(fā)生變化。(4) 在譯碼輸出端加
43、選通電路。冒險(xiǎn)現(xiàn)象通常發(fā)生在譯碼電路輸入發(fā)生變化的時(shí)刻。如果待輸入信號(hào)穩(wěn)定以后,再輸出譯碼信號(hào),那么就可以屏蔽冒險(xiǎn)現(xiàn)象。例如,在圖10-19所示的仿真圖中如果加上選通信號(hào)STB,那么此時(shí)譯碼輸出就消除了,如圖10-24所示。圖10-24中,STB信號(hào)應(yīng)相對(duì)clk前沿延時(shí)幾十納秒才行。在這里引入了一個(gè)比clk時(shí)鐘信號(hào)頻率高5倍的clk信號(hào)。圖10-23 狀態(tài)編碼漢明距離超過(guò)1時(shí)的處理方法(a) 漢明距離超過(guò)1的狀態(tài)圖;(b) 多編碼狀態(tài)圖;(c) 分組譯碼狀態(tài)圖圖10-24 加選通信號(hào)消除冒險(xiǎn)現(xiàn)象的實(shí)例2個(gè)D觸發(fā)器U1、U2連接產(chǎn)生一個(gè)周期為clk/5的選通脈沖STB。該STB在clk上升沿時(shí)變
44、高,在經(jīng)歷一個(gè)clk/5的周期之后變低。將該信號(hào)與譯碼輸出信號(hào)相“或”,即可屏蔽掉在clk上升沿之后出現(xiàn)的“1”冒險(xiǎn)現(xiàn)象。同理,如果譯碼輸出是“1”有效,那么可以將NOT STB與譯碼輸出信號(hào)相“與”,從而消除“0”冒險(xiǎn)現(xiàn)象。圖10-24對(duì)應(yīng)的加選通信號(hào)STB的VHDL語(yǔ)言程序清單如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY cnt8_deco11 IS PORT(reset,clk,clk11:IN STD_LOGIC; y_out:OUT STD_LOGIC_VECTOR(7
45、DOWNTO 0);END ENTITY cnt8_deco11;ARCHITECTURE rtl OF cnt8_deco11 IS COMPONENT cnt8 IS PORT(reset,clk:IN STD_LOGIC; q:OUT STD_LOGIC_VECTOR(2 DOWNTO 0); END COMPONENT cnt8; COMPONENT dff1 IS PORT(reset,clk,d:IN STD_LOGIC; q,qb:OUT STD_LOGIC); END COMPONENT dff1; SIGNAL reset_s,reset1,clk_s,clk111,q1,q
46、1b,q2,q2b,stb,vcc:STD_LOGIC; SIGNAL q_s:STD_LOGIC_VECTOR(2 DOWNTO 0); SIGNAL y_s,y:STD_LOGIC_VECTOR(7 DOWNTO 0); BEGIN reset_s=reset; clk_s= clk; y_out(0)=y(0) OR stb; y_out(1)=y(1) OR stb; y_out(2)=y(2) OR stb; y_out(3)=y(3) OR stb; y_out(4)=y(4) OR stb; y_out(11)=y(11) OR stb; y_out(6)=y(6) OR stb
47、; y_out(7)yyyyyyyyy=11111111; END CASE; END PROCESS; stb=q1; vcc=1; reset1=reset_s AND (q1 NAND q2); u0:cnt8 PORT MAP(reset_s,clk_s,q_s); u1:dff1 PORT MAP(reset1,clk_s,vcc,q1,q1b); u2:dff1 PORT MAP(reset1,clk11,q1,q2,q2b); END ARCHITECTURE rtl;圖10-26 非同步信號(hào)同步的實(shí)例(5) 在譯碼邏輯中增加冗余項(xiàng)。若單個(gè)譯碼輸入發(fā)生變化,則可以在譯碼邏輯電路中
48、增加冗余項(xiàng),從而達(dá)到消除冒險(xiǎn)現(xiàn)象的目的。圖10-25是增加冗余項(xiàng)消除“1”冒險(xiǎn)現(xiàn)象的實(shí)例,其表達(dá)式為F=AB+AC。這是因?yàn)?,?dāng)B=C=“1”時(shí),F(xiàn)=A+A。若電路在某些輸入組合情況下出現(xiàn)F= AA,那么該電路會(huì)產(chǎn)生“0”冒險(xiǎn)現(xiàn)象。圖10-25所示電路的邏輯表達(dá)式中如增加冗余項(xiàng)BC,則為F=AB+AC+BC。當(dāng)B=C=1時(shí),F(xiàn)=1,從而消除了“1”冒險(xiǎn)現(xiàn)象(產(chǎn)生負(fù)向干擾脈沖)。圖10-25 增加冗余項(xiàng)消除“1”冒險(xiǎn)現(xiàn)象的實(shí)例(a) 產(chǎn)生“1”冒險(xiǎn)的電路;(b) 增加冗余項(xiàng)消除“1”冒險(xiǎn)的電路10.2.4 非同步信號(hào)的控制方法數(shù)字系統(tǒng)的外部輸入和內(nèi)部不同時(shí)鐘模塊之間連接的信號(hào)都屬于非同步信號(hào),系
49、統(tǒng)只有采用適當(dāng)?shù)姆峭叫盘?hào)控制方法才能保證可靠的工作。1將非同步信號(hào)變?yōu)橥叫盘?hào)的方法將非同步信號(hào)變?yōu)橥叫盘?hào)的最簡(jiǎn)單辦法是用D觸發(fā)器鎖存非同步信號(hào),如圖10-26所示。圖10-26中,非同步輸入信號(hào)與D觸發(fā)器的D端相連,時(shí)鐘端clk與系統(tǒng)時(shí)鐘相連。這樣,在時(shí)鐘脈沖上升沿到來(lái)時(shí)就將非同步輸入信號(hào)鎖存于D觸發(fā)器的Q輸出端。在用VHDL語(yǔ)言描述時(shí),表示鎖存的代入語(yǔ)句應(yīng)位于IF( clk EVENT AND clk=1)語(yǔ)句的內(nèi)側(cè)。例如:SIGNAL req _sync _reg:STD_LOGIC;PROCESS (clk ,reset _n ) IS BEGINIF( reset _n =0 )THENState_req = WAIT_ACCESS;ELSIF( clk EVENT AND clk=1 ) THENreq_sync_regIF( req_sync_reg=1) THEN State_reqIF ( req_sync_reg=0 )THEN State_reg= WAIT_ACCESS;END IF;END CASE;END IF;END PROCESS;該例中,非同步輸入信號(hào)是req,經(jīng)觸發(fā)器同步后的信號(hào)為
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五版四荒地承包經(jīng)營(yíng)權(quán)投資融資合同3篇
- 年度多用客房車市場(chǎng)分析及競(jìng)爭(zhēng)策略分析報(bào)告
- 年度垃圾收轉(zhuǎn)裝備戰(zhàn)略市場(chǎng)規(guī)劃報(bào)告
- 2024版遠(yuǎn)程教育平臺(tái)搭建合同3篇
- 二零二五年度門店租賃合同范本:環(huán)保節(jié)能標(biāo)準(zhǔn)版4篇
- 室外電氣工程施工方案
- 送水泵房的課程設(shè)計(jì)
- 2025年度個(gè)人電子設(shè)備買賣合同模板2篇
- 2025年個(gè)人合伙退伙協(xié)議書(shū)編制指南4篇
- 2024版廣告場(chǎng)地租賃合同范本
- 骨科手術(shù)后患者營(yíng)養(yǎng)情況及營(yíng)養(yǎng)不良的原因分析,骨傷科論文
- GB/T 24474.1-2020乘運(yùn)質(zhì)量測(cè)量第1部分:電梯
- GB/T 12684-2006工業(yè)硼化物分析方法
- 定崗定編定員實(shí)施方案(一)
- 高血壓患者用藥的注意事項(xiàng)講義課件
- 特種作業(yè)安全監(jiān)護(hù)人員培訓(xùn)課件
- (完整)第15章-合成生物學(xué)ppt
- 太平洋戰(zhàn)爭(zhēng)課件
- 封條模板A4打印版
- T∕CGCC 7-2017 焙烤食品用糖漿
- 貨代操作流程及規(guī)范
評(píng)論
0/150
提交評(píng)論