久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5529|回復: 2
打印 上一主題 下一主題
收起左側

基于FPGA的交通燈設計 附分頻主控譯碼VHDL源程序

[復制鏈接]
跳轉到指定樓層
樓主
ID:556863 發表于 2020-11-16 20:07 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式

設計一個十字路口交通控制系統,要求如下:

(1)東西、南北兩個方向均有綠燈、黃燈、紅燈指示,其持續時間分別為35秒、5秒、40秒,交通燈運行的切換示意圖如圖1所示。

圖1 交通燈運行切換示意圖

(2)系統設有時鐘,以倒計時的方式顯示每一路允許通行的時間。

3系統設計方案

本設計是基于FPGA的交通燈的設計,故系統設計方案采用自上而下的頂層設計,將整體設計方案分成若干個模塊分別進行設計,然后采用硬件語言VHDL生成元件和構建原理圖的方式進行整體設計。根據設計的任務要求,由系統內部時鐘信號提供計時時間。而紅綠燈正常的工作由倒計時的時間控制,且倒計時的時間顯示由數碼管控制。故此本系統設計方案可以分為五個模塊:分頻器模塊,主控制器模塊,提取顯示值模塊,動態掃描模塊,譯碼器模塊。其系統設計方案如圖2所示。

圖2  系統整體框圖

其中分頻器模塊用于24MHz分頻為1Hz;主控器模塊用于計時和控制紅綠燈的亮滅;提取顯示值模塊用于把倒計時兩位數時間能分別顯示在兩個數碼管上;動態掃描模塊用于人眼能清晰地看出四位數碼管同時倒計時的時間;譯碼器模塊用于把倒計時的時間在數碼管顯示出來。

4 各模塊設計及仿真

4.1主控制器模塊

設計主控器的作用是根據計數器值控制發光二極管的亮滅以及輸出計數值。其中主控制器的計數范圍0——40。倒計時從40到1完成一次循環。其主控器模塊元件如圖3所示。

圖3 主控器模塊元件

主控器模塊的CLOCK是輸入端,當時鐘信號接收到1Hz的脈沖時,主控器開始計數的功能;REST是輸入端,進行單獨控制,當人為控制輸入高電平‘1’時,A,B兩路紅燈亮起,停止計時,交通燈的狀態進行復位;NUMA,NUMB是輸出端,功能是計數值給七段數碼管的提取顯示值電路;六個指示燈也是輸出端,其功能根據倒計時值,顯示A,B路的紅綠燈亮滅。即A路35s倒計時顯示綠燈亮,5s倒計時顯示黃燈亮時,B路口40s倒計時顯示紅燈亮,B路口 35s倒計時顯示綠燈亮,然后5s黃燈亮時,A路口40s倒計時顯示紅燈亮。其仿真結果如圖4所示,通過觀察仿真,滿足設計需求,完成了實驗預期效果。

圖4 主控器仿真圖

4.2  分頻器模塊

分頻器的設計是為了實現將高頻時鐘信號轉換成低頻的時鐘信號,作用于主控器、提取顯示值和動態掃描顯示電路。動態掃描電路需要高頻率時鐘信號,而主控器,提取顯示值則需要低頻率的時鐘信號,才能精確計時和顯示。其分頻模塊如圖5所示。

圖5 分頻器模塊

分頻器模塊的輸入端CLK24M選用是24Mhz高頻率時鐘,其作用于動態掃描。輸出端CLK1Hz則是通過分頻先將24Mhz經過48分頻到500khz,在500000分頻到1hz。而主控器電路需要分頻成1hz低頻率用于計時。其仿真結果如圖6所示。通過觀察仿真,滿足設計需求,完成了實驗預期效果。


圖6 24mhz分頻1hz時序仿真圖

4.3  提取顯示值模塊

提取顯示值模塊也可以稱為數碼管分位模塊,設計提取顯示值模塊是主控器輸出的倒計時數值是1位或者2位數,而一個七段數碼管只能顯示一位數。為了倒計時能顯示兩位數,所以在七段數碼管的譯碼電路前加一個分位電路。其模塊生成的元件如圖7所示。

