色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

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

了解時鐘基礎(chǔ)知識是成為數(shù)字設計的軟件工程師最基礎(chǔ)的部分

5RJg_mcuworld ? 2018-01-22 12:26 ? 次閱讀

如果你有軟件工程師背景,想找一份數(shù)字設計工程師的工作,那么你需要做的第一件事就是盡可能早的學習時鐘概念。對很多從軟件工程師轉(zhuǎn)來的初級硬件設計工程師來說,時鐘概念都是一件惱人的事情。如果沒有時鐘,他們就可以將 HDL(Hardware Description Language,硬件描述語言)轉(zhuǎn)換為一種編程語言,如 $display,if 和 for 循環(huán),如同其他的任何編程語言一樣。 然而,這些初級設計師所忽視的時鐘,通常是數(shù)字設計中最基礎(chǔ)的部分。

沒有什么時候會比在審查初級 HDL 設計工程師第一次設計的產(chǎn)品的時候,所發(fā)現(xiàn)的問題更多。現(xiàn)在,我已經(jīng)和幾位在我參與的論壇上發(fā)表過問題的人交談過了。而當深入了解后,發(fā)現(xiàn)他們正在做的是什么時,我為他們感到很尷尬。

以遇到的一個學生為例,他不理解為什么網(wǎng)絡上沒有人重視他的高級加密標準 (AES) 的HDL實現(xiàn)。此處,為了不讓他因為名字或項目而尷尬,暫且將他稱之為學生。(不,我不是教授。)這個“學生”創(chuàng)建了一個 Verilog 設計,進行不止一輪的 AES 加密,但每一輪都是組合邏輯,且兩者之間沒有時鐘。 我不記得他是在做 AES-128、AES-192 還是 AES-256,但 AES 需要進行 10 到 14 輪計算。 我記得,他的加密引擎在模擬器中運行完美,然而他只使用一個時鐘來加密或解密他的數(shù)據(jù)。 他為自己的工作感到自豪,但不明白為什么那些看過這個項目的人都對他說,他的思考方式像一個軟件工程師,而不是一個硬件設計師。

事實上,我現(xiàn)在有機會給像這個“學生”一樣的 HDL 新手軟件工程師解釋疑惑。 他們中的許多人對待 HDL 語言,就像對象另一種軟件編程語言一樣。 在編程之前,他們?nèi)ふ胰魏诬浖幊陶Z言的基礎(chǔ)知識:如何聲明變量,如何創(chuàng)建一個 if 語句或 case 語句,如何編寫循環(huán)等等。然后,他們編寫代碼就像編寫一個計算機程序——一切都是順序執(zhí)行(圖1),而完全忽略了數(shù)字設計中的基本事實,即所有運行都是并行的。

圖1:軟件執(zhí)行是順序的

有時這些程序員會使用模擬器,如 Verilator,iverilog 或者 EDA 平臺。 然后,他們在邏輯代碼中使用一堆$ display命令,將它們視為順序的“printf”,并通過這些命令來使代碼運行,而不是使用時鐘。 他們的設計在模擬器中只是被單獨地“執(zhí)行”組合邏輯代碼。

這些學生向我描述他們的設計,并解釋稱他們的設計“不需要時鐘就能執(zhí)行”。

天啊,這都是什么想法?

實際上,任何數(shù)字邏輯設計如果使用沒有時鐘都是不能工作的。總有一些物理過程會創(chuàng)建輸入。而 這些輸入必須在某個開始時間都有效 ——這個時間在其設計中形成第一個時鐘刻度。 同樣地,在接收這些輸入一段時間后就要輸出。 對于給定的一組輸入,所有輸出的有效時間在“無時鐘”設計中形成下一個“時鐘”。 或許第一個時鐘刻度是當他們調(diào)整好電路板上的最后一個開關(guān)的時候,而最后一個時鐘刻度是當他們讀取到結(jié)果的時候。時鐘是如何形成的沒關(guān)系:有一個時鐘就可以。

而這導致的結(jié)果就是,那些聲稱他們的設計“沒有時鐘”的人解釋他正在以不切實際的方式使用模擬器,或者設計中存在一個外部時鐘用于設置輸入和讀取輸出 ——而這正是另外一種方式,表明設計中的確存在一個時鐘。

