<th id="5fjb5"></th>
  • <var id="5fjb5"></var>
  • <table id="5fjb5"><code id="5fjb5"></code></table>

      <meter id="5fjb5"><cite id="5fjb5"></cite></meter>
      電子工程師的短視頻社區
      500萬+工程師都在用
      直播中

      Vivado使用技巧時鐘的基礎知識

      FPGA設計論壇

      描述

      時鐘的基礎知識

      數字設計中,“時鐘”表示在寄存器之間可靠地傳輸數據所需的參考時間;Vivado的時序引擎利用時鐘特征來計算時序路徑需求,通過計算時間裕量(Slack)的方法報告設計的時序空余;時鐘必須被正確定義以最佳精度獲得最大的時序路徑覆蓋范圍,包含如下特性:

      定義在時鐘樹的驅動管腳或端口,通常稱作根或源點;

      通過周期和波形屬性來描述時鐘邊沿;

      周期(period)以ns為單位進行設定,與波形重復率相關;

      波形(waveform)以列表的形式給出,表中包含上升沿和下降沿在周期中的絕對時間,以ns為單位;第一個上升沿對應于第一個值,第一個下降沿對應第二個值;默認情況下,相位偏移從0ns開始,占空比為50%;

      如下圖給出了兩個時鐘Clk0: period=10, waveform={0 5}、Clk1: period=8, waveform = {2 8};?

      538e4738-f8f3-11ec-ba43-dac502259ad0.png

      上述給出的只是時鐘的理想特征。當時鐘進入了FPGA器件,通過時鐘樹傳遞時,時鐘邊沿會有延時,通常稱作時鐘網絡延遲;噪聲或硬件表現會導致時鐘隨時可能發生變化,通常稱作時鐘不確定性,包括時鐘抖動(Clock jitter)、相位錯位(Phase error)等等, Vivado在時序分析時會考慮這些非理想因素以得到精確的時序裕量;

      通常板子上有一個外部組件(如有源晶振)產生時鐘信號,通過輸入端口進入器件內部;外部時鐘可以通過MMCM、PLL、BUFR等特殊原語生成其它時鐘,也可以由LUT、寄存器等常規單元進行轉換(通常稱作門控時鐘);接下來的部分將講述如何由源時鐘定義成其他類型的時鐘;

      主時鐘Primary Clock

      主時鐘通常由兩個來源:(1)板級時鐘通過輸入端口進入設計;(2)GT收發器的輸出管腳(如恢復時鐘);

      主時鐘必須與一個網表對象相連,該對象代表了所有時鐘邊沿的開始點,并且在時鐘樹中向下傳遞;也可以說,主時鐘的源點定義了0時刻,Vivado靠此來計算時鐘延遲和不確定性 ;vivado會忽略所有時鐘樹上從主時鐘上游的單元到主時鐘之間的延時!

      主時鐘只能通過create_clock命令來定義,且必須放在約束的開始,這是因為其它時序約束幾乎都要參考主時鐘;下面給出幾個主時鐘的例子,第一個例子如下圖所示,采用單端時鐘輸入:

      53b4898e-f8f3-11ec-ba43-dac502259ad0.png

      板級時鐘通過sysclk端口進入FPGA,通過一個輸入緩沖器和一個時鐘緩沖器后到達寄存器,使用如下命令定義:

      create_clock -period 10 [get_ports sysclk]? #10ns周期,50%占空比,無相移

      create_clock -name devclk -period 10 -wavefor {2.5 5} [get_ports sysclk]? #板級時鐘名稱devclk,10ns周期,25%占空比,90°相移

      第二個例子,時鐘源由高速收發器gt0提供,如下圖所示:

      53d0854e-f8f3-11ec-ba43-dac502259ad0.png

      通過sysclk端口進入FPGA,之后經過混合時鐘管理單元MMCM生成其他時鐘,以gt0發出的時鐘為主時鐘,其他生成時鐘都有一個共同的時鐘源,使用如下命令定義:

      create_clock -name rxclk -period 3.33 [get_pins gt0/RXOUTCLK]

      第三個例子如下圖所示,采用差分時鐘輸入,這也是高速時鐘的輸入方式:

      53e4b97e-f8f3-11ec-ba43-dac502259ad0.png

      上圖中差分時鐘驅動一個PLL,定義主時鐘時必須只創建差分緩沖器的正極輸入;如果同時創建了正極、負極輸入,將會導致錯誤的CDC路徑;使用如下命令定義:

      create_clock -name sysclk -period 3.33 [get_ports SYS_CLK_clk_p]

      虛擬時鐘Virtual Clock

      虛擬時鐘通常用于設定對輸入和輸出的延遲約束,之所以稱為“虛擬”,是因為這種時鐘在物理上沒有與設計中的任何網表對象相連;定義時使用create_clock命令,但無需指定源對象 ,在下列情況需要用到虛擬時鐘:

      所有的設計時鐘都不是外部器件I/O的參考時鐘;

      FPGA的I/O路徑與一個內部生成的時鐘相關,但是該時鐘不能合適地通過對板級時鐘計時來生成(如兩個周期的比不是整數);

      希望為與I/O延遲約束相關的時鐘設定不同的抖動和延遲,但是不希望修改內部時鐘的特征 ;

      比如時鐘clk_virt的周期為10ns,且不與任何網表對象相連,可以這樣定義“create_clock -name clk_virt –period 10”,沒有指定objects參數;注意,虛擬時鐘必須在使用之前便定義好 ;

      生成時鐘Generated Clock

      生成時鐘是指在設計內部由特殊單元(如MMCM、PLL)或用戶邏輯驅動的時鐘;生成時鐘與一個上級時鐘(注:官方稱作master clock,為與primary clock作區分,這里稱作上級時鐘)相關,其屬性也是直接由上級時鐘派生而來;上級時鐘可以是一個主時鐘,也可以是另一個生成時鐘;

      生成時鐘使用create_generated_clock命令定義,該命令不是設定周期或波形,而是描述時鐘電路如何對上級時鐘進行轉換。這種轉換可以是下面的關系:

      Vivado計算生成時鐘的延遲時,會追蹤生成時鐘的源管腳與上級時鐘的源管腳之間的所有組合和時序路徑。某些情況下可能只希望考慮組合邏輯路徑,在命令行后添加-combinational選項即可;

      這里先解釋一下本文甚至本系列大量使用的兩個詞,端口(Port)和管腳(Pin)。端口通常用get_ports命令獲取,管腳使用get_pins命令獲取。二者的含義是不同的,但管腳的范圍更廣泛,比如設計中用到的一個寄存器都有3個管腳:clk、D和Q;下面給出幾個定義生成時鐘的例子:

      簡單的頻率分頻

      簡單的頻率倍頻

      頻率倍頻與分頻的組合,獲得一個非整數的比例,通常由MMCM或PLL完成

      相移或波形反相

      占空比改變

      上述所有關系的組合

      1.簡單的2分頻

      540bf03e-f8f3-11ec-ba43-dac502259ad0.png

      可以采用如下兩種方法對生成時鐘進行約束:

      #定義主時鐘,周期10ns,50%占空比

      create_clock -name clkin -period 10 [get_ports clkin]

      #約束方法1,主時鐘作為源點

      create_generated_clock -name clkdiv2 -source [get_ports clkin] -divide_by 2 [get_pins REGA/Q]?

      #約束方法2,REGA的始終管腳作為源點

      create_generated_clock -name clkdiv2 -source [get_pins REGA/C] -divide_by 2 [get_pins REGA/Q]

      約束命令中使用**-source選項來設定上級時鐘,但如上所示,該選項只能設定為一個端口或管腳類型的網表對象,不能直接設置為時鐘類型對象。上面約束使用-divide_by選項設置分頻系數,此外還可以使用-edges**選項,如下所示:

      #該約束與上面等效

      create_generated_clock -name clkdiv2 -source [get_pins REGA/C] -eedges {1 3 5} [get_pins REGA/Q]

      #1 3 5 分別為生成時鐘一個周期的三個沿對應master clock的上升沿的位置

      -edges的參數為一個列表,該列表通過主時鐘的邊沿來描述生成時鐘的波形;列表中的值為主時鐘邊沿的序號(注意觀察上圖),由時鐘上升沿開始,定義了生成時鐘邊沿的時間點;

      2.改變占空比與相移

      如果僅需要改變時鐘的相移,使用**-edge_shift**選項可以正向或反向設定每一個生成時鐘波形的相移量;注意,-edge_shift選項不能與-devide_by、-multiply_by、-invert選項同時使用;下圖中上級時鐘為clkin,進入mmcm0單元,產生一個25%占空比、相移90°的時鐘:

      541b2414-f8f3-11ec-ba43-dac502259ad0.png

      可以采用如下方法對生成時鐘進行約束:使用上級時鐘的1、2、3標號邊沿(即0ns、5ns、10ns)定義生成時鐘,為了得到預期波形,1和3標號邊沿要分別移動2.5ns,得到2.5ns、5ns、12.5ns的波形:?

      #定義主時鐘,周期10ns,50%占空比

      create_clock -name clkin -period 10 [get_ports clkin]

      #定義生成時鐘,周期10ns,25%占空比,90°相移

      create_generated_clock -name clkshift -source [get_pins mmcm0/CLKIN] -edges {1 2 3}

      -edge_shift {2.5 0 2.5} [get_pins mmcm0/CLKOUT]

      3.同時倍頻與分頻

      這種情況通常用于定義MMCM或PLL的輸出,一般使用這些IP核時會自動創建相應約束;考慮上例中的圖,假設MMCM將上級時鐘倍頻到4/3倍,無法直接倍頻,需要同時使用-divede_by和-multiply_by選項來實現:

      create_generated_clock -name clk43 -source [get_pins mmcm0/CLKIN] -multiply_by 4

      -divide_by 3 [get_pins mmcm0/CLKOUT]

      4.僅通過組合路徑追蹤上級時鐘

      前面簡單介紹了-combinational選項的使用,為了更好理解,這里舉一個具體例子;下圖中,上級時鐘同時傳遞到寄存器和多路選擇器中,寄存器對時鐘進行2分頻,多路選擇器從寄存器的2分頻時鐘和上級時鐘中選擇一個作為生成時鐘輸出 :

      542dad32-f8f3-11ec-ba43-dac502259ad0.png

      顯而易見,從上級時鐘到生成時鐘有兩條路徑,一條為時序路徑,一條為組合路徑;如果我們只希望考慮組合路徑上的延遲時,定義生成時鐘時就需要使用-combinational選項 :

      create_generated_clock -name clkout -source [get_pins mmcm0/CLKIN] -combinational

      [get_pins MUX/O]

      自動生成時鐘 Automatically Derived Clocks

      這種類型時鐘算是生成時鐘的一種特例,“自動”是指在已經定義了上級時鐘的情況下,Vivado會自動為時鐘管理單元CMBs(Clock Modifying Blocks)的輸出管腳創建約束,官方稱作Automatically Derived Clocks或Auto-generated Clock;

      如果約束中已經存在用戶在某一網表對象上定義的時鐘,則不會創建相同對象上的自動生成時鐘;

      下面給出一個具體例子,下圖中上級時鐘clkin驅動clkip/mmcm0單元的CLKIN輸入,該單元是一個MMCME2資源的實例,則自動生成時鐘的定義源點為clkip/mmcm0/CLKOUT,頂層與此源點連接的網絡名為clkip/cpuClk,自動生成時鐘的名字便是cpuClk:

      54521bfe-f8f3-11ec-ba43-dac502259ad0.png

      如上所述,Vivado會自動創建自動生成時鐘的名稱(Name),如果兩個名稱發生沖突也會自動添加后綴,如usrclk、usrclk_1等等;

      時鐘組Clock Group

      默認情況下,Vivado會測量設計中所有時鐘之間的路徑時序,添加如下兩種約束可以控制該功能:

      劃分時鐘組通常有兩個依據:

      (1)原理圖或時鐘網絡報告中的時鐘樹拓撲圖,判斷哪些時鐘不應該放在一起做時序分析;

      (2)時鐘交互報告查看兩個時鐘間存在的約束,判斷它們是否有共享的主時鐘(代表是否有已知的相位關系)或者是否有公共周期 ;

      但要明白,我們設定時鐘組的目的還是為了保證設計在硬件中能正常工作,因此我們必須確保這些忽略了時序分析的路徑有合適的再同步電路或異步數據傳輸協議;

      set_clock_groups:建立時鐘組,Vivado不會對不同時鐘組的時鐘之間進行時序分析;

      set_false_path:將兩個時鐘之間的路徑設置為false path后,不會對該路徑進行任何時序分析;

      根據時鐘間的關系,可以做如下分類:

      同步時鐘:即兩個時鐘間有可預知的相對相位,通常它們的時鐘樹源自網表中的同一個根,且有一個公共周期;

      異步時鐘:兩個時鐘間有無法預知的相對相位。比如兩個獨立的晶振信號通過兩個輸入端口進入FPGA中,生成兩個時鐘。由于兩個主時鐘沒有明確的相位關系,兩個生成時鐘間便是異步的;

      不可擴展時鐘:官方稱作Unexpandable Clocks,是指時序引擎在1000個周期內無法判斷兩個時鐘是否有公共周期。這種情況通常發生在兩個時鐘周期比是一個特殊的分數,比如一個主時鐘通過MMCM生成一個周期為5.125ns的時鐘clk1和一個周期為6.666ns的時鐘clk2,盡管它們在時鐘樹的根上有一個確定的相位關系,但是在1000個周期內時鐘上升沿無法再次對齊;

      1.異步時鐘組?

      同步時鐘可以安全地進行時序分析,異步時鐘和不可擴展時鐘雖然通過時序分析也會得到一個裕量值,但這個值不可作為可靠結果;從這個角度出發,不可擴展時鐘也可以視作一種特殊的異步時鐘;這就需要通過設置時鐘組來忽略異步時鐘的時序路徑上的時序分析 ;

      這里舉個例子,一個主時鐘clk0通過MMCM生成兩個時鐘usrclk和itfclk;另一個主時鐘clk1通過另一個MMCM生成兩個時鐘clkrx和clktx,用如下命令創建異步時鐘組:?

      set_clock_groups -name async_clk0_clk1 -asynchronous -group {clk0 usrclk itfclk}

      -group {clk1 gtclkrx gtclktx}

      #如果時鐘名稱事先不知道,可以用如下寫法

      set_clock_groups -name async_clk0_clk1 -asynchronous -group [get_clocks -include_generated_clocks clk0] -group [get_clocks -include_generated_clocks clk1]

      2.互斥時鐘組 Exclusive Clock Groups

      下面再介紹另一種會用到時鐘組的情況:某些設計會有幾個操作模式,不同操作模式使用不同的時鐘,這些時鐘通常由專用的時鐘選擇器進行選擇,如BUFGMUX和BUFGCTRL,最好不要用LUT作時鐘選擇器;

      這些單元都是組合邏輯單元,Vivado會將所有輸入傳遞到輸出;在Vivado IDE中,幾個時序時鐘可以同時存在時鐘樹上,方便地同時報告所有操作模式,但是在硬件中這是不可能的,它們之間是互斥的,這些時鐘便稱作互斥時鐘;

      舉個例子,一個MMCM實例生成的兩個時鐘clk0和clk1,與一BUFGMUX實例clkmux相連,clkmux的輸出驅動設計時鐘樹;默認情況下,雖然clk0和clk1共享同一時鐘樹,且不能同時存在,Vivado還是會分析clk0和clk1之間的路徑,這個問題要通過設置互斥時鐘組來解決,達到禁止分析這兩個時鐘間路徑 的目的。約束如下:

      set_clock_groups -name exclusive_clk0_clk1 -physically_exclusive

      -group clk0 -group clk1

      在ASIC工藝中使用-physically_exclusive和-logically_exclusive代表不同的信號完整性分析模式,但對于Xilinx FPGA而言,二者是等價的,都可以使用;?

      時鐘延遲、抖動與不確定性

      本文的上述約束可以說都是對時鐘的理想特征進行約束,為了更精確地進行時序分析,設計者還必須設定一些與運行環境相關的可預測變量和隨機變量,這部分也稱作時鐘的不確定性特征;

      1.時鐘延遲latency

      經過板子上和FPGA器件內部的傳輸,時鐘邊沿到達目的地后會有一個確定的延遲,這個延遲可以分為兩個部分看待:

      網絡延遲:也稱作插入延遲,指在FPGA內部傳輸帶來的延遲;Vivado會自動分析計算該延遲,布線過程前只是一個粗略的估計,布線后便可以得到一個精確的值;對于生成時鐘,包含其本身的網絡延遲和上級時鐘的網絡延遲兩部分;

      源端延遲:通常指FPGA器件外,時鐘進入源點前的傳輸延遲,這部分延遲與PCB設計相關,需要用set_clock_latency命令進行約束;

      下面給出一個約束源端時鐘延遲的例子:

      # Minimum source latency value for clock sysClk (for both Slow and Fast corners)

      set_clock_latency -source -early 0.2 [get_clocks sysClk]

      # Maximum source latency value for clock sysClk (for both Slow and Fast corners)

      set_clock_latency -source -late 0.5 [get_clocks sysClk]

      2.時鐘抖動jitter?

      對于ASIC器件來說,時鐘抖動通常代表了時鐘不確定性特征;但對于Xilinx FPGA而言,抖動屬性被當作可預測變量看待;抖動有的需要單獨設置,有的在時序分析過程中自動計算,抖動分為兩種:

      輸入抖動:指實際時鐘邊沿與理想時鐘邊沿到達時刻之間的差值,使用set_iput_jitter命令為每個主時鐘單獨設置輸入抖動;但是不能直接為生成時鐘設置輸入抖動,這部分由工具自動計算,如果(1).生成時鐘由一個組合或時序單元創建,生成時鐘的抖動與上級時鐘相同;(2).生成時鐘由 MMCM或PLL驅動,生成時鐘的抖動為一個自動計算的值;

      系統抖動:指電源噪聲、板級噪聲或其它原因引起的整體的抖動,對于整個設計,使用set_system_jitter命令設置一個值即可,會應用到所有時鐘;

      下面給出一個約束輸入抖動的例子:

      #主時鐘傳輸過程中有±100ps的抖動

      set_input_jitter [get_clocks -of_objects [get_clocks sysclk]] 0.1

      不過,時鐘抖動對整個時鐘不確定性計算的影響不是太大。計算時鐘不確定性時對每條路徑都是獨立的,且主要依賴于時鐘拓撲結構、路徑上的時鐘對、時鐘樹上是否存在MMCM/PLL單元等其它因素;

      3.附加的時鐘不確定性 Additional Clock Uncertainty

      使用set_clock_uncertainty命令可以根據需要為特定的時鐘關系定義附加的時鐘不確定性,這樣在時序分析時,可以為設計中的某些部分增加額外裕量?

      看下面的例子:

      set_clock_uncertainty 2.0 -from [get_clocks clk1] -to [get_clocks clk2]?

      set_clock_uncertainty 1.0 [get_clocks clk1]

      這里首先約束從clk1到clk2有一個2ns的時鐘不確定性,接著又約束clk1有1ns的時鐘不確定性,但是后面這條約束不會改動從clk1到clk2之間的關系;同時,要注意clk1到clk2有時鐘間的不確定性,clk2到clk1也有時鐘間的不確定性,所以要約束完整!?

      審核編輯 :李倩

      原文標題:Vivado使用技巧時鐘的約束方法

      文章出處:【微信公眾號:FPGA設計論壇】歡迎添加關注!文章轉載請注明出處。

      ?

      打開APP閱讀更多精彩內容

      免費PCB檢查工具!一鍵分析設計隱患!

      Altium Designer超全封裝庫(帶3D模型)

      全部0條評論

      快來發表一下你的評論吧 !

      毛成片1卡2卡3卡,国色天香一卡二卡三卡四卡小说,国产卡一卡二卡三卡四剧情简介,国色天香一卡二卡三卡免费,日韩卡一卡二卡三卡四卡免费 午夜dj电影观看在线观看| 男生和老师一起差差差| 亚洲大尺度AV无码专区| 在线看片WWW935AA| 日韩中文无码有码免费视频| 国模蔻蔻私拍极品150P| 好男人视频免费观看高清WWW| 老司机67194精品线观看| 午夜d在线视频观看国语| 韩国三级大乳在线观看| 日本高清色倩视频在线观看| 亂倫近親相姦中文字幕| 少妇浪妇荡欲| 夜色福利院在线看AV| 国产国产人在线成免费视频| 伊人久久大香线蕉综合影院| BT天堂种子在线WWW| 日本人妻不卡一区二区三区中文字幕| 免费裸裸体美女视频| 亚洲色无码专区在线观看精品| 我和子的性关系免费视频| 女教师波多野结衣在线播放| JAPANESE强制高潮| 无敌视频影院在线播放| 日韩人妻少妇一区二区| 午夜男女刺激爽爽影院| 精品一卡二卡三卡四卡网站| 最好看最新中文字幕| 99尹人香蕉国产免费天天| 日韩精品| 性欧美大屁股HD| 毛成片1卡2卡3卡4卡图片| 120秒试看无码体验区 | XX00欧美极品少妇| 性奴女教师的屈辱调教| 无码不卡黑人与日本人| 新版2021年中文乱码| A级情欲片在线观看免费| 亚洲国产欧美在线人成| 欧美同性GV片在线观看| 中国女人熟毛茸茸A毛片| 校花被灌满肚子调教走路| 欧美精品老熟妇AV| 最好看的2018中文字国语1| 在线观看国产一区亚洲| 孕交VIDEOSGRATIS乌克兰| 免费无码黄动漫在线观看犹物影视| 国产日韩久久久久精品影院| 薰衣草在线观看完整版| FREE东北女人自拍HD| 在线观看片免费人成视频无码| 天堂中文在线| 国产高清一卡二卡三卡四卡| 午夜大片无码体验区| 强吻摸下面撕衣脱裤免费视频| 水蜜桃国产成人精品视频| 被强行进去好爽视频| 欧美牲交A欧美牲交AⅤ视频| 久久精品欧美日韩精品| 在线观看片免费观看不卡| 性A欧美片| 一卡二卡三卡免费看| 日本护士在线视频XXXX免费| 无码午夜福利视频1000集0855| 赤裸孕妇牲交视频| 末成年性视频CHINESE| 波多野结超清无码中文42部| 有人有在线观看的片资源| 国产福利酱在线观看萌白酱| 18禁无遮挡免费视频| 成年肉动漫在线观看无码| 暖暖日本高清中文| 国产情侣学生高中初次高清| 免费啪视频观试看视频感受| JAPANESE55丰满熟妇| 日本熟妇乱子A片完整版| 24小时日本在线观看完整版免费| 最近中文字幕完整视频| 亚洲中文字幕日产乱码小说| 人人超人人超碰超国产香蕉| 中文人妻av大区中文不卡| 人与禽交ZOZO| A∨天堂在线观看免费| 成本人片在线观看免费| GAY18自慰高中生可播放| 青柠视频在线观看免费高清完整版| 亚洲一本之道高清在线观看| 国产午夜亚洲精品不卡下载| 欧美人禽ZOZO伦交| 男女爽爽无遮挡午夜视频| 强伦姧中文字幕在线观看| 草莓视频国产片在线观看| 67194熟妇在线观看线路1| 欧美一区精品视频一区二区| 波多野结衣潮喷视频无码42| 亚洲女人天堂网AV在线| 办公室双腿打开揉弄在线观看| 亚洲 国产 日韩 在线 一区| 日本暴力强奷免费视频| H纯肉樱花动漫在线观看| 在线亚洲欧洲日产一区二区| 777成了乱人视频| 宅宅2018理论片最新236| 首页 国产 亚洲 小说图片| 里番高H无码无修在线观看| 国产高清厕所盗摄在线播放| 破外女出血视频全过程| 免费观看做的爱A片| 日本一卡二卡三卡四卡无卡免费网站下载| 小黄鸭视频精品导航| 极品少妇高潮乱语456视频| 波多野结衣高清AV系列| 尤物精品国产第一福利网站| 护士露出奶头让我吃奶| 色综合久久婷婷88| 国产精品成熟老女人| 最激烈的床震娇喘视频| 把扒女的下面扒开| 又粗又深又猛又爽的视频| 老师把我抱到办公室揉我胸| 办公室玩弄人妇在线观看| 飘雪高清影视在线| 男女很黄很色床视频网站| 亚洲一卡二卡三卡四卡兔| 欧美高清不卡AAA片| 亚洲精品国产第一区二区尤物| 在线|国产精品女主播主要| 人人天天夜夜曰曰狠狠狠| 偷玩朋友的醉酒人妻| 色 亚洲 日韩 国产 综合| 午夜dj在线观看免费完整直播动漫| 欧美熟妇的荡欲在线观看| 人妻AV无码中文专区久久| 久久久久久精品免费免费| 东北妇女BBW| 黄 色 成 人网站免费下载| 后进白嫩翘臀在线视频| Chinese熟女熟妇2乱| 小草社区观看| 日本免费无遮挡吸乳视频| 无遮挡又黄又爽又色的动态图| 最好看的日本字幕2019| 每日更新在线观看AV_手机| 永久免费AV无码网站国产| 亚洲美女高清无水AV| 国产偷 视频在线观看| 男吻我两只腿中间的那个视频| 欧美中日韩免费观看网站| 人妻少妇中文字幕乱码| 小草资源在线观看视频| 卡一卡二卡三视频| 中国裸男自慰GV网站| 最新无码国产在线视频2020| 一区二区三区高清AV专区| 影视大全高清版韩国| 国产嫖表熟女AV| 高清亚洲日韩欧洲不卡在线| 青青草原国产免费AV观看| FUCK东北老女人HD对话| 亚洲日韩久久综合中文字幕| 少妇婬乱视频| 日本卡一卡二卡三卡| 又黄又爽又猛的视频免费| 国产美女精品自在线拍免费|
      ×
      20
      完善資料,
      賺取積分