圖7 提取顯示值模塊元件

其模塊輸入端CLK是接收1Hz的脈沖信號,為了和主控器同步。輸入端numin與主控器的numa相連,其作用是為了把計數的兩位數值能分開顯示在兩個數碼管上。輸出端numa,numb是把輸入的兩位數分開輸出,即兩位數分成十位和個位。其仿真結果如圖8所示。通過觀察仿真,滿足設計需求,完成了實驗預期效果。

圖8 提取顯示值仿真圖

4.4 動態掃描模塊

設計動態掃描模塊是為了能同時顯示出四個數碼管倒計時的動態變化。其原理是利用人眼的余暉效應,而此時的脈沖需要高頻率的時鐘信號來點亮數碼管。其動態掃描模塊如圖9所示。

圖9 動態掃描模塊元件

此模塊元件輸入端clk時鐘信號受到24mhz的脈沖信號,其數碼管中等亮滅速度遠遠大于人眼識別最少時間13毫秒,所以動態掃描可以讓人眼感受不到閃爍。其中AH,AL,BH,BL表示A,B路的輸入端的高位和低位。當輸入端輸入1、2、3、4時,輸出端dout輸出的對應實驗板上的用于顯示倒計時的數碼管的位置。輸出端q為位循環輸出,顯示數值。其仿真結果如圖10所示。通過觀察仿真,滿足設計需求,完成了實驗預期效果。

圖10 動態掃描時序仿真圖

4.5 譯碼器模塊

譯碼器模塊的設計是將要顯示的數字轉換成能驅動數碼管的信號,通過輸入二進制數值,輸出信號點亮二極管,顯示出倒計時的數值。譯碼器模塊如圖11所示。

圖11 譯碼器模塊元件

此模塊的輸入端dout與動態掃描的輸出端dout相連,是把輸入的四位二進制數轉換成輸出端led7s的7位二進制信號,用來驅動數碼管顯示數值。其模塊仿真圖如圖12所示。通過觀察仿真,滿足設計需求,完成了實驗預期效果。

圖12 譯碼器仿真圖

5 頂層電路設計

頂層電路的工作流程:24MHz經過兩次48分頻和500000分頻產生1hz的脈沖信號作用于主控器模塊和提取顯示值模塊。主控器模塊控制紅綠燈的亮、滅和計數,提取顯示值模塊用于把計數的兩位數分成十位和個位顯示。24MHz高頻率的時鐘信號作用于動態掃描模塊,用來能同時顯示出四個數碼管倒計時的動態變化。譯碼器模塊作用于數碼管來顯示數值。其頂層電路設計如圖13所示。

圖13 頂層電路設計

引腳配置如圖14所示。

圖14 引腳分配圖

通過對頂層電路的仿真,仿真結果如圖15所示。通過觀察仿真,滿足設計需求,完成了實驗預期。

圖15 頂層電路仿真圖

6功能擴展

根據進一步的實驗要求,聯系實際交通信號的燈的運轉模式,添加緊急控制、閃爍、左轉和右三個狀態作為本次實驗的功能擴展。

(1)緊急控制:當東西或南北兩路中的任一路出現特殊情況,系統可由交警手動控制立即進入特殊運行狀態,即紅燈全亮,時鐘停止計時,東西、南北兩路所有車輛停止通行;當特殊運行狀態結束后,系統恢復工作,繼續正常運行。

(2)閃爍:當綠燈運行結束需要點亮黃燈或者閃爍綠燈作為點亮紅燈前的過度狀態。此功能在原紅綠燈的基礎上進行了擴展,讓交通燈的變化顯得更人性化。

(3)右轉和左轉:當直行時右轉燈點亮10s后,熄滅右轉燈后點亮左轉向燈亮10s,熄滅左轉燈后直行綠燈點亮25s,直行燈熄滅后點亮黃燈閃爍5s,熄滅黃燈后點亮干路紅燈,運行50s后循環,支路干路一一對應,當干路左、右轉向燈和直行綠燈亮起至黃燈熄滅,支路的紅燈一直點亮;當支路左、右轉向燈和直行綠燈亮起至黃燈熄滅,干路的紅燈一直點亮;此功能擴展在原任務基礎上添加左轉和右轉功能,完善了交通信號燈的功能。