如果你發(fā)現(xiàn)你自己正試圖以這種方式理解數(shù)字邏輯必須有一個時鐘才能執(zhí)行,或你認識的某人也是這么嘗試理解的,那么本文正適合你們。

接下來,讓我們花一兩分鐘來討論時鐘,以及為什么圍繞時鐘來構(gòu)建和設計你的數(shù)字邏輯很重要。

硬件設計是并行的

硬件設計學習中的第一部分也是最難的部分,就是硬件設計是并行設計。所有的代碼指令并不是依次執(zhí)行,如同一條指令連著下一條指令(如圖1所示),就像計算機程序一樣。相反,所有的指令在同一時刻執(zhí)行,如圖2所示。

了解時鐘基礎(chǔ)知識是成為數(shù)字設計的軟件工程師最基礎(chǔ)的部分

圖2:硬件邏輯并行運行

正是這一點,讓很多東西變得不一樣。

首先需要改變的是開發(fā)人員。你需要學習以并行的方式思考。

如果要通過舉例說明兩者的區(qū)別,硬件循環(huán)也許會是個不錯的例子。

軟件設計中,一個循環(huán)是由一連串的指令構(gòu)成,如圖3所示。這些指令構(gòu)造了一組初始化條件,而真正的邏輯在循環(huán)內(nèi)部執(zhí)行。通過使用一個循環(huán)變量來構(gòu)造和定義一個循環(huán)邏輯,并且這個變量在每次循環(huán)中通常都是增加的。計算機CPU不停地重復執(zhí)行循環(huán)中的指令和邏輯,直到循環(huán)變量達到了終止條件。循環(huán)運行的次數(shù)越多,它在程序中運行的時間也就越長。

圖3:軟件循環(huán)

而基于硬件的硬件描述語言循環(huán)與軟件循環(huán)完全不同。恰恰相反,HDL 合成工具使用循環(huán)來使得所有邏輯的副本同時并行運行。而用來構(gòu)造循環(huán)邏輯的代碼,如定義索引、索引增長、檢查索引是否達到終止條件等等,是不需要合成的,通常會被移除。此外,由于合成工具正在構(gòu)建物理線路和邏輯塊,所以執(zhí)行循環(huán)的次數(shù)在合成時間之后不能改變。之后,硬件的數(shù)量是固定的,不能再改變。

導致的結(jié)果便是,硬件循環(huán)結(jié)構(gòu)(如下圖4所示),與軟件循環(huán)結(jié)構(gòu)(如上圖3所示)有很大的區(qū)別。

圖4:HDL循環(huán)

這有幾個后果。例如,硬件循環(huán)迭代與軟件循環(huán)迭代不同,它不必依賴前期的循環(huán)迭代的輸出。這導致的結(jié)果是,運行一個包含一組數(shù)據(jù)的邏輯循環(huán)很難在下一個時鐘得到響應。

但是…現(xiàn)在讓我們再次回到時鐘概念。

時鐘是任何 FPGA 設計的核心。一切都圍繞著它展開。事實上,我認為所有的邏輯設計開發(fā)都應該從時鐘開始。時鐘不應該在設計完成后添加, 而是在你一開始思考如何設計架構(gòu)時就要考慮。

為什么時鐘很重要?

第一步,你要理解數(shù)字邏輯設計的一切操作在硬件上執(zhí)行時都是需要時間的。不僅如此,不同的操作需要的時間總量也是不同的。從芯片上的一部分移動到另一部分也要花費時間。

或許用圖表的方式能更直觀的解釋這一點。我們將輸入置于算法的頂部,邏輯放在中間,而輸出則放在底部。時間為軸,從上到下運行,從一個時鐘到下一個時鐘。這種視覺效果看起來就如下圖 5 所示:

了解時鐘基礎(chǔ)知識是成為數(shù)字設計的軟件工程師最基礎(chǔ)的部分

圖5:三個操作的邏輯耗時

圖例 5 展示了幾個不同的操作:加法、乘法、以及多輪的 AES 算法——盡管為了討論的目的,它可以是多輪任意其它算法。我在垂直方向上使用了方框的尺寸,以表示每個操作可能需要多少時間。此外,將依賴于其它操作的方框堆疊起來。因此,如果你想要在一個時鐘里面做很多輪的 AES 算法,你要明白第二輪算法在第一輪算法結(jié)束后才會開始。因此,適應這一邏輯將會增加時鐘之間的時間間隔,并減慢整體的時鐘頻率。

