日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【黑金原创教程】【FPGA那些事儿-驱动篇I 】实验十八:SDRAM模块① — 单字读写...

發(fā)布時間:2023/12/9 编程问答 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【黑金原创教程】【FPGA那些事儿-驱动篇I 】实验十八:SDRAM模块① — 单字读写... 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

實(shí)驗(yàn)十八:SDRAM模塊① — 單字讀寫

筆者與SDRAM有段不短的孽緣,它作為冤魂日夜不斷糾纏筆者。筆者嘗試過許多方法將其退散,不過屢試屢敗的筆者,最終心情像橘子一樣橙。《整合篇》之際,筆者曾經(jīng)大戰(zhàn)幾回兒,不過內(nèi)容都是點(diǎn)到即止。最近它破蠱而出,日夜不停:“好~痛苦!好~痛苦!”地呻吟著,嚇得筆者不敢半夜如廁。瘋狂之下,誓要歪它不可 ... 可惡的東西,筆者要它血債血還!

圖18.1 數(shù)據(jù)讀取(理想時序左,物理時序右)。

首先,讓我們來了解一下,什么才是數(shù)據(jù)讀取的最佳狀態(tài)?如圖18.1所示,紅色箭頭是上升沿,綠色箭頭是鎖存沿。左圖是理想時序讀取數(shù)據(jù)的最佳狀態(tài),即T0發(fā)送數(shù)據(jù),T1鎖存數(shù)據(jù)。右圖則是物理時序讀取數(shù)據(jù)的最佳狀態(tài),即T0發(fā)送數(shù)據(jù),然后數(shù)據(jù)經(jīng)由 TDATA延遲,然后T1鎖存數(shù)據(jù)。理想狀態(tài)下,讀取數(shù)據(jù)不用考慮任何物理因數(shù),凡是過去值都會讀取成功。

圖18.2 讀取數(shù)據(jù)(物理時序)。

然而物理狀態(tài)下,讀取數(shù)據(jù)則必須考慮物理因數(shù),但是物理時序也有所謂的理想狀態(tài),即數(shù)據(jù)被TDATA推擠,然后恰好停留在鎖存沿的正中間。該狀態(tài)之所以稱為理想,那是因?yàn)榻r間TSETUP與保持時間THOLD都被滿足。

如圖18.2所示,TSETUP從數(shù)據(jù)中間向左邊覆蓋,THOLD從數(shù)據(jù)中間向右邊覆蓋,如果兩者不完全覆蓋數(shù)據(jù),那么數(shù)據(jù)的有效性就能得到保證。簡言之,數(shù)據(jù)是否讀取成功,建立時間還有保持時間都必須得到滿足。但是我們也知道,Verilog不能描述理想以外的東西,即Verilog無力描述TDATA。話雖如此,我們可以改變時鐘位移來達(dá)到同樣的效果。

圖18.3 CLOCK1位移 -180°(左圖),沒有位移(中圖),CLOCK2 位移 +180°(右圖),以及修正結(jié)果。

常見的理想時序,最多適用在FPGA的內(nèi)部而已。當(dāng)描述功活動涉及FPGA的外部,那么理想時序必須考慮對外的情況。如圖18.3所示,中間的理想時序圖可以經(jīng)由 CLOCK1 位移 -180°,又或者 CLOCK2 位移 +180° 來得到同樣的效果。雖說180° 的位移是理想效果,但是我們還要考慮物理路徑所帶來的影響。根據(jù)Alinix 301這只開發(fā)板,我們必須追加 -30° 位移才能達(dá)到修正的效果。(注意:追加-30° 的修正時序僅僅為適用Alinix 301這只板子而已)。理解完畢以后,我們便可進(jìn)入正題。

驅(qū)動SDRAM而言,簡單可以分為以下四項(xiàng)操作:

(一)初始化

(二)刷新操作

(三)讀操作

(四)寫操作

初始化令SDRAM就緒,刷新操作就是不失掉內(nèi)容(數(shù)據(jù)),讀操作就是從SDRAM哪里讀取數(shù)據(jù),寫操作就是向SDRAM寫數(shù)據(jù)。其中,讀寫操作又有單字讀寫,多字讀寫還有頁讀寫。

首先,讓我們來分析一下Alinx 開發(fā)板上HY57V2562GTR 這只SDRAM。根據(jù)手冊,這只SDRAM有256Mb的容量,4個BANK(即一個BANK為64Mb),頻率極限為200Mhz,數(shù)據(jù)保留周期為 8192 / 64ms。至于引腳定義如表18.1所示:

表18.1 SDRAM的引腳定義

分類

標(biāo)示

信號

說明

時鐘信號

CLK

S_CLK

時鐘源

地址信號

BA0~1

S_BA[1:0]

BANK地址

A0~A12

S_A[12:0]

讀寫地址,行列共用,A0~A12為行地址,CA0~CA8為列地址

命令信號

CKE

S_CKE,

時鐘選,拉高有效

CS

S_NCS,

片選,拉低有效

RAS

S_NRAS,

命令選,拉低有效

CAS

S_NCAS,

命令選,拉低有效

WE

S_NWE

命令選,拉低有效

數(shù)據(jù)信號

DQ0~DQ15

S_DQ[15:0]

讀寫數(shù)據(jù)的IO

LDQM,UDQM

S_DQM[1:0]

遮蓋數(shù)據(jù),一般拉低無視

如表18.1所示,CLK為SDRAM的時鐘源。CKE,CS,RAS,CAS還有WE皆為命令信號,五者相互組合形成以下幾個常用命令,結(jié)果如表18.2所示:

表18.2 常用命令。

命令

CKE

CS

RAS

CAS

WE

說明

NOP

1

0

1

1

1

空命令

ACT

1

0

0

1

1

激活命令,選擇Bank地址與行地址

WR

1

0

1

0

0

寫命令,開始寫數(shù)據(jù)

RD

1

0

1

0

1

讀命令,開始讀數(shù)據(jù)

BSTP

1

0

1

1

0

停止命令,停止讀寫

PR

1

0

0

1

0

預(yù)充命令,釋放選擇

AR

1

0

0

0

1

刷新命令,刷新內(nèi)容

LMR

1

0

0

0

0

設(shè)置命令,設(shè)置SDRAM

l NOP為No Operation,即空命令,除了給空時間以外沒有任何意義。

l ACT為Active,即激活命令,用來選擇某Bank某行。

l WR為Write,即寫命令,通知設(shè)備開始寫數(shù)據(jù)。

l RD為Read,即讀命令,通知設(shè)備開始讀數(shù)據(jù)。

l BSTP為Burst Stop,即停止命令,禁止設(shè)備繼續(xù)讀寫。

l PR為 Precharge,即預(yù)充命令,用來釋放某Bank與某行的選擇。

l AR為Auto Refresh,即刷新命令,用來刷新或者更新數(shù)據(jù)內(nèi)容。

l LMR為Load Mode Register,即設(shè)置命令,用來配置設(shè)備參數(shù)。

Verilog則可以這樣描述這些命令,結(jié)果如代碼18.1所示:

parameter _INIT = 5'b01111, _NOP = 5'b10111, _ACT = 5'b10011, _RD = 5'b10101, _WR = 5'b10100, _BSTP = 5'b10110, _PR = 5'b10010, _AR = 5'b10001, _LMR = 5'b10000;

代碼18.1

DQ0~DQ15為數(shù)據(jù)信號。BA0~1與A0~A12皆為地址信號,其中A0~A12行列共用,,然而地址信號可以指向的范圍,如下計(jì)算:

2(2 Bank + 13 Row + 9 Column) × 16 bit = 224 × 16 bit

= 1.6777216e7 × 16 bit // 16M × 16 bit

= 2.68435456e8 bit

= 262144 kbit

= 256 Mbits

初始化:

初始化除了就緒SDRAM以外,我們還要設(shè)置SDRAM內(nèi)部的 Mode Register,設(shè)置內(nèi)容內(nèi)容如表18.3所示:

表18.3 Mode Register的內(nèi)容。

Mode Register

A12

A11

A10

A9

A8

A7

A6

A5

A4

A3

A2

A1

A0

0

0

OP Code

0

0

CAS Latency

BT

Burst Length

A3

Burst Type

0

Sequential

1

Interleave

?

Burst Length

A2

A1

A0

A3 = 0

A3 = 1

0

0

0

1

1

0

0

1

2

2

0

1

0

4

4

0

1

1

8

8

1

1

1

Full Page

Reserved

A9

Write Mode

0

Burst Read and Burst Write

1

Burst Read and Single Write

A6

A5

A4

CAS Latency

0

1

0

2

0

1

1

3

如表18.3所示,設(shè)置內(nèi)容必須經(jīng)由地址信號A12~A0。其中A2~A0表示字讀寫的長度,實(shí)驗(yàn)十八為單字讀寫,所以A2~A0設(shè)置為3’b000。A3表示讀寫次序,1’b0表示順序讀寫。A6~A4表示 CAS 延遲(也可以視為讀出延遲),設(shè)為 3’b011是為讀出更穩(wěn)定。A9表示讀寫模式,一般都是設(shè)置為1’b0。

圖18.4 初始化的理想時序圖。

圖18.4是初始化的理想時序圖,其中CLOCK1為 -210°的系統(tǒng)時鐘,CLOCK2為SDRAM的時鐘。rCMD為CKE,CS,RAS,CAS還有WE等命令。rA為A0~A12,rBA為BA0~BA1等地址信號。初始化過程如下所示:

l T0,滿足100us;

l T1,發(fā)送PR命令,拉高所有rA與rBA。

l T1半周期,SDRAM讀取。

l T2,滿足TRP;

l T3,發(fā)送AR命令。

l T3半周期,SDRAM讀取。

l T4,滿足TRRC,

l T5,發(fā)送AR命令。

l T5半周期,SDRAM讀取。

l T6,滿足TRRC,

l T7,發(fā)送LMR命令與相關(guān)Code(設(shè)置內(nèi)容)。

