亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? interfacing to external static ram.mht

?? Interfacing to External Static Ram This module colntroller is for srams
?? MHT
?? 第 1 頁 / 共 3 頁
字號:
From: <Saved by Windows Internet Explorer 7>
Subject: Interfacing to External Static Ram
Date: Mon, 25 May 2009 14:50:43 +0330
MIME-Version: 1.0
Content-Type: multipart/related;
	type="text/html";
	boundary="----=_NextPart_000_0000_01C9DD48.2E3E7A00"
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.3138

This is a multi-part message in MIME format.

------=_NextPart_000_0000_01C9DD48.2E3E7A00
Content-Type: text/html;
	charset="Windows-1252"
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.birdcomputer.ca/Documents/interfacing_to_external_static_ram.html

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD><TITLE>Interfacing to External Static Ram</TITLE>
<META http-equiv=3DContent-Language content=3Den-us>
<META content=3D"MSHTML 6.00.6000.20591" name=3DGENERATOR>
<META content=3DFrontPage.Editor.Document name=3DProgId>
<META http-equiv=3DContent-Type content=3D"text/html; =
charset=3Dwindows-1252"><!--mstheme--><LINK=20
href=3D"http://www.birdcomputer.ca/_themes/sandston/sand1011.css" =
type=3Dtext/css=20
rel=3Dstylesheet>
<META content=3D"sandston 1011, default" name=3D"Microsoft =
Theme"></HEAD>
<BODY>
<P><FONT size=3D5>Interfacing to External Static Ram</FONT></P>
<P>Robert Finch</P>
<P><A =
href=3D"mailto:email@birdcomputer.ca">email@birdcomputer.ca</A></P>
<P><FONT size=3D2><!--webbot bot=3D"Timestamp" S-Type=3D"EDITED" =
S-Format=3D"%B, %Y" startspan -->November,=20
2004<!--webbot bot=3D"Timestamp" i-checksum=3D"30640" endspan =
--></FONT></P>
<P>&nbsp;</P>
<P><FONT size=3D4>Abstract</FONT></P>
<P>This documents covers the interfacing of an external asynchronous =
static ram=20
to a system on a programmable chip (SoC). It is assumed that the system =
is=20
moderately complex, and the ram is shared between two or more system=20
devices.</P>
<P>&nbsp;</P>
<P><FONT size=3D4>Introduction</FONT></P>
<P>Many systems need to make use of an external RAM as the memory =
provided on=20
the programmable chip may be insufficient to meet the needs of the =
application.=20
Static RAM is often used because it offers the highest speed, low power=20
consumption and simple interfacing. For true random access cycles such =
as when=20
multiple devices access the same RAM, static RAM provides the highest=20
performance.</P>
<P>The external static RAM is likely to be shared by several devices in =
the=20
system, for example a cpu and separate DMA channels for a video =
controller and=20
disk controller. For the best system performance, it is desirable to =
obtain=20
maximum use of the RAM=92s memory bandwidth. One way to minimize the =
cycle time of=20
the RAM is to drive it directly from flip-flops (ff=92s) without any =
intervening=20
logic, and receive the output of the RAM directly into ff=92s, once =
again without=20
any intervening logic. Placing the RAM directly between ff=92s allows =
for the use=20
of registers close to the I/O ports interfaced to the RAM. This =
minimizes=20
propagation delays transferring data between the FPGA and external =
static=20
RAM.</P>
<P>&nbsp;</P>
<P><FONT size=3D4>Interfacing Options</FONT></P>
<P>There are several different ways to interface to an external RAM. =
Probably=20
the simplest method is to directly drive the RAM inputs from the SoC =
address bus=20
and place the RAM outputs directly on the SoC databus. By directly it is =
meant=20
without registering the signals beforehand. The advantage of this =
approach is=20
that it=92s fairly straightforward to implement, the disadvantage is =
that it can=20
be severely lacking in performance. The problem is that the system =
performance=20
is limited due to the combination of bus multiplexing, routing and the =
RAM=20
access time. This results in a long cycle time required to access the =
RAM.=20
Without registering the signals, the RAM access time would include =
address=20
multiplexing, routing, and decoding times, as well as data input bus=20
multiplexing, and routing times. One way to decrease the cycle time, and =