現(xiàn)在讓我們關(guān)注這個粉色方框。

這個粉色框表示在硬件電路中浪費的運行能力,即你本可以用來做更多事情的時間,但因為需要等待時鐘,或者等待輸入被處理,而導致你什么也不能做。例如,在上面的概念圖中,完成乘法運算所花費的時間不需要長達一輪 AES 算法的時間,加法也是。然而,當 AES 算法正在執(zhí)行時,你不能夠?qū)@兩個操作結(jié)果進行任何的動作,因為這些操作都需要等待下一個時鐘來獲取他們的下一個輸入。這就是圖 5 中粉色方框所表達的:空閑電路。另外,由于每一輪 AES 算法都會推遲下一個時鐘的到來,所以圖 5 中存在大量的空閑電路。因此,該設計的運行速度不會像硬件允許的那么快。

如果我們只使用 AES 算法,那么每一個時鐘都正好完成一輪的 AES 計算。如此一來,就可以減少運行能力的浪費,從而讓整個設計運行得更快。

圖 6 展示了這種設計思想。

了解時鐘基礎(chǔ)知識是成為數(shù)字設計的軟件工程師最基礎(chǔ)的部分

圖6:分解操作加快時鐘頻率

由于我們將操作分解為更小的操作,每一個都能在時鐘單元內(nèi)完成,因此,我們提高了運行能力。甚至,我們可以通過管道加密算法,而不是一次只加密一個數(shù)據(jù)塊。這種邏輯設計的結(jié)果不會比上圖 5 所示的更快,但是如果可以保持管道充滿,則可以提高 AES 加密吞吐量至 10-14x 之間。

所以,這個設計更贊。

還可以有其它更好的方案嗎?當然!如果你熟悉 AES ,你就知道 AES 算法的每一輪計算中都有一些獨立的步驟。這些步驟可再次分解,從而可以再次提高每輪邏輯算法的整體時鐘速度。而這可以增加你能執(zhí)行的加法和乘法運算的次數(shù),以及加密引擎的微管道,以便你能在每個時鐘的基礎(chǔ)上運行更多的數(shù)據(jù)。

設計不錯。

不過,上圖 6 中還有些其它的東西。

首先,箭頭表示路由延遲。(這個數(shù)字不是按比例繪制的,它僅僅是這個討論例子的示例。)每一塊邏輯都需要上一塊邏輯將結(jié)果傳遞給它。這意味著即使某個邏輯塊不需要時間執(zhí)行——例如,只是重新排列線路或其它等等,將邏輯塊從一個芯片的末端移動到另一塊也是需要花費時間的。所以,即使你將操作極簡化了,每一輪數(shù)據(jù)的傳遞仍舊存在延遲。

其次,你可能注意到,沒有一個箭頭的起始處在時鐘刻度上,即沒有一個邏輯塊一直運行到下個時鐘開始。這是為了演示 啟動時間和維持時間的概念。觸發(fā)器電路,即一種捕獲數(shù)據(jù)并同步到時鐘的電路結(jié)構(gòu),在下一個時鐘到達前需要一定的時間,此刻數(shù)據(jù)也已經(jīng)是固定和確定的。另外,盡管時鐘通常被認為是瞬時的,但它從來都不是。它在不同的時刻到達芯片的不同部位。而這再次要求操作之間需要一些緩沖。

通過以上討論,我們可以得出哪些結(jié)論呢?

邏輯實現(xiàn)需要花費時間。

邏輯越多花費的時間也越多。

完成兩個時鐘刻度之間的邏輯所花費的時間總和(包含例行的延遲、啟動和維持時間、時鐘不確定性等),限制了時鐘速度。時鐘之間的邏輯處理越多,時鐘速率就越慢。

完成最慢操作所需的時鐘速度,限制了最快操作的速度。正如上述例子中的加法操作。它的執(zhí)行速度本可以比乘法以及任何一輪單獨的 AES 算法都更快,但它的速度在該設計中被其余的邏輯拖慢了。

硬件定義也會限制時鐘速度。即使操作中不包含任何的邏輯,也是需要花費時間的。

因此,平衡的設計嘗試在整個設計中將大量相同的邏輯放在時鐘之間。