l T7半周期,SDRAM讀取。

l T8,滿足TMRD。

怎么樣?讀者是不是覺得很單純呢?事后,Verilog則可以這樣描述,結(jié)果如代碼18.2所示:

1. case( i ) 2. 3. 0: // delay 100us 4. if( C1 == T100US -1 ) begin C1 <= 14'd0; i <= i + 1'b1; end 5. else begin C1 <= C1 + 1'b1; end 6. 7. 1: // Send Precharge Command 8. begin rCMD <= _PR; { rBA, rA } <= 15'h3fff; i <= i + 1'b1; end 9. 10. 2: // wait TRP 20ns 11. if( C1 == TRP -1 ) begin C1 <= 14'd0; i <= i + 1'b1; end 12. else begin rCMD <= _NOP; C1 <= C1 + 1'b1; end 13. 14. 3: // Send Auto Refresh Command 15. begin rCMD <= _AR; i <= i + 1'b1; end 16. 17. 4: // wait TRRC 63ns 18. if( C1 == TRRC -1 ) begin C1 <= 14'd0; i <= i + 1'b1; end 19. else begin rCMD <= _NOP; C1 <= C1 + 1'b1; end 20. 21. 5: // Send Auto Refresh Command 22. begin rCMD <= _AR; i <= i + 1'b1; end 23. 24. 6: // wait TRRC 63ns 25.??? if( C1 == TRRC -1 ) begin C1 <= 14'd0; i <= i + 1'b1; end 26. else begin rCMD <= _NOP; C1 <= C1 + 1'b1; end 27. 28. 7: // Send LMR Cmd. Burst Read & Write, 3'b011 mean CAS latecy = 3, Sequential, 1 burst length 29. begin rCMD <= _LMR; rBA <= 2'b11; rA <= {3'd0,1'b0,2'd0,3'b011,1'b0, 3'b000}; i <= i + 1'b1; end 30. 31. 8: // Send 2 nop CLK for tMRD 32. if( C1 == TMRD -1 ) begin C1 <= 14'd0; i <= i + 1'b1; end 33. else begin rCMD <= _NOP; C1 <= C1 + 1'b1; end 34. 35. 9: // Generate done signal 36. begin isDone <= 1'b1; i <= i + 1'b1; end 37. 38. 10: 39. begin isDone <= 1'b0; i <= 4'd0; end 40. 41. endcase

代碼18.2

代碼18.2完全按照圖18.4去驅(qū)動,讀者只要將i看為T就萬事大吉,其中步驟7發(fā)送LMR命令還有設(shè)置Code內(nèi)容。至于步驟8~9則用來產(chǎn)生完成信號。

刷新操作:

圖18.5 刷新操作的理想時序圖。

所謂定期刷新就是被宮掉的初始化,如圖18.5所示,時序過程如下:

l T0,發(fā)送PR命令(拉高所有rA與rBA視喜好而定);

l T0半周期,SDRAM讀取。

l T1,滿足TRP;

l T2,發(fā)送AR命令。

l T2半周期,SDRAM讀取。

l T3,滿足TRRC,

l T4,發(fā)送AR命令。

l T4半周期,SDRAM讀取。

l T5,滿足TRRC,

Verilog 則可以這樣表示,結(jié)果如表18.3所示:

1. case( i ) 2. 3. 0: // Send Precharge Command 4. begin rCMD <= _PR; i <= i + 1'b1; end 5. 6. 1: // wait TRP 20ns 7. if( C1 == TRP -1 ) begin C1 <= 14'd0; i <= i + 1'b1; end 8. else begin rCMD <= _NOP; C1 <= C1 + 1'b1; end 9. 10. 2: // Send Auto Refresh Command 11. begin rCMD <= _AR; i <= i + 1'b1; end 12. 13. 3: // wait TRRC 63ns 14. if( C1 == TRRC -1 ) begin C1 <= 14'd0; i <= i + 1'b1; end 15. else begin rCMD <= _NOP; C1 <= C1 + 1'b1; end 16. 17. 4: // Send Auto Refresh Command 18. begin rCMD <= _AR; i <= i + 1'b1; end 19. 20. 5: // wait TRRC 63ns 21. if( C1 == TRRC -1 ) begin C1 <= 14'd0; i <= i + 1'b1; end 22. else begin rCMD <= _NOP; C1 <= C1 + 1'b1; end 23. 24. 6: // Generate done signal 25. begin isDone <= 1'b1; i <= i + 1'b1; end 26. 27. 7: 28. begin isDone <= 1'b0; i <= 4'd0; end 29. 30. endcase

代碼18.3

除了步驟6~7用來產(chǎn)生完成信號以外,代碼18.3都是據(jù)圖18.5描述。SDRAM儲存的內(nèi)容是非常脆弱的,如果我們不定期刷新內(nèi)容,該內(nèi)容有可能會蒸發(fā)掉。根據(jù) HY57V2562GTR這只 SDRAM,它的內(nèi)容儲存周期為 8192 / 64ms,然而定期刷新的計(jì)算如下:

64ms / 8192 = 7.8125us

換言之,每隔7.8125微妙就要刷新一次所有內(nèi)容。

寫操作:

圖18.6 寫操作的理想時序圖。

圖18.6是寫操作的理想時序圖,過程如下:

l T1,發(fā)送ACT命令,BANK地址與行地址;

l T1半周期,SDRAM讀取;

l T2,滿足TRCD;

l T3,發(fā)送WR命令,BANK地址與列地址,還有寫數(shù)據(jù);

l T3半周期,SDRAM讀取

l T4,滿足TWR;

l T5,滿足TRP。

正如前面說過,ACT命令式用來選擇BANK地址與行地址,然而關(guān)鍵就在T3。T3除了發(fā)送WR命令,列地址,還有些數(shù)據(jù)以外,A10拉高是為了執(zhí)行預(yù)充電。所謂預(yù)充電就是釋放BANK地址,行地址與列地址等的選擇。因此,滿足TWR以后,我們還要滿足TRP的釋放時間,好讓SDRAM有足夠的時間自行釋放選擇。

Verilog則可以這樣描述,結(jié)果如代碼18.4所示:

1. case( i ) 2. 3. 0: // Set IO to output State 4. begin isOut <= 1'b1; i <= i + 1'b1; end 5. 6. 1: // Send Active Command with Bank and Row address 7. begin rCMD <= _ACT; rBA <= iAddr[23:22]; rA <= iAddr[21:9]; i <= i + 1'b1; end 8. 9. 2: // wait TRCD 20ns 10. if( C1 == TRCD -1 ) begin C1 <= 14'd0; i <= i + 1'b1; end 11. else begin rCMD <= _NOP; C1 <= C1 + 1'b1; end 12. 13. 3: // Send Write cmd with row address, pull up A10 1 clk to PR 14. begin rCMD <= _WR; rBA <= iAddr[23:22]; rA <= { 4'b0010, iAddr[8:0] }; i <= i + 1'b1; end 15. 16. 4: // wait TWR 2 clock 17. if( C1 == TWR -1 ) begin C1 <= 14'd0; i <= i + 1'b1; end 18. else begin rCMD <= _NOP; C1 <= C1 + 1'b1; end 19. 20. 5: // wait TRP 20ns 21. if( C1 == TRP -1 ) begin C1 <= 14'd0; i <= i + 1'b1; end 22. else begin rCMD <= _NOP; C1 <= C1 + 1'b1; end 23. 24. 6: // Generate done signal 25. begin isDone <= 1'b1; i <= i + 1'b1; end 26. 27. 7: 28. begin isDone <= 1'b0; i <= 4'd0; end 29. 30. endcase

代碼18.4

根據(jù)前面的計(jì)算,BA1~BA0再加上 RA12~A0與 CA8~A0以后,一共有24位寬,詳細(xì)的位分配如表18.4所示:

表18.4 Addr的位分配。

位分配

地址內(nèi)容

Addr[23:22]

BANK地址

Addr[21:9]

行地址

Addr[8:0]

列地址

如代碼18.4所示,步驟用來設(shè)置IO口為輸出。步驟1為rA賦值行地址,步驟3則為rA賦值列地址,并且拉高A10以示自行預(yù)充電。步驟6~7用來產(chǎn)生完成信號。

讀操作:

圖18.7 讀操作的理想時序。

圖18.7為讀操作的理想時序,大致過程如下:

l T1,發(fā)送ACT命令,BANK地址與行地址;

l T1半周期,SDRAM讀取;

l T2,滿足TRCD;

l T3,發(fā)送RD命令,BANK地址與列地址;

l T3半周期,SDRAM讀取命令。

l T4,滿足 CAS Latency。

l T5,讀取數(shù)據(jù)。

l T6,滿足TRP。

讀操作與寫操作的過程大同小異,除了WR命令變成RD命令以外,A10為1同樣表示自行預(yù)充電,余下就是滿足CAS Latency。好奇的同學(xué)一定會覺得疑惑,為何CL 為3呢?其實(shí)沒什么,只是直感上覺得3這個數(shù)字比較順眼一點(diǎn)。注意CL的計(jì)算方式是讀取RD命令以后開始計(jì)算。

Verilog可以這樣描述,結(jié)果如代碼18.5所示:

