0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

FPGA案例解析:針對(duì)源同步的時(shí)序約束

454398 ? 來(lái)源:CSDN博主 ? 作者:meper ? 2020-11-20 14:44 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

約束流程

說(shuō)到FPGA時(shí)序約束的流程,不同的公司可能有些不一樣。反正條條大路通羅馬,找到一種適合自己的就行了。從系統(tǒng)上來(lái)看,同步時(shí)序約束可以分為系統(tǒng)同步與源同步兩大類。簡(jiǎn)單點(diǎn)來(lái)說(shuō),系統(tǒng)同步是指FPGA與外部器件共用外部時(shí)鐘;源同步(SDR,DDR)即時(shí)鐘與數(shù)據(jù)一起從上游器件發(fā)送過(guò)來(lái)的情況。在設(shè)計(jì)當(dāng)中,我們遇到的絕大部分都是針對(duì)源同步的時(shí)序約束問(wèn)題。所以下文講述的主要是針對(duì)源同步的時(shí)序約束。

根據(jù)網(wǎng)絡(luò)上收集的資料以及結(jié)合自己的使用習(xí)慣,我比較趨向于下面的約束流程方式:時(shí)序約束一共包含以下幾個(gè)步驟:時(shí)鐘約束、IO約束以及時(shí)序例外。這幾個(gè)步驟應(yīng)該可以解決我們?cè)O(shè)計(jì)當(dāng)中絕大多數(shù)情況下的時(shí)序約束問(wèn)題。

1. 首先約束時(shí)鐘。輸入時(shí)鐘,輸出時(shí)鐘。從種類 來(lái)看不外乎以下幾種:?jiǎn)味溯斎霑r(shí)鐘、差分輸入時(shí)鐘、GT或恢復(fù)時(shí)鐘(例如LVDS信號(hào)恢復(fù)出來(lái)的時(shí)鐘)、PLL產(chǎn)生的時(shí)鐘以及自己產(chǎn)生的門控時(shí)鐘。
2.IO約束。只有等待內(nèi)部時(shí)鐘完全通過(guò)后,再配置input delay和output delays,告知FPGA外部端口的數(shù)據(jù)時(shí)序關(guān)系。
3.時(shí)序例外。在約束完時(shí)鐘以及IO后,還是有時(shí)序違例的時(shí)候,注意檢查一下是否有時(shí)序例外的情況,例如多周期時(shí)鐘路徑、異步時(shí)鐘、常量、以及互斥時(shí)鐘路徑等等。

常用指令

下面我們就根據(jù)約束的流程來(lái)介紹一下每個(gè)步驟中的常用指令。

時(shí)鐘約束

常用指令:Create_clock、Create_generated_clock、derive pll_clocks、create_virtual_clock。

對(duì)時(shí)鐘的約束,首先要明確,我們要約束的時(shí)鐘有哪些,然后針對(duì)不同的時(shí)鐘進(jìn)行約束。下面針對(duì)不同類型的時(shí)鐘,對(duì)其約束的指令作簡(jiǎn)要分析。

單端輸入時(shí)鐘:

圖1 單端輸入時(shí)鐘約束

這里用到了create_clock,一開(kāi)始不熟悉語(yǔ)法的同學(xué)可以通過(guò)Timequest 的GUI界面或者Templete里面的模板里找到該指令。

差分輸入時(shí)鐘:

差分輸入時(shí)鐘,只需約束P端輸入時(shí)鐘即可,方法同上。

PLL產(chǎn)生的時(shí)鐘:

針對(duì)PLL產(chǎn)生的時(shí)鐘一般有兩種方式。一種是通過(guò)derive pll_clocks即可,PLL會(huì)根據(jù)所設(shè)定的參數(shù),自行約束輸出時(shí)鐘。這樣做的好處就是,指令少,當(dāng)PLL煽出的時(shí)鐘比較多的時(shí)候,很有優(yōu)勢(shì),不利的地方在于,PLL生產(chǎn)的時(shí)鐘名字命名不可把控,區(qū)分度不明顯,不利于后續(xù)的引用。所以我比較趨向于后面一種方式,是通過(guò)Create_clock、Create_generated_clock這兩條指令完成。