時鐘之間應該放多少邏輯量?

現(xiàn)在你已經(jīng)知道你必須處理時鐘,那么根據(jù)上述信息你該怎么修改和構(gòu)思你的設計?答案是限制時鐘之間的邏輯數(shù)量。但問題是,這個數(shù)量是多少呢?你又該如何得到這個數(shù)量呢?

得出時鐘之間你能放置多少邏輯數(shù)量的一個方法便是,將時鐘速度設置為任意速度,然后在與你需要的硬件配套的工具套件中構(gòu)建你的設計。無論何時,當你的設計無法滿足其計時需求時,都需要返回并拆分設計中的組件,或減慢時鐘速度。通過使用設計工具,你最終能夠找到那條最長的路徑。

如果你這樣做了,你將自學到一些探索方法,然后通過使用這些方法,就可以找到在運行的硬件的時鐘之間可以放置的具體邏輯數(shù)量。

例如,我傾向于在 Xilinx 7 系列零件中進行 100MHz 時鐘速率的設計。這些設計通常運行在大約 80MHz 速率的Spartan-6 上,或者50MHz的 iCE40上——盡管這些都不是硬性關(guān)系。把在一個芯片上正常執(zhí)行的程序放在另一個上執(zhí)行,可能會超載,亦可能會時鐘檢查失敗。

下面有一些我曾經(jīng)在使用時鐘時得到的一些粗略的探索性經(jīng)驗。由于只是個人經(jīng)驗,這些方法并不適合所有的設計:

1.通常,我在設計一個32 位的加法時,會使用一個時鐘內(nèi)有 4-8個條目的多路復用器

如果要使用一個較快的時鐘,例如頻率為 200 MHz,可能就需要將加法操作從多路復用器上剝離下來。

ZipCPU 的最長路徑,實際上是從 ALU 的輸出到 ALU 的輸入。

這聽起來很簡單。它甚至符合前面的經(jīng)驗法則。

但 ZipCPU 的問題在于,如何在較快的速度下將輸出路由回輸入。

讓我們跟蹤一下這個路徑:跟隨 ALU,邏輯路徑首先通過一個4路多路復用器來決定是否ALU,內(nèi)存或分頻輸出需要回寫。 然后將該回寫結(jié)果饋送到旁路電路中,以確定是否需要將其立即傳入 ALU 作為其兩個輸入之一。 只有在該多路復用器末端并且旁路路徑執(zhí)行 ALU 操作時,多路復用器才會產(chǎn)生。 因此,所有這些邏輯步驟都會在通過 ALU 時造成壓力。 然而,由于ZipCPU的設計結(jié)構(gòu),任何在此路線的時鐘都可能會按比例減緩 ZipCPU 運行速度。 這意味著有可能這條最長線路仍然是 ZipCPU 中最長的一段線路。

我曾經(jīng)對以更高的速度運行 ZipCPU 感興趣,這是我嘗試分解和優(yōu)化的第一個邏輯路徑。

2.16×16位乘法器需要一個時鐘。

有時,在某些硬件上,我可以在一個時鐘上運行 32×32 位的乘法。而在其他硬件上,我需要分解這個操作。 因此,如果我需要一個簽名的 32×32 位乘法,我使用我專門為此建立的流水線例程。 該例程包含其中的幾種乘法方法,允許我從適合我目前正在工作的硬件的選項中進行選擇。

你的硬件可能也還支持 18×18 位乘法。 一些 FPGA 還支持在一個優(yōu)化的硬件時鐘內(nèi)進行乘法和累加。只要你對使用的硬件足夠熟悉,你就知道你能用它做什么。

3. 訪問任何 RAM 塊都需要一個時鐘。

如果可以的話,應盡量避免在該時鐘周期調(diào)整索引。 同樣,避免在此時鐘期間做任何有關(guān)輸出的事情。

盡管我認為這是一條很好的規(guī)則,但我已經(jīng)在 100MHz 的 Xilinx 7 系列設備上違反了其中的兩個部分,而沒有產(chǎn)生(嚴重的)影響。 (在 iCE40 設備上有問題。)

例如,ZipCPU 從寄存器讀取數(shù)據(jù),給結(jié)果加上一個即時數(shù),然后從結(jié)果中選擇是否應該在寄存器、PC上,還是條件代碼寄存器中加上即時數(shù)——都在一個時鐘內(nèi)。

