多徑信道定時同步測試與抗多徑優(yōu)化)
連續(xù)做Gardner環(huán)性能測試第二輪我直接把信號扔進帶多徑的信道里。上篇內(nèi)容是不同信噪比下定時收斂的表現(xiàn)測完之后有兩個疑問沒有解決高斯噪聲是隨機干擾Gardner環(huán)可以通過環(huán)路濾波平均掉一部分但多徑是確定性干擾它把符號波形直接“扯歪”了定時誤差檢測器看到的過零點不再干凈。我在FPGA平臺上跑完這輪測試后最大的感想是——多徑對Gardner環(huán)的影響和噪聲完全不同它動的不是誤差方差而是誤差檢測的“基準(zhǔn)”。這篇文章把多徑拆成兩個維度一個是多徑時延以符號周期T的倍數(shù)衡量另一個是多徑幅度相對主信號的衰減分貝數(shù)逐組合測了一遍并且把結(jié)果量化下來。我采用的平臺和上篇保持同一條流水線Vivado里搭System Generator做信道激勵和采集核心Gardner環(huán)用可綜合RTL重寫最后用ModelSim和Vivado Simulator交替做回歸仿真。信號制式是QPSK符號速率定在1 Msps過采樣率4倍符號定時的捕獲由環(huán)內(nèi)的NCO和Farrow插值器完成。寫完這個平臺之后我對著手里的舊代碼發(fā)現(xiàn)一個問題多數(shù)FPGA工程示例里把Gardner環(huán)放在理想信道下驗證一旦引入多徑環(huán)路參數(shù)是否還合適、插值器的精度是否夠根本沒人給現(xiàn)成答案。所以這篇更準(zhǔn)確地說不是“又做了個波形仿真”而是把工程里最容易忽略的信道敏感性拿到臺面上量化。無論你是剛開始搭定時同步鏈路還是已經(jīng)在FPGA項目里跑過Gardner環(huán)下面的實現(xiàn)細(xì)節(jié)和故障排查都值得對照一遍。1. 為什么第二輪測試要拿多徑開刀1.1 多徑的延遲和幅度如何扭曲Gardner環(huán)的S曲線Gardner定時誤差檢測器的本質(zhì)是利用相鄰符號的中間點與兩端符號值之間的相關(guān)關(guān)系估計定時偏移。無多徑時匹配濾波后的眼圖過零點對稱誤差檢測輸出和定時偏差之間呈一條平滑的S形曲線環(huán)路沿著S曲線把采樣點拉回眼圖中心。多徑信道不一樣它相當(dāng)于在原信號上疊加一個經(jīng)過衰減和延遲的副本。副本與主路徑疊加后符號脈沖的上升沿和下降沿不再對稱眼圖的過零點位置發(fā)生平移。我在測試?yán)镉脙蓮侥P涂刂茣r延τ和幅度α?xí)r延從0.1T逐步加到0.8T幅度從-20dB加到-3dB。當(dāng)τ等于0.5T附近時過零點平移最明顯定時誤差檢測器的S曲線零點整體偏移了接近0.13個符號周期。這個偏移不是噪聲抖動它是固定偏置環(huán)路濾波器壓不掉看起來像是把采樣點鎖在一個偏移的位置上實際就是在多徑環(huán)境下“鎖錯了地方”。這里還得強調(diào)一個機理Gardner環(huán)本身不感知絕對時鐘相位它只能跟隨S曲線的零點。多徑引入零點偏移后環(huán)路認(rèn)為的“正確采樣點”已經(jīng)偏離真實最佳均衡點最終剩余誤差不再是零而是這個偏置。工程上最容易踩的坑是把這種固定偏置誤判成環(huán)路沒收斂去調(diào)大環(huán)路帶寬實際上增大帶寬只會增加穩(wěn)態(tài)抖動并不會把偏置消掉。這個機理理解透后面看測試數(shù)據(jù)就順了。1.2 測試想回答的三個問題和信號參數(shù)快照這次測試我給自己的目標(biāo)非常具體不指望把所有多徑場景全測全。第一個問題是多徑時延大小會如何影響收斂速度——Gardner環(huán)從上電到鎖定需要多少個符號周期第二個問題是多徑幅度如何影響穩(wěn)態(tài)定時抖動以及最終誤碼率第三個問題是多徑強到什么程度會直接導(dǎo)致環(huán)失鎖。圍繞這三個問題我固定了一組基線參數(shù)QPSK、符號速率1 Msps、4倍過采樣、成形濾波采用滾降系數(shù)0.25的根升余弦濾波器定時環(huán)的歸一化環(huán)路帶寬BL·T設(shè)為0.02。所有測試都在相同信噪比20dB下進行隔離其他因素單獨觀察多徑維度。這么做的好處是結(jié)果之間可以直接橫向?qū)Ρ壬弦惠啘y不同SNR的數(shù)據(jù)也還能復(fù)用。參數(shù)上還有一個細(xì)節(jié)需要交代多徑時延的分檔。我選了0.1T、0.25T、0.5T、0.8T四檔0.5T是最惡劣的擋位因為正交信號在符號中點的相干疊加最容易造成符號間干擾。幅度分檔是-20dB、-10dB、-6dB、-3dB-3dB基本對應(yīng)接收端副徑與主徑幅度相當(dāng)?shù)臉O限場景。在這個參數(shù)快照下每一組都跑滿2^16個符號重復(fù)30次統(tǒng)計鎖定時間和失鎖比例。整輪測試大約四十多組仿真跑起來并不慢但能把問題的邊界畫清楚。2. 先把手頭的Gardner環(huán)拆開看為了讓多徑測試結(jié)論可靠我不可能拿黑盒去做分析必須把FPGA里跑的定時環(huán)每一個模塊都過一遍。Gardner環(huán)在FPGA中可以拆成四個部分定時誤差檢測器TED、環(huán)路濾波器、NCO、插值器。很多工程問題不是算法不對而是定點實現(xiàn)和模塊間的延遲把環(huán)路帶寬或誤差增益悄悄改變了。尤其是在多徑存在的場景TED輸出幅度隨信道變化很大如果不做歸一化環(huán)路實際帶寬會隨信道狀態(tài)漂移后面看數(shù)據(jù)就會“找不到原因”。2.1 TED、Farrow插值器與定點的三層坑TED實現(xiàn)上需要當(dāng)前符號采樣值y(k)、前一符號采樣值y(k-1)以及兩者中間的半符號采樣值y(k-1/2)。QPSK的I/Q兩路都要參與實際誤差值取復(fù)平面組合要按接收機結(jié)構(gòu)決定。我這邊采用復(fù)數(shù)形式e(k) Re{y(k-1/2)·(y*(k) - y*(k-1))}。中間點采樣并不是ADC直接給出的是靠插值器在過采樣序列里計算出來的小數(shù)延遲點。FPGA里我用了四階Farrow結(jié)構(gòu)用當(dāng)前點前后四個采樣值做三次多項式插值。定點位寬上輸入樣值用了16bitFarrow系數(shù)用16bit有符號數(shù)插值結(jié)果保留到20bit。這個結(jié)構(gòu)在無多徑場景表現(xiàn)很好誤差精度能到0.001符號周期以內(nèi)但在多徑測試中我發(fā)現(xiàn)如果插值器系數(shù)位寬不足多徑造成的高頻分量會直接變成插值噪聲結(jié)果比信道本身的損傷還明顯。這個教訓(xùn)后面專門說。誤差算法本身不復(fù)雜我貼一段Verilog摘要展示實現(xiàn)思路// Gardner TED核心QPSK I/Q兩路 wire signed [19:0] mI interp_I; // 半符號點I wire signed [19:0] s0I cur_I; // 當(dāng)前符號I wire signed [19:0] s1I prev_I; // 前一個符號I wire signed [19:0] errI mI * (s0I - s1I); // I路誤差 wire signed [19:0] mQ interp_Q; wire signed [19:0] s0Q cur_Q; wire signed [19:0] s1Q prev_Q; wire signed [19:0] errQ mQ * (s0Q - s1Q); // Q路誤差 reg signed [19:0] e_ted; always (posedge clk) begin e_ted (errI errQ) TED_SHIFT; // 歸一化右移 end真正定點實現(xiàn)時乘法器要配DSP48并且根據(jù)仿真結(jié)果確定TED_SHIFT的值。我在無多徑信道下先做一遍浮點模型與定點模型的對比把量化誤差控制在2%以內(nèi)才放心進入多徑測試。2.2 環(huán)路濾波器、NCO與帶寬選擇的折中環(huán)路濾波器和NCO決定了環(huán)的動態(tài)特性。我用的是二階環(huán)路比例支路Kp負(fù)責(zé)直接對當(dāng)前誤差做出響應(yīng)積分支路Ki負(fù)責(zé)消除靜態(tài)誤差。由于Gardner環(huán)工作在符號率上NCO實際上是一個相位累加器每次迭代輸出的小數(shù)相位控制Farrow插值器累加器位寬我用了24bit這決定了可調(diào)頻率分辨率。歸一化帶寬BL·T是設(shè)計時輸入量我給出常用對應(yīng)關(guān)系BL·TKpKi特點0.010.0280.0004捕獲慢抗噪聲強適合高SNR但需穩(wěn)定0.020.0560.0015折中本文測試默認(rèn)0.050.1410.01捕獲快穩(wěn)態(tài)抖動大這張表是PI參數(shù)換算后的經(jīng)驗值實際還需要根據(jù)環(huán)路延遲微調(diào)。多徑場景下我認(rèn)為最關(guān)鍵的取舍在“帶寬能不能跟著多徑強度變”多徑產(chǎn)生的定時自噪聲主要落在低頻區(qū)把BL·T收窄能壓住自噪聲但會使環(huán)對時變信道失去跟蹤能力。沒有自適應(yīng)環(huán)路的前提下我把默認(rèn)帶寬定在0.02是在上一輪SNR測試基礎(chǔ)上找的平衡點。后面跑多徑用例時凡是抖動異常增大的用例我都額外補跑BL·T等于0.01和0.05的對照用來判斷是信道損傷還是環(huán)路帶寬不匹配。3. 多徑注入與性能測試工程實現(xiàn)測試工程搭建時最重要的決定是“多徑信道在哪里注入”。我之前見過有人直接用MATLAB把多徑信號算好寫成文件再在Testbench里讀文件灌給RTL也有人用System Generator的FIR抽頭模型在線生成。兩種都可以但我為了保證后續(xù)板級驗證能直接復(fù)用選擇了在RTL側(cè)用抽頭延遲線加乘法器做成一個參數(shù)可配的信道模型。3.1 兩徑信道模型從解耦參數(shù)到FPGA建模兩徑模型就一句話輸出 當(dāng)前樣值 副徑系數(shù) × 延遲后的樣值。困難在延遲不一定是整數(shù)個采樣點。比如符號周期T對應(yīng)4個采樣點時延0.25T對應(yīng)的就是1個采樣周期可以用寄存器鏈直接取而0.1T對應(yīng)0.4個采樣點寄存器鏈沒法直接給分?jǐn)?shù)延遲必須再做一次插值。我的做法是先用一個獨立Farrow插值器把當(dāng)前序列做分?jǐn)?shù)延遲再把輸出乘以幅度系數(shù)后疊加到主路徑上。這里有個容易被忽略的問題多徑疊加后信號總功率會上升如果不做歸一化進入TED的信號幅度變化會被誤讀成定時誤差變化。我按主徑幅度1、副徑幅度β歸一化總能量代碼里乘上一個固定因子1/sqrt(1β2)確保不同用例之間S曲線增益可比。信道模型參數(shù)表如下我用寄存器字控制用例組多徑時延多徑幅度系數(shù)β數(shù)字化16bitT10.1T-10dB0.316T20.25T-10dB0.316T30.5T-10dB0.316T40.8T-10dB0.316A10.25T-20dB0.100A20.25T-6dB0.501A30.25T-3dB0.708T1-T4觀察時延維度的變化A1-A3觀察幅度維度的變化中間用0.25T、-10dB這組交叉用例保證兩組可以直接對比。這組參數(shù)聽起來很直觀但第一次跑的時候我踩了坑副徑時延在Tx信號發(fā)生端和信道模型是兩套時鐘域如果省掉異步處理在仿真里會出現(xiàn)隨機毛刺。后來統(tǒng)一把整個信道模型放在ADC采樣時鐘域激勵從ROM里按同一時鐘讀問題才消失。3.2 Testbench與統(tǒng)計模塊用寄存器輸出性能指標(biāo)性能測試不能靠眼睛盯著ModelSim波形數(shù)刻度那不叫測試。我往RTL里嵌了一個統(tǒng)計模塊用AXI-Lite寄存器把實時指標(biāo)讀出來。每個符號周期統(tǒng)計模塊做四件事記錄TED輸出的瞬時值、累計定時誤差平方和、統(tǒng)計鎖定標(biāo)志的跳變次數(shù)、記錄從啟動到鎖定的符號計數(shù)。為了把鎖定定義具體化我在統(tǒng)計模塊里設(shè)置“誤差滑動平均值小于0.05符號周期并連續(xù)保持2^10個符號周期”作為鎖定條件。同時為了測試公平每次仿真開始時NCO初始相位不是一個固定值而是用線性反饋移位寄存器產(chǎn)生隨機符號內(nèi)偏移避免初始相位恰好落在S曲線零點附近而“假鎖定”。激勵側(cè)的安排也值得提一下QPSK基帶信號用MATLAB生成經(jīng)過根升余弦成形、量化成16bit樣值后寫到COE文件Testbench用$readmemh讀入ROM。每個用例更換信道參數(shù)實際上只需要重新生成信道仿真文件或者通過寄存器實時配置抽頭系數(shù)和延遲。跑完所有用例再用MATLAB腳本解析仿真導(dǎo)出的寄存器數(shù)據(jù)畫收斂曲線和抖動分布。這套流程并不復(fù)雜但統(tǒng)計口徑統(tǒng)一橫向?qū)Ρ炔庞幸饬x。3.3 數(shù)據(jù)采集與指標(biāo)定義最終我采了六個指標(biāo)平均收斂符號數(shù)、失鎖概率、穩(wěn)態(tài)定時抖動σ_e、眼圖張開度、誤碼率、TED輸出均值。其中σ_e的定義是鎖定后定時誤差序列的標(biāo)準(zhǔn)差單位是符號周期眼圖張開度我用過零點附近采樣點的同相幅度比值來近似反映可解碼裕量。誤碼率在仿真里直接做符號級硬判每用例統(tǒng)計2^16符號。這里有一個細(xì)節(jié)單獨仿真定時環(huán)時看不出誤碼需要把定時環(huán)輸出的插值樣值送到后續(xù)匹配濾波和判決器里才能反映出定時質(zhì)量對鏈路最終性能的影響。我這輪把判決器一起跑通了因此后面的誤碼數(shù)據(jù)是端到端結(jié)果不是孤立的定時誤差換算值。4. 不同多徑大小下的實測結(jié)果數(shù)據(jù)就跑完了開始看結(jié)論。整體來說多徑對Gardner環(huán)的影響是“溫和時延先拖慢收斂幅度再決定抖動上限”。我先把兩個維度的數(shù)據(jù)分開講再合起來解釋S曲線變化的機理。4.1 時延維度收斂速度先降、鎖定點再偏移固定多徑幅度-10dB、SNR 20dB改變時延收斂時間和鎖定點偏移的數(shù)據(jù)統(tǒng)計如下多徑時延平均收斂符號數(shù)鎖定點偏移符號失鎖概率無多徑4520.0021%0.1T473-0.0081%0.25T7120.0522%0.5T13310.1178%0.8T18020.12425%可以看到0.1T時幾乎沒影響從0.25T開始收斂時間和鎖定點偏移明顯上升到0.5T時最典型的問題已經(jīng)不只是慢而是鎖定點被拉到約0.117個符號周期——這個偏移換算成采樣相位就是約42度對QPSK解調(diào)器來說已經(jīng)非??捎^。0.8T那組失鎖概率上升到25%說明環(huán)路在不同初始相位下經(jīng)常找不到正確的S曲線零點偶爾會鎖定到相鄰的偽零點上去。還有一個細(xì)節(jié)值得注意0.5T和0.8T的鎖定點偏移都在0.12符號附近與單符號信道記憶理論的預(yù)期基本一致過零點偏移在半個符號時延附近趨于飽和。時延變化改變的是符號間干擾的“作用位置”。小于0.1T的時延等效為信道群延遲Gardner環(huán)完全可以吸收掉看起來只是把采樣點整體移動了一下當(dāng)延遲接近并超過半個符號副徑會直接落在相鄰符號的判決點附近碼間干擾的能量進入TED計算窗口S曲線的過零點不再單調(diào)鎖相過程開始出現(xiàn)多個準(zhǔn)平衡點。這就是為什么收斂符號數(shù)從400多跳到1800不是單純變慢而是環(huán)路搜索機制在多準(zhǔn)平衡點環(huán)境里總在反復(fù)試探。4.2 幅度維度抖動與誤碼呈非線性增長固定多徑時延0.25T、SNR 20dB改變多徑幅度結(jié)果如下多徑幅度穩(wěn)態(tài)σ_e符號眼圖張開度誤碼率BER無多徑0.01699%1e-5-20dB0.02295%1e-5-10dB0.03586%4e-4-6dB0.05873%6e-3-3dB0.12742%1.4e-2第一眼看σ_e從0.035跳到0.127增幅明顯大于線性這說明多徑造成的定時自噪聲與副徑幅度不是簡單的比例關(guān)系。原因在于多徑不僅增加了誤差檢測的自噪聲還改變了誤差檢測增益副徑幅度越大TED輸出中的確定性偏置越強環(huán)路試圖把偏置積分掉的同時又把大量ISI相關(guān)的波動放大成抖動。眼圖張開度在-3dB時掉到42%這已經(jīng)是基帶解調(diào)基本不可用的水平。另一個值得一提的現(xiàn)象是多徑幅度相同但時延不同時抖動差異非常大在-6dB、時延0.25T的條件下σ_e約0.058而同樣的幅度在時延0.5T時σ_e會上升到接近0.09。所以多徑的影響應(yīng)該看“時延幅度”的組合單獨給一個“有多少dB多徑”并不能說明問題。誤碼與抖動的折算也值得深入看0.127個符號的定時抖動對QPSK在20dB信噪比下造成的誤碼率下降遠(yuǎn)超預(yù)期。因為定時偏移直接造成采樣點偏離符號中心等價于降低了有效信噪比。估算下來-3dB多徑帶來的等效SNR損失大約在5到6dB。這個數(shù)字并不新奇但FPGA實測能穩(wěn)定復(fù)現(xiàn)就有參考價值了。4.3 用S曲線解釋為什么多徑這么難纏為了把數(shù)據(jù)背后的東西講清楚我把TED的輸出在每個固定的定時偏移下掃一遍得到S曲線。無多徑情況下S曲線是一條過零點附近基本線性的平滑曲線。加入0.5T時延、-10dB幅度后曲線形態(tài)發(fā)生兩個變化過零點向右平移約0.12符號過零點附近的斜率從約0.5下降到約0.34。斜率下降意味著環(huán)路增益變小同樣的誤差電壓對NCO的拉動力下降所以收斂變慢零點平移意味著即使在穩(wěn)態(tài)誤差均值也不為零固定偏置始終存在。這兩個變化放在一起就解釋了前面所有數(shù)據(jù)收斂慢是斜率下降的結(jié)果鎖定點偏移是零點平移的結(jié)果失鎖概率上升則是S曲線在遠(yuǎn)離零點區(qū)域出現(xiàn)非單調(diào)甚至局部極小值的直接后果。對FPGA開發(fā)人員來說S曲線不是算法課上的抽象概念它是可以用硬件掃描出來的關(guān)鍵曲線。我在工程里用寄存器把TED輸出按偏移量分桶統(tǒng)計300毫秒左右就能把S曲線掃出來調(diào)試多徑問題比看一堆抖動波形直觀得多。如果你也在處理類似問題強烈建議在測試模塊里加一個“S曲線掃描”模式短時間內(nèi)能省下大量排查時間。5. 踩坑清單、抗多徑思路與后續(xù)方向把最值錢的故障排除經(jīng)驗放在最后。多徑測試不是灌一個信號看波形就行這輪跑下來我在工程細(xì)節(jié)上抓出幾個典型問題都值得記錄。5.1 踩過的三個坑分?jǐn)?shù)延遲、歸一化與帶寬誤判第一個坑就是多徑分?jǐn)?shù)延遲。最初圖省事時延直接從采樣點抽整數(shù)拍0.25T、0.5T能整數(shù)對應(yīng)沒關(guān)系但0.1T和0.8T兩檔就出問題了——用整數(shù)延遲替代分?jǐn)?shù)延遲后0.1T的測試結(jié)果與理論完全不匹配S曲線零點偏移幾乎為零但抖動異常增大。后來查清是整數(shù)延遲在相鄰采樣點之間“跳變”產(chǎn)生了額外的相位噪聲。解決方法是把分?jǐn)?shù)延遲統(tǒng)一用獨立Farrow插值器生成確保任意時延都能連續(xù)變化。第二個坑是信道增益沒有歸一化。多徑疊加讓信號平均功率變大TED輸出的幅度整體上抬統(tǒng)計模塊算出來的“均值”不再能反映真實定時偏移。我在信道模型里加了固定能量歸一化系數(shù)1/sqrt(1β2)把主徑加副徑的總功率歸一化回單位功率所有用例的TED均值才具有可比性。第三個坑最隱蔽把環(huán)路帶寬太寬導(dǎo)致的自噪聲誤判為多徑失鎖。剛開始用BL·T0.05跑-3dB用例看到σ_e沖到0.17以上差點結(jié)論寫成“系統(tǒng)失鎖”后來補跑BL·T0.01的對照σ_e立刻降到0.11發(fā)現(xiàn)10dB多徑并沒有讓環(huán)完全失鎖只是寬帶寬放大了多徑自噪聲。這個錯誤在無多徑測試中發(fā)現(xiàn)不了因為高斯噪聲被環(huán)路濾掉后自噪聲的貢獻(xiàn)很小多徑的時序相關(guān)噪聲會讓寬帶寬付出明顯代價。5.2 工程上實用的抗多徑優(yōu)化措施從這輪測試看多徑環(huán)境下的Gardner環(huán)設(shè)計不能指望換算法一勞永逸但有幾個工程手段能把環(huán)境影響壓下來。第一是環(huán)路帶寬自適應(yīng)用狀態(tài)機簡單檢測TED輸出的滑動方差方差小于閾值時把BL·T從0.05降到0.01可以同時兼顧捕獲速度和穩(wěn)態(tài)抖動FPGA實現(xiàn)時就是多組Kp/Ki系數(shù)表切換時對NCO相位做連續(xù)性處理防止跳變。第二是滾降系數(shù)的選擇根升余弦的滾降系數(shù)從0.25提高到0.5后多徑引起的過零點偏移會減小因為頻譜滾降區(qū)域占更大比例信號對抗ISI的余量更足代價是占用帶寬變大適合帶寬充裕的場合。第三是級聯(lián)均衡在Gardner環(huán)后面掛一個自適應(yīng)均衡器多徑的固定ISI由均衡器消掉讓定時環(huán)只負(fù)責(zé)相位對齊這種“先定時后均衡”的結(jié)構(gòu)在實測中能比單環(huán)方案提高3dB以上的等效SNR。最后還有一個細(xì)節(jié)所有抗多徑手段的驗證都要跑完整鏈路不能只看定時抖動一項指標(biāo)我這輪把誤碼率放進來后發(fā)現(xiàn)有些“抖動改善了”的配置誤碼率反而沒變化因為真正限制性能的已經(jīng)變成固定ISI了。以上措施是在我的兩徑模型下驗證的真實信道多徑條數(shù)更多、衰落隨時間變化結(jié)論會有偏差但工程手段的方向一致。5.3 后續(xù)計劃與個人驗證心得下一輪測試我已經(jīng)排上日程了一是把滾降系數(shù)從0.25換到0.5看定時環(huán)的耐受度能提高多少二是把兩徑擴張到三徑、四徑模擬更接近實際場景的頻率選擇性衰落三是考慮在多徑模型基礎(chǔ)上同時疊加殘余載波頻偏看看Gardner環(huán)在載波恢復(fù)之前的性能邊界。每次測試我都會先把浮點模型跑一遍確定理論參考曲線再上FPGA定點否則很難判斷結(jié)果是算法問題還是定點量化問題。個人體會很深的一點是FPGA里的時序同步模塊最怕的不是算法復(fù)雜而是定點和環(huán)路參數(shù)沒有量化的邊界概念。多徑測試能逼著人把所有邊界都暴露出來這比單純調(diào)好一個無多徑場景的環(huán)路參數(shù)有價值得多。如果你也準(zhǔn)備做類似測試我建議一開始就把多徑時延、幅度、環(huán)路帶寬、滾降系數(shù)四個參數(shù)做成交叉矩陣全部跑完再下結(jié)論單獨一兩個用例的波形說明不了任何設(shè)計優(yōu)劣。