increase performance, is to break the ram access across multiple cycles =
rather=20
than having one long cycle. See the following example for cycle time=20
calculations.</P>
<P>Example (cycle time):</P>
<P>Access time for read access by a cpu (the long cycle time):</P>
<UL>
  <OL><FONT size=3D2>
    <LI>Request from cpu 0ns=20
    <LI>address bus mux 10ns (muxing in other address sources such as =
video=20
    controller, disk dma)=20
    <LI>routing delay 10ns for the address bus (assuming a reasonably =
sized=20
    system)=20
    <LI>I/O pad delay 5 ns (out to the ram)=20
    <LI>Ram read access time 15ns=20
    <LI>I/O pad delay 5 ns (back onto the FPGA)=20
    <LI>Databus routing delay 10 ns=20
    <LI>Databus input mux delay 10ns </LI></OL></UL></FONT>
<P>Total time for read access by cpu: 65ns. With a 16 bit SRAM this =
limits=20
system performance to about 30MB/s.</P>
<P>Breaking the access into multiple cycles reduces the cycle time, =
because the=20
cycle time becomes limited by the slowest stage.</P>
<P>Access time for read using registered inputs and outputs:</P><FONT =
size=3D2>
<P>Stage 1:</P>
<OL>
  <LI>Request from cpu 0 ns=20
  <LI>address bus mux&nbsp;&nbsp;&nbsp; 10 ns=20
  <LI>routing delay&nbsp;&nbsp;&nbsp; 10 ns </LI></OL>
<P>Stage 2</P>
<OL>
  <LI>Latched address from previous stage 0 ns=20
  <LI>I/O pad delay 5ns=20
  <LI>Ram read access time 15 ns=20
  <LI>I/O pad delay 5 ns </LI></OL>
<P>Stage 3:</P></FONT>
<OL>
  <LI><FONT size=3D2>databus routing delay 10ns</FONT>=20
  <LI><FONT size=3D2>databus input mux delay 10 ns</FONT> =