另外一個例子就是,長期以來 Wishbone Scope 根據(jù)當前時鐘是否從存儲器進行讀取,確定從緩沖區(qū)內(nèi)讀取的地址。 從這個依賴中斷它,需要添加另一個延遲時鐘,所以當前版本不會再破壞這個(自我強加的)規(guī)則。

這些規(guī)則只是我隨著時間積累下來的方法經(jīng)驗,用來判定單個時鐘內(nèi)可容納的邏輯數(shù)量。 這些經(jīng)驗法則與設備和時鐘速度有關(guān),因此它們可能不適用于你的設計開發(fā)。 我建議你積累自己的探索經(jīng)驗,以便你知道在時鐘周期之間能做些什么。

下一步

也許我能夠提供給任何新的 FPGA 開發(fā)人員的最后建議,就是學習 HDL 時要在實際硬件上進行練習,而不僅僅是在模擬器上。與實際硬件組件相關(guān)聯(lián)的工具,其在檢查代碼和計算所需時間方面都很出色。 此外,以高速時鐘構(gòu)建設計的想法是好的,但這不是硬件設計的最終結(jié)果。

記住,硬件設計是并行的。 一切都從時鐘開始。

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

    關(guān)注

    1630

    文章

    21794

    瀏覽量

    605130
  • 時鐘
    +關(guān)注

    關(guān)注

    11

    文章

    1746

    瀏覽量

    131673
  • 硬件設計
    +關(guān)注

    關(guān)注

    18

    文章

    399

    瀏覽量

    44637

原文標題:學數(shù)字設計的軟件工程師該了解的時鐘知識