6.1 擴展的主控器模塊

擴展的主控制器模塊的主要功能根據計數后的數值對輸出端elect分幾種情況控制紅綠燈的狀態,以及輸出端rea7A,rea7B輸出計數。其擴展后的主控器模塊如圖16所示。

圖16 擴展后主控器模塊元件

此模塊的clk時鐘信號是接收1hz的脈沖,主控器開始計數,而輸出端rea7A、rea7B功能是把計數的值給7段數碼管的分位譯碼電路。輸出端elect的功能是根據計數后分類幾種情況后,分別對紅綠燈進行控制。輸入端rest是緊急控制按鍵,對rest輸入高電平(1)時,A(干路)和B(支路)兩個路口紅燈亮起,計數停止。輸入低電平(0)時,正常工作。對此模塊進行仿真,其仿真結果如圖17所示。通過觀察仿真,滿足設計需求,完成了實驗預期效果。

圖17 擴展主控器仿真圖

6.2 LED燈控制模塊

LED燈控制模塊的功能是對直行,左轉,右轉,停止指示燈的控制,使其符合紅綠燈規則。其模塊如圖18所示。

圖18 LED燈控制模塊元件

此模塊中的clk10的時鐘信號是接收10hz的脈沖,是為了符合交通燈在遇到黃燈時閃爍的效果,10hz頻率是0.1s,人眼可以看到其閃爍變化。而輸入端elect是連接擴展主控器的輸出端elect,其功能主要是通過對不同數值的選擇,而對輸出端10種指示燈控制,進一步符合紅綠燈規則。即數值‘0’情況時,發生緊急制動;數值‘1’情況時,當A(干路)右轉燈亮,數值‘2’情況時;當A(干路)左轉燈亮;數值‘3’情況時,當A(干路)直行燈亮;數值‘4’情況時,當A(干路)黃燈閃爍;在這四種情況下,B(支路)紅燈亮;同理另外四種情況,當B(支路)綠燈亮時,A(干路)紅燈亮路。對此模塊進行仿真,其仿真結果如圖19所示。通過觀察仿真,滿足設計需求,完成了實驗預期效果。

圖19 LED燈控制仿真圖

7 擴展的頂層設計

分頻器模塊,提取顯示值模塊,動態掃描模塊,譯碼器模塊等設計都和前面的模塊設計一樣,就不再敘述。由于黃燈閃爍需要加一個10hz的時鐘信號脈沖,故多加一個分頻器。擴展后的頂層設計流程和上述一樣,不再敘述。其頂層設計電路如圖20所示。

圖20 擴展后設計電路

其引腳分頻如圖21所示。

圖21 引腳分配圖

通過對頂層電路的仿真,仿真結果如圖22所示。通過觀察仿真,滿足設計需求,完成了實驗預期。

圖22 交通燈控制仿真圖
附錄

分頻器模塊程序:
48分頻:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY fenpin2 IS
PORT(         
      CLK24M : IN  STD_LOGIC;
      CLK500k: OUT STD_LOGIC );
END fenpin2;
ARCHITECTURE BEHAV OF fenpin2 IS
  SIGNAL  COUNTER : INTEGER RANGE 0 TO 23;
  SIGNAL  CLK: STD_LOGIC;

  BEGIN
    PROCESS(CLK24M)  
    BEGIN            
      IF CLK24M'EVENT AND CLK24M='1' THEN
        IF COUNTER=23 THEN
              CLK<= NOT CLK;
              COUNTER <= 0;
        ELSE  COUNTER <= COUNTER+1;
                            END IF;
      END IF;
    END PROCESS;
   CLK500k <= CLK;
END;  
500000分頻:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY fenpin3 IS
PORT(         
      CLK500k : IN  STD_LOGIC;
      CLK1hz: OUT STD_LOGIC );