</LI></OL><FONT size=3D2>
<P>&nbsp;</P></FONT>
<P>As can be seen from stage 2, the longest delay (which sets the cycle=20
time)&nbsp; is 25 ns.</P><FONT size=3D2></FONT>
<P>Total time for read access: 25 ns. With a 16 bit SRAM this limits =
system=20
performance to 80 MB/s.</P>
<P>&nbsp;</P>
<P>Simply by breaking the RAM access into stages, performance has almost =
been=20
tripled (according to the cycle time decrease). However it now requires =
three=20
clock cycles to access the RAM.</P>
<P>&nbsp;</P>
<P><FONT size=3D4>Pipelining</FONT></P>
<P>It would seem that spreading out the RAM access across three clock =
cycles,=20
rather than using a single clock cycle that is three times as long =
wouldn't have=20
any impact on performance, but it does. Even if nothing else is done to =
the RAM=20
interface, the clock cycle time can now be one-third of what it was =
before. This=20
means that operations that don't use the external static RAM can now =
occur three=20
times as fast. For example, a cpu that executes some code from ROM =
internal to=20
the chip can now benefit from a faster clock cycle.</P>
<P>Another way to significantly increase performance is to pipeline =
access to=20
the RAM. With access occurring across multiple clock cycles and because =
the RAM=20
inputs and outputs are being registered, it is possible to pipeline the =
access=20
to RAM. The RAM access really does still occur within a single clock =
cycle that=20
is now three times as fast due to registering. The only problem is the =
delay=20
cause by the multiple stages. However, with the access broken into =
stages, each=20
stage can represent a <I>different</I> RAM access. For instance, stage =
one could=20
be in the process of servicing a request for a video controller, while =
stage two=20
is performing an access for the cpu, while stage three is providing the =
result=20
for a DMA controller. When there are multiple devices accessing the RAM, =
the=20
best use of the RAM bandwidth can be obtained, even when the devices =
accessing=20
the RAM are not pipelined themselves. While one device (bus master) is =
waiting=20
for a response from the RAM, the RAM subsystem can be busy accessing =
data for=20
another device.</P>
<P>Example:</P>
<P>In a small SoC the devices consists of a non-pipelined 6502 =
compatible=20
processor, and a bitmapped video display controller. The video display=20
controller requires approximately 50% of the RAM bandwidth (an access =
every=20
other cycle). So the cpu may get access to RAM every other cycle. =
However=20
because the cpu is not pipelined, it must wait for an acknowledge from =
RAM=20
before proceeding. It takes three clock cycles from the time the cpu =
requests=20
access until a ready response is received from the RAM. The video =
display=20
controller is pipelined. The display controller accesses are effectively =
hidden=20
because they are interspersed with the cpu accesses in a pipelined =
fashion. The=20
result is to effectively double the system performance over what would =
be=20
obtainable without pipelined RAM access.</P>
<P>One nice thing about pipelined RAM access is that write cycles may =
return a=20
ready status in a single cycle, as soon as they are posted to the RAM =
subsystem.=20
Once the write address and data are latched into the system, there is no =
need to=20
wait any longer. The write will eventually take place.</P>
<P>&nbsp;</P>
<P><FONT size=3D4>Sample Code</FONT></P>
<P>The following RAM controller is written in Verilog and allows =
pipelined=20
access to an external asynchronous static RAM. One feature of the RAM =
controller=20
is that it uses a bit-vector to track which device is requesting access, =
and to=20
which device an acknowledge should be sent. In this case there are only =
two=20
devices (a cpu and video controller). It is assumed that an acknowledge =
is not=20
required for write accesses, as the external system will provide a write =

