標題: 俄羅斯方塊Verilog HDL程序設計 [打印本頁]
作者: zxopenljx 時間: 2021-3-19 17:37
標題: 俄羅斯方塊Verilog HDL程序設計
通過此次項目,完成以下目的:
- 熟悉Xilinx FPGA的架構及開發流程
- 設計一個功能完整的系統,掌握FSM + Datapath的設計方法。
實驗內容本項目主要在FPGA上實現了一個經典小游戲“俄羅斯方塊”。本項目基本解決方案是,使用Xilinx Zynq系列開發板ZedBoard作為平臺,實現主控模塊,通過VGA接口來控制屏幕進行顯示。
整個系統由四部分組成,按鍵輸入處理模塊、控制模塊、數據路徑模塊以及VGA顯示接口模塊。整個系統的結構如下圖所示:
圖1:系統框圖
下面分別對四個模塊進行介紹:
按鍵處理模塊的主要功能是對輸入系統的up,down,left,right四個控制信號進行消抖處理,并對其進行上升沿檢測。
消抖模塊采用上課所提出的結構,采用了一個4位的移位寄存器,先將輸入信號延遲4個時鐘周期,再對其以一個較低的時鐘頻率進行采用。消抖模塊的結構如下圖所示:
圖2:消抖模塊結構示意圖
為了簡化控制系統,在本系統的設計過程中,不考慮長時間按鍵產生連按效果。因而,需要對按鍵進行上升沿檢測。上升沿檢測的基本實現方案是加入一組寄存器,對前一個的按鍵信號進行暫存,將暫存的值與當前值進行比較,當上一個值為0而當前值為1時,即認為其檢測到了一個上升沿。
控制模塊采用FSM的方式進行控制。在控制模塊中,定義了10個狀態:
S_idle:上電復位后進入的空狀態,當start信號為1時進入S_new狀態
S_new:用于產生新的俄羅斯方塊。
S_hold:保持狀態。在這個狀態中進行計時,當時間到達一定間隔時,轉到S_down狀態;或者等待輸入信號(up,down,left,right)時,轉到S_down(按鍵為down)或者S_move(up,left,right)狀態。
S_down:判斷當前俄羅斯塊能否下移一格。如果可以,則轉到S_remove_1狀態,如果不行,則轉到S_shift狀態。
S_move:判斷當前俄羅斯塊能夠按照按鍵信號指定的指令進行移動,如果可以,則轉到S_shift狀態,如果不可以,則轉到S_remove_1狀態。
S_shift:更新俄羅斯方塊的坐標信息。返回S_hold。
S_remove_1:更新整個屏幕的矩陣信息。轉移到S_remove_2狀態。
S_remove_2:判斷是否可以消除,將可以消除的行消除,并將上面的行下移一行。重復此過程,直到沒有可消除的行為止。跳轉到S_isdie狀態
S_isdie:判斷是否游戲結束。如果結束,則跳轉到S_stop狀態。如果沒有,則跳轉到S_new狀態,生成新的俄羅斯方塊。
S_stop:清楚整個屏幕,并跳轉到S_idle狀態。
整個控制過程的ASMD圖如下圖所示:
圖3: 控制模塊ASMD圖
數據路徑模塊主要功能是,根據控制模塊給出的信號,對俄羅斯方塊當前的邏輯狀態進行判斷,更新背景矩陣。具體如下:
方塊:
方塊分為非活動方塊與活動方塊。非活動方塊為:(1)之前下落的方塊;(2)下落后方塊消除之后的結果。由背景矩陣表示。活動方塊為當前下落中的方塊,由活動方塊坐標與方塊類型表示(后簡稱方塊)。
背景矩陣:
reg [9:0] R [23:0];
背景矩陣R是24行10列的寄存器組,負責保存非活動方塊坐標,即R中任一位置,如方塊存在,則該位置1,否則為0。
活動方塊坐標:
output reg [4:0] n,
output reg [3:0] m,
n, m分別為當前活動方塊的行、列指針,指向方塊固定點位置。方塊固定點為方塊旋轉時不變的格點,依據方塊種類決定,下文方塊模型中詳述。
方塊類型:
output reg [6:0] BLOCK,
BLOCK代表方塊類型,由7位編碼構成。
數據交換:
Datapath與其余模塊的數據交換分為兩部分:(1)與control_unit間的狀態指令交互;(2)控制merge,間接實現對VGA的控制。
方塊模型:
俄羅斯方塊共有7中形狀的方塊(O,L,J,I,T,Z,S),每種方塊有1-4種不同的旋轉變形方式。為方便起見,將方塊定位A-G,旋轉編號為1-4,將方塊編碼成A_1-G_2的19種,如 下圖:
圖中,深色方塊是該種方塊的固定點。
圖4: 方塊模型示意圖
方塊運動:
產生:
方塊產生由一個簡單的偽隨機過程決定。系統采用一個3位的計數器產生隨機數,進入S_new,BLOCK的值被NEW_BLOCK覆蓋,方塊坐標n<=1;m<=5;同時,根據計數器,NEW_BLOCK的值刷新為A_1,B_1,…,G_1中的一種,作為下一次方塊。
移動:
方塊移動分為四種:旋轉,下落,向左,向右,由鍵盤KEYBOARD=[UP, DOWN, LEFT, RIGHT]控制。移動分兩步進行:(1)判斷;(2)轉換。
判斷過程包含S_down,S_move。判斷分兩步:首先,判斷變換后方塊坐標是否合法,即變換后是否會造成方塊越界。然后,判斷變換后方塊可能占據的新位置是否有背景矩陣方塊存在。兩步判斷通過后返回成功信號,否則失敗。因判斷代碼量較多,僅舉一例說明:
判斷D_1向右運動(MOVE_ABLE初值為0):
if (m<=8)
if (!((R[n-1][m+1])|(R[n][m+1])|(R[n+1][m+1])|(R[n+2][m+1])))
MOVE_ABLE=1;
else MOVE_ABLE=0;
轉換過程(S_shift)進行方塊的移動或變形。根據KEYBOARD,移動時,改變方塊坐標;變形時,方塊按類別變換,如:A_1→A_1;B_1→B_2; B_2→B_3; B_4→B_1;
停止與消除:
方塊停止與消除由兩個狀態完成:S_remove1,S_remove2。
前一狀態中,根據BLOCK, n, m,將活動方塊位置覆蓋至R,變為非活動方塊。
后一狀態中,根據行滿狀態,進行行的消除與平移,具體如下:
顯然,俄羅斯方塊能影響的最大行數為4,因此,在REMOVE_2中,僅對R[n-1],R[n],R[n+1],R[n+2]四行依次進行處理。處理過程為:如果該行(k)滿,則由k行開始,至1行結束,逐行向下平移,當前平移位置由計數器REMOVE_2_C控制,當前行消除截止由標志位SIG確認。
每行處理完后,將REMOVE_FINISH[3:0]中相應位置1,REMOVE_FINISH全1時,REMOVE_2完成。
死亡判定:
R中的0-3行位于屏幕上方,不進行顯示,僅有新生成的方塊坐標會進入這一區域。因而,當消除完成后,如R[3]不為空,游戲結束。
輸出結果通過VGA接口接入顯示屏顯示。VGA(Video Graphics Array)視頻圖形陣列是IBM于1987年提出的一個使用模擬信號的電腦顯示標準。VGA接口即電腦采用VGA標準輸出數據的專用接口。VGA接口共有15針,分成3排,每排5個孔,顯卡上應用最為廣泛的接口類型,絕大多數顯卡都帶有此種接口。它傳輸紅、綠、藍模擬信號以及同步信號(水平和垂直信號)。
使用Verilog HDL語言對VGA進行控制一般只需控制行掃描信號、列掃描信號和紅綠藍三色信號輸出即可。
VGA輸出可分為四個模塊:時鐘分頻模塊、數據組織模塊、接口控制模塊和頂層模塊。以下進行分塊描述。
時鐘模塊分頻模塊對FPGA系統時鐘進行分頻。由于使用的顯示屏參數為640*480*60Hz,其真實屏幕大小為800*525,因此所需時鐘頻率為800*525*60Hz=25.175MHz,可近似處理為25MHz。FPGA系統時鐘為100M,因此將其四分頻即可基本滿足顯示要求。
數據組織模塊是將預備輸出的數據組織為可以通過VGA接口控制的數據形式,本次設計中因接口已經協調,數據可不經過此模塊進行組織,故可忽略該模塊。
接口控制模塊通過VGA接口對顯示屏進行控制。VGA的掃描順序是從左到右,從上到下。例如在640X480的顯示模式下,從顯示器的左上角開始往右掃描,直到640個像素掃完,再回到最左邊,開始第二行的掃描,如此往復,到第480行掃完時即完成一幀圖像的顯示。這時又回到左上角,開始下一幀圖像的掃描。如果每秒能完成60幀,則稱屏幕刷新頻率為60Hz。宏觀上,一幀屏幕由480個行和640個列填充而成,而實際上,一幀屏幕除了顯示區,還包含其他未顯示部分,作為邊框或者用來同步。具體而言,一個完整的行同步信號包含了左邊框、顯示區、右邊框還有返回區四個部分,總共800個像素,其分配如下:
圖5: VGA行掃描時序
同樣的,一個完整的垂直同步信號也分為四個區域,總共525個像素,分配如下:
圖6:VGA場掃描時序
模塊通過組織輸出行掃描信號、列掃描信號和三原色信號對顯示屏實現控制。
實驗結果實驗結果圖如下:
圖7:實驗結果圖
實驗總結本次項目我們完成了既定目標,即完成一個經典小游戲“俄羅斯方塊”的核心功能。在本次實驗過程中,我們通過采用分工合作的方式,通過對系統功能的分析,確定解決方案,完成了對一個系統自上而下的設計,并嘗試采用控制單元+數據路徑這樣的方式來處理核心模塊。
由于時間倉促,加之對俄羅斯方塊邏輯復雜度估計不足,到最后展示之前我們才完成了對核心模塊的調試。因此,在用戶界面上沒有做過多的調整。另外,由于在進行模塊劃分時,一些接口沒有事先定義好,導致在最后系統整合時,不得不進行修改與調整,由此而造成了一部分時間的浪費。
總的來說,通過這個項目,小組成員對于硬件設計“并行”的特點有了比較直接的認識,同時也在調試的過程中掌握了一些硬件調試常用的方法,也認識到了仿真的重要意義所在。另外就是關于團隊協作方面的一個教訓,在系統劃分時要注意把接口定義好,以免造成不必要的代價。
實驗代碼KeyBoard模塊
- `timescale 1ns / 1ps
- module key(
- input clk,
- input rst_n,
- input UP_KEY,
- input LEFT_KEY,
- input RIGHT_KEY,
- input DOWN_KEY,
- output reg rotate,
- output reg left,
- output reg right,
- output reg down
- );
-
- reg [3:0] shift_up;
- reg [3:0] shift_left;
- reg [3:0] shift_right;
- reg [3:0] shift_down;
-
- always @(posedge clk or negedge rst_n)
- begin
- if (!rst_n)
- shift_up <= 0;
- else
- shift_up <= {shift_up[2:0], UP_KEY};
- end
-
- always @(posedge clk or negedge rst_n)
- begin
- if (!rst_n)
- shift_right <= 0;
- else
- shift_right <= {shift_right[2:0], RIGHT_KEY};
- end
-
- always @(posedge clk or negedge rst_n)
- begin
- if (!rst_n)
- shift_left <= 0;
- else
- shift_left <= {shift_left[2:0], LEFT_KEY};
- end
-
- always @(posedge clk or negedge rst_n)
- begin
- if (!rst_n)
- shift_down <= 0;
- else
- shift_down <= {shift_down[2:0], DOWN_KEY};
- end
-
-
- reg clk_div;
- reg [7:0] clk_cnt;
- always @ (posedge clk or negedge rst_n)
- begin
- if (!rst_n)
- begin
- clk_cnt <= 0;
- clk_div <= 0;
- end
- else if (clk_cnt <= 8'd49)
- begin
- clk_cnt <= clk_cnt + 1;
- clk_div <= clk_div;
- end
- else
- begin
- clk_cnt <= 0;
- clk_div <= ~clk_div;
- end
- end
-
- always @(posedge clk_div or negedge rst_n)
- begin
- if (!rst_n)
- begin
- rotate <= 0;
- left <= 0;
- right <= 0;
- down <= 0;
- end
- else
- begin
- rotate <= shift_up[3];
- left <= shift_left[3];
- right <= shift_right[3];
- down <= shift_down[3];
- end
- end
-
- endmodule
-
-
- 控制模塊程序
- module game_control_unit (
- input clk,
- input rst_n,
- input rotate,
- input left,
- input right,
- input down,
- input start,
- output reg [3:0] opcode,
- output reg gen_random,
- output reg hold,
- output reg shift,
- output reg move_down,
- output reg remove_1,
- output reg remove_2,
- output reg stop,
- output reg move,
- output reg isdie,
- output reg auto_down,
- input shift_finish,
- input remove_2_finish,
- input down_comp,
- input move_comp,
- input die
- );
-
- reg left_reg;
- reg right_reg;
- reg up_reg;
- reg down_reg;
-
- always @(posedge clk or negedge rst_n)
- begin
- if (!rst_n)
- begin
- left_reg <= 0;
- right_reg <= 0;
- up_reg <= 0;
- down_reg <= 0;
- end
- else
- begin
- left_reg <= left;
- right_reg <= right;
- up_reg <= rotate;
- down_reg <= down;
- end
- end
-
- reg auto_down_reg;
- always @ (posedge clk or negedge rst_n)
- begin
- if (!rst_n)
- auto_down_reg <= 0;
- else if (time_cnt == time_val)
- auto_down_reg <= 1;
- else
- auto_down_reg <= 0;
- end
-
- always @ (posedge clk or negedge rst_n)
- begin
- if (!rst_n)
- auto_down <= 0;
- else
- auto_down <= auto_down_reg;
- end
-
- parameter time_val = 26'd25000001;
- reg [25:0] time_cnt;
-
- localparam S_idle = 4'd0,
- S_new = 4'd1,
- S_hold = 4'd2,
- S_move = 4'd3,
- S_shift = 4'd4,
- S_down = 4'd5,
- S_remove_1 = 4'd6,
- S_remove_2 = 4'd7,
- S_isdie = 4'd8,
- S_stop = 4'd9;
-
- reg [3:0] state, next_state;
-
- always @(posedge clk or negedge rst_n)
- begin
- if (!rst_n)
- state <= S_idle;
- else
- state <= next_state;
- end
-
-
-
- always @ (posedge clk or negedge rst_n)
- begin
- if (!rst_n)
- time_cnt <= 0;
- else if (hold == 0 && time_cnt < time_val)
- time_cnt <= time_cnt + 1;
- else if (move_down == 1)
- time_cnt <= 0;
- else begin
- time_cnt <= time_cnt;
- end
- end
- always @ (posedge clk or negedge rst_n)
- begin
- if (!rst_n) opcode<=0;
- else opcode<={right, left, down, rotate};
- end
-
-
- always @ (*)
- begin
- next_state = S_idle;
- hold = 1;
- gen_random = 0;
- //opcode = 4'b0000;
- shift = 0;
- move_down = 0;
- remove_1 = 0;
- remove_2 = 0;
- stop = 0;
- move = 0;
- isdie = 0;
- case (state)
- S_idle:
- begin
- if (start)
- next_state = S_new;
- else
- next_state = S_idle;
- end
- S_new:
- begin
- gen_random = 1;
- next_state = S_hold;
- end
- S_hold:
- begin
- hold = 0;
- if (time_cnt == time_val)
- begin
- next_state = S_down;
- end
- else if ((down_reg == 0) && (down == 1))
- begin
- next_state = S_down;
- end
- else if ((left_reg == 0 && left == 1)|| ( right_reg == 0 && right == 1)||(up_reg == 0 && rotate == 1))
- begin
- next_state = S_move;
- end
- else
- next_state = S_hold;
- end
- S_move:
- begin
- move = 1;
- if (move_comp)
- next_state = S_shift;
- else
- next_state = S_hold;
- end
- S_shift:
- begin
- shift = 1;
- next_state = S_hold;
- end
- S_down:
- begin
- move_down = 1;
- if (down_comp)
- next_state = S_shift;
- else
- next_state = S_remove_1;
- end
- S_remove_1:
- begin
- remove_1 = 1;
- next_state = S_remove_2;
- end
- S_remove_2:
- begin
- remove_2 = 1;
- if (remove_2_finish)
- next_state = S_isdie;
- else
- next_state = S_remove_2;
- end
- S_isdie:
- begin
- isdie = 1;
- if (die == 1)
- next_state = S_stop;
- else
- next_state = S_new;
- end
- S_stop:
- begin
- stop = 1;
- next_state = S_idle;
- end
- default next_state = S_idle;
- endcase
- end
-
- endmodule
-
-
-
- 數據路徑
- module Datapath_Unit #(
- parameter A_1 = 7'b0001000,
- B_1 = 7'b0011000,
- B_2 = 7'b0010100,
- B_3 = 7'b0010010,
- B_4 = 7'b0010001,
- C_1 = 7'b0101000,
- C_2 = 7'b0100100,
- C_3 = 7'b0100010,
- C_4 = 7'b0100001,
- D_1 = 7'b0111000,
- D_2 = 7'b0110100,
- E_1 = 7'b1001000,
- E_2 = 7'b1000100,
- E_3 = 7'b1000010,
- E_4 = 7'b1000001,
- F_1 = 7'b1011000,
- F_2 = 7'b1010100,
- G_1 = 7'b1101000,
- G_2 = 7'b1100100
- )(
- output reg MOVE_ABLE,SHIFT_FINISH,DOWN_ABLE,DIE_TRUE,
- output [239:0] M_OUT,
- output reg [4:0] n,
- output reg [3:0] m,
- output reg [6:0] BLOCK,
- //output reg REMOVE_1_FINISH,
- output reg REMOVE_2_FINISH,
- //output reg NEW_BLOCK,
-
- input clk,rst_n,MOVE,DOWN,DIE,SHIFT,REMOVE_1,REMOVE_2,NEW,STOP,AUTODOWN,
- input [3:0] KEYBOARD
- );
復制代碼
全部資料51hei下載地址:
Verilog設計.7z
(7.57 MB, 下載次數: 33)
2021-3-19 18:01 上傳
點擊文件名下載附件
俄羅斯方塊_Verilog課程設計.rar
下載積分: 黑幣 -5
作者: lzf-1586 時間: 2021-4-6 09:51
牛逼PLUS!感謝樓主分享!
作者: 123456dsa 時間: 2022-6-23 15:06
這個是完成了的嗎
| 歡迎光臨 (http://www.izizhuan.cn/bbs/) |
Powered by Discuz! X3.1 |
高h震动喷水双性1v1|
国产一区二区三区视频在线|
中文字幕国产欧美|
欧美特黄一级片|
邪恶网站在线观看|
久久久久久九九九九|
久久久免费高清电视剧观看|
日韩区在线观看|
一区二区三区中文字幕精品精品|
免费高清不卡av|
成人同人动漫免费观看|
中韩乱幕日产无线码一区|
日本大片在线观看|
夜夜爽视频导航|
亚洲美女性生活|
国产综合精品视频|
永久免费成人代码|
亚洲 国产 图片|
伊人再见免费在线观看高清版|
成人黄色免费片|
九九热这里只有在线精品视|
日韩电影中文字幕|
欧美三级蜜桃2在线观看|
国产精品卡一卡二|
国产成人免费视频精品含羞草妖精|
68国产成人综合久久精品|
亚洲精选av|
性欧美1819sex性高清|
二区三区四区高清视频在线观看|
少妇高潮露脸国语对白|
免费看黄色网址|
欧美乱大交xxxxxbbb|
www.精品视频|
中文在线观看免费高清|
久久久.www|
欧美一区二区三区粗大|
丰满岳乱妇一区二区|
99视频在线视频|
亚洲一区二区三区av无码|
四虎一区二区|
好吊色欧美一区二区三区视频|
日韩免费av一区二区|
欧美www在线|
国产亚洲欧美日韩一区二区|
亚洲精品成a人在线观看|
69p69国产精品|
欧美色图一区二区三区|
欧美日韩精品在线视频|
亚洲高清久久久|
亚洲欧美日韩国产成人精品影院|
久久久777精品电影网影网|
福利一区二区在线|
国产精品99久久久久久宅男|
久久国产精品99精品国产
|
日韩毛片在线免费观看|
久久亚洲捆绑美女|
91在线视频18|
av一区二区久久|
www.久久久久久久久|
成人va在线观看|
国产成人精品影视|
国产精品一级黄|
国产精品123区|
粉嫩蜜臀av国产精品网站|
国产suv精品一区二区6|
av在线不卡网|
国产亚洲一区二区三区四区
|
欧美激情四色|
一区二区蜜桃|
激情综合电影网|
香蕉久久国产|
日韩精品亚洲专区|
韩国女主播成人在线观看|
国产一本一道久久香蕉|
国产91富婆露脸刺激对白|
国产不卡在线播放|
久久这里只有精品6|
国产日产欧美一区二区视频|
国产精品久久久久7777按摩|
亚洲蜜桃精久久久久久久|
午夜精品一区二区三区免费视频
|
公交车强行挺进岳身体|
九色视频九色自拍|
5g影院5g电影天天爽快|
亚洲精华国产|
9色在线视频|
高清在线视频不卡|
伊人久久大香|
亚洲小说图片视频|
亚洲欧美伊人|
久久精品久久99精品久久|
成人av电影在线观看|
国产精品污污网站在线观看|
亚洲大片一区二区三区|
717成人午夜免费福利电影|
亚洲精品www|
色综合久久悠悠|
国产乱肥老妇国产一区二
|
98精品国产自产在线观看
|
综合激情网...|
日韩激情免费|
久久电影一区|
成人ar影院免费观看视频|
国产精品久久网站|
色综合天天综合色综合av|
日韩精品一区二|
久久精品这里热有精品|
日韩美女主播视频|
欧美18视频|
丰满爆乳一区二区三区|
影音先锋资源av|
三级在线观看免费大全|
亚洲永久激情精品|
欧妇女乱妇女乱视频|
狠狠热免费视频|
真人bbbbbbbbb毛片|
2021亚洲天堂|
蜜臀av中文字幕|
春意影院在线|
最新97超碰在线|
99久久精品一区二区成人|
国内精品久久久久久99蜜桃|
三级一区在线视频先锋|
国产欧美一区二区三区鸳鸯浴|
一本色道a无线码一区v|
在线观看成人黄色|
91精品视频在线看|
精品无码一区二区三区爱欲|
久久久久国产精品区片区无码|
男女视频免费看|
四虎影音在线|
天堂中文在线8|
欧美黑粗硬大|
夜夜夜久久久|
国产精品乱码久久久久久|
日韩一区二区免费在线观看|
91国偷自产一区二区三区的观看方式|
久久精品日产第一区二区三区|
青青在线免费观看视频|
清纯粉嫩极品夜夜嗨av|
九九热中文字幕|
污污网址在线观看|
福利一区二区三区视频在线观看|
一区二区三区网站|
久久理论电影网|
日韩精品一区二区三区视频播放|
欧美重口另类videos人妖|
一区二区视频在线播放|
亚洲精品中文字幕在线播放|
一区二区视频网站|
激情亚洲综合网|
www.精品|
中文精品在线|
伊人婷婷欧美激情|
在线日韩日本国产亚洲|
精品在线视频一区二区三区|
超碰91在线播放|
在线观看国产精品入口男同|
免费在线观看的av|
免费看av不卡|
亚洲制服av|
亚洲国产视频一区二区|
久久伊人精品天天|
一区二区三区欧美成人|
老头老太做爰xxx视频|
天堂av资源在线|
亚洲色图另类小说|
国产美女极品在线|
老司机亚洲精品一区二区|
久久草av在线|
欧美日本一区二区在线观看|
国产精品海角社区在线观看|
国产性xxxx18免费观看视频|
日产电影一区二区三区|
免费黄色成年网站|
欧美成人黑人|
青娱乐精品在线视频|
欧美午夜片在线观看|
国产精品免费看久久久香蕉|
天天操天天爽天天射|
精品乱码一区内射人妻无码|
神马午夜dy888|
91久久精品无嫩草影院
|
欧美成人在线免费视频|
在线国产99|
一区二区三区四区五区|
色视频在线免费|
无人区在线高清完整免费版 一区二|
亚洲综合三区|
欧美日韩成人在线|
国产不卡一区二区三区在线观看|
北京富婆泄欲对白|
一道精品视频一区二区三区图片|
国产美女av在线|
激情婷婷久久|
欧美亚洲自拍偷拍|
亚洲综合日韩在线|
女同毛片一区二区三区|
国产卡一卡2卡三卡免费视频|
www.成人影院|
国产1区2区3区精品美女|
亚洲欧美一区二区三区在线|
正在播放精油久久|
六月丁香激情综合|
色网站在线免费观看|
亚洲自拍偷拍网|
欧美午夜在线一二页|
国产精品三区在线|
午夜爽爽爽男女免费观看|
天天操夜夜拍|
三级小说欧洲区亚洲区|
亚洲少妇中出一区|
国产成人综合亚洲|
182在线视频|
免费在线观看a|
91精品日本|
一区二区三区在线免费播放|
国产免费亚洲高清|
久久精品国产亚洲AV熟女|
美女污污网站|
日韩欧美四区|
午夜精品福利一区二区三区蜜桃|
亚洲a区在线视频|
天美传媒免费在线观看|
成年网站免费|
仙踪林久久久久久久999|
91官网在线免费观看|
久久riav二区三区|
欧美一级特黄视频|
伊人免费在线|
黄页网站大全一区二区|
日韩视频欧美视频|
午夜xxxxx|
性爱视频日本|
欧美日韩播放|
欧美体内she精视频|
亚洲.欧美.日本.国产综合在线|
五月婷婷亚洲综合|
黄色网页在线免费看|
国产一区二区三区在线观看精品|
久久久国产视频|
亚洲欧洲国产视频|
五月天电影免费在线观看一区|
97色伦图片97综合影院|
91精品婷婷国产综合久久性色
|
色综合久久88|
日韩免费高清一区二区|
先锋影音av资源在线|
99视频精品视频高清免费|
欧美一级日韩免费不卡|
r级无码视频在线观看|
午夜av免费在线观看|
高清不卡一区|
亚洲v国产v欧美v久久久久久|
992tv在线影院|
久久大逼视频|
欧美成人免费观看|
亚欧洲乱码视频|
中文在线www|
久久电影网站中文字幕|
久久久久久久久91|
亚洲色图 激情小说|
一级二级三级在线观看|
蜜桃视频一区二区三区在线观看|
久久视频国产精品免费视频在线|
中文字幕免费在线播放|
性色a∨人人爽网站|
日本中文字幕一区二区有限公司|
欧美成人手机在线|
少妇视频一区二区|
免费av不卡|
欧美国产精品中文字幕|
精品国产一区二区三|
国产毛片在线视频|
亚洲第一二区|
欧美一区二区三区不卡|
www.精品在线|
成人午夜激情|
久久福利视频一区二区|
欧美一乱一性一交一视频|
青娱乐在线视频免费观看|
男人添女人下部高潮视频在线观看
|
99热这里只有精品4|
在线视频婷婷|
国产亚洲成av人在线观看导航|
99久久99久久|
国产视频一区二区三|
日韩一级淫片|
日韩视频永久免费|
青娱乐精品在线|
噼里啪啦在线中文观看|
国产v综合v亚洲欧|
草莓视频一区|
天堂av一区二区三区|
色综合久久网|
久久中文字幕在线|
国产精品99精品无码视|
成人日韩在线|
欧美巨大另类极品videosbest
|
欧美日韩亚洲精品内裤|
中文精品一区二区三区
|
久久亚洲欧美日韩精品专区
|
麻豆导航在线观看|
不卡av电影在线播放|
成人av资源|
一区二区三区网|
91精品国产乱码久久久久久|
欧美精品午夜视频|
日本天堂在线视频|
国产欧美视频在线|
亚洲第一精品久久忘忧草社区|
你懂的在线观看网站|
国产激情视频在线|
精品久久久久久久大神国产|
免费观看成人在线视频|
自拍偷拍第1页|
中文字幕第一页久久|
欧洲金发美女大战黑人|
99热手机在线观看|
成人午夜电影网站|
亚洲欧美国产不卡|
黄色网址免费在线|
国产成人高清视频|
亚洲欧美精品在线观看|
日日爽夜夜爽|
国产91丝袜在线观看|
日韩亚洲一区在线播放|
免费污污网站|
国产一区欧美日韩|
任我爽在线视频精品一|
国产人成精品|
蜜桃久久久久久久|
久久伦理网站|
成年人黄色网址|
福利视频网站一区二区三区|
最新精品视频|
黄色仓库视频网站|
中文字幕va一区二区三区|
1024av视频|
国内av一区二区三区|
午夜视频久久久久久|
性生交大片免费看l|
韩国日本一区|
日韩欧美亚洲国产另类|
狂野欧美性猛交|
日本一区影院|
欧美成人四级hd版|
www.五月婷婷|
性欧美长视频|
精品不卡在线|
xfplay资源站夜色先锋5566|
国产人久久人人人人爽|
无码日韩人妻精品久久蜜桃|
日本黄色片在线观看|
9191精品国产综合久久久久久|
三级在线观看免费大全|
全国精品免费看|
国产成人在线播放|
国产成人禁片免费观看视频|
99久久伊人精品|
成人羞羞国产免费网站|
毛片在线播放a|
欧美mv日韩mv国产网站app|
日本网站免费观看|
99久久精品网|
国产乱子伦精品|
妞干网2018|
婷婷综合五月天|
一级特黄曰皮片视频|
97人人澡人人爽91综合色|
欧美尤物巨大精品爽|
欧美日本另类xxx乱大交|
av午夜一区麻豆|
www.激情小说.com|
在线日韩影院|
久久躁日日躁aaaaxxxx|
三级小视频在线观看|
国产一区二区精品在线观看|
国产精品69久久久|
天天干在线视频论坛|
亚洲色图综合久久|
午夜精品一区二区三|
久久av老司机精品网站导航|
韩国无码av片在线观看网站|
丝袜美腿美女被狂躁在线观看|
精品少妇一区二区三区在线播放
|
久久久久无码精品国产|
成人在线视频免费观看|
亚洲最大福利视频网|
69中国xxxxxxxxx69|
色综合天天综合网天天狠天天|
成人在线观看小视频|
围产精品久久久久久久|
欧美性大战久久久久|
欧美视频免费一区二区三区|
精品国产乱码久久久久久图片|
伊人亚洲综合网|
激情五月激情综合网|
chinese少妇国语对白|
中文字幕资源网在线观看免费|