1. case( i ) 2. 3. 0: 4. begin isOut <= 1'b0; D1 <= 16'd0; i <= i + 1'b1; end 5. 6. 1: // Send Active command with Bank and Row address 7. begin rCMD <= _ACT; rBA <= iAddr[23:22]; rA <= iAddr[21:9]; i <= i + 1'b1; end 8. 9. 2: // wait TRCD 20ns 10. if( C1 == TRCD -1 ) begin C1 <= 14'd0; i <= i + 1'b1; end 11. else begin rCMD <= _NOP; C1 <= C1 + 1'b1; end 12. 13. 3: // Send Read command and column address, pull up A10 to PR. 14. begin rCMD <= _RD; rBA <= iAddr[23:22]; rA <= { 4'b0010, iAddr[8:0]}; i <= i + 1'b1; end 15. 16. 4: // wait CL 3 clock 17. if( C1 == CL -1 ) begin C1 <= 14'd0; i <= i + 1'b1; end 18. else begin rCMD <= _NOP; C1 <= C1 + 1'b1; end 19. 20. 5: // Read Data 21. begin D1 <= S_DQ; i <= i + 1'b1; end 22. 23. 6: // wait TRP 20ns 24. if( C1 == TRP -1 ) begin C1 <= 14'd0; i <= i + 1'b1; end 25. else begin rCMD <= _NOP; C1 <= C1 + 1'b1; end 26. 27. 7: // Generate done signal 28. begin isDone <= 1'b1; i <= i + 1'b1; end 29. 30. 8: 31. begin isDone <= 1'b0; i <= 4'd0; end 32. 33. endcase

代碼18.5

代碼18.5完全根據(jù)圖18.7描述,除了步驟7~8用于產(chǎn)生完成信號以外。SDRAM的基本操作大致上就是這樣而已,完后我們便可以開始建模了。

圖18.8 SDRAM基礎(chǔ)模塊的建模圖。

圖18.8是SDRAM基礎(chǔ)模塊的建模圖,SDRAM基礎(chǔ)模塊的內(nèi)容包括SDRAM控制模塊,還有SDRAM功能模塊。外圍的PLL模塊應(yīng)用頻率為133Mhz向左位移210°的CLOCK1,還有133Mhz的CLOCK2。CLOCK1用作系統(tǒng)時鐘,CLOCK用作SDRAM時鐘。如果PLL模塊硬要分類的話,它應(yīng)該屬于特殊性質(zhì)的即時類吧!?

SDRAM控制模塊主要負(fù)責(zé)一些操作的調(diào)度,左邊2位Call/Done由外部調(diào)用,其中 [1]為寫操作 [0]為讀操作;右邊4位Call/Done為調(diào)用SDRAM功能模塊,其中 [3]為寫操作 [2]為讀操作 [1]為刷新 [0]為初始化。SDRAM功能模塊的右邊是驅(qū)動SDRAM硬件資源的頂層信號,左邊的問答信號被控制模塊調(diào)用以外,地址信號還有數(shù)據(jù)信號都直接連接外部。

sdram_funcmod.v

圖18.9 SDRAM功能模塊的建模圖。

該說的東西筆者都已經(jīng)說了,具體內(nèi)容我們還是來看代碼吧。