acknowledge as soon as the write is posted. The sample code also =
interfaces an=20
eight bit SoC bus to an external sixteen bit RAM, so there is some =
multiplexing=20
involved. There are two sets of input / output signals, signals that =
interface=20
to the SoC and signals that interface to the RAM, so the controller acts =
as kind=20
of a bridge.</P>
<P>This interface has been tested at 28.636 MHz, it will probably work =
at=20
upwards of 40 MHz.</P>
<P>&nbsp;</P>
<P>module RAMCtrl4(rst, clk, clk90, cs, req, ack, addr, wr, din,=20
dout,<BR>&nbsp;&nbsp;&nbsp; ram_we0, ram_we1, ram_we, ram_oe, ram_ce, =
ram_a,=20
ram_d);<BR>&nbsp;&nbsp;&nbsp; // system side =
connections<BR>&nbsp;&nbsp;&nbsp;=20
input rst; // reset<BR>&nbsp;&nbsp;&nbsp; input clk; // system=20
clock<BR>&nbsp;&nbsp;&nbsp; input clk90; // 90 deg. phase shifted clock =
for=20
write timing<BR>&nbsp;&nbsp;&nbsp; input cs; // circuit=20
select<BR>&nbsp;&nbsp;&nbsp; input [1:0] req; // identifies device =
requesting=20
access<BR>&nbsp;&nbsp;&nbsp; output [1:0] ack; // identifies device for =
which=20
data is available<BR>&nbsp;&nbsp;&nbsp; reg [1:0] =
ack;<BR>&nbsp;&nbsp;&nbsp;=20
input [17:0] addr; // address<BR>&nbsp;&nbsp;&nbsp; input wr; // write=20
signal<BR>&nbsp;&nbsp;&nbsp; input [7:0] din; // data=20
input<BR>&nbsp;&nbsp;&nbsp; output [7:0] dout; // data=20
output<BR>&nbsp;&nbsp;&nbsp; reg [7:0] dout;<BR>&nbsp;&nbsp;&nbsp; // =
RAM side=20
connections<BR>&nbsp;&nbsp;&nbsp; output ram_we0; // low byte=20
write<BR>&nbsp;&nbsp;&nbsp; output ram_we1; // high byte=20
write<BR>&nbsp;&nbsp;&nbsp; output ram_we; // generic=20
write<BR>&nbsp;&nbsp;&nbsp; output ram_oe; // output=20
enable<BR>&nbsp;&nbsp;&nbsp; output ram_ce; // chip =
enable<BR>&nbsp;&nbsp;&nbsp;=20
output [17:0] ram_a; // address<BR>&nbsp;&nbsp;&nbsp; inout [15:0] =
ram_d; //=20
data<BR><BR>reg [1:0] req1; // holds request id for intermediate =
pipeline=20
stage<BR>reg ram_ce;<BR>reg ram_oe;<BR>reg ce1;<BR>reg we; // registed=20
signals<BR>reg we0, we1;<BR>reg wr0, wr1;<BR>reg [17:0] ram_a;<BR>reg =
[7:0] dol;=20
// data output latch<BR>reg addr0; // intermediate: address bit =
zero<BR><BR>wire=20
wr0x =3D wr &amp; ~addr[0];<BR>wire wr1x =3D wr &amp; addr[0];<BR>assign =
ram_d[7:0]=20
=3D wr0 ? dol : 8'bz;<BR>assign ram_d[15:8] =3D wr1 ? dol : =
8'bz;<BR>assign ram_we =3D=20
~(we &amp; clk90);<BR>assign ram_we0 =3D ~(wr0 &amp; clk90);<BR>assign =
ram_we1 =3D=20
~(wr1 &amp; clk90);<BR><BR>always @(posedge clk)<BR>&nbsp;&nbsp;&nbsp; =
if (rst)=20
begin<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; we &lt;=3D=20
0;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; wr0 &lt;=3D=20
0;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; wr1 &lt;=3D=20
0;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ram_ce &lt;=3D=20
1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ram_oe &lt;=3D=20
1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ram_a &lt;=3D=20
0;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dol &lt;=3D=20
0;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; req1 &lt;=3D=20
2'b0;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ack &lt;=3D=20
2'b0;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; addr0 &lt;=3D=20
0;<BR>&nbsp;&nbsp;&nbsp; end<BR>&nbsp;&nbsp;&nbsp; else=20
begin<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // register RAM=20
inputs<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // stage=20
1<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; addr0 &lt;=3D=20
addr[0];<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ram_a &lt;=3D =
addr[17:1];=20
// address<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ram_ce &lt;=3D=20
~cs;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ram_oe &lt;=3D=20
wr;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; we &lt;=3D=20
wr;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // On a write cycle we =
assume=20
no ack is required<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; req1 =
&lt;=3D wr ?=20
2'b00 : cs ? req : 2'b00;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =
dol=20
&lt;=3D din;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; wr0 &lt;=3D=20
wr0x;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; wr1 &lt;=3D=20
wr1x;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // stage=20
2<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dout &lt;=3D addr0 ? =
ram_d[15:8] :=20
ram_d[7:0];<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ack &lt;=3D=20
req1;<BR>&nbsp;&nbsp;&nbsp; end<BR><BR>endmodule<BR><BR>&nbsp;</P>
<P>&nbsp;</P></BODY></HTML>

------=_NextPart_000_0000_01C9DD48.2E3E7A00
Content-Type: text/css;
	charset="windows-1256"
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.birdcomputer.ca/_themes/sandston/sand1011.css