圖2 PLL生成的時(shí)鐘約束

首先用create_clock指令對(duì)輸入的時(shí)鐘clk_in進(jìn)行約束,然后通過(guò)create_generated_clock指令對(duì)PLL的輸出時(shí)鐘進(jìn)行約束,這里PLL的輸出時(shí)鐘只是做了90°的相位偏移,頻率不變。有童鞋可能會(huì)問(wèn),如果要倍頻或者分頻呢?該怎樣寫?說(shuō)實(shí)話,一開(kāi)始學(xué)的時(shí)候,我也記不得指令的格式。在這里,再一次強(qiáng)調(diào),在初學(xué)的時(shí)候,沒(méi)有必要去糾結(jié)語(yǔ)法。很多時(shí)候,約束的時(shí)候,只需標(biāo)明用到的約束信息出來(lái)即可,再退一步講,可以通過(guò)GUI界面產(chǎn)生相應(yīng)的指令,你需要做的是明確相關(guān)的參數(shù),知道怎么填就行啦,重點(diǎn)是理解時(shí)序約束的流程、應(yīng)該怎么去約束才是重點(diǎn)。

GT或恢復(fù)的時(shí)鐘

GT或恢復(fù)的時(shí)鐘(例如高速串口過(guò)來(lái)恢復(fù)出來(lái)的時(shí)鐘)針對(duì)這種情況,一般都是FPGA內(nèi)部用IP核恢復(fù)出來(lái)時(shí)鐘,約束格式同上。

圖3 GT或者恢復(fù)時(shí)鐘的約束

自己分頻的時(shí)鐘

(不建議這種方法,推薦PLL來(lái)產(chǎn)生,如果非要這樣做,務(wù)必添加約束)

圖4 自己生成的時(shí)鐘

虛擬時(shí)鐘create_virtual_clock

官網(wǎng)上的手冊(cè)推薦在IO約束的時(shí)候,使用虛擬時(shí)鐘,尤其是在約束輸入延遲的時(shí)候。虛擬時(shí)鐘表征的是上游器件內(nèi)部用于輸出數(shù)據(jù)的時(shí)鐘(從另一個(gè)角度考慮,它表征的類似SDR模式中第一級(jí)D觸發(fā)器的時(shí)鐘)。通過(guò)約束告訴FPGA 的Input_Clock(實(shí)際上是Clock_Out)和虛擬時(shí)鐘(數(shù)據(jù))的相位關(guān)系。FPGA根據(jù)參數(shù)Input_delay在布線時(shí)進(jìn)行調(diào)整使得布線滿足時(shí)序要求。

圖5 虛擬時(shí)鐘關(guān)系

我們分邊沿對(duì)齊和中心對(duì)齊兩種模式對(duì)輸入進(jìn)行約束,對(duì)于邊沿對(duì)齊的信號(hào),我們通常會(huì)將其輸入引腳輸入值專用的PLL輸入口,進(jìn)行90°相移。約束如下所示:注意在對(duì)齊模式下,圖6中對(duì)clk_in進(jìn)行約束時(shí)不需要進(jìn)行額外的移相,而僅對(duì)clock(經(jīng)過(guò)PLL后的輸出時(shí)鐘)進(jìn)行移相90°。

圖6 邊沿對(duì)齊輸入時(shí)鐘約束

create_clock-name virtual_clock -period 10

create_clock-name input_clock -period 10 [get_ports clock_in]

create_generated_clock-name plus_90_degrees -source [get_pins PLL|inclk[0]] -phase 90

對(duì)于中心對(duì)齊模式,其輸入時(shí)序模型如圖7所示,其約束圖下方所示。一般而言,對(duì)于中心對(duì)齊模式,我們FPGA內(nèi)部不會(huì)使用專門的鎖相環(huán)對(duì)齊進(jìn)行移相操作,但若依然使用PLL,上述邊沿對(duì)齊對(duì)PLL的約束方法依然有效。但對(duì)clk_in的約束依然要表現(xiàn)出和virtual clock的相位關(guān)系。