1. module sdram_funcmod 2. ( 3. input CLOCK, 4. input RESET, 5. 6. output S_CKE, S_NCS, S_NRAS, S_NCAS, S_NWE, 7. output [1:0]S_BA, 8. output [12:0]S_A, 9. output [1:0]S_DQM, 10. inout [15:0]S_DQ, 11. 12. input [3:0]iCall, 13. output oDone, 14. input [23:0]iAddr, // [23:22]BA,[21:9]Row,[8:0]Column 15. input [15:0]iData, 16. output [15:0]oData 17. );

以上內(nèi)容為相關(guān)的出入端聲明。

18. parameter T100US = 14'd13300; 19. // tRP 20ns, tRRC 63ns, tRCD 20ns, tMRD 2CLK, tWR/tDPL 2CLK, CAS Latency 3CLK 20. parameter TRP = 14'd3, TRRC = 14'd9, TMRD = 14'd2, TRCD = 14'd3, TWR = 14'd2, CL = 14'd3; 21. parameter _INIT = 5'b01111, _NOP = 5'b10111, _ACT = 5'b10011, _RD = 5'b10101, _WR = 5'b10100, 22. _BSTP = 5'b10110, _PR = 5'b10010, _AR = 5'b10001, _LMR = 5'b10000; 23.

以上內(nèi)容為相關(guān)的常量聲明,其中第18~20行的是將常量都是經(jīng)由133Mhz量化。

24. reg [4:0]i; 25. reg [13:0]C1; 26. reg [15:0]D1; 27. reg [4:0]rCMD; 28. reg [1:0]rBA; 29. reg [12:0]rA; 30. reg [1:0]rDQM; 31. reg isOut; 32. reg isDone; 33. 34. always @ ( posedge CLOCK or negedge RESET ) 35. if( !RESET ) 36. begin 37. i <= 4'd0; 38. C1 <= 14'd0; 39. D1 <= 16'd0; 40. rCMD <= _NOP; 41. rBA <= 2'b11; 42. rA <= 13'h1fff; 43. rDQM <= 2'b00; 44. isOut <= 1'b1; 45. isDone <= 1'b0; 46. end

以上內(nèi)容為相關(guān)的寄存器聲明以及復(fù)位操作。

47. else if( iCall[3] ) 48. case( i ) 49. 50. 0: // Set IO to output State 51. begin isOut <= 1'b1; i <= i + 1'b1; end 52. 53. 1: // Send Active Command with Bank and Row address 54. begin rCMD <= _ACT; rBA <= iAddr[23:22]; rA <= iAddr[21:9]; i <= i + 1'b1; end 55. 56. 2: // wait TRCD 20ns 57. if( C1 == TRCD -1 ) begin C1 <= 14'd0; i <= i + 1'b1; end 58. else begin rCMD <= _NOP; C1 <= C1 + 1'b1; end 59. 60. /*********************************************/ 61. 62. 3: // Send Write command with row address, pull up A10 1 clk to PR 63. begin rCMD <= _WR; rBA <= iAddr[23:22]; rA <= { 4'b0010, iAddr[8:0] }; i <= i + 1'b1; end 64. 65. 4: // wait TWR 2 clock 66. if( C1 == TWR -1 ) begin C1 <= 14'd0; i <= i + 1'b1; end 67. else begin rCMD <= _NOP; C1 <= C1 + 1'b1; end 68. 69. 5: // wait TRP 20ns 70. if( C1 == TRP -1 ) begin C1 <= 14'd0; i <= i + 1'b1; end 71. else begin rCMD <= _NOP; C1 <= C1 + 1'b1; end 72. 73. /**********************************************/ 74. 75. 6: // Generate done signal 76. begin isDone <= 1'b1; i <= i + 1'b1; end 77. 78. 7: 79. begin isDone <= 1'b0; i <= 4'd0; end 80. 81. endcase

以上內(nèi)容為部分核心操作。第47行的if( iCall[3] ) 表示余下內(nèi)容為寫操作。

82. else if( iCall[2] ) 83. case( i ) 84. 85. 0: 86. begin isOut <= 1'b0; D1 <= 16'd0; i <= i + 1'b1; end 87. 88. 1: // Send Active command with Bank and Row address 89. begin rCMD <= _ACT; rBA <= iAddr[23:22]; rA <= iAddr[21:9]; i <= i + 1'b1; end 90. 91. 2: // wait TRCD 20ns 92. if( C1 == TRCD -1 ) begin C1 <= 14'd0; i <= i + 1'b1; end 93. else begin rCMD <= _NOP; C1 <= C1 + 1'b1; end 94. 95. /********************/ 96. 97. 3: // Send Read command and column address, pull up A10 to PR 98. begin rCMD <= _RD; rBA <= iAddr[23:22]; rA <= { 4'b0010, iAddr[8:0]}; i <= i + 1'b1; end 99. 100. 4: // wait CL 3 clock 101. if( C1 == CL -1 ) begin C1 <= 14'd0; i <= i + 1'b1; end 102. else begin rCMD <= _NOP; C1 <= C1 + 1'b1; end 103. 104. /********************/ 105. 106. 5: // Read Data 107. begin D1 <= S_DQ; i <= i + 1'b1; end 108. 109. /********************/ 110. 111. 6: // wait TRP 20ns 112. if( C1 == TRP -1 ) begin C1 <= 14'd0; i <= i + 1'b1; end 113. else begin rCMD <= _NOP; C1 <= C1 + 1'b1; end 114. 115. /********************/ 116. 117. 7: // Generate done signal 118. begin isDone <= 1'b1; i <= i + 1'b1; end 119. 120. 8: 121. begin isDone <= 1'b0; i <= 4'd0; end 122. 123. endcase

以上內(nèi)容為部分核心操作。第82行的if( iCall[2] ) 表示余下內(nèi)容為讀操作。

124. else if( iCall[1] ) 125. case( i ) 126. 127. 0: // Send Precharge Command 128. begin rCMD <= _PR; i <= i + 1'b1; end 129. 130. 1: // wait TRP 20ns 131. if( C1 == TRP -1 ) begin C1 <= 14'd0; i <= i + 1'b1; end 132. else begin rCMD <= _NOP; C1 <= C1 + 1'b1; end 133. 134. 2: // Send Auto Refresh Command 135. begin rCMD <= _AR; i <= i + 1'b1; end 136. 137. 3: // wait TRRC 63ns 138. if( C1 == TRRC -1 ) begin C1 <= 14'd0; i <= i + 1'b1; end 139. else begin rCMD <= _NOP; C1 <= C1 + 1'b1; end 140. 141. 4: // Send Auto Refresh Command 142. begin rCMD <= _AR; i <= i + 1'b1; end 143. 144. 5: // wait TRRC 63ns 145. if( C1 == TRRC -1 ) begin C1 <= 14'd0; i <= i + 1'b1; end 146. else begin rCMD <= _NOP; C1 <= C1 + 1'b1; end 147. 148. /********************/ 149. 150. 6: // Generate done signal 151. begin isDone <= 1'b1; i <= i + 1'b1; end 152. 153. 7: 154. begin isDone <= 1'b0; i <= 4'd0; end 155. 156. endcase

以上內(nèi)容為部分核心操作。第124行的if( iCall[1] ) 表示余下內(nèi)容為刷新操作。

157. else if( iCall[0] ) 158. case( i ) 159. 160. 0: // delay 100us 161. if( C1 == T100US -1 ) begin C1 <= 14'd0; i <= i + 1'b1; end 162. else begin C1 <= C1 + 1'b1; end 163. 164. /********************/ 165. 166. 1: // Send Precharge Command 167. begin rCMD <= _PR; { rBA, rA } <= 15'h3fff; i <= i + 1'b1; end 168. 169. 2: // wait TRP 20ns 170. if( C1 == TRP -1 ) begin C1 <= 14'd0; i <= i + 1'b1; end 171. else begin rCMD <= _NOP; C1 <= C1 + 1'b1; end 172. 173. 3: // Send Auto Refresh Command 174. begin rCMD <= _AR; i <= i + 1'b1; end 175. 176. 4: // wait TRRC 63ns 177. if( C1 == TRRC -1 ) begin C1 <= 14'd0; i <= i + 1'b1; end 178. else begin rCMD <= _NOP; C1 <= C1 + 1'b1; end 179. 180. 5: // Send Auto Refresh Command 181. begin rCMD <= _AR; i <= i + 1'b1; end 182. 183. 6: // wait TRRC 63ns 184. if( C1 == TRRC -1 ) begin C1 <= 14'd0; i <= i + 1'b1; end 185. else begin rCMD <= _NOP; C1 <= C1 + 1'b1; end 186. 187. /********************/ 188. 189. 7: // Send LMR Cmd. Burst Read & Write, 3'b010 mean CAS latecy = 3, Sequential, 1 burst length 190. begin rCMD <= _LMR; rBA <= 2'b11; rA <= { 3'd0, 1'b0, 2'd0, 3'b011, 1'b0, 3'b000 }; i <= i + 1'b1; end 191. 192. 8: // Send 2 nop CLK for tMRD 193. if( C1 == TMRD -1 ) begin C1 <= 14'd0; i <= i + 1'b1; end 194. else begin rCMD <= _NOP; C1 <= C1 + 1'b1; end 195. 196. /********************/ 197. 198. 9: // Generate done signal 199. begin isDone <= 1'b1; i <= i + 1'b1; end 200. 201. 10: 202. begin isDone <= 1'b0; i <= 4'd0; end 203. 204. endcase 205.

以上內(nèi)容為部分核心操作。第157行的if( iCall[0] ) 表示余下內(nèi)容為初始化。

206. assign { S_CKE, S_NCS, S_NRAS, S_NCAS, S_NWE } = rCMD; 207. assign { S_BA, S_A } = { rBA, rA }; 208. assign S_DQM = rDQM; 209. assign S_DQ = isOut ? iData : 16'hzzzz; 210. assign oDone = isDone; 211. assign oData = D1; 212. 213. endmodule

以上內(nèi)容為相關(guān)的輸出驅(qū)動聲明,注意 iData直接驅(qū)動 S_DQ。

sdram_ctrlmod.v

圖18.10 SDRAM控制模塊的建模圖。

前面說過該模塊負(fù)責(zé)一些功能調(diào)用,此外該模塊也負(fù)責(zé)定時刷新的計(jì)算,具體內(nèi)容我們還是來看代碼吧。

1. module sdram_ctrlmod 2. ( 3. input CLOCK, 4. input RESET, 5. input [1:0]iCall, // [1]Write, [0]Read 6. output [1:0]oDone, 7. output [3:0]oCall, 8. input iDone 9. ); 10. parameter WRITE = 4'd1, READ = 4'd4, REFRESH = 4'd7, INITIAL = 4'd8; 11. parameter TREF = 11'd1040; 12.

以上內(nèi)容為相關(guān)的出入端聲明。第10行是各個入口地址的常量聲明,第11行則是定時刷新的周期——7.8125us。

13. reg [3:0]i; 14. reg [10:0]C1; 15. reg [3:0]isCall; //[3]Write [2]Read [1]A.Refresh [0]Initial 16. reg [1:0]isDone; 17. 18. always @ ( posedge CLOCK or negedge RESET ) 19. if( !RESET ) 20. begin 21. i <= INITIAL; // Initial SDRam at first 22. C1 <= 11'd0; 23. isCall <= 4'b0000; 24. isDone <= 2'b00; 25. end

以上內(nèi)容為相關(guān)的寄存器聲明以及復(fù)位操作。第21行表示i首先會指向初始化。

26. else 27. case( i ) 28. 29. 0: // IDLE 30. if( C1 >= TREF ) begin C1 <= 11'd0; i <= REFRESH; end 31. else if( iCall[1] ) begin C1 <= C1 + 1'b1; i <= WRITE; end 32. else if( iCall[0] ) begin C1 <= C1 + 1'b1; i <= READ; end 33. else begin C1 <= C1 + 1'b1; end 34. 35. /***********************/ 36.

以上內(nèi)容為部分核心操作。步驟0為待機(jī)狀態(tài),期間第33行的C1會一直遞增,如果期間沒有任何讀寫操作,而且C1的計(jì)數(shù)內(nèi)容也超過 TREF,那么C1會清零,i指向REFRESH(第30行)。反之,如果讀寫操作被使能,i指向相關(guān)的步驟入口,期間C1也會遞增以示步驟翻轉(zhuǎn)所用掉的時鐘。

37. 1: //Write 38. if( iDone ) begin isCall[3] <= 1'b0; C1 <= C1 + 1'b1; i <= i + 1'b1; end 39. else begin isCall[3] <= 1'b1; C1 <= C1 + 1'b1; end 40. 41. 2: 42. begin isDone[1] <= 1'b1; C1 <= C1 + 1'b1; i <= i + 1'b1; end 43. 44. 3: 45. begin isDone[1] <= 1'b0; C1 <= C1 + 1'b1; i <= 4’d0; end 46. 47. /***********************/ 48.

?

以上內(nèi)容為部分核心操作。步驟1~3是寫操作。步驟1表示,功能模塊反饋完成信號之前,C1會不停遞增。當(dāng)完成信號接收到手,isCall[3]拉低,C1遞增,i也遞增。步驟2~3則是用來反饋寫操作的完成信號,期間C1也會遞增。

49. 4: // Read 50. if( iDone ) begin isCall[2] <= 1'b0; C1 <= C1 + 1'b1; i <= i + 1'b1; end 51. else begin isCall[2] <= 1'b1; C1 <= C1 + 1'b1; end 52. 53. 5: 54. begin isDone[0] <= 1'b1; C1 <= C1 + 1'b1; i <= i + 1'b1; end 55. 56. 6: 57. begin isDone[0] <= 1'b0; C1 <= C1 + 1'b1; i <= 4'd0; end 58. 59. /***********************/ 60.

以上內(nèi)容為部分核心操作。步驟4~6是讀操作。步驟4表示接收完成信號之前,isCall[2]會不停拉高,C1也會不停遞增 ... 直至接收完成信號,isCall[2]才會拉低,然而C1也會遞增。步驟5~6用反饋?zhàn)x操作的完成信號。

61. 7: // Auto Refresh 62. if( iDone ) begin isCall[1] <= 1'b0; i <= 4'd0; end 63. else begin isCall[1] <= 1'b1; end 64. 65. /***********************/ 66.

以上內(nèi)容為部分核心操作。步驟7是刷新操作,接收完成信號之前 isCall[1] 會不停拉高,直至接收完成信號為止,isCall[1]才會拉低,然后i指向步驟0。

67. 8: // Initial 68. if( iDone ) begin isCall[0] <= 1'b0; i <= 4'd0; end 69. else begin isCall[0] <= 1'b1; end 70. 71. endcase 72. 73. assign oDone = isDone; 74. assign oCall = isCall; 75. 76. endmodule

以上內(nèi)容為部分核心操作。步驟8用來執(zhí)行初始化,接收完成信號之前,isCall[0]會不停拉高,直至接收完成信號為止,isCall[0]才會拉低,然后i指向步驟0。第73~74行則是相關(guān)的輸出驅(qū)動。整體而言,除了讀寫操作必須反饋完成信號給上層以外,其余的定期刷新還有初始化都是該內(nèi)部操作,所以不用反饋完成信號。

sdram_basemod.v

內(nèi)容的連線部署完全依照圖18.8。

1. module sdram_basemod 2. ( 3. input CLOCK, 4. input RESET, 5. 6. output S_CKE, S_NCS, S_NRAS, S_NCAS, S_NWE, 7. output [1:0]S_BA, 8. output [12:0]S_A, 9. output [1:0]S_DQM, 10. inout [15:0]S_DQ, 11. 12. input [1:0]iCall, 13. output [1:0]oDone, 14. input [23:0]iAddr, 15. input [15:0]iData, 16. output [15:0]oData 17. );

以上內(nèi)容為相關(guān)的出入端聲明,第5~10行是頂層信號,第12~16行是模塊左右兩邊的信號。

18. wire [3:0]CallU1; // [3]Refresh, [2]Read, [1]Write, [0]Initial 19. 20. sdram_ctrlmod U1 21. ( 22. .CLOCK( CLOCK ), 23. .RESET( RESET ), 24. .iCall( iCall ), // < top ,[1]Write [0]Read 25. .oDone( oDone ), // > top ,[1]Write [0]Read 26. .oCall( CallU1 ), // > U2 27. .iDone( DoneU2 ) // < U2 28. ); 29.

以上內(nèi)容為控制模塊的實(shí)例化。

30. wire DoneU2; 31. 32. sdram_funcmod U2 33. ( 34. .CLOCK( CLOCK ), 35. .RESET( RESET ), 36. .S_CKE( S_CKE ), // > top 37. .S_NCS( S_NCS ), // > top 38. .S_NRAS( S_NRAS ), // > top 39. .S_NCAS( S_NCAS ), // > top 40. .S_NWE( S_NWE ), // > top 41. .S_BA( S_BA ), // > top 42. .S_A( S_A ), // > top 43. .S_DQM( S_DQM ), // > top 44. .S_DQ( S_DQ ), // <> top 45. .iCall( CallU1 ), // < U1 46. .oDone( DoneU2 ), // > U1 47. .iAddr( iAddr ), // < top 48. .iData( iData ), // < top 49. .oData( oData ) // > top 50. ); 51. 52. endmodule

以上內(nèi)容為功能模塊的實(shí)例化。

sdram_demo.v

圖18.11 實(shí)驗(yàn)十八的建模圖。

圖18.11是實(shí)驗(yàn)十八的建模圖,其中sdram_demo包含PLL模塊,核心操作還有SDRAM基礎(chǔ)模塊。PLL模塊將50Mhz的時鐘倍頻為133Mhz而且左移210° 的CLOCK1,還有133Mhz的CLOCK2,它直接驅(qū)動S_CLK頂層信號。核心操作負(fù)責(zé)調(diào)用SDRAM基礎(chǔ)模塊,并且將讀寫內(nèi)容經(jīng)由TXD發(fā)送出去。SDRAM基礎(chǔ)模塊左邊的問答信號只有兩位,其中[1]為寫 [0]為讀,具體內(nèi)容我們還是來看代碼吧。

1. module sdram_demo 2. ( 3. input CLOCK, 4. input RESET, 5. output S_CLK, 6. output S_CKE, S_NCS, S_NRAS, S_NCAS, S_NWE, 7. output [12:0]S_A, 8. output [1:0]S_BA, 9. output [1:0]S_DQM, 10. inout [15:0]S_DQ, 11. output TXD 12. );

以上內(nèi)容為相關(guān)的出入端聲明。

13. wire CLOCK1,CLOCK2; 14. 15. pll_module U1 16. ( 17. .inclk0 ( CLOCK ), // 50Mhz 18. .c0 ( CLOCK1 ), // 133Mhz -210 degree phase 19. .c1 ( CLOCK2 ) // 133Mhz 20. ); 21.

以上內(nèi)容為PLL模塊的實(shí)例化,CLOCK1為133Mhz頻率并且左移210°,CLOCK2為133Mhz頻率,并且直接驅(qū)動 S_CLK。

22. wire [1:0]DoneU2; 23. wire [15:0]DataU2; 24. 25. sdram_basemod U2 26. ( 27. .CLOCK( CLOCK1 ), 28. .RESET( RESET ), 29. .S_CKE( S_CKE ), 30. .S_NCS( S_NCS ), 31. .S_NRAS( S_NRAS ), 32. .S_NCAS( S_NCAS ), 33. .S_NWE( S_NWE ), 34. .S_A( S_A ), 35. .S_BA( S_BA ), 36. .S_DQM( S_DQM ), 37. .S_DQ( S_DQ ), 38. .iCall( isCall ), 39. .oDone( DoneU2 ), 40. .iAddr( D1 ), 41. .iData( D2 ), 42. .oData( DataU2 ) 43. ); 44.

以上內(nèi)容為SDRAM基礎(chǔ)模塊的實(shí)例化,第40~41行表示 iAddr為D1驅(qū)動,iData為D2驅(qū)動。

45. parameter B115K2 = 11'd1157, TXFUNC = 6'd16; 46. 47. reg [5:0]i,Go; 48. reg [10:0]C1; 49. reg [23:0]D1; 50. reg [15:0]D2,D3; 51. reg [10:0]T; 52. reg [1:0]isCall; 53. reg rTXD; 54. 55. always @ ( posedge CLOCK1 or negedge RESET ) 56. if( !RESET ) 57. begin 58. i <= 6'd0; 59. Go <= 6'd0; 60. C1 <= 11'd0; 61. D1 <= 24'd0; 62. D2 <= 16'd0; 63. D3 <= 16'd0; 64. T <= 11'd0; 65. isCall <= 2'b00; 66. rTXD <= 1'b1; 67. end

以上內(nèi)容為相關(guān)的寄存器以及復(fù)位操作。第45行是波特率為115200還有偽函數(shù)入口的常量聲明。

? 68. else 69. case( i ) 70. 71. 0: 72. if( DoneU2[1] ) begin isCall[1] <= 1'b0; i <= i + 1'b1; end 73. else begin isCall[1] <= 1'b1; D1 <= 24'd0; D2 <= 16'hABCD; end 74. 75. 1: 76. if( DoneU2[0] ) begin D3 <= DataU2; isCall[0] <= 1'b0; i <= i + 1'b1; end 77. else begin D1 <= 24'd0; isCall[0] <= 1'b1; end 78. 79. 2: 80. begin T <= { 2'b11, D3[15:8], 1'b0 }; i <= TXFUNC; Go <= i + 1'b1; end 81. 82. 3: 83. begin T <= { 2'b11, D3[7:0], 1'b0 }; i <= TXFUNC; Go <= i + 1'b1; end 84. 85. 4: 86. i <= i; 87. 88. /******************************/ 89.

以上內(nèi)容為部分核心操作。步驟0將數(shù)據(jù)16’hABCD寫入地址0。步驟1從地址0讀出數(shù)據(jù) 16’hABCD,并且暫存至D3。步驟2先發(fā)送D3的高8位,步驟3則發(fā)送D3的低8位。步驟4發(fā)呆。

90. 16,17,18,19,20,21,22,23,24,25,26: 91. if( C1 == B115K2 -1 ) begin C1 <= 11'd0; i <= i + 1'b1; end 92. else begin rTXD <= T[i - 16]; C1 <= C1 + 1'b1; end 93. 94. 27: 95. i <= Go; 96. 97. endcase 98. 99. assign S_CLK = CLOCK2; 100. assign TXD = rTXD; 101. 102. endmodule

以上內(nèi)容為部分核心操作。步驟16~27是發(fā)送一幀數(shù)據(jù)的偽函數(shù)。第99~100行則是相關(guān)的輸出驅(qū)動。綜合完畢并且下載程序,如果串口調(diào)試軟件出現(xiàn) ABCD等兩字節(jié)數(shù)據(jù),結(jié)果表示實(shí)驗(yàn)成功。

細(xì)節(jié)一:完整的個體模塊

SDRAM基礎(chǔ)模塊已經(jīng)就緒完畢。

細(xì)節(jié)二:其它時序參數(shù)

驅(qū)動SDRAM最大的收獲莫過于學(xué)習(xí)各種稀奇古怪的時序參數(shù),雖然實(shí)驗(yàn)十六的IIC,也有時序參數(shù),但是前者好比一粒面包屑,后者則是一片面包,兩種時序參數(shù)有“體積”上的明確差距。筆者曾經(jīng)說過,時序參數(shù)即時間要求有第一層與第二層之分,第一層時間要求正如IIC的時序參數(shù),打得像面包一樣 ... 反之,第二層時間要求宛如SDRAM的時序參數(shù),小得似面包屑一般。

SDRAM的時序參數(shù)除了 tRP,TRRC,TMRD,CAS Latency 等這些東西以外,它還有更為極為,而且不能控制的時序參數(shù)。更確切來說,這些時序參數(shù)都屬于物理因數(shù)的范圍 ... 難得有機(jī)會學(xué)習(xí)SDRAM,筆者就稍微聊聊它們吧。

圖18.12 時序參數(shù)①。

圖18.12是讀操作的部分時序,當(dāng)CL得到滿足以后,數(shù)據(jù)就會被吐出來,其中:

TLZ(TLOZ)為 clock to data output in low-Z time。簡單來說,就是數(shù)據(jù)被出發(fā)沿吐出之前,必須經(jīng)過的延遲時間。根據(jù)手冊,133Mhz為1ns。

TAC為 access time from clock。簡單來說就是有效時間。根據(jù)手冊,133Mhz為5.4ns

TOH為 data out hold time。簡單來說就是常見的 THOLD。根據(jù)手冊,133Mhz為2.5ns

圖18.13 時序參數(shù)②。

圖18.13是寫操作的部分時序圖,然而重點(diǎn)家伙就是當(dāng)中 T××S或者T××H。一般××是指數(shù)據(jù)的屬性或者類別,不過S與H都有相同的意義,就是典型的TSETUP還有THOLD。筆者習(xí)慣稱呼它們?yōu)榧拇嫫魈匦?#xff0c;因?yàn)橹灰魏我环降貌坏綕M足,數(shù)據(jù)讀入寄存器就得不到保證。寄存器特性好比哥布林一樣,數(shù)量常常多到令人噴飯,如果一一分析會耗死爺爺不償命。

圖18.14 對外的理想時序。

為了用足一支竹竿掃盡一切,筆者才故意向?qū)LOCK1左移180° 測試手氣,看看SDRAM能不能讀出正確的結(jié)果,如果不是再追加位移或者減少位移以致修正,結(jié)果如圖18.14所示。一般而言,T××S或者T××H這些家伙都會得到滿足,然后乖乖就范。話雖如此,同學(xué)們還須注意,Verilog充其量只能滿足第二層的時間要求,卻不能涉及(解決)其中,我們往往只能依賴運(yùn)氣與直覺。當(dāng)然,我們可以借助靜態(tài)時序分析的力量去搞定一切,有興趣的朋友請看《工具篇I》。

轉(zhuǎn)載于:https://www.cnblogs.com/alinx/p/4309688.html

總結(jié)

以上是生活随笔為你收集整理的【黑金原创教程】【FPGA那些事儿-驱动篇I 】实验十八:SDRAM模块① — 单字读写...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

精品国产自 | 国产对白av| 欧美激情一区不卡 | 精品亚洲成a人在线观看 | 不卡视频在线 | 国产成人精品国内自产拍免费看 | 成人久久免费视频 | 国产日韩三级 | 亚洲天堂视频在线 | 蜜桃视频色 | 国产成人精品久久亚洲高清不卡 | 四虎在线免费 | 91在线91拍拍在线91 | 国产色道 | 九色精品在线 | 黄色大全在线观看 | 91精品久久久久久久99蜜桃 | 国产一级h | 亚洲第一区在线播放 | 国产成人综合在线观看 | 六月丁香伊人 | 精品人人人 | 制服丝袜天堂 | 九九色网| 日本一区二区高清不卡 | 日韩视频一区二区 | 五月天婷婷在线观看视频 | 国产精品麻豆欧美日韩ww | 综合网婷婷 | 97成人免费视频 | 中文字幕欧美三区 | 日韩在线大片 | 亚洲国产av精品毛片鲁大师 | 国产又粗又猛又爽又黄的视频免费 | 91丨porny丨九色 | 91亚洲综合 | 四虎在线观看网址 | 欧美另类网站 | 超碰免费公开 | 999久久国产精品免费观看网站 | 国产xvideos免费视频播放 | 久久在线精品视频 | 国产99在线 | 亚洲区精品 | 日韩午夜电影 | 中文在线a∨在线 | www欧美日韩| 成年人黄色免费看 | 久久久久国产视频 | 色噜噜在线观看 | 亚洲精品国产精品99久久 | 欧美日韩中文字幕在线视频 | 日韩精品一区二区三区高清免费 | 色综合天天综合在线视频 | 国产精品99久久久久久久久久久久 | 国产精品资源网 | 91精品国产综合久久久久久久 | 亚洲成av片人久久久 | 91试看 | 免费日韩一区二区三区 | 97超碰色偷偷 | 五月婷婷激情综合 | 国产小视频免费在线网址 | 在线中文字幕电影 | 天堂av免费看 | 91视视频在线直接观看在线看网页在线看 | 天天干,天天插 | av网站播放| 久久久久国产一区二区三区四区 | 日韩欧美综合 | 欧美久久成人 | 精品视频免费 | 91中文在线视频 | 久久激情视频免费观看 | 狠狠操狠狠插 | 一区二区三区动漫 | 亚洲欧美日韩一二三区 | 成人av手机在线 | 亚a在线 | 国产精品久久一区二区无卡 | 在线观看免费福利 | 美女视频黄免费 | www.69xx | 国产精品 久久 | 中文字幕91 | 狠狠躁日日躁狂躁夜夜躁av | 特级西西444www大精品视频免费看 | 国产精品久久久久久久久婷婷 | 麻豆精品传媒视频 | 综合网在线视频 | www久久久久| 久久免费视频这里只有精品 | 国产精品毛片一区二区在线 | 国产精品美女久久久久aⅴ 干干夜夜 | 欧美激情综合五月色丁香小说 | 国产欧美精品一区二区三区四区 | 国产 一区二区三区 在线 | 国产美女久久 | 成片免费观看视频大全 | 欧美性生活免费看 | 日本精品在线 | 亚洲精品天天 | 一本色道久久精品 | 亚洲 欧洲 国产 日本 综合 | 成人av网站在线播放 | 亚洲精品视频在线免费 | 一级α片 | 久久久久久久久久网站 | 中文字幕 国产专区 | 成人免费看黄 | 精品一区二区久久久久久久网站 | 337p欧美| 亚洲片在线 | 99精品国产一区二区三区麻豆 | 国产精品自产拍在线观看蜜 | 国产成人久久精品亚洲 | 国产精品video爽爽爽爽 | 天天射天天干天天操 | 最新色站 | 亚洲精品午夜久久久久久久 | 国产第一页在线观看 | 午夜国产一区 | 久久综合久久综合这里只有精品 | 91成品视频 | 九九九热| 日本丶国产丶欧美色综合 | 亚洲精品国产综合久久 | www.国产精品 | 天天干天天操天天拍 | 国产乱对白刺激视频不卡 | 中文字幕美女免费在线 | 成人天堂网 | 精品一区二区在线免费观看 | 综合av在线| 国产国产人免费人成免费视频 | 91麻豆文化传媒在线观看 | 国产精品女主播一区二区三区 | 欧美一级激情 | 亚洲午夜久久久久久久久电影网 | 日韩视频在线不卡 | 麻豆小视频在线观看 | 国内成人精品2018免费看 | 日韩欧美成 | 国产精品久久久久久久久久妇女 | 9999精品视频 | 欧美日韩在线观看一区 | 久黄色 | 久久国产精品99久久久久久老狼 | 日韩黄色av网站 | 日韩免费专区 | 99精品一级欧美片免费播放 | 精品视频在线播放 | 婷婷六月色 | 婷婷激情小说网 | 亚洲成人在线免费 | 久草男人天堂 | 黄色软件在线观看视频 | 伊人伊成久久人综合网小说 | 欧美国产视频在线 | 国产小视频网站 | 国产成人久久精品亚洲 | 人人干天天射 | 黄色网大全 | 国产成人一区二区精品非洲 | 毛片随便看| 欧美激情操 | 99久高清在线观看视频99精品热在线观看视频 | bbw av | 4hu视频| 99精品视频在线观看 | 久久国产精品影片 | 综合久久久久久久 | 偷拍精偷拍精品欧洲亚洲网站 | 欧美伦理一区二区三区 | 国产亚洲视频在线观看 | www..com毛片 | av观看在线观看 | 日韩在线观看第一页 | 精品久久久久久久久久久久 | 婷婷免费在线视频 | 国产精品久久片 | 久草视频免费观 | 久久国产一区二区三区 | 人人玩人人添人人 | 99久久精品无码一区二区毛片 | www.婷婷com | 久久66热这里只有精品 | 国产韩国精品一区二区三区 | 婷婷中文字幕综合 | 黄网站免费久久 | 97超碰人人澡人人 | 最新中文在线视频 | 一区二区不卡高清 | 一级黄色电影网站 | 日本精品中文字幕在线观看 | 精品视频资源站 | 久草在线资源网 | 国产二区电影 | 91一区二区三区在线观看 | 久久久久久久久久毛片 | 国产精品福利一区 | 天天天干天天天操 | 久草在线免费新视频 | 九九精品视频在线看 | 亚洲综合色丁香婷婷六月图片 | 成年人av在线播放 | 久久国产精品99久久久久久进口 | 成人免费视频播放 | 欧美日韩视频在线观看一区二区 | 男女激情免费网站 | 国产黄色精品在线 | 久久久99精品免费观看乱色 | 91色偷偷 | 黄网站色| 国产乱对白刺激视频在线观看女王 | 五月天丁香 | 欧美日韩午夜 | 亚洲影院一区 | 国产精品一区二区在线观看免费 | 久草电影网 | 久久99影院 | 色婷婷综合成人av | 激情五月五月婷婷 | 亚洲精品国产精品国自产 | 国产1区在线观看 | 二区中文字幕 | 国产在线观看你懂得 | 国产精品一区二区吃奶在线观看 | 日韩精品在线视频 | 四虎永久精品在线 | 国产亚洲无 | 久久久久www | 亚洲精品乱码久久久久久久久久 | 国产传媒一区在线 | 国产区第一页 | 亚洲美女久久 | 国产手机免费视频 | 欧美在线不卡一区 | 久久韩国免费视频 | 三级在线播放视频 | 日韩高清一二三区 | 日日夜夜精品免费观看 | 天天操天天插 | 亚洲精品国产综合久久 | 欧美极度另类性三渗透 | 日韩欧美专区 | 成人欧美一区二区三区在线观看 | 人人澡人人模 | 国产 在线 日韩 | 亚洲干视频在线观看 | 免费观看第二部31集 | 99精品国产高清在线观看 | 国产视频一 | 狠狠狠操| 国产成人精品亚洲精品 | 久久精品美女 | 久久99国产精品自在自在app | 精品黄色在线观看 | 91在线国产观看 | 午夜精品久久久久久久99婷婷 | 国产又粗又猛又黄视频 | 国产日本亚洲 | 九九99| 精品久久网站 | 永久免费毛片在线观看 | 天天狠狠 | 人人干人人艹 | 亚洲一区动漫 | 99久久久久久久久 | 蜜桃视频在线观看一区 | 免费av观看 | 国产群p视频 | 成人av免费| 中文字幕不卡在线88 | 欧美日韩国产网站 | 在线黄色av | 奇米影音四色 | 精品国产免费一区二区三区五区 | 怡红院av久久久久久久 | 日本中文字幕影院 | 99热九九这里只有精品10 | 欧美激情精品久久久久久免费印度 | 日韩精品2区 | 日本护士三级少妇三级999 | 日韩在线观看不卡 | 国产免费久久 | 深爱婷婷网 | 欧美日韩国产在线精品 | 国产一级淫片免费看 | 三级av免费观看 | 亚洲在线成人精品 | 中文字幕亚洲综合久久五月天色无吗'' | 精品国产一区二区三区四区在线观看 | 国产精品一区在线播放 | 成人av在线播放网站 | 伊人天堂网 | 国产精品刺激对白麻豆99 | 亚洲精品白浆高清久久久久久 | 一区 在线观看 | 国产综合婷婷 | 一区二区三区在线播放 | 人人舔人人干 | 国产免费视频一区二区裸体 | 国产亚洲精品综合一区91 | 成人97视频一区二区 | 天天做天天爱天天爽综合网 | 婷婷久操| 中文字幕二区在线观看 | 欧洲视频一区 | 国产剧在线观看片 | 在线影院 国内精品 | 黄色电影网站在线观看 | 天天操天天操天天干 | 夜夜爽88888免费视频4848 | 丝袜美女在线观看 | 99精品国产在热久久 | 国产精品6 | 精品国产自在精品国产精野外直播 | 国产精品福利无圣光在线一区 | 亚洲精品国产精品久久99热 | 国产高清不卡一区二区三区 | 久久精品国产99 | 视频在线精品 | 四虎影视成人精品国库在线观看 | 国产三级国产精品国产专区50 | 久久成熟 | 国产高清视频在线播放 | 99re在线视频观看 | 亚洲综合涩 | 色婷婷国产 | 精品国产三级 | 午夜狠狠操 | 日韩高清一 | 中文字幕888 | 婷婷丁香九月 | 国产精品日韩 | 中文字幕丰满人伦在线 | 亚洲精品国产精品国自 | 这里有精品在线视频 | 香蕉在线视频观看 | 精品久久五月天 | 国产黄色免费 | av电影亚洲 | 久久99精品久久久久久清纯直播 | 在线亚洲激情 | 免费看片亚洲 | 天天综合入口 | 亚洲精品视频一 | 亚洲成人av片在线观看 | 9999在线观看 | 亚洲精品免费在线观看视频 | 91精品国产亚洲 | 欧美精品三级 | 免费在线观看国产黄 | 亚洲国产操 | 亚洲三级在线 | 日日激情| 欧洲精品久久久久毛片完整版 | 天天天天综合 | 免费视频一区 | 精品国产午夜 | 午夜精品一区二区三区四区 | 久久综合九色综合久久久精品综合 | 欧美一级日韩三级 | 日韩精品播放 | 日韩1级片 | 成人永久视频 | 久久免费电影 | 婷婷伊人综合 | 久久天天躁夜夜躁狠狠躁2022 | 欧美日韩一区二区三区在线免费观看 | 欧美日韩成人 | 香蕉久久国产 | 国产欧美日韩精品一区二区免费 | 九九久久影院 | 久草在线资源观看 | 91久久精品日日躁夜夜躁国产 | 婷婷午夜 | 九九热re | 中文字幕超清在线免费 | 久久人人爽人人爽人人片 | 日韩丝袜在线观看 | 99综合影院在线 | 黄色片亚洲 | 中文字幕电影网 | 一区二区三区电影在线播 | 色综合天天天天做夜夜夜夜做 | 久久中文精品视频 | 亚洲精品免费在线观看 | 亚洲成人精品在线观看 | 国产色就色 | 中文一二区 | 三级av在线| 国产一区二区三区免费在线观看 | 国产精品mv | 久草在线资源免费 | 夜色资源站国产www在线视频 | 午夜视频不卡 | 国产色一区 | 韩国av免费 | 日韩美女久久 | 99欧美 | 国产无遮挡又黄又爽馒头漫画 | 97超碰成人| 午夜狠狠操 | 黄p网站在线观看 | 美女视频黄是免费的 | 欧美性爽爽 | 久久一二三四 | 精品欧美日韩 | 中文字幕在线观看完整 | 91麻豆精品国产自产在线游戏 | 日韩a级免费视频 | 天天爱av导航 | 国产中文字幕久久 | 日韩在线观看小视频 | 欧美久久久久久久久久久 | 久久午夜影视 | 中文字幕免费观看视频 | 中文字幕久久久精品 | 香蕉视频免费看 | 91成人亚洲 | 久久99视频精品 | 99久久免费看 | 国产成人三级三级三级97 | a在线v| av在线网站大全 | 日韩高清成人在线 | 婷婷激情av | 日韩艹 | 色在线免费视频 | 99国产精品视频免费观看一公开 | 日韩欧美大片免费观看 | 国产精品区一区 | 激情丁香5月 | 亚洲电影久久久 | 精品一区二区精品 | 成人aⅴ视频 | 福利视频一二区 | 蜜臀久久99精品久久久久久网站 | 亚洲热久久 | 欧美精品首页 | 成年人视频免费在线 | 久久久激情视频 | 成人在线播放免费观看 | 国产精品久久久久久久久搜平片 | 久久av电影 | 亚洲黄色成人网 | 日韩高清精品免费观看 | 黄网站app在线观看免费视频 | 国产精品一区二区久久国产 | 免费av网址在线观看 | 精品国产乱码久久 | 国产精品女人久久久久久 | 久久国产一区 | 日本中文字幕在线一区 | 成年人在线观看免费视频 | 日韩高清在线一区二区三区 | 国产免费观看视频 | 插插插色综合 | 欧美性超爽 | 久久免费视频5 | 米奇狠狠狠888 | 中文字幕在线看视频国产中文版 | 精品国产乱码久久久久久天美 | 亚洲专区路线二 | 黄色官网在线观看 | 国产色久 | 免费av观看网站 | 日韩大片免费在线观看 | 国产黄色在线观看 | 日韩欧美视频一区 | 国产精品s色 | 中文字幕一二三区 | 日韩伦理片hd | 99热这里只有精品免费 | 中文字幕在线一区观看 | 久久av中文字幕片 | 综合色天天| 欧美国产三区 | 五月开心激情 | 韩日精品中文字幕 | 久久久久久久久久伊人 | 久久这里有| 国产打女人屁股调教97 | 在线黄色观看 | 97香蕉久久超级碰碰高清版 | av黄网站| 婷婷色在线资源 | 国产视频综合在线 | 99久久久成人国产精品 | 91热这里只有精品 | 国产视频一区二区在线 | 欧美日韩一区二区在线 | 五月天六月色 | a成人v在线 | www.日本色 | 91成年人视频 | 香蕉视频在线视频 | 中文字幕之中文字幕 | 久久综合久久综合这里只有精品 | 在线观看日本韩国电影 | 99国产情侣在线播放 | 亚洲成人麻豆 | 福利在线看片 | 欧美成人精品欧美一级乱 | 天天色天 | 亚洲免费在线视频 | 丁香婷婷激情啪啪 | 91自拍视频在线观看 | 亚洲成av人影院 | 91精品免费在线观看 | 69亚洲乱| 国产99久久久精品 | 中文字幕在线观看播放 | 国产精品久久久久久久久久久久午夜 | 亚洲无吗视频在线 | 久久精品视频国产 | 久久免费视频这里只有精品 | 亚洲最大在线视频 | 久久精品国产一区二区 | 久久在线观看视频 | 久久国产精品免费一区二区三区 | 99免费在线视频 | 精品你懂的 | 亚洲二区精品 | 在线观看亚洲精品视频 | 亚洲精品视频网站在线观看 | 韩日色视频 | 国产成人精品一区二区 | 最近中文字幕免费av | 国产盗摄精品一区二区 | 国产精品美女免费看 | 超碰在线人人艹 | 波多野结衣一区二区三区中文字幕 | 人人干网站 | 一区二区精品在线 | 久久精品免费播放 | 91成人免费观看视频 | 草久久影院 | 久久国产免费 | 成人电影毛片 | 超碰人人91 | 成人天堂网 | 少妇av片 | 超碰在线观看av | 欧日韩在线视频 | 中字幕视频在线永久在线观看免费 | 欧美在线视频a | 日日夜夜草 | 久久精品亚洲 | 久久久久久久久艹 | 婷婷丁香六月 | 在线超碰av| 国内精品视频一区二区三区八戒 | 日日干激情五月 | 日韩高清成人在线 | www.91成人| 少妇视频在线播放 | 国产精品无av码在线观看 | 韩日电影在线观看 | 久草在线费播放视频 | 91大神视频网站 | 日本在线视频一区二区三区 | www.色爱| 精品久久91 | 久久一区二区三区国产精品 | 韩日在线一区 | 伊人久久av| 国产午夜亚洲精品 | 91麻豆精品一区二区三区 | 人人爱在线视频 | a黄色片 | 国产一区在线不卡 | 亚a在线| 日本精品一区二区三区在线观看 | 日韩三级在线观看 | 亚洲一级免费观看 | 国产高清视频免费最新在线 | 91精品国自产在线 | 国产1区2区3区精品美女 | 午夜男人影院 | 日本不卡一区二区三区在线观看 | 久久综合亚洲鲁鲁五月久久 | 韩国av一区二区 | 日韩视频一 | 久久久成人精品 | 日韩高清免费在线 | 免费av在| 亚洲乱码精品久久久久 | 久久精品一区二区三区中文字幕 | 国产午夜麻豆影院在线观看 | 国产精品网站 | a视频免费 | 免费人成网ww44kk44 | 亚洲区色| 国产视频色 | 天天躁日日躁狠狠躁 | 亚洲综合视频网 | 国产女做a爱免费视频 | 成人va视频 | 国产专区欧美专区 | 天天干天天插伊人网 | 亚洲欧美va | 婷婷久操| 日韩精品字幕 | 国产精品人人做人人爽人人添 | 色视频网站在线观看一=区 a视频免费在线观看 | 久久国产精品一区二区三区四区 | 中文字幕日韩一区二区三区不卡 | 超碰在线国产 | 2019精品手机国产品在线 | 亚洲免费一级电影 | 国产在线观看91 | 91精品天码美女少妇 | 亚洲视频,欧洲视频 | 免费手机黄色网址 | 亚洲精品国偷拍自产在线观看蜜桃 | 人人看人人爱 | 97超碰人人看 | 99久久99 | 在线电影 一区 | 亚洲精品福利在线观看 | 欧洲亚洲女同hd | 国产精品一区二区免费在线观看 | 亚洲欧美日本A∨在线观看 青青河边草观看完整版高清 | 色视频在线观看免费 | 亚洲精品在线观看中文字幕 | 免费成人在线观看视频 | 日韩欧美电影网 | 精品一区二区综合 | 国产黄色精品视频 | 久久不卡免费视频 | 中文字幕在线观看你懂的 | 国产视频久久久 | 色婷久久| 久久国产麻豆 | 超碰在线94| 少妇bbw搡bbbb搡bbb | 成年人在线免费视频观看 | 亚洲精品美女视频 | 久久免费视频99 | 欧美视频一区二 | 在线看成人| 91精品一区二区三区蜜桃 | 国产高清久久久久 | 国产xxxx做受性欧美88 | 一级片色播影院 | 6080yy精品一区二区三区 | 亚洲日本va午夜在线影院 | 免费看色网站 | 国产韩国精品一区二区三区 | 在线视频日韩精品 | 日韩午夜视频在线观看 | 亚洲区精品视频 | 国产在线97| 中文在线最新版天堂 | 精品自拍av| 日韩三级免费观看 | 999国内精品永久免费视频 | 久久视频免费在线 | 精品久久久久久久久久岛国gif | 日日干干 | 日本aaaa级毛片在线看 | 欧美坐爱视频 | 国产精品影音先锋 | 中文字幕在线久一本久 | 精品一区二区三区四区在线 | 中文字幕中文中文字幕 | 丰满少妇久久久 | 国产精品第三页 | 天天操天天玩 | 久久99久久99免费视频 | 国产一级特黄电影 | 日韩精品在线看 | 欧美在线观看小视频 | 国产精品系列在线 | 美女视频黄免费的 | 亚洲成人av电影在线 | 国产91精品一区二区麻豆亚洲 | 久久免费毛片视频 | 国产日产精品一区二区三区四区的观看方式 | 亚洲成人精品久久 | 欧美久久久久久久久 | 天天插天天狠 | 欧美特一级 | 怡红院成人在线 | 亚洲春色奇米影视 | 激情喷水 | 成人av一区二区在线观看 | 久久一区二区三区日韩 | 国产精品va在线观看入 | 操操碰 | 日日摸日日爽 | 国产精品白虎 | 亚洲免费精品视频 | 亚洲成人av片在线观看 | 亚洲国产日韩av | 97在线视频免费播放 | 亚洲精品视频在线 | 免费a v在线 | 久久久久成人精品免费播放动漫 | 成 人 黄 色视频免费播放 | 99热最新在线 | 日韩黄色中文字幕 | 亚洲精品字幕 | 久久黄色美女 | 91超碰免费在线 | 国产精品观看在线亚洲人成网 | 蜜臀久久99精品久久久酒店新书 | 在线观看一区二区精品 | 天天激情 | 久久久午夜精品福利内容 | 国产黄在线看 | 久草在线免费看视频 | 三上悠亚一区二区在线观看 | 国产视频日韩 | 欧美国产91| 久久久久久久毛片 | 国产精品色| 91精品国产综合久久福利 | 色在线国产 | 日韩欧美一区二区在线播放 | 欧美日韩午夜爽爽 | 日韩高清在线看 | 综合视频在线 | 日韩一区二区三区免费视频 | 国产午夜视频在线观看 | 91成人国产| 国产精品九九九九九 | 亚洲狠狠丁香婷婷综合久久久 | 最近日本mv字幕免费观看 | 91夜夜夜| 久久精品爱视频 | 黄色免费观看网址 | 婷婷免费在线视频 | 色偷偷中文字幕 | 欧美一区二视频在线免费观看 | 四虎影视成人永久免费观看视频 | 色www精品视频在线观看 | 免费看的毛片 | 骄小bbw搡bbbb揉bbbb | 黄a网| 国产高清在线a视频大全 | 精品1区2区 | 日本女人的性生活视频 | 国产成人精品一区二区三区在线 | 久久 一区| 一区二区中文字幕在线观看 | 久久久资源网 | 日本论理电影 | 色综合久久久久久中文网 | 久久免费在线 | 久久最新网址 | 黄色大片中国 | 国产成人a亚洲精品v | 美女天天操 | 99 精品 在线| www色com| 香蕉影视在线观看 | 九九免费在线视频 | 久久人人爽人人爽 | 中文字幕一区二区三区四区 | 国产女人18毛片水真多18精品 | 97在线观看视频国产 | 欧美在线观看视频免费 | 国产视频99 | 国产看片网站 | 亚洲 综合 激情 | 久99久精品 | 性色va| 精品久久久久久国产偷窥 | 国产精品情侣视频 | 国产精品视频久久久 | 日本99久久 | 中文字幕九九 | 国产色拍拍拍拍在线精品 | 久久久久久久久黄色 | 在线有码中文 | 在线观看亚洲免费视频 | 国产精品麻豆免费版 | 久久久久国产精品免费网站 | 夜夜躁狠狠躁日日躁 | 免费在线观看黄 | 久久高清精品 | av资源免费观看 | 激情影音| 丁香视频五月 | 青青草在久久免费久久免费 | 国产又黄又爽又猛视频日本 | 99国内精品久久久久久久 | 97国产超碰在线 | 久草综合在线观看 | 999久久久久久久久6666 | 亚洲三级网 | 黄色大片国产 | 日韩美女av在线 | 999久久精品 | 奇米影视777影音先锋 | 欧美孕交vivoestv另类 | 成人网在线免费视频 | 国产一区视频在线观看免费 | 婷婷六月天综合 | 就要干b | 91精品国产综合久久福利 | 天天操欧美 | 狠狠躁夜夜a产精品视频 | 成人黄视频 | 国产老妇av| 一区二区三区在线免费观看 | 美女网站视频免费都是黄 | 综合网五月天 | 偷拍精偷拍精品欧洲亚洲网站 | 国产一区二区三区免费在线 | 超碰在线9 | 欧美日韩在线看 | 国产一二区视频 | 欧美一进一出抽搐大尺度视频 | 日韩二区三区在线观看 | 天天天天天天天操 | 在线中文字幕av观看 | 日韩久久久久久 | 福利区在线观看 | 天天干天天干天天干天天干天天干天天干 | 人人干人人干人人干 | 久久精品永久免费 | 欧美日韩一区二区三区免费视频 | 国产精品av免费 | 欧美激情综合色 | 精品视频9999 | 2022久久国产露脸精品国产 | 亚洲在线| av7777777 | 国产日韩精品一区二区三区 | 97在线视频网站 | 狠狠色丁香婷婷综合久小说久 | 久久久久久综合 | 91免费视频网站在线观看 | 成年人在线免费视频观看 | 国产精品久久久久久久久久99 | 久久论理 | 在线91av | 91精品在线看 | 三级av免费观看 | 亚洲女人av | 国产手机视频在线播放 | 韩国一区视频 | 天天操天天添 | 中文字幕av全部资源www中文字幕在线观看 | 久久久影视 | 亚洲精品动漫在线 | 日韩精品不卡 | 欧美激情在线网站 | 高清av中文在线字幕观看1 | 成年人在线| www.久久久.cum | 日韩精品一二三 | 胖bbbb搡bbbb擦bbbb | 日韩aa视频 | 天天操天天操天天操天天操天天操 | 中文字幕日本特黄aa毛片 | 亚洲欧美综合精品久久成人 | 少妇bbw搡bbbb搡bbbb | 日韩小视频网站 | 成人精品视频久久久久 | 免费观看一区 | 国产 日韩 在线 亚洲 字幕 中文 | 正在播放五月婷婷狠狠干 | 天天色天天射综合网 | 亚洲精品成人在线 | 91网免费看 | 免费在线成人av电影 | 中文字幕传媒 | 91福利社在线观看 | 日韩在线观看高清 | 五月激情婷婷丁香 | 亚洲一级电影视频 | www.五月天婷婷 | 亚洲午夜久久久综合37日本 | 在线观看中文字幕一区二区 | 亚洲国产欧美一区二区三区丁香婷 | 免费在线观看一级片 | 精品国产aⅴ一区二区三区 在线直播av | 久久9视频 | 免费男女羞羞的视频网站中文字幕 | 奇米网777 | 久要激情网 | 久久99热这里只有精品 | 国产va在线观看免费 | 免费观看国产成人 | 91网在线观看| 狠狠狠狠狠狠天天爱 | 四虎影视成人永久免费观看亚洲欧美 | 久草视频首页 | 2021国产精品视频 | 日韩在线视频不卡 | 最新99热 | 欧美国产亚洲精品久久久8v | 正在播放国产精品 | 国产一区视频在线观看免费 | 久章草在线观看 | 韩国三级在线一区 | 四虎精品成人免费网站 | 麻豆传媒精品 | 韩国av免费观看 | 欧美激情视频久久 | 亚州精品视频 | 精品麻豆入口免费 | 欧美人人爱 | 成人久久18免费网站麻豆 | 国产中文字幕网 | 久久久精品国产一区二区电影四季 | 97超碰人| 91天堂素人约啪 | 色狠狠综合 | 亚洲精品在线国产 | 成人播放器 | 免费黄色在线网站 | .国产精品成人自产拍在线观看6 | 久久久久久久久久久久亚洲 | 日韩在线观看小视频 | 国产精品乱码久久久 | 在线天堂中文在线资源网 | 91精品婷婷国产综合久久蝌蚪 | 91免费高清在线观看 | 黄色tv视频| 狠狠色丁香婷婷综合橹88 | 97免费中文视频在线观看 | 日产乱码一二三区别免费 | 黄污视频网站大全 | 最近日本中文字幕 | 人人爽人人看 | 色婷婷激情综合 | 视频在线日韩 | 日韩精品第1页 | 久久婷婷国产色一区二区三区 | 久久三级视频 | 国产精品久久久久久久99 | 免费在线观看日韩视频 | 伊人久久电影网 | 顶级bbw搡bbbb搡bbbb | 毛片一二区 | 91在线色| 五月天综合网 | 亚洲国产人午在线一二区 | 国产一级黄 | 国产精品6 | 精品麻豆入口免费 | 182午夜在线观看 | 人人澡人人澡人人 | 日韩av专区 | 一区二区三区日韩视频在线观看 | 91精品国产福利在线观看 | 天堂网一区二区三区 | 免费观看的av网站 | 中文字幕你懂的 | 国语精品久久 | 色播五月婷婷 | 外国av网 | 日韩视频www | 国产精品6999成人免费视频 | 在线中文字幕视频 | 久草av在线播放 | 免费看wwwwwwwwwww的视频 久久久久久99精品 91中文字幕视频 | 久久手机精品视频 | a在线一区 | 黄p在线播放 | 一本到在线 | www.福利 | 欧美激情视频在线观看免费 | 97国产超碰在线 | 国产精品欧美激情在线观看 | 国产精品正在播放 | 美女视频一区 | 人人爱爱| 在线国产高清 | 亚洲黄色在线观看 | 美女久久久久久久久久久 | 国产视频久久 | 香蕉在线视频播放网站 | 特黄免费av| 国产一级片播放 | 在线观看国产日韩欧美 | 免费看一级片 | 91在线看黄 | 91麻豆精品国产 | 国内精品久久影院 | 亚洲男男gⅴgay双龙 | 久久高清精品 | 亚洲精品国产区 | 国产精品6 | 欧美一区二区在线 | 色婷婷六月天 | 成 人 黄 色 片 在线播放 | 又黄又爽又湿又无遮挡的在线视频 | 久久久精品网 | 日韩毛片在线免费观看 | 精品国产亚洲一区二区麻豆 |