END;
ARCHITECTURE BEHAV OF fenpin3 IS
  SIGNAL  COUNTER : INTEGER RANGE 0 TO 249999;
  SIGNAL  CLK: STD_LOGIC;
  BEGIN
    PROCESS(CLK500k)  
    BEGIN            
      IF CLK500k'EVENT AND CLK500k='1' THEN
        IF COUNTER=249999 THEN
                                   COUNTER<=0;
              CLK<= NOT CLK;
        ELSE  COUNTER <= COUNTER+1;
                            END IF;
      END IF;
    END PROCESS;
   CLK1hz <= CLK;
END;
24999分頻:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY fenpin1 IS
PORT(         
      CLK500k : IN  STD_LOGIC;
      CLK10hz: OUT STD_LOGIC );
END;
ARCHITECTURE BEHAV OF fenpin1 IS
  SIGNAL  COUNTER : INTEGER RANGE 0 TO 24999;
  SIGNAL  CLK: STD_LOGIC;
  BEGIN
    PROCESS(CLK500k)  
    BEGIN            
      IF CLK500k'EVENT AND CLK500k='1' THEN
        IF COUNTER=24999 THEN
                                   COUNTER<=0;
              CLK<= NOT CLK;
        ELSE  COUNTER <= COUNTER+1;
                            END IF;
      END IF;
    END PROCESS;
   CLK10hz <= CLK;
END;
主控器程序:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY zkq IS
PORT
(CLOCK: IN STD_LOGIC;
RESET: IN STD_LOGIC;
NUMA,NUMB: OUT INTEGER RANGE 0 TO 40;
RedA,GreenA,YellowA: OUT STD_LOGIC;
RedB,GreenB,YellowB: OUT STD_LOGIC
);
END;
ARCHITECTURE CONTROL OF zkq IS
SIGNAL COUNTNUM: INTEGER RANGE 0 TO 80;
BEGIN
PROCESS(CLOCK,RESET)
BEGIN
  IF RESET='1' THEN
    COUNTNUM<=0;
  ELSIF RISING_EDGE(CLOCK) THEN
    IF COUNTNUM=79 THEN
      COUNTNUM<=0;
    ELSE
      COUNTNUM<=COUNTNUM+1;
   END IF;
  END IF;
END PROCESS;
PROCESS(CLOCK)
BEGIN
   IF RISING_EDGE(CLOCK) THEN
              IF RESET='1' THEN
                  RedA<='1';
                            RedB<='1';
         ELSIF COUNTNUM<=34 THEN
         NUMA<=35-COUNTNUM;
         RedA<='0';
         GreenA<='1';
         YellowA<='0';
       ELSIF (COUNTNUM<=39) THEN
         NUMA<=40-COUNTNUM;
         RedA<='0';
         GreenA<='0';
         YellowA<='1';
       ELSE
         NUMA<=80-COUNTNUM;
         RedA<='1';
         GreenA<='0';
         YellowA<='0';
       END IF;
       IF COUNTNUM<=39 THEN
         NUMB<=40-COUNTNUM;
         RedB<='1';
         GreenB<='0';
         YellowB<='0';
       ELSIF COUNTNUM<=74 THEN
         NUMB<=75-COUNTNUM;
         RedB<='0';
         GreenB<='1';
         YellowB<='0';
       ELSE
         NUMB<=80-COUNTNUM;
         RedB<='0';
         GreenB<='0';
         YellowB<='1';
       END IF;
     END IF;
  END PROCESS;