圖7 中心對(duì)齊輸入時(shí)序約束

create_clock -namevirtual_clock -period 10

create_clock -nameinput_clock -period 10 [get_ports clock_in] -waveform {2.5 7.5}

IO約束

IO的約束主要是指input_delay與output_delay這兩種,編譯軟件(ISE/Quartus)是個(gè)很強(qiáng)大而又很傻的工具,在設(shè)計(jì)的時(shí)候,你務(wù)必要告訴他在FPGA外部的信號(hào)時(shí)序關(guān)系,他才能夠知道怎么去優(yōu)化內(nèi)部的時(shí)序,以滿足時(shí)序設(shè)計(jì)要求。

Set Input_delay

從輸入來(lái)看,無(wú)非有以下兩種情況:SDR與DDR。

SDR是指,數(shù)據(jù)只在時(shí)鐘的上升沿更新,而DDR是時(shí)鐘的上升沿與下降沿都會(huì)更新。按照時(shí)鐘與數(shù)據(jù)對(duì)齊方式來(lái)劃分,又可以分為沿對(duì)齊與中心對(duì)齊兩種。對(duì)于輸入延遲的獲取,一般來(lái)說(shuō)有以下三種途徑:文中直接給出Tco、Tdata等參數(shù);通過(guò)查閱上級(jí)器件的數(shù)據(jù)手冊(cè);通過(guò)示波器來(lái)實(shí)測(cè)。查上游的器件手冊(cè)(主要看Tsu 與Th),那么可以推算出,F(xiàn)PGA輸入延遲的最值,為了方便描述,這里設(shè)定時(shí)鐘與數(shù)據(jù)在PCB上的傳輸延遲一致:

Input delay max = T – Tsu;

Input delay min = Th;

當(dāng)時(shí)鐘與數(shù)據(jù)到達(dá)FPGA的延時(shí)不一致時(shí),計(jì)算公式如下:

Input_delay_min = Th_min+ (T_data_max -T_clk_min)

Input_delay_max = T-Tsu_max+ (T_data_min -T_clk_max)

其中T_data是數(shù)據(jù)延時(shí),T_clk是時(shí)鐘延時(shí),由此可見(jiàn)在PCB布線的時(shí)候,務(wù)必讓時(shí)鐘與數(shù)據(jù)的走線盡可能等長(zhǎng)。這樣不容易導(dǎo)致時(shí)序違例現(xiàn)象。(這個(gè)公式無(wú)論是中心對(duì)齊或者邊沿對(duì)齊都適用,只不過(guò)中心對(duì)齊與邊沿對(duì)齊他們的建立時(shí)間和保持時(shí)間計(jì)算不一樣而已,稍后說(shuō)明。) 其中T為FPGA用于采集上游器件發(fā)送過(guò)來(lái)的數(shù)據(jù)時(shí)鐘。又或者直接通過(guò)示波器觀察時(shí)鐘與數(shù)據(jù)的延遲關(guān)系。有些情況,例如給定了相關(guān)數(shù)值的話(Tco ,data_delay等數(shù)值),可以直接算出輸入延遲。跟上一篇計(jì)算數(shù)據(jù)到達(dá)時(shí)間里一樣,這里就不展開(kāi)論述。

圖8 SDR中心對(duì)齊的輸入輸出延遲最值

圖9 SDR邊沿對(duì)齊的輸入輸出最值

回顧一下Tsu與Th的定義。setuptime :數(shù)據(jù)要能夠被Latch Edge正確鎖存,必須要在Latch Edge 到達(dá)之前保持穩(wěn)定,這個(gè)提前到達(dá)的最少時(shí)間量,就是建立時(shí)間。