文章出處:【微信號:mcuworld,微信公眾號:嵌入式資訊精選】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    嵌入式軟件工程師和硬件工程師的區(qū)別?

    技術(shù)。與之相比,嵌入式硬件工程師更注重硬件設計和電路原理,需要掌握電子工程學、數(shù)字電路、模擬電路等知識。總的來說,嵌入式軟件工程師的技能需求
    發(fā)表于 05-16 11:00

    嵌入式軟件工程師如何提升自己?

    的基礎(chǔ) 嵌入式軟件工程師需要具備扎實的計算機科學和工程知識。因此,在職業(yè)生涯的起步階段,建議將重點放在學習基礎(chǔ)知識上,包括數(shù)據(jù)結(jié)構(gòu)、算法、操作系統(tǒng)、編程語言等。通過深入學習這些
    發(fā)表于 06-12 11:20

    嵌入式工程師比普通軟件工程師好在哪里?

    ,其中包括硬件系統(tǒng)的建立和相關(guān)軟件開發(fā)、移植、調(diào)試等工作。被認可的嵌入式工程師必須具備C/C++語言、匯編語言、操作系統(tǒng)等基礎(chǔ)知識,并且要熟悉模擬電子技術(shù)和數(shù)字電子技術(shù)等硬件
    發(fā)表于 11-20 15:37

    招聘:軟件工程師數(shù)字信號處理方向-FPGA)、硬件工程師

    公司行業(yè):航天航空公司性質(zhì):國企公司規(guī)模:1000人招聘:軟件工程師數(shù)字信號處理方向)、硬件工程師軟件工程師:1)通信、電子、計算機專業(yè),碩士及以上學歷;2)具有XILINX/ACT
    發(fā)表于 04-25 21:02

    誠聘FPGA軟件工程師

    獵頭職位:FPGA軟件工程師【上海】崗位描述:1. 根據(jù)系統(tǒng)需求,參與FPGA器件選型、方案設計,負責邏輯設計、仿真和調(diào)試;2. 編寫FPGA設計文檔、測試文檔與使用文檔等;3. 協(xié)助硬件工程師完成
    發(fā)表于 02-17 11:06

    硬件工程師軟件工程師哪個更有前途?

    硬件工程師軟件工程師哪個更有前途?我會告訴你嵌入式工程師更有前途就我所了解的,在現(xiàn)在以及可預見的未來,這個行業(yè)對軟件工程師的需求絕對是碾壓
    發(fā)表于 08-23 10:59

    軟件工程師了解時鐘知識

    數(shù)字設計的軟件工程師了解時鐘知識
    發(fā)表于 05-04 08:04

    關(guān)于嵌入式軟件工程師的七問七答

    ,并且還需要對些基礎(chǔ)知識有蠻多的了解; c.對ARM,FPGA,DSP等這些硬件比較了解。 d.具有較強的實踐能力 3.嵌入式軟件工程師的待遇如何? 根據(jù)前程無憂網(wǎng)發(fā)布的薪資報告:具有
    發(fā)表于 09-09 09:47

    Python成為軟件工程師的最愛

    Python成為軟件工程師的最愛在2020年,Python、Java、AWS 和Web開發(fā)框架(React、Angular、Spring 和 Node.js)將成為最受軟件工程師歡迎的
    發(fā)表于 11-27 10:33

    硬件工程師軟件工程師對比分析哪個更好

    就我所了解的,在現(xiàn)在以及可預見的未來,這個行業(yè)對軟件工程師的需求絕對是碾壓硬件工程師的。也就是說,招軟件工程師的職位比硬件工程師的職位要多的
    發(fā)表于 12-24 08:05

    嵌入式軟件工程師是什么?

    系統(tǒng)的工程師。2.嵌入式軟件工程師需具備哪些能力? a.最重要的是C語言編程,以及C++,這個與你讀程,應用,開發(fā)項目,做系統(tǒng)移植息息相關(guān);***作系統(tǒng): LINUX,WINCE等,至少學習過一種,并且還需要對些基礎(chǔ)知識有蠻多的
    發(fā)表于 12-24 06:35

    軟件工程師的從業(yè)要求有哪些

    的興趣愛好選定自己的職業(yè)規(guī)劃方向,一方面要詳細了解軟件工程師的要求,可以關(guān)注企業(yè)的招聘信息;一方面自己要貯備通用的知識技能,廣泛閱讀相關(guān)的計算機材料對自己以后的發(fā)展大有幫助。可以確定的是軟件工
    的頭像 發(fā)表于 09-19 11:12 ?6643次閱讀

    硬件工程師必備要了解哪些基礎(chǔ)知識

    硬件工程師必備基礎(chǔ)知識 目的:基于實際經(jīng)驗與實際項目詳細理解并掌握成為合格的硬件工程師的最基本知識
    發(fā)表于 10-30 08:00 ?0次下載

    如何成為谷歌軟件工程師

    大家好,有很多人問我如何獲得谷歌的軟件工程師工作,在本文中我將分享我是怎么做的。
    的頭像 發(fā)表于 09-03 10:30 ?3287次閱讀

    軟件工程師的職業(yè)前景如何

    軟件工程師起點很高,在企業(yè)里處于兩高地位(薪水高、地位高)。發(fā)展空間廣闊,可以做Java工程師、J2EE系統(tǒng)工程師、.Net軟件工程師、系統(tǒng)分析設計
    的頭像 發(fā)表于 09-03 10:41 ?1.7w次閱讀
    主站蜘蛛池模板: 色多多污污在线播放免费| 99久久网站| 精品三级在线观看| 伊人久久大香线蕉综合bd高清 | 香蕉久久夜色精品国产小优| 精品第一国产综合精品蜜芽| 国产自啪偷啪视频在线| 色久天| 国产乱码一区二区三区| 野草视频在线观看| 青青视频国产色偷偷| 国产亚洲视频在线| 午夜精品久久久久久99热蜜桃| 好紧的小嫩嫩17p| china男士同性视频tv| 亚洲 视频 在线 国产 精品| 玛雅成人网| 国产精品香蕉视频在线| 2019午夜福合集不打码| 麻花传媒MD0044视频| 俄罗斯女人与马Z00Z视频| 亚洲欧洲精品A片久久99| 国产亚洲精品影视在线| 2019久久视频这里有精品15| 无码人妻精品一区二区蜜桃在线看 | 簧片高清在线观看| 爱暖暖1000部免费| 伊人精品影院| 先锋资源av| 青草影院天堂男人久久| 久久成人永久免费播放| 高h 纯肉文| 91麻豆国产精品91久久久| 欧美精品AV无码一区二区| 国产亚洲AV无码成人网站| AV天堂午夜精品一区| 艳照门在线观看| 午夜国产理论| 人妖xxhdxx| 免费观看99热只有精品| 黄页免费观看|