.mstheme {
	nav-banner-image: url(astonbnr.gif); separator-image: =
url(astonrul.gif); list-image-1: url(astonbu1.gif); list-image-2: =
url(astonbu2.gif); list-image-3: url(astonbu3.gif); =
navbutton-horiz-pushed: url(astonhbs.gif); navbutton-horiz-normal: =
url(astonhb.gif); navbutton-horiz-hovered: url(astonhbh.gif); =
navbutton-vert-pushed: url(astonvbs.gif); navbutton-vert-normal: =
url(astonvb.gif); navbutton-vert-hovered: url(astonvbh.gif); =
navbutton-home-normal: url(astonhom.gif); navbutton-home-hovered: =
url(astonhomh.gif); navbutton-home-pushed: url(blhomep.gif); =
navbutton-up-normal: url(astonup.gif); navbutton-up-hovered: =
url(astonuph.gif); navbutton-up-pushed: url(blupp.gif); =
navbutton-prev-normal: url(astonpre.gif); navbutton-prev-hovered: =
url(astonpreh.gif); navbutton-prev-pushed: url(blprevp.gif); =
navbutton-next-normal: url(astonnxt.gif); navbutton-next-hovered: =
url(astonnxth.gif); navbutton-next-pushed: url(blnextp.gif)
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产黄色成人av| 国产精品久久久久久久裸模 | 国产精品美女久久久久av爽李琼| 欧美色老头old∨ideo| 91性感美女视频| 色94色欧美sute亚洲线路一ni| av电影一区二区| av电影一区二区| 99久久精品99国产精品| 国产欧美一区二区在线| 精品久久久久久最新网址| 91精品国产黑色紧身裤美女| 69堂精品视频| 日韩精品一区二区三区视频播放| 日韩视频在线永久播放| 欧美在线一区二区| 欧美自拍偷拍午夜视频| 欧美日高清视频| 精品日韩99亚洲| 亚洲高清免费观看| 亚洲香肠在线观看| 玖玖九九国产精品| 国产高清亚洲一区| 91久久一区二区| 欧美精品欧美精品系列| 精品福利一区二区三区免费视频| 亚洲精品在线观看视频| 国产精品看片你懂得 | 亚洲天堂中文字幕| 亚洲福中文字幕伊人影院| 日本美女视频一区二区| 国产一区在线不卡| 色乱码一区二区三区88| 欧美一区二区免费视频| 国产亚洲精品精华液| 亚洲伦理在线精品| 美女精品一区二区| 99v久久综合狠狠综合久久| 精品婷婷伊人一区三区三| 精品久久国产字幕高潮| 亚洲美女屁股眼交| 国产精品影音先锋| 欧美日韩一级片网站| 日本一区免费视频| 一个色综合网站| 狠狠色狠狠色综合日日91app| 91香蕉视频污| 国产网红主播福利一区二区| 亚洲成人一区二区在线观看| 国产精品亚洲专一区二区三区| 日韩国产欧美三级| 亚洲品质自拍视频| 午夜久久久久久久久| 国产精品一二三四五| 欧美网站一区二区| 中文字幕免费一区| 精品一二线国产| 欧美日韩一区 二区 三区 久久精品| 国产校园另类小说区| 日本伊人精品一区二区三区观看方式| av成人动漫在线观看| 久久精品一区二区三区不卡| 免费成人在线网站| 欧美日韩精品一区二区三区蜜桃 | 亚洲精品国产一区二区三区四区在线| 狠狠色丁香久久婷婷综合_中| 欧美日韩一级片在线观看| 亚洲精品日韩综合观看成人91| 国产精品综合一区二区三区| 日韩欧美色综合| 青青草精品视频| 91精品国产全国免费观看| 亚洲综合一区在线| 91麻豆国产自产在线观看| 国产欧美精品国产国产专区| 精品视频在线免费| 亚洲欧美偷拍三级| 91久久精品国产91性色tv| 日韩一区在线免费观看| 国产精品 日产精品 欧美精品| 欧美成人官网二区| 激情欧美一区二区三区在线观看| 日韩一区二区影院| 美女视频黄 久久| 精品国产123| 成人午夜视频免费看| 欧美激情自拍偷拍| av午夜精品一区二区三区| 成人免费一区二区三区视频 | 91黄色激情网站| 亚洲国产精品天堂| 91精品国产乱码久久蜜臀| 美女脱光内衣内裤视频久久网站| 欧美一区二区三区视频| 另类的小说在线视频另类成人小视频在线 | 日韩一区二区三区观看| 麻豆91精品视频| 国产欧美精品在线观看| 播五月开心婷婷综合| 亚洲最色的网站| 欧美一级在线观看| 国产麻豆一精品一av一免费| 日本一区免费视频| 欧美日韩在线不卡| 激情久久五月天| 亚洲色图制服诱惑| 91精品国产综合久久精品性色| 狠狠色狠狠色合久久伊人| 国产精品乱人伦中文| 在线观看不卡视频| 国产精品一区免费视频| 一区二区三区电影在线播| 精品日韩av一区二区| 91香蕉视频污在线| 激情文学综合网| 一区二区三区小说| 久久久久一区二区三区四区| 色婷婷av一区二区三区软件| 免费国产亚洲视频| 亚洲免费在线观看视频| 欧美成人精精品一区二区频| 色噜噜狠狠色综合中国| 国产一区二区在线看| 亚洲www啪成人一区二区麻豆| 久久一夜天堂av一区二区三区| 色综合久久久久网| 性做久久久久久| 欧美一级xxx| 色婷婷一区二区| 国产一二精品视频| 天天操天天综合网| 亚洲精品乱码久久久久久日本蜜臀| 精品国一区二区三区| 欧美日韩亚洲另类| 91在线观看污| 高清不卡一区二区| 国产一区二区在线影院| 青青草视频一区| 午夜视黄欧洲亚洲| 亚洲电影激情视频网站| 亚洲欧美另类综合偷拍| 欧美国产激情二区三区| 久久综合久久鬼色| 日韩欧美国产午夜精品| 在线欧美一区二区| 色狠狠一区二区三区香蕉| 成人黄色av电影| 成人激情开心网| 成人一区二区三区视频在线观看| 麻豆国产精品一区二区三区 | 午夜精品久久久久久久99水蜜桃| 日韩视频不卡中文| 欧美日本在线播放| 欧美三级中文字| 欧美写真视频网站| 欧美视频在线一区二区三区 | 制服丝袜亚洲色图| 欧美天堂一区二区三区| 91成人在线精品| 在线观看www91| 欧美日韩一区二区三区在线| 日本韩国欧美在线| 欧美日韩久久一区| 欧美一区二区视频免费观看| 日韩三级中文字幕| 精品久久一区二区| 国产欧美一区二区三区在线看蜜臀| 久久婷婷成人综合色| 久久精品视频网| 国产精品福利在线播放| 一区二区国产盗摄色噜噜| 亚洲成人综合视频| 免费亚洲电影在线| 国产一区91精品张津瑜| 成a人片国产精品| 色综合久久综合网| 91精品国产综合久久精品图片| 欧美xxxxx牲另类人与| 国产嫩草影院久久久久| 亚洲美腿欧美偷拍| 蜜桃91丨九色丨蝌蚪91桃色| 国产呦精品一区二区三区网站| 成人性色生活片免费看爆迷你毛片| 色综合久久九月婷婷色综合| 欧美日韩亚洲综合| 国产欧美精品国产国产专区| 亚洲激情五月婷婷| 国产乱子伦视频一区二区三区| hitomi一区二区三区精品| 欧美日韩国产成人在线91| 2022国产精品视频| 亚洲午夜视频在线| 国产一区二区三区高清播放| 99久久精品免费看国产| 91精品国产一区二区人妖| 亚洲国产精品成人久久综合一区| 亚洲一区二区三区在线看| 国产美女精品一区二区三区| 91久久精品日日躁夜夜躁欧美| 精品国产91洋老外米糕|