Hold time : 數(shù)據(jù)要能夠被LatchEdge正確鎖存,除了在Latch Edge到達(dá)之前提前準(zhǔn)備好以外,還必須在Latch Edge到達(dá)后,保持穩(wěn)定一段時(shí)間。這段保持穩(wěn)定的時(shí)間,就是Hold time。圖中DVW是指數(shù)據(jù)有效值寬度,圖5中心對(duì)齊的情況下很好理解。對(duì)于圖6中提到的邊沿對(duì)齊情況,我覺(jué)得可以這么理解,在計(jì)算Tsu的時(shí)候,都是Latch時(shí)刻減去數(shù)據(jù)穩(wěn)定起始沿時(shí)刻;而Th是數(shù)據(jù)穩(wěn)定終止沿時(shí)刻減去Latch時(shí)刻。這么一算,不難可以得到在邊沿對(duì)齊的情況下,保持時(shí)間Th為負(fù)的。代入公式可得,邊沿對(duì)齊的情況下,input_delay_max=保持時(shí)間=-Th(這里的Th僅為數(shù)值,不帶符號(hào))。

圖10輸入延遲約束

圖10中,左邊是通過(guò)查閱上游器件數(shù)據(jù)手冊(cè)得到的數(shù)據(jù),右邊的是用示波器測(cè)量得到的數(shù)據(jù)。

注:在對(duì)DDR的約束中,記得時(shí)鐘下降沿約束的時(shí)候加上-clock_fall與-add_delay;上面列舉的例程中,原著中都沒(méi)有用到虛擬時(shí)鐘,但是官網(wǎng)手冊(cè)中也只是推薦使用,并沒(méi)有說(shuō)一定要用虛擬時(shí)鐘。看個(gè)人喜好吧,如果要用虛擬時(shí)鐘,可以這樣約束,后續(xù)會(huì)列舉一個(gè)完整的例子。

Set output_delay

輸出延時(shí)的分析與輸入延時(shí)類似。這里設(shè)定時(shí)鐘與數(shù)據(jù)在PCB上的傳輸延遲一致:

output delay max = Tsu;

output delay min = -Th;

當(dāng)時(shí)鐘與數(shù)據(jù)到達(dá)FPGA的延時(shí)不一致時(shí),計(jì)算公式如下:

Output_delay_min= -Th_max + (Tdata_min-Tclk_max)

Output_delay_max=Tsu_max + (Tdata_max-Tclk_min)

其中,T_data是數(shù)據(jù)延遲;T_clk為時(shí)鐘的延遲。

上述是DDR中心對(duì)齊輸出的輸出延遲約束。

上述是DDR邊沿對(duì)齊輸出的輸出延遲約束。

SDR的輸出約束方式類似,這里就不在累贅了。

時(shí)序例外

時(shí)序例外一般用在clock與IO都約束后,還是不滿足時(shí)序要求的情況下。主要包括以下幾種情況:

1. 多周期set_milticycle_path(不推薦)
2. 不需要檢測(cè)路徑(常見(jiàn),重要)set_false_path
3. 常量與偽常量
4.互斥的路徑
5. 異步時(shí)鐘(這種情況下,務(wù)必要確保邏輯上對(duì)異步時(shí)鐘域的信號(hào)做了處理,例如打兩拍,F(xiàn)IFO等手段處理)
6. 組合電路延時(shí),即邏輯不經(jīng)過(guò)任何時(shí)鐘處理就輸出的情況。

個(gè)人比較取向與set_false_path與set_clock_groups-exclusive。

編輯:hfy

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • FPGA
    +關(guān)注

    關(guān)注

    1645

    文章

    22026

    瀏覽量

    617642
  • pcb
    pcb
    +關(guān)注

    關(guān)注

    4364

    文章

    23471

    瀏覽量

    409046
  • DDR
    DDR
    +關(guān)注

    關(guān)注

    11

    文章

    732

    瀏覽量

    66713
  • 時(shí)序約束
    +關(guān)注

    關(guān)注

    1

    文章

    118

    瀏覽量

    13670
收藏 1人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

  • snow12581
  • Jeebus1

評(píng)論

相關(guān)推薦
熱點(diǎn)推薦

西門子再收購(gòu)EDA公司 西門子宣布收購(gòu)Excellicon公司 時(shí)序約束工具開(kāi)發(fā)商

精彩看點(diǎn) 此次收購(gòu)將幫助系統(tǒng)級(jí)芯片 (SoC) 設(shè)計(jì)人員通過(guò)經(jīng)市場(chǎng)檢驗(yàn)的時(shí)序約束管理能力來(lái)加速設(shè)計(jì),并提高功能約束和結(jié)構(gòu)約束的正確性 ? 西門子宣布 收購(gòu) Excellicon 公司
的頭像 發(fā)表于 05-20 19:04 ?794次閱讀
西門子再收購(gòu)EDA公司  西門子宣布收購(gòu)Excellicon公司  <b class='flag-5'>時(shí)序</b><b class='flag-5'>約束</b>工具開(kāi)發(fā)商

FPGA時(shí)序約束之設(shè)置時(shí)鐘組

Vivado中時(shí)序分析工具默認(rèn)會(huì)分析設(shè)計(jì)中所有時(shí)鐘相關(guān)的時(shí)序路徑,除非時(shí)序約束中設(shè)置了時(shí)鐘組或false路徑。使用set_clock_groups命令可以使
的頭像 發(fā)表于 04-23 09:50 ?396次閱讀
<b class='flag-5'>FPGA</b><b class='flag-5'>時(shí)序</b><b class='flag-5'>約束</b>之設(shè)置時(shí)鐘組

一文詳解Vivado時(shí)序約束

Vivado的時(shí)序約束是保存在xdc文件中,添加或創(chuàng)建設(shè)計(jì)的工程源文件后,需要?jiǎng)?chuàng)建xdc文件設(shè)置時(shí)序約束。時(shí)序
的頭像 發(fā)表于 03-24 09:44 ?3478次閱讀
一文詳解Vivado<b class='flag-5'>時(shí)序</b><b class='flag-5'>約束</b>

【國(guó)產(chǎn)FPGA必備教程】——紫光同創(chuàng)FPGA圖像視頻教程,適用于小眼睛FPGA盤古全系列開(kāi)發(fā)板

案例、時(shí)序約束及收斂方法等,教程內(nèi)容豐富,從入門到應(yīng)用提高,覆蓋紫光同創(chuàng)FPGA開(kāi)發(fā)全流程,教程適用于小眼睛科技盤古系列、泰坦系列全開(kāi)發(fā)套件。目前,小眼睛科技基于FPGA賽事配套紫光同
發(fā)表于 02-19 15:44

xilinx FPGA IOB約束使用以及注意事項(xiàng)

采用了IOB約束,那么就可以保證從IO到達(dá)寄存器或者從寄存器到達(dá)IO之間的走線延遲最短,同時(shí)由于IO的位置是固定的,即存在于IO附近,所以每一次編譯都不會(huì)造成輸入或者輸出的時(shí)序發(fā)生改變。 二、為什么要使用IOB約束 考慮一個(gè)場(chǎng)景
的頭像 發(fā)表于 01-16 11:02 ?876次閱讀
xilinx <b class='flag-5'>FPGA</b> IOB<b class='flag-5'>約束</b>使用以及注意事項(xiàng)

FPGA驅(qū)動(dòng)AD芯片之實(shí)現(xiàn)與芯片通信

概述:?利用FPGA實(shí)現(xiàn)AD芯片的時(shí)序,進(jìn)一步實(shí)現(xiàn)與AD芯片數(shù)據(jù)的交互,主要熟悉FPGA對(duì)時(shí)序圖的實(shí)現(xiàn),掌握時(shí)序圖轉(zhuǎn)換Verilog硬件描述
的頭像 發(fā)表于 12-17 15:27 ?1053次閱讀
<b class='flag-5'>FPGA</b>驅(qū)動(dòng)AD芯片之實(shí)現(xiàn)與芯片通信

針對(duì)ZYNQ+ULTRASCALE的FPGA供電的一些疑問(wèn)求解答

針對(duì)ZYNQ+ULTRASCALE的FPGA供電一些疑問(wèn)(比如XCZU15EG-FFVB1156I型號(hào)): 1:這個(gè)芯片的輸出配置可以通過(guò)I2C接口進(jìn)行配置,有個(gè)疑問(wèn),就是板子在SMT貼片回來(lái)以后
發(fā)表于 12-02 08:02