END;
提取顯示值程序:
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity xianshi is
port
(
  CLK:IN std_logic;
  numin:in integer range 0 to 40;
  numa,numb:out integer range 0 to 9
);
end;
architecture bhv of xianshi is
begin
process(CLK)
begin
if rising_edge(CLK) then
if numin=40 then
numa <= 4;
numb <= 0;
elsif numin>=30 then
numa <=3;
numb <=numin-30;
elsif numin>=20 then
numa <=2;
numb <=numin-20;
elsif numin>=10 then
numa <=1;
numb <=numin-10;
else
numa <=0;
numb <=numin;
end if;
end if;
end process;
end;
動態掃描程序:
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity dongtai is
port(
  AH,AL,BH,BL:in std_logic_vector(3 downto 0);
  clk:in std_logic;
  q:buffer std_logic_vector(2 downto 0);
  dout:out std_logic_vector(3 downto 0)
);
end;
architecture bhv of dongtai is
signal qin:integer range 7 downto 0;
begin
p1:process(clk)
begin
if(clk'event and clk='1') then
if qin>3 then
qin<=0;
else
qin<=qin+1;
end if;
end if;
end process p1;
p2: process(qin,AL,AH,BH,BL)
begin
case qin is
when 0 => dout<=AH(3 downto 0);q<="111";
when 1 => dout<=AL(3 downto 0);q<="110";
when 2 => dout<=BH(3 downto 0);q<="011";
when 3 => dout<=BL(3 downto 0);q<="010";
when others =>null;
end case;
end process p2;
end;
譯碼器程序:
library ieee;
use ieee.std_logic_1164.all;
entity smxs is
port
(
dout:in std_logic_vector(3 downto 0);
led7s:out std_logic_vector(6 downto 0)
);
end;
architecture bhv of smxs is
begin
process(dout)
begin
   case dout is
   when "0000" => led7s <="0111111";
   when "0001" => led7s <="0000110";
   when "0010" =>  led7s <= "1011011" ;
   when "0011" =>  led7s <= "1001111" ;
   when "0100" =>  led7s <= "1100110" ;
   when "0101" =>  led7s <= "1101101" ;
   when "0110" =>  led7s <= "1111101" ;
   when "0111" =>  led7s <= "0000111" ;
   when "1000" =>  led7s <= "1111111" ;
   when "1001" =>  led7s <= "1101111" ;
   when others => led7s <= "0000000" ;
              end case;
              end process;
              end;
擴展后的程序
主控器程序:
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity kuozkq is
port(

   clk:in std_logic;
              rest:in std_logic;
              elect:out integer range 0 to 8;
              rea7A:out integer range 0 to 100;
              rea7B:out integer range 0 to 100
);
end;
architecture bhv of kuozkq is
begin
process(clk,rest)
variable tep:integer range 0 to 100;
begin
if rest='1' then tep:=100;elect<=0;
else
if clk'event and clk='0' then
if tep>90 then elect<=1;rea7A<=tep-90;rea7B<=tep-50;tep:=tep-1;
elsif tep>80 then elect<=2;rea7A<=tep-80;rea7B<=tep-50;tep:=tep-1;
elsif tep>55 then elect<=3;rea7A<=tep-55;rea7B<=tep-50;tep:=tep-1;
elsif tep>50 then elect<=4;rea7A<=tep-50;rea7B<=tep-50;tep:=tep-1;
elsif tep>40 then elect<=5;rea7A<=tep;rea7B<=tep-40;tep:=tep-1;
elsif tep>30 then elect<=6;rea7A<=tep;rea7B<=tep-30;tep:=tep-1;
elsif tep>5 then elect<=7;rea7A<=tep;rea7B<=tep-5;tep:=tep-1;
elsif tep>0 then elect<=8;rea7A<=tep;rea7B<=tep;tep:=tep-1;
else elect<=8;rea7A<=tep;rea7B<=tep;tep:=100;
end if;
end if;
end if;
end process;
end bhv;
LED控制程序:
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity kuoled is
port(
clk10:in std_logic;
elect:in integer range 0 to 8;
redA,greenA,yellowA,rightA,leftA:out std_logic;
redB,greenB,yellowB,rightB,leftB:out std_logic
);
end;
architecture bhv of kuoled  is
begin
process(clk10,elect)
begin
case elect is
when 0 => redA<='1';greenA<='0';yellowA<='0';rightA<='0';leftA<='0';redB<='1';greenB<='0';yellowB<='0';rightB<='0';leftB<='0';
when 1 => redA<='0';greenA<='0';yellowA<='0';rightA<='1';leftA<='0';redB<='1';greenB<='0';yellowB<='0';rightB<='0';leftB<='0';
when 2 => redA<='0';greenA<='0';yellowA<='0';rightA<='0';leftA<='1';redB<='1';greenB<='0';yellowB<='0';rightB<='0';leftB<='0';
when 3 => redA<='0';greenA<='1';yellowA<='0';rightA<='0';leftA<='0';redB<='1';greenB<='0';yellowB<='0';rightB<='0';leftB<='0';
when 4 => redA<='0';greenA<='0';yellowA<=clk10;rightA<='0';leftA<='0';redB<='1';greenB<='0';yellowB<='0';rightB<='0';leftB<='0';
when 5 => redA<='1';greenA<='0';yellowA<='0';rightA<='0';leftA<='0';redB<='0';greenB<='0';yellowB<='0';rightB<='1';leftB<='0';
when 6 => redA<='1';greenA<='0';yellowA<='0';rightA<='0';leftA<='0';redB<='0';greenB<='0';yellowB<='0';rightB<='0';leftB<='1';
when 7 => redA<='1';greenA<='0';yellowA<='0';rightA<='0';leftA<='0';redB<='0';greenB<='1';yellowB<='0';rightB<='0';leftB<='0';
when 8 => redA<='1';greenA<='0';yellowA<='0';rightA<='0';leftA<='0';redB<='0';greenB<='0';yellowB<=clk10;rightB<='0';leftB<='0';
when others =>null;
end case;
end process;
end;
擴展的顯示程序:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY xianshi1 IS
PORT
(CLOCK:IN STD_LOGIC;
NUMIN:IN INTEGER RANGE 0 TO 99;
NUMA,NUMB:OUT INTEGER RANGE 0 TO 9
);
END;
ARCHITECTURE bhv OF xianshi1 IS
BEGIN
   PROCESS(CLOCK)
   BEGIN
     IF RISING_EDGE(CLOCK) THEN
               
       IF NUMIN>=10 THEN
         NUMA<=NUMIN/10;
         NUMB<=(NUMIN)rem(10);
                           
       ELSE
                               NUMA<=0;
                                          NUMB<=NUMIN;
       END IF;
     END IF;
   END PROCESS;
END;

以上圖文的Word格式文檔下載(內容和本網頁上的一模一樣,方便大家保存):
基于FPGA的交通燈設計.doc (2.37 MB, 下載次數: 71)


評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏4 分享淘帖 頂2 踩
回復

使用道具 舉報

沙發
ID:999139 發表于 2023-10-13 16:23 | 只看該作者
請問分頻的占空比是多少呀?
回復

使用道具 舉報

板凳
ID:1121694 發表于 2024-5-21 14:32 | 只看該作者
我想請問以下這些代碼可以在FPGA黑金板DB4CE15上實現嗎
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲一区二区精品视频 | 天天av天天好逼 | 亚洲精品9999 | 成人精品视频99在线观看免费 | 中文字幕国 | 欧美日产国产成人免费图片 | 日韩电影一区 | av影音在线| 成人黄色在线观看 | 午夜免费网站 | 在线国产一区 | 2019天天干夜夜操 | 国产98色在线 | 日韩 | 国产视频一区在线观看 | 亚洲精品久久久久久久久久久久久 | 精品无码三级在线观看视频 | 日韩视频免费看 | 99精品欧美一区二区三区综合在线 | 精品91久久久 | 国产精品一区二区不卡 | 中文字幕一区二区三区四区五区 | 亚洲国产成人一区二区 | 麻豆av网| 成年人在线观看 | 久久国产精品免费一区二区三区 | 久久精品aaa | 超碰520 | 久久电影一区 | 欧美一级在线观看 | 亚洲福利在线视频 | 亚洲综合婷婷 | av在线免费观看网址 | 免费骚视频 | 91精品国产综合久久婷婷香蕉 | 在线一区视频 | 成人午夜免费视频 | 久久精品国产亚洲一区二区三区 | 无码一区二区三区视频 | 91色啪| 国产乱码精品1区2区3区 | 伊人在线 |