時(shí)序約束一主時(shí)鐘與生成時(shí)鐘

一、主時(shí)鐘create_clock 1.1 定義 主時(shí)鐘是來(lái)自FPGA芯片外部的時(shí)鐘,通過(guò)時(shí)鐘輸入端口或高速收發(fā)器GT的輸出引腳進(jìn)入FPGA內(nèi)部。對(duì)于賽靈思7系列的器件,主時(shí)鐘必須手動(dòng)定義到GT
的頭像 發(fā)表于 11-29 11:03 ?1353次閱讀
<b class='flag-5'>時(shí)序</b><b class='flag-5'>約束</b>一主時(shí)鐘與生成時(shí)鐘

Verilog vhdl fpga

編程語(yǔ)言,熟悉時(shí)序約束、時(shí)序分析方法; 4.熟悉FPGA開(kāi)發(fā)環(huán)境及仿真調(diào)試工具。 5.熟悉FPGA外部存儲(chǔ)控制器及數(shù)據(jù)傳輸接口,如E2PRO
發(fā)表于 11-12 16:40

常用時(shí)序約束使用說(shuō)明-v1

約束使用說(shuō)明-v1 文章出處:【微信公眾號(hào):易靈思FPGA技術(shù)交流】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
的頭像 發(fā)表于 11-01 11:06 ?557次閱讀

高速ADC與FPGA的LVDS數(shù)據(jù)接口中避免時(shí)序誤差的設(shè)計(jì)考慮

電子發(fā)燒友網(wǎng)站提供《高速ADC與FPGA的LVDS數(shù)據(jù)接口中避免時(shí)序誤差的設(shè)計(jì)考慮.pdf》資料免費(fèi)下載
發(fā)表于 10-15 09:50 ?6次下載
高速ADC與<b class='flag-5'>FPGA</b>的LVDS數(shù)據(jù)接口中避免<b class='flag-5'>時(shí)序</b>誤差的設(shè)計(jì)考慮

同步與多個(gè)FPGA接口的千兆樣本ADC

電子發(fā)燒友網(wǎng)站提供《同步與多個(gè)FPGA接口的千兆樣本ADC.pdf》資料免費(fèi)下載
發(fā)表于 10-10 11:32 ?0次下載
<b class='flag-5'>同步</b>與多個(gè)<b class='flag-5'>FPGA</b>接口的千兆樣本ADC

FPGA電源時(shí)序控制

電子發(fā)燒友網(wǎng)站提供《FPGA電源時(shí)序控制.pdf》資料免費(fèi)下載
發(fā)表于 08-26 09:25 ?0次下載
<b class='flag-5'>FPGA</b>電源<b class='flag-5'>時(shí)序</b>控制

深度解析FPGA中的時(shí)序約束

建立時(shí)間和保持時(shí)間是FPGA時(shí)序約束中兩個(gè)最基本的概念,同樣在芯片電路時(shí)序分析中也存在。
的頭像 發(fā)表于 08-06 11:40 ?1379次閱讀
深度<b class='flag-5'>解析</b><b class='flag-5'>FPGA</b>中的<b class='flag-5'>時(shí)序</b><b class='flag-5'>約束</b>

FPGA同步復(fù)位和異步復(fù)位

FPGA(Field-Programmable Gate Array,現(xiàn)場(chǎng)可編程門陣列)中的復(fù)位操作是設(shè)計(jì)過(guò)程中不可或缺的一環(huán),它負(fù)責(zé)將電路恢復(fù)到初始狀態(tài),以確保系統(tǒng)的正確啟動(dòng)和穩(wěn)定運(yùn)行。在FPGA設(shè)計(jì)中,復(fù)位方式主要分為同步復(fù)
的頭像 發(fā)表于 07-17 11:12 ?2599次閱讀

電子發(fā)燒友

中國(guó)電子工程師最喜歡的網(wǎng)站

  • 2931785位工程師會(huì)員交流學(xué)習(xí)
  • 獲取您個(gè)性化的科技前沿技術(shù)信息
  • 參加活動(dòng)獲取豐厚的禮品