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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

AHB-SRAM简单设计之内部模块 sram_core.v

發布時間:2024/3/12 编程问答 54 豆豆
生活随笔 收集整理的這篇文章主要介紹了 AHB-SRAM简单设计之内部模块 sram_core.v 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言

他們都說這一部分不需要自己設計,還說了公司里面這部分都是買的,dft和bist前期就不用介入工作,因為買的IP里面已經集成進去了。如果公司沒買IP,都是自己做的,那就需要前期和設計工程師一起交流,留下接口。

僅從設計層面來講,sram_core.v的復雜程度也挺高的(僅針對小編小白)!所以,這部分打算直接附帶碼,先不做任何解釋!如果后面還想分析,再附!

內部模塊 sram_core.v

結合上面的圖和下面的代碼,理解:sram_core就是在里面例化了8片sram_bist

module sram_core(//input signalsinput hclk,input sram_clk,input hresetn,input sram_wen, // =1 讀sram; =0,寫sram.8個一起讀或者一起寫input [12:0] sram_addr,input [31:0] sram_wdata_in, //data write into sram when "sram_wen_in" active lowinput [3:0] bank0_csn, //兩個bank,每個bank有四個片選input [3:0] bank1_csn,input bist_en, //BIST test modeinput dft_en, //DFT test mode//output signalsoutput [7:0] sram_q0,output [7:0] sram_q1,output [7:0] sram_q2,output [7:0] sram_q3,output [7:0] sram_q4,output [7:0] sram_q5,output [7:0] sram_q6,output [7:0] sram_q7,output bist_done, //When "bist_done" is high, it shows BIST test is over.output [7:0] bist_fail //"bist_fail" shows the results of each sram funtions.);//Every sram bist's work state and results output.wire bist_done0;wire bist_fail0;wire bist_done1;wire bist_fail1;wire bist_done2;wire bist_fail2;wire bist_done3;wire bist_fail3;wire bist_done4;wire bist_fail4;wire bist_done5;wire bist_fail5;wire bist_done6;wire bist_fail6;wire bist_done7;wire bist_fail7;wire bank0_bistdone;wire bank1_bistdone;wire [3:0] bank0_bistfail;wire [3:0] bank1_bistfail;//bist finishing state of bank0assign bank0_bistdone = (bist_done3 && bist_done2) && (bist_done1 && bist_done0);//bist results of bank0assign bank0_bistfail = {bist_fail3,bist_fail2,bist_fail1,bist_fail0};//bist finishing state of bank1assign bank1_bistdone = (bist_done7 && bist_done6) && (bist_done5 && bist_done4);//bist results of bank1assign bank1_bistfail = {bist_fail7,bist_fail6,bist_fail5,bist_fail4};//--------------------------------------------------------------------------//the 8 srams results of BIST test and the finishing state//--------------------------------------------------------------------------assign bist_done = bank0_bistdone && bank1_bistdone;assign bist_fail = {bank1_bistfail,bank0_bistfail} ;//-------------------------------------------------------------------------//Instance 8 srams and each provides with BIST and DFT functions. //Bank0 comprises of sram0~sram3, and bank1 comprises of sram4~sram7. //In each bank, the sram control signals broadcast to each sram, and data//written per byte into each sram in little-endian style.//-------------------------------------------------------------------------//bank0 bank1讀寫使能以及地址都完全相同,寫入的數據也相同sram_bist u_sram_bist0(.hclk (hclk),.sram_clk (sram_clk),.sram_rst_n (hresetn),.sram_csn_in (bank0_csn[0]),.sram_wen_in (sram_wen),.sram_addr_in (sram_addr),.sram_wdata_in (sram_wdata_in[7:0]),.bist_en (bist_en),.dft_en (dft_en),.sram_data_out (sram_q0),.bist_done (bist_done0),.bist_fail (bist_fail0) );sram_bist u_sram_bist1(.hclk (hclk),.sram_clk (sram_clk),.sram_rst_n (hresetn),.sram_csn_in (bank0_csn[1]),.sram_wen_in (sram_wen),.sram_addr_in (sram_addr),.sram_wdata_in (sram_wdata_in[15:8]),.bist_en (bist_en),.dft_en (dft_en),.sram_data_out (sram_q1),.bist_done (bist_done1),.bist_fail (bist_fail1) );sram_bist u_sram_bist2(.hclk (hclk),.sram_clk (sram_clk),.sram_rst_n (hresetn),.sram_csn_in (bank0_csn[2]),.sram_wen_in (sram_wen),.sram_addr_in (sram_addr),.sram_wdata_in (sram_wdata_in[23:16]),.bist_en (bist_en),.dft_en (dft_en),.sram_data_out (sram_q2),.bist_done (bist_done2),.bist_fail (bist_fail2) );sram_bist u_sram_bist3(.hclk (hclk),.sram_clk (sram_clk),.sram_rst_n (hresetn),.sram_csn_in (bank0_csn[3]),.sram_wen_in (sram_wen),.sram_addr_in (sram_addr),.sram_wdata_in (sram_wdata_in[31:24]),.bist_en (bist_en),.dft_en (dft_en),.sram_data_out (sram_q3),.bist_done (bist_done3),.bist_fail (bist_fail3) );sram_bist u_sram_bist4(.hclk (hclk),.sram_clk (sram_clk),.sram_rst_n (hresetn),.sram_csn_in (bank1_csn[0]),.sram_wen_in (sram_wen),.sram_addr_in (sram_addr),.sram_wdata_in (sram_wdata_in[7:0]),.bist_en (bist_en),.dft_en (dft_en),.sram_data_out (sram_q4),.bist_done (bist_done4),.bist_fail (bist_fail4) );sram_bist u_sram_bist5(.hclk (hclk),.sram_clk (sram_clk),.sram_rst_n (hresetn),.sram_csn_in (bank1_csn[1]),.sram_wen_in (sram_wen),.sram_addr_in (sram_addr),.sram_wdata_in (sram_wdata_in[15:8]),.bist_en (bist_en),.dft_en (dft_en),.sram_data_out (sram_q5),.bist_done (bist_done5),.bist_fail (bist_fail5) );sram_bist u_sram_bist6(.hclk (hclk),.sram_clk (sram_clk),.sram_rst_n (hresetn),.sram_csn_in (bank1_csn[2]),.sram_wen_in (sram_wen),.sram_addr_in (sram_addr),.sram_wdata_in (sram_wdata_in[23:16]),.bist_en (bist_en),.dft_en (dft_en),.sram_data_out (sram_q6),.bist_done (bist_done6),.bist_fail (bist_fail6) );sram_bist u_sram_bist7(.hclk (hclk),.sram_clk (sram_clk),.sram_rst_n (hresetn),.sram_csn_in (bank1_csn[3]),.sram_wen_in (sram_wen),.sram_addr_in (sram_addr),.sram_wdata_in (sram_wdata_in[31:24]),.bist_en (bist_en),.dft_en (dft_en),.sram_data_out (sram_q7),.bist_done (bist_done7),.bist_fail (bist_fail7) );endmodule

單純設計這個內部模塊,現在真的拿不下!這個sram_core.v下面又例化了sram_bist.v,下面繼續上sram_bist.v的文件。

sram_bist.v

到這一部分,突然想起來,有人一直在群里問,你們有memory_bist嗎?有人回答,在某個軟件下面有自帶的ip,用就行。所以這部分,也是套用即可(當然,以后套用肯定要懂得原理呀)!

module sram_bist(//input signalsinput hclk,input sram_clk,input sram_rst_n,input sram_csn_in, //chip select enable input sram_wen_in, //sram write or read enable; 0:write; 1:readinput[12:0] sram_addr_in, input[7:0 ] sram_wdata_in,input bist_en, // MBIST modeinput dft_en, // DFT mode//output signalsoutput[7:0 ] sram_data_out, output bist_done, // 1: test overoutput bist_fail // high: MBIST Fail);//----------------------------------------------------//Internal signals connected the sram with bist module //when "bist_en" active high.//----------------------------------------------------wire sram_csn;wire sram_wen;wire sram_oen;wire [12:0] sram_a;wire [7:0] sram_d;wire [7:0] data_out;//Sram output data when "dft_en" active high.wire [7:0] dft_data;reg [7:0] dft_data_r;wire [12:0] sram_addr;wire [7:0] sram_wdata;//clock for bist logic, when bist is not work, clock should be 0.wire bist_clk;genvar K;//block sram input when cs is diable for low power design assign sram_addr = sram_csn_in ? 0 : sram_addr_in;assign sram_wdata = sram_csn_in ? 0 : sram_wdata_in;//dft test resultassign dft_data = (sram_d ^ sram_a[7:0]) ^ {sram_csn, sram_wen, sram_oen, sram_a[12:8]}; always @(posedge hclk or negedge sram_rst_n) beginif(!sram_rst_n)dft_data_r <= 0;else if(dft_en)dft_data_r <= dft_data;end//sram data outputassign sram_data_out = dft_en ? dft_data_r : data_out;// Note: Need to take place the mux using the special library cell /*generate for(K = 0; K < 8; K = K+1 )begin :hold//BHDBWP7T holdQ (.Z(data_out[K]));end endgenerate *///clock for bist logic, when bist is not work, clock should be 0.// Note: Need to take place the mux using the special library cell// CKMUX2D2BWP7T U_bist_clk_mux (.I0(1'b0), .I1(hclk), .S(bist_en), .Z(bist_clk));assign bist_clk = bist_en ? hclk : 1'b0;// One sram with BIST and DFT functionRA1SH u_RA1SH(.Q (data_out),.CLK (sram_clk),.CEN (sram_csn),.WEN (sram_wen),.A (sram_a),.D (sram_d),.OEN (sram_oen));mbist_8kx8 u_mbist_8kx8(.b_clk (bist_clk),.b_rst_n (sram_rst_n),.b_te (bist_en),//--------------------------------------------------------//All the input signals will be derectly connected to//the sram input when in normal operation; and when in//BIST TEST mode, there are some mux in BIST module//selcting all sram input signals which generated by itself://sram controll signals, sram write data, etc.//--------------------------------------------------------.addr_fun (sram_addr),.wen_fun (sram_wen_in),.cen_fun (sram_csn_in),.oen_fun (1'b0),.data_fun (sram_wdata),.ram_read_out (sram_data_out),.data_test (sram_d),.addr_test (sram_a),.wen_test (sram_wen),.cen_test (sram_csn),.oen_test (sram_oen),.b_done (bist_done),.b_fail (bist_fail));endmodule

這個sram_bist下面又例化了 RA1SH和mbist_8kx8兩個模塊,這是最后一層例化了。下面附這兩個模塊的代碼!

mbist_8kx8.v

這個模塊,里面的狀態機啥的,都值得借鑒,如果有時間,建議摳熟!

module mbist_8kx8 #(parameter WE_WIDTH = 1,parameter ADDR_WIDTH = 13,parameter DATA_WIDTH = 8)(//input signalsinput b_clk, // bist clock input b_rst_n, // bist resetninput b_te, // bist enableinput [(ADDR_WIDTH-1):0] addr_fun,input [(WE_WIDTH-1):0] wen_fun,input cen_fun,input oen_fun,input [(DATA_WIDTH-1):0] data_fun,input [(DATA_WIDTH-1):0] ram_read_out,//output signalsoutput [(ADDR_WIDTH-1):0] addr_test, // address of testoutput [(WE_WIDTH-1):0] wen_test, // writing control of bist test modeoutput cen_test, // chip enable control of bist test modeoutput oen_test, // output enable control of bist test modeoutput [(DATA_WIDTH-1):0] data_test, // data input of bist test modeoutput b_done, // output state of bist test mode// When "bist_done" is high, it shows BIST test is over.output reg b_fail // output result of sram function// When "bist_fail" is high, the sram function is wrong;// else, the sram function is right.);//----------------------------------------------------//Define 27 work states of BIST block for bist test//----------------------------------------------------`define IDEL1 5'b00000`define P1_WRITE0 5'b00001`define IDEL2 5'b00010`define P2_READ0 5'b00011`define P2_COMPARE0 5'b00100`define P2_WRITE1 5'b00101`define IDEL3 5'b00110`define P3_READ1 5'b00111`define P3_COMPARE1 5'b01000`define P3_WRITE0 5'b01001`define P3_READ0 5'b01010`define P3_COMPARE0 5'b01011`define P3_WRITE1 5'b01100`define IDEL4 5'b01101`define P4_READ1 5'b01110`define P4_COMPARE1 5'b01111`define P4_WRITE0 5'b10000`define IDEL5 5'b10001`define P5_READ0 5'b10010`define P5_COMPARE0 5'b10011`define P5_WRITE1 5'b10100`define P5_READ1 5'b10101`define P5_COMPARE1 5'b10110`define P5_WRITE0 5'b10111`define IDEL6 5'b11000`define P6_READ0 5'b11001`define P6_COMPARE0 5'b11010// sram address when in bist test modereg [(ADDR_WIDTH-1):0] test_addr;// bist test end signalreg r_end;reg r_end_en;// sram address reset when in bist test mode.reg test_addr_rst;// sram read or write enable signal when in bist test modereg [(WE_WIDTH-1):0] wen_test_inner;// bist start to work in IDLEreg rf_start;// compare the data read from sram with the data written into sram // enable signalreg check_en;// bist test data source select signal// "pattern_sel == 1'b0"-----> test_pattern = 32'b0;// "pattern_sel == 1'b1"-----> test_pattern = 32'b1;reg pattern_sel;wire [(DATA_WIDTH-1):0] test_pattern;reg [4:0] cstate, nstate;// 1 -- address is goign upward; 0 -- address is going downwardreg up1_down0; // 1 -- address is stepping; 0 -- address remainsreg count_en; //-----------------------------------------------------------------// Combinatorial portion//-----------------------------------------------------------------assign b_done = r_end;assign test_pattern = (pattern_sel == 1'b0) ? {DATA_WIDTH{1'b0}} : {DATA_WIDTH{1'b1}};//--------------------------------------------------------------------// The output values of all the mux below will be changed based on the// sram whether in normal operation or in bist test mode. //---------------------------------------------------------------------assign data_test = (b_te == 1'b1) ? test_pattern : data_fun;assign addr_test = (b_te == 1'b1) ? test_addr : addr_fun;assign wen_test = (b_te == 1'b1) ? wen_test_inner : wen_fun;assign cen_test = (b_te == 1'b1) ? 1'b0 : cen_fun;assign oen_test = (b_te == 1'b1) ? 1'b0 : oen_fun;//--------------------------------------------------------------------// Sequential portion//--------------------------------------------------------------------//--------------------------------// Generate bist work end signal. //--------------------------------always @(posedge b_clk , negedge b_rst_n) beginif (b_rst_n == 1'b0) r_end<=1'b0;else if (r_end_en == 1'b1) r_end<= 1'b1;elser_end <= 1'b0;end//----------------------------------------------------// Generate the sram test address.// "test_addr_rst " and "up1_down0" decide the mode of // variable the address(increment/decrement). //-----------------------------------------------------always @(posedge b_clk , negedge b_rst_n) beginif (b_rst_n == 1'b0) test_addr <= {ADDR_WIDTH{1'b0}};else if (b_te == 1'b1) if (test_addr_rst == 1'b1) if (up1_down0 == 1'b1)test_addr<= {ADDR_WIDTH{1'b0}};elsetest_addr<= {ADDR_WIDTH{1'b1}};elseif (count_en == 1'b1)if (up1_down0 == 1'b1)test_addr<= test_addr + 1'b1;elsetest_addr<= test_addr - 1'b1;endalways @(posedge b_clk , negedge b_rst_n)if (b_rst_n == 1'b0) b_fail<=1'b1;else begin//---------------------------------------------------------// When in bist idle1 state, "b_fail" defualt value is "0".// --------------------------------------------------------if ((b_te == 1'b1) && (rf_start == 1'b1))b_fail<= 1'b0;//------------------------------------------------------------// "b_fail" value is "1", when data read from sram is different// from the expected data wirtten into sram.//--------------------------------------------------------------if ((b_te == 1'b1) && (check_en == 1'b1) && !(test_pattern == ram_read_out))b_fail<= 1'b1;end//------------------------------------------------------------------------------// Bist test state machine// write "0"(initial sram) test_address 0-->1fff// read "0"------> compare -------->write "1" test_address 1fff-->0// read "1"------> compare -------->write "0" test_address 0-->1fff// write "1"------> read "1"-------->compare test_address 1fff-->0 // write "0"------> read "0"-------->compare test_address 0-->1fff // write "1"------> read "1"-------->compare test_address 1fff-->0 // write "0"------> read "0"-------->compare test_address 0-->1fff //------------------------------------------------------------------------------always @(posedge b_clk , negedge b_rst_n) beginif (b_rst_n == 1'b0) cstate<=`IDEL1;elsecstate<= nstate;endalways @(cstate or b_te or r_end or test_addr) beginup1_down0 = 1'b1;count_en = 1'b0;r_end_en = 1'b0;pattern_sel = 1'b0;test_addr_rst = 1'b0;rf_start = 1'b0;check_en = 1'b0;wen_test_inner = {WE_WIDTH{1'b1}};nstate = cstate;case (cstate)`IDEL1 :begintest_addr_rst = 1'b1;if (b_te == 1'b1 && r_end == 1'b0) beginnstate = `P1_WRITE0;rf_start = 1'b1;endend`P1_WRITE0 : //initial sram from addr 0~1fffbegincount_en = 1'b1;wen_test_inner = {WE_WIDTH{1'b0}};pattern_sel = 1'b0;if (test_addr == {ADDR_WIDTH{1'b1}} ) beginnstate = `IDEL2;test_addr_rst = 1'b1;up1_down0 = 1'b0;endend`IDEL2 :beginpattern_sel = 1'b0;up1_down0 = 1'b0;test_addr_rst = 1'b1; nstate = `P2_READ0;end`P2_READ0 :beginnstate = `P2_COMPARE0;end`P2_COMPARE0 : //compare all "0" data after read from addr 0~1fffbeginpattern_sel = 1'b0;check_en = 1'b1;nstate = `P2_WRITE1;end`P2_WRITE1 : //all "1" write test from addr 1fff~0beginup1_down0 = 1'b0;count_en = 1'b1;wen_test_inner = {WE_WIDTH{1'b0}};pattern_sel = 1'b1;if (test_addr == {ADDR_WIDTH{1'b0}}) beginnstate = `IDEL3;test_addr_rst = 1'b1;up1_down0 = 1'b1;endelsenstate = `P2_READ0;end`IDEL3 :beginpattern_sel = 1'b1;test_addr_rst = 1'b1;nstate = `P3_READ1;end`P3_READ1 :beginnstate = `P3_COMPARE1;end`P3_COMPARE1 : //compare all "1" data after read from addr 1fff~0beginpattern_sel = 1'b1;check_en = 1'b1;nstate = `P3_WRITE0;end`P3_WRITE0 :beginwen_test_inner = {WE_WIDTH{1'b0}};pattern_sel = 1'b0;nstate = `P3_READ0;end`P3_READ0 :beginnstate = `P3_COMPARE0;end`P3_COMPARE0 :beginpattern_sel = 1'b0;check_en = 1'b1;nstate = `P3_WRITE1;end`P3_WRITE1 :beginwen_test_inner = {WE_WIDTH{1'b0}};pattern_sel = 1'b1;count_en = 1'b1;if (test_addr == {ADDR_WIDTH{1'b1}}) beginnstate = `IDEL4;test_addr_rst = 1'b1;endelsenstate = `P3_READ1;end`IDEL4 : // read all data from addr 1fff~0 and compare with write data "1" every time beginpattern_sel = 1'b1;test_addr_rst = 1'b1;nstate = `P4_READ1;end`P4_READ1 :beginnstate = `P4_COMPARE1;end`P4_COMPARE1 :beginpattern_sel = 1'b1;check_en = 1'b1;nstate = `P4_WRITE0;end`P4_WRITE0 :beginwen_test_inner = {WE_WIDTH{1'b0}};pattern_sel = 1'b0;count_en = 1'b1;if (test_addr == {ADDR_WIDTH{1'b1}}) beginnstate = `IDEL5;test_addr_rst = 1'b1;endelse nstate = `P4_READ1;end`IDEL5 : // read all data from addr 1fff~0 and compare with write data "0" every time beginpattern_sel = 1'b1;test_addr_rst = 1'b1;nstate = `P5_READ0;end`P5_READ0 :beginnstate = `P5_COMPARE0;end`P5_COMPARE0 :beginpattern_sel=1'b0;check_en=1'b1;nstate = `P5_WRITE1;end`P5_WRITE1 :beginwen_test_inner = {WE_WIDTH{1'b0}};pattern_sel = 1'b1;nstate = `P5_READ1;end`P5_READ1 :beginnstate = `P5_COMPARE1;end`P5_COMPARE1 :beginpattern_sel=1'b1;check_en=1'b1;nstate = `P5_WRITE0;end`P5_WRITE0 :beginwen_test_inner = {WE_WIDTH{1'b0}};pattern_sel = 1'b0;count_en = 1'b1;if (test_addr == {ADDR_WIDTH{1'b1}}) beginnstate = `IDEL6;test_addr_rst = 1'b1;endelsenstate = `P5_READ0;end`IDEL6 :beginpattern_sel = 1'b0;test_addr_rst = 1'b1;nstate = `P6_READ0;end`P6_READ0 :beginnstate = `P6_COMPARE0;end`P6_COMPARE0 :beginpattern_sel = 1'b0;check_en = 1'b1;count_en = 1'b1;if (test_addr == {ADDR_WIDTH{1'b1}}) beginnstate = `IDEL1;test_addr_rst = 1'b1;r_end_en = 1'b1;endelsenstate = `P6_READ0;enddefault :beginnstate = `IDEL1;test_addr_rst = 1'b1;end endcaseendendmodule

RA1SH.v

module RA1SH ( //8KQ,CLK,CEN,WEN,A,D,OEN );parameter BITS = 8;parameter word_depth = 8192;parameter addr_width = 13;parameter wordx = {BITS{1'bx}};parameter addrx = {addr_width{1'bx}};output [BITS-1:0] Q;input CLK;input CEN;input WEN;input [addr_width-1:0] A;input [BITS-1:0] D;input OEN;reg [BITS-1:0] mem [word_depth-1:0];reg NOT_CEN;reg NOT_WEN;reg NOT_A0;reg NOT_A1;reg NOT_A2;reg NOT_A3;reg NOT_A4;reg NOT_A5;reg NOT_A6;reg NOT_A7;reg NOT_A8;reg NOT_A9;reg NOT_A10;reg NOT_A11;reg NOT_A12;reg [addr_width-1:0] NOT_A;reg NOT_D0;reg NOT_D1;reg NOT_D2;reg NOT_D3;reg NOT_D4;reg NOT_D5;reg NOT_D6;reg NOT_D7;reg [BITS-1:0] NOT_D;reg NOT_CLK_PER;reg NOT_CLK_MINH;reg NOT_CLK_MINL;reg LAST_NOT_CEN;reg LAST_NOT_WEN;reg [addr_width-1:0] LAST_NOT_A;reg [BITS-1:0] LAST_NOT_D;reg LAST_NOT_CLK_PER;reg LAST_NOT_CLK_MINH;reg LAST_NOT_CLK_MINL;wire [BITS-1:0] _Q;wire _OENi;wire [addr_width-1:0] _A;wire _CLK;wire _CEN;wire _OEN;wire _WEN;wire [BITS-1:0] _D;wire re_flag;wire re_data_flag;reg LATCHED_CEN;reg LATCHED_WEN;reg [addr_width-1:0] LATCHED_A;reg [BITS-1:0] LATCHED_D;reg CENi;reg WENi;reg [addr_width-1:0] Ai;reg [BITS-1:0] Di;reg [BITS-1:0] Qi;reg [BITS-1:0] LAST_Qi;reg LAST_CLK;task update_notifier_buses;beginNOT_A = {NOT_A12,NOT_A11,NOT_A10,NOT_A9,NOT_A8,NOT_A7,NOT_A6,NOT_A5,NOT_A4,NOT_A3,NOT_A2,NOT_A1,NOT_A0};NOT_D = {NOT_D7,NOT_D6,NOT_D5,NOT_D4,NOT_D3,NOT_D2,NOT_D1,NOT_D0};endendtasktask mem_cycle;begincasez({WENi,CENi})2'b10: beginread_mem(1,0);end2'b00: beginwrite_mem(Ai,Di);read_mem(0,0);end2'b?1: ;2'b1x: beginread_mem(0,1);end2'bx0: beginwrite_mem_x(Ai);read_mem(0,1);end2'b0x,2'bxx: beginwrite_mem_x(Ai);read_mem(0,1);endendcaseendendtasktask update_last_notifiers;beginLAST_NOT_A = NOT_A;LAST_NOT_D = NOT_D;LAST_NOT_WEN = NOT_WEN;LAST_NOT_CEN = NOT_CEN;LAST_NOT_CLK_PER = NOT_CLK_PER;LAST_NOT_CLK_MINH = NOT_CLK_MINH;LAST_NOT_CLK_MINL = NOT_CLK_MINL;endendtasktask latch_inputs;beginLATCHED_A = _A ;LATCHED_D = _D ;LATCHED_WEN = _WEN ;LATCHED_CEN = _CEN ;LAST_Qi = Qi;endendtasktask update_logic;beginCENi = LATCHED_CEN;WENi = LATCHED_WEN;Ai = LATCHED_A;Di = LATCHED_D;endendtasktask x_inputs;integer n;beginfor (n=0; n<addr_width; n=n+1)beginLATCHED_A[n] = (NOT_A[n]!==LAST_NOT_A[n]) ? 1'bx : LATCHED_A[n] ;endfor (n=0; n<BITS; n=n+1)beginLATCHED_D[n] = (NOT_D[n]!==LAST_NOT_D[n]) ? 1'bx : LATCHED_D[n] ;endLATCHED_WEN = (NOT_WEN!==LAST_NOT_WEN) ? 1'bx : LATCHED_WEN ;LATCHED_CEN = (NOT_CEN!==LAST_NOT_CEN) ? 1'bx : LATCHED_CEN ;endendtasktask read_mem;input r_wb;input xflag;beginif (r_wb)beginif (valid_address(Ai))beginQi=mem[Ai];endelsebeginQi=wordx;endendelsebeginif (xflag)beginQi=wordx;endelsebeginQi=Di;endendendendtasktask write_mem;input [addr_width-1:0] a;input [BITS-1:0] d;begincasez({valid_address(a)})1'b0: x_mem;1'b1: mem[a]=d;endcaseendendtasktask write_mem_x;input [addr_width-1:0] a;begincasez({valid_address(a)})1'b0: x_mem;1'b1: mem[a]=wordx;endcaseendendtasktask x_mem;integer n;beginfor (n=0; n<word_depth; n=n+1)mem[n]=wordx;endendtasktask process_violations;beginif ((NOT_CLK_PER!==LAST_NOT_CLK_PER) ||(NOT_CLK_MINH!==LAST_NOT_CLK_MINH) ||(NOT_CLK_MINL!==LAST_NOT_CLK_MINL))beginif (CENi !== 1'b1)beginx_mem;read_mem(0,1);endendelsebeginupdate_notifier_buses;x_inputs;update_logic;mem_cycle;endupdate_last_notifiers;endendtaskfunction valid_address;input [addr_width-1:0] a;beginvalid_address = (^(a) !== 1'bx);endendfunctionbufif0 (Q[0], _Q[0], _OENi);bufif0 (Q[1], _Q[1], _OENi);bufif0 (Q[2], _Q[2], _OENi);bufif0 (Q[3], _Q[3], _OENi);bufif0 (Q[4], _Q[4], _OENi);bufif0 (Q[5], _Q[5], _OENi);bufif0 (Q[6], _Q[6], _OENi);bufif0 (Q[7], _Q[7], _OENi);buf (_D[0], D[0]);buf (_D[1], D[1]);buf (_D[2], D[2]);buf (_D[3], D[3]);buf (_D[4], D[4]);buf (_D[5], D[5]);buf (_D[6], D[6]);buf (_D[7], D[7]);buf (_A[0], A[0]);buf (_A[1], A[1]);buf (_A[2], A[2]);buf (_A[3], A[3]);buf (_A[4], A[4]);buf (_A[5], A[5]);buf (_A[6], A[6]);buf (_A[7], A[7]);buf (_A[8], A[8]);buf (_A[9], A[9]);buf (_A[10], A[10]);buf (_A[11], A[11]);buf (_A[12], A[12]);buf (_CLK, CLK);buf (_WEN, WEN);buf (_OEN, OEN);buf (_CEN, CEN);assign _OENi = _OEN;assign _Q = Qi;assign re_flag = !(_CEN);assign re_data_flag = !(_CEN || _WEN);always @(NOT_A0 orNOT_A1 orNOT_A2 orNOT_A3 orNOT_A4 orNOT_A5 orNOT_A6 orNOT_A7 orNOT_A8 orNOT_A9 orNOT_A10 orNOT_A11 orNOT_A12 orNOT_D0 orNOT_D1 orNOT_D2 orNOT_D3 orNOT_D4 orNOT_D5 orNOT_D6 orNOT_D7 orNOT_WEN orNOT_CEN orNOT_CLK_PER orNOT_CLK_MINH orNOT_CLK_MINL)beginprocess_violations;endalways @( _CLK )begincasez({LAST_CLK,_CLK})2'b01: beginlatch_inputs;update_logic;mem_cycle;end2'b10,2'bx?,2'b00,2'b11: ;2'b?x: beginx_mem;read_mem(0,1);endendcaseLAST_CLK = _CLK;endspecify $setuphold(posedge CLK, CEN, 1.000, 0.500, NOT_CEN);$setuphold(posedge CLK &&& re_flag, WEN, 1.000, 0.500, NOT_WEN);$setuphold(posedge CLK &&& re_flag, A[0], 1.000, 0.500, NOT_A0);$setuphold(posedge CLK &&& re_flag, A[1], 1.000, 0.500, NOT_A1);$setuphold(posedge CLK &&& re_flag, A[2], 1.000, 0.500, NOT_A2);$setuphold(posedge CLK &&& re_flag, A[3], 1.000, 0.500, NOT_A3);$setuphold(posedge CLK &&& re_flag, A[4], 1.000, 0.500, NOT_A4);$setuphold(posedge CLK &&& re_flag, A[5], 1.000, 0.500, NOT_A5);$setuphold(posedge CLK &&& re_flag, A[6], 1.000, 0.500, NOT_A6);$setuphold(posedge CLK &&& re_flag, A[7], 1.000, 0.500, NOT_A7);$setuphold(posedge CLK &&& re_flag, A[8], 1.000, 0.500, NOT_A8);$setuphold(posedge CLK &&& re_flag, A[9], 1.000, 0.500, NOT_A9);$setuphold(posedge CLK &&& re_flag, A[10], 1.000, 0.500, NOT_A10);$setuphold(posedge CLK &&& re_flag, A[11], 1.000, 0.500, NOT_A11);$setuphold(posedge CLK &&& re_data_flag, D[0], 1.000, 0.500, NOT_D0);$setuphold(posedge CLK &&& re_data_flag, D[1], 1.000, 0.500, NOT_D1);$setuphold(posedge CLK &&& re_data_flag, D[2], 1.000, 0.500, NOT_D2);$setuphold(posedge CLK &&& re_data_flag, D[3], 1.000, 0.500, NOT_D3);$setuphold(posedge CLK &&& re_data_flag, D[4], 1.000, 0.500, NOT_D4);$setuphold(posedge CLK &&& re_data_flag, D[5], 1.000, 0.500, NOT_D5);$setuphold(posedge CLK &&& re_data_flag, D[6], 1.000, 0.500, NOT_D6);$setuphold(posedge CLK &&& re_data_flag, D[7], 1.000, 0.500, NOT_D7);$period(posedge CLK, 3.000, NOT_CLK_PER);$width(posedge CLK, 1.000, 0, NOT_CLK_MINH);$width(negedge CLK, 1.000, 0, NOT_CLK_MINL);(CLK => Q[0])=(1.000, 1.000, 0.500, 1.000, 0.500, 1.000);(CLK => Q[1])=(1.000, 1.000, 0.500, 1.000, 0.500, 1.000);(CLK => Q[2])=(1.000, 1.000, 0.500, 1.000, 0.500, 1.000);(CLK => Q[3])=(1.000, 1.000, 0.500, 1.000, 0.500, 1.000);(CLK => Q[4])=(1.000, 1.000, 0.500, 1.000, 0.500, 1.000);(CLK => Q[5])=(1.000, 1.000, 0.500, 1.000, 0.500, 1.000);(CLK => Q[6])=(1.000, 1.000, 0.500, 1.000, 0.500, 1.000);(CLK => Q[7])=(1.000, 1.000, 0.500, 1.000, 0.500, 1.000);(OEN => Q[0])=(1.000, 1.000, 1.000, 1.000, 1.000, 1.000);(OEN => Q[1])=(1.000, 1.000, 1.000, 1.000, 1.000, 1.000);(OEN => Q[2])=(1.000, 1.000, 1.000, 1.000, 1.000, 1.000);(OEN => Q[3])=(1.000, 1.000, 1.000, 1.000, 1.000, 1.000);(OEN => Q[4])=(1.000, 1.000, 1.000, 1.000, 1.000, 1.000);(OEN => Q[5])=(1.000, 1.000, 1.000, 1.000, 1.000, 1.000);(OEN => Q[6])=(1.000, 1.000, 1.000, 1.000, 1.000, 1.000);(OEN => Q[7])=(1.000, 1.000, 1.000, 1.000, 1.000, 1.000);endspecify endmodule

后記

這是AHB-SRAM項目中,內部模塊sram_core.v的所有文件,如果需要跳轉到查看此項目的架構,請點擊跳轉
AHB-SRAM簡單設計之架構圖解

筆者是小白,自學輸出過程中,難免有錯誤,請大家指正!

總結

以上是生活随笔為你收集整理的AHB-SRAM简单设计之内部模块 sram_core.v的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

国产视频1区2区3区 久久夜视频 | 久久99亚洲精品 | 久久国内精品视频 | 日韩一区二区三区免费电影 | 日韩在线资源 | 免费看的黄色的网站 | av看片在线 | 欧美激情另类文学 | 在线亚洲天堂网 | 亚洲精品www | 在线成人性视频 | 天天爱天天草 | 99精品免费久久久久久日本 | 久草精品视频在线观看 | 在线免费中文字幕 | 国产国语在线 | 色婷婷福利 | 日韩中文在线播放 | 91av视屏| 久草在线资源网 | 亚洲精品成人免费 | 国产成人精品999在线观看 | 黄色一级网 | 91视频在线播放视频 | av大全在线播放 | 三级黄免费看 | 在线黄色国产电影 | 久久成年人视频 | 视频在线91 | 国产成人一区二区三区在线观看 | 欧美日韩不卡一区二区三区 | 国产精品女教师 | 少妇性xxx | 亚洲综合激情网 | 天天天综合 | 日韩高清在线一区二区 | 国产又粗又硬又爽视频 | 麻豆影视网 | 毛片精品免费在线观看 | 丝袜制服天堂 | 国产福利在线 | 国产精品久久久久久久久久久杏吧 | 美女在线黄 | 四虎影视成人精品国库在线观看 | 97视频总站 | 国产精品久久久久久久久毛片 | 中文字幕在线精品 | 欧美精品久久 | 1024久久| 色婷婷国产精品 | 国产一级久久 | 国产精品专区h在线观看 | 国产精品欧美激情在线观看 | 国产夫妻性生活自拍 | 欧美精品久久 | 中文字幕在线网址 | 99久久综合精品五月天 | 波多野结衣电影一区二区三区 | 国产成人精品一区二区在线 | 色干干 | 久草剧场| 成人国产精品一区二区 | 最近av在线 | 久草在线视频在线观看 | 成年人天堂com| 黄色三级在线观看 | 一区二区久久久久 | 国产麻豆电影在线观看 | 精品久久久一区二区 | 丁香六月久久综合狠狠色 | 欧美日韩视频观看 | 免费三级av | 欧美色图亚洲图片 | 亚洲精品一区二区在线观看 | 国产精品99久久久 | 伊人天天干 | 黄色在线观看www | 亚洲精品乱码久久久久久蜜桃动漫 | 国产99久久久国产精品免费二区 | 免费黄av| 亚洲精品www久久久 www国产精品com | 精品 激情 | 日日干视频 | 五月天婷亚洲天综合网精品偷 | 91在线观看黄 | 天天综合色 | av在线日韩| 中文字幕欧美日韩va免费视频 | 射久久久 | 亚洲视频精品 | 欧洲一区二区三区精品 | 国产96在线观看 | 久久手机免费观看 | 在线精品视频免费播放 | 懂色av一区二区在线播放 | 精品久久久久久一区二区里番 | 日韩剧情| 在线免费黄色 | 国产日韩高清在线 | 最新色站 | 免费视频区| 91亚洲精品在线观看 | 日韩sese| 国产在线视频资源 | 在线亚洲成人 | 国产精品久久久久久久久久久久久久 | 日韩av一卡二卡三卡 | 久久深爱网 | 探花系列在线 | 亚洲人人射| 久久在现视频 | 国产精品尤物 | 97超碰人人模人人人爽人人爱 | 成人免费视频播放 | 国产精品理论片在线观看 | 亚洲国产中文字幕 | 青春草视频在线播放 | 97色婷婷人人爽人人 | 久久精品三级 | 国产自制av | 国产美腿白丝袜足在线av | 麻豆影视在线免费观看 | 日韩电影在线看 | 国产无限资源在线观看 | 欧美在线一二 | 日韩肉感妇bbwbbwbbw | 国产尤物视频在线 | 欧美一区二区三区免费观看 | 亚洲天堂网在线播放 | 日韩av免费一区 | 亚洲三级av | 亚洲精品美女在线观看播放 | 亚洲精品看片 | 中文字幕电影网 | 久久久精品国产一区二区三区 | 日韩精品中文字幕在线 | 日韩欧美视频在线播放 | 日本三级人妇 | 99免费在线观看视频 | 五月天久久狠狠 | 欧美日韩高清不卡 | 免费黄色在线网站 | 五月激情天 | 色综合天天色综合 | 欧美黑吊大战白妞欧美 | 五月天综合在线 | 欧美 高跟鞋交 xxxxhd | 国产日韩欧美视频在线观看 | 四川bbb搡bbb爽爽视频 | 国产综合精品一区二区三区 | 在线看片一区 | 精品国产日本 | 黄色大全免费观看 | 色九九在线 | 久久视频国产精品免费视频在线 | 久久久久伊人 | 波多野结衣一区二区三区中文字幕 | 欧美极品xxx| 黄色三级av | 日韩在线观看电影 | av大全在线 | 一本一本久久aa综合精品 | 免费在线国产视频 | 99热九九这里只有精品10 | 亚洲视频,欧洲视频 | 精品免费一区 | 91禁在线观看 | 久久成人资源 | 国产99视频在线观看 | 成人国产精品入口 | 在线国产日韩 | 91av中文字幕 | 99福利影院 | av无限看| 婷婷五月色综合 | 狠日日| 国内综合精品午夜久久资源 | a在线视频v视频 | 521色香蕉网站在线观看 | 日韩免费视频在线观看 | 一级黄色片在线免费看 | 午夜久久福利 | 一区 在线观看 | 男女激情麻豆 | 97国产大学生情侣酒店的特点 | 免费视频一级片 | 色.www| 一二区av | 精品免费国产一区二区三区四区 | 午夜精品久久久99热福利 | 国内精品久久久久久中文字幕 | 日日草夜夜操 | 国产精品久久久久久久久久三级 | 久草在线手机观看 | 亚洲美女免费精品视频在线观看 | 91污视频在线观看 | 久久综合中文字幕 | 国产精久久久 | 亚洲一二三久久 | 成人精品久久 | 国产精品美女免费 | 久久试看 | 97超碰人人澡人人爱 | 人成在线免费视频 | 999国内精品永久免费视频 | 国产精品久久久久久一区二区 | 福利电影久久 | 88av视频| 免费久久网站 | 国产色拍拍拍拍在线精品 | 国产日韩中文字幕 | 久99久视频 | 干干干操操操 | 色视频在线免费观看 | 高清av网站| 国产精品6 | 91麻豆精品国产自产在线游戏 | 久久国产精品区 | 国产精品女人久久久 | 免费在线色视频 | 九草在线观看 | 黄色成人av在线 | 色偷偷网站视频 | 水蜜桃亚洲一二三四在线 | 狠狠网亚洲精品 | 欧美日韩在线精品一区二区 | 在线亚洲天堂网 | av先锋影音少妇 | 亚洲欧美少妇 | 亚洲精品免费观看视频 | 欧美一级黄大片 | 最近久乱中文字幕 | 国产破处在线视频 | 国产看片免费 | 国产精品成人免费精品自在线观看 | 国产日本三级 | 天天射天天艹 | 日韩电影精品一区 | 久久人人爽人人爽人人片av免费 | 国产日韩中文字幕在线 | 亚洲高清视频在线播放 | 久久夜色精品国产欧美乱极品 | 99性视频 | 91丨九色丨国产在线 | 国产成人精品一区二区在线观看 | 区一区二区三在线观看 | 色www精品视频在线观看 | 久久精品欧美一区 | 就操操久久 | 91久久国产综合精品女同国语 | 免费一级特黄毛大片 | 欧美午夜精品久久久久久浪潮 | 精品999国产| av超碰在线观看 | 国产精品免费视频久久久 | 亚洲一区精品人人爽人人躁 | 精品国产乱码久久久久久1区2匹 | 伊人狠狠色丁香婷婷综合 | 中文字幕在线影视资源 | 免费网站在线观看人 | avwww在线观看| 夜夜夜精品 | 日韩在线视频一区二区三区 | 成人午夜片av在线看 | 最近中文字幕国语免费av | 久久久久国产一区二区 | 国产真实在线 | 色网站视频 | 久久亚洲专区 | 国产高清精品在线观看 | 国产欧美精品一区二区三区 | 黄色av成人在线观看 | 国产精品久久一区二区三区不卡 | 国产手机视频精品 | 日本特黄一级 | 欧美一级免费黄色片 | 亚洲综合精品视频 | 久久情网 | 91私密视频| 六月天色婷婷 | 一区二区三区视频网站 | 成人精品亚洲 | 天天色视频 | 成人av一区二区在线观看 | 欧美精品在线视频 | 99这里都是精品 | 99精品视频在线观看播放 | 欧美夫妻性生活电影 | 亚洲精品国产免费 | 亚洲日韩中文字幕 | 久久精品电影院 | 久草在线免费资源站 | 亚洲黄色免费观看 | 天天操天天干天天爱 | 欧美一级裸体视频 | 久久精品国产精品亚洲 | 中文字幕一二三区 | 午夜国产一区二区三区四区 | av在线电影播放 | 玖玖视频 | 亚洲人天堂 | 午夜久久久久久久久久影院 | 国产精品久久久久久一二三四五 | 看av免费网站 | 最近日本字幕mv免费观看在线 | 亚洲第一香蕉视频 | 色av色av色av | 456成人精品影院 | 国产色影院 | 久久精品系列 | 国产精品毛片一区二区三区 | 国产精品第2页 | 又长又大又黑又粗欧美 | 丁香婷婷色 | 国产区久久 | 中文在线天堂资源 | adn—256中文在线观看 | 97天天综合网 | 天天操天天操天天操天天操天天操天天操 | 久久国产免费视频 | 成人黄色片在线播放 | 在线午夜av | 狠狠躁夜夜躁人人爽超碰97香蕉 | 日日操夜| 久久毛片网站 | 国产高清视频免费最新在线 | 中文字幕视频在线播放 | 国产色拍拍拍拍在线精品 | 91成人午夜 | 狠狠色狠狠色合久久伊人 | 国产一区二区手机在线观看 | 久久电影日韩 | 婷婷在线免费 | 999久久久久久久久 69av视频在线观看 | 午夜在线免费视频 | 欧美日视频 | 欧美性生交大片免网 | 国产精品区二区三区日本 | 日韩免费电影在线观看 | 国产男女无遮挡猛进猛出在线观看 | 免费久久99精品国产婷婷六月 | 午夜精品久久久久久久99 | 国产精品成人一区 | 日本性视频 | 久久久91精品国产一区二区精品 | 成年人黄色免费网站 | 中文字幕国产 | 国产精品成人自产拍在线观看 | 91精品老司机久久一区啪 | 久久久久久久久久久久影院 | 超级碰碰碰碰 | 一区二区三区免费在线观看视频 | 成年免费在线视频 | 青青啪 | 国产视频网站在线观看 | 国产精品原创 | 色妞色视频一区二区三区四区 | 天天操天天操天天操天天操天天操 | 午夜av网站 | 日韩一区二区三区在线观看 | 欧美成人黄色 | 五月激情av | 在线日韩| 久久久99精品免费观看乱色 | 亚洲国产一二三 | 天操夜夜操 | 亚洲最新av网址 | 欧美五月婷婷 | 亚洲美女精品区人人人人 | 亚洲精品综合久久 | 在线不卡中文字幕播放 | 婷婷视频 | 免费福利在线观看 | 国产精品理论片在线播放 | 精品国自产在线观看 | 香蕉视频啪啪 | 国产 字幕 制服 中文 在线 | 91探花在线 | 成人免费在线观看入口 | 五月天丁香综合 | 精品一区二区在线免费观看 | 成人av免费在线播放 | 国产最新在线视频 | 五月婷婷六月丁香在线观看 | 久久久久久久久久免费视频 | 国产精品一区二区三区99 | 国产精品女主播一区二区三区 | 久久久久久久网 | 一区二区久久 | 中文字幕av在线 | 亚洲成人av一区二区 | 99精品国产成人一区二区 | 亚洲天堂色婷婷 | 在线视频日韩一区 | 一区二区三区四区五区在线 | www.伊人色.com| 国产精品尤物 | 国产一区二区观看 | 国产欧美综合在线观看 | 亚洲综合欧美精品电影 | 精品一区二区三区香蕉蜜桃 | 国产精品久久久久久久久久久久午夜片 | 91自拍91| 免费美女久久99 | 日韩黄色免费在线观看 | 最新超碰在线 | 婷婷精品国产一区二区三区日韩 | 日韩在线视频看看 | 久久久久久高潮国产精品视 | 99精品在线免费 | 国产精品2019 | 日本成人免费在线观看 | 久久色视频 | 国产一级视频在线免费观看 | 国产精品久久视频 | 亚洲另类交 | 中文字幕在线专区 | 91一区在线观看 | 午夜一级免费电影 | av中文字幕网址 | av动图| 日本成人免费在线观看 | 亚洲精品乱码久久久久久久久久 | a黄色影院| 国产精品视频免费 | 99久久精品无免国产免费 | 色婷婷久久 | av片子在线观看 | 在线观看91精品视频 | 99久久精品国产免费看不卡 | 日日夜夜天天射 | 狂野欧美激情性xxxx | 国产成人福利片 | 国产美女视频网站 | 97av视频| 韩国精品一区二区三区六区色诱 | 天天综合网 天天综合色 | 久久字幕精品一区 | 国产精品午夜久久久久久99热 | 超碰人人在线观看 | 99久久久国产精品美女 | 日韩免费一级电影 | 日韩av美女| av导航福利 | 免费开视频 | 人人精品| 81国产精品久久久久久久久久 | 欧美性黑人| 天天综合天天做天天综合 | 精品免费视频. | 日韩视频图片 | 黄色大片av| 国产精品久久一区二区三区, | 婷婷免费视频 | 免费观看9x视频网站在线观看 | 国产中文字幕网 | 欧美在线视频免费 | 91在线影院| 亚洲一区网 | 五月天六月婷 | 久久99精品久久久久久久久久久久 | 日韩剧| 天天操天天添天天吹 | 国产一级特黄电影 | 免费成人在线视频网站 | 亚洲国产字幕 | 九九在线免费视频 | 这里有精品在线视频 | 另类老妇性bbwbbw高清 | 国产日韩精品在线 | 四虎成人免费观看 | 久久成人高清视频 | 国产亚洲精品久久久久久 | 国产黄色在线网站 | 亚洲在线看 | 国产精品美女视频 | 精品久久久久久一区二区里番 | 精品国产成人 | 日韩sese| 27xxoo无遮挡动态视频 | 久久久性 | 欧美综合在线视频 | 最新国产在线视频 | 国产精品不卡在线播放 | 欧洲精品久久久久毛片完整版 | 免费毛片aaaaaa | 亚洲在线资源 | 在线激情av电影 | 四虎免费在线观看 | 欧美最新大片在线看 | 国产成人久久av免费高清密臂 | 永久免费精品视频 | 91视频链接| 国产黄色理论片 | 97色资源 | av丝袜在线 | 精品国产亚洲在线 | 久草在线视频国产 | 国产亚洲精品久久久久5区 成人h电影在线观看 | 亚洲精品视频一 | av免费电影在线 | 九九九九免费视频 | 国产手机视频在线播放 | 久久精品免费观看 | 91麻豆精品国产91久久久更新时间 | 美女视频黄的免费的 | 免费在线观看不卡av | 最近中文国产在线视频 | 激情久久五月天 | 亚洲一区二区三区精品在线观看 | 992tv人人网tv亚洲精品 | 黄色特级片 | 91av播放| 在线观看国产一区二区 | 午夜av在线免费 | 成人免费观看视频网站 | 国产va在线观看免费 | 日韩亚洲欧美中文字幕 | 国产精品久久久久久久久久妇女 | 99热精品久久 | 国产成人高清 | 亚洲国产日韩在线 | 综合五月| 黄色大全免费网站 | 日韩电影在线视频 | 国产亚洲精品久久久久久移动网络 | 国产一区播放 | 久久婷亚洲五月一区天天躁 | av激情五月 | 亚洲 欧美 综合 在线 精品 | 国产亚洲精品久久19p | 久草在线视频在线观看 | 精品国产一区二区三区久久久蜜月 | 免费看黄电影 | 久久久久观看 | 欧美成人一区二区 | 亚洲一区二区视频 | 国产一级黄色片免费看 | 久久久久久久久久久网 | 日韩二区三区在线 | 久久综合久久综合久久综合 | 色婷婷六月天 | 91av精品 | 一区二区国产精品 | 九九热av | av片子在线观看 | 91福利视频一区 | 三级av在线免费观看 | 欧美一级日韩免费不卡 | 色婷婷狠 | 久久久国产电影 | 人人爽人人爽人人爽人人爽 | 精品国产视频在线 | 亚洲精品男女 | av片一区| 亚洲成 人精品 | av在线网站观看 | 在线高清| 国产精品视频免费观看 | 夜夜视频资源 | 久草观看 | 日韩午夜视频在线观看 | 国产小视频网站 | 亚洲高清网站 | 国产美腿白丝袜足在线av | 日韩h在线观看 | av高清在线观看 | 日韩在线免费观看视频 | 久久国产精品成人免费浪潮 | 亚洲精品乱码白浆高清久久久久久 | 五月婷婷天堂 | 久久久久免费视频 | 西西444www大胆高清图片 | 91丨九色丨首页 | 国产视频1 | 成人三级网址 | 97精品一区 | 成人免费视频网站 | 中文字幕在线观看日本 | 久草久| 九九热在线观看 | 欧美色伊人 | 一区二区三区日韩视频在线观看 | 亚洲精品大片www | 中文字幕亚洲欧美日韩 | 97热在线观看 | 美女黄网站视频免费 | 久久国产美女 | 激情av五月婷婷 | 日本中文字幕久久 | av品善网| 国产成人性色生活片 | 亚洲黄色在线 | 天天操天天操天天操天天操 | 91在线网址 | 国产高清无线码2021 | 成人午夜剧场在线观看 | 色综合天天在线 | 成 人 黄 色 视频免费播放 | 99久久精品免费视频 | 国产精品一区免费看8c0m | 久久久久久久久久免费 | 狠狠狠色丁香婷婷综合久久88 | 91在线中文 | 天天插天天色 | 欧美成人高清 | 精品久久网 | 国语精品免费视频 | 五月婷久久 | av网站在线观看免费 | 96精品高清视频在线观看软件特色 | 午夜视频黄 | 久久久久久久久久网 | 综合国产在线 | 中文字幕一区在线观看视频 | 色资源二区在线视频 | 免费网站v| 亚洲精欧美一区二区精品 | 国内成人精品视频 | 成人久久网 | 精品国产理论片 | 久久狠狠亚洲综合 | 日韩高清av | 日韩三级.com| 国产精品久久久久aaaa九色 | 欧美日韩精品影院 | 久久视频免费观看 | 91精品在线免费观看视频 | 一区二区三区四区五区六区 | 99精品视频在线观看 | 二区在线播放 | 毛片网站在线看 | 亚洲一区二区三区四区在线视频 | 黄色亚洲 | 日日碰狠狠添天天爽超碰97久久 | 91视频 - 114av | 黄色免费在线看 | 亚洲欧洲中文日韩久久av乱码 | 欧美亚洲久久 | 91精品色 | 国精产品999国精产品岳 | 国产九九九九九 | 五月激情五月激情 | 免费高清无人区完整版 | 一区二区三区四区精品视频 | 看片一区二区三区 | 国产大陆亚洲精品国产 | 看片黄网站 | 国产精品一区二区三区99 | 97超碰在线久草超碰在线观看 | 国产一级视频在线观看 | 黄色小网站免费看 | 成人亚洲精品久久久久 | 九九99 | 福利一区在线视频 | 日韩天堂在线观看 | 国产精品成人自产拍在线观看 | 狠狠色网 | 一区二区 精品 | 欧美日韩一级久久久久久免费看 | 成人网页在线免费观看 | 黄色小说在线观看视频 | 久久人人爽人人爽人人片av软件 | 亚洲午夜小视频 | 欧美日本日韩aⅴ在线视频 插插插色综合 | se视频网址 | 日夜夜精品视频 | 一区在线观看视频 | 国产高清中文字幕 | 久久午夜精品视频 | 久久人人爽人人人人片 | 一级黄网 | 最近中文字幕国语免费高清6 | 蜜臀av夜夜澡人人爽人人 | 欧美日韩另类在线观看 | 国产原创在线 | 久久综合激情 | 久草在线视频精品 | 日日噜噜噜噜夜夜爽亚洲精品 | 久久激五月天综合精品 | 日韩免费av片 | 天天操天天色天天 | 最新免费av在线 | 91精品国产成人观看 | 久久精品欧美一区 | 亚洲精品国产精品国自产在线 | 18久久久久久| 少妇精品久久久一区二区免费 | 国产一区免费观看 | 久久成人欧美 | 欧美精品久久久久久久亚洲调教 | 久久午夜鲁丝片 | 四虎影视精品成人 | 人人干,人人爽 | 日韩国产欧美在线播放 | 久久亚洲人 | 一区二区三区在线免费播放 | 国产精品久久99综合免费观看尤物 | 久久精品老司机 | 精品在线观看免费 | 国产精品久99 | 久亚洲| 涩涩爱夜夜爱 | 午夜黄色大片 | 99久久这里有精品 | 婷婷综合伊人 | 国内精品视频免费 | 91av在线播放视频 | 国产精品99免视看9 国产精品毛片一区视频 | 午夜精品婷婷 | 久久精品这里精品 | 成人亚洲精品国产www | 五月婷婷黄色 | 欧美在线观看视频 | 国产美女主播精品一区二区三区 | 免费91在线| 欧美精品久久久久久久久免 | 欧美一区二区在线免费看 | 黄色国产成人 | 在线你懂的视频 | 又色又爽又黄高潮的免费视频 | 欧美激情第十页 | 97色综合| 国产成人精品电影久久久 | 在线视频久久 | 人人揉人人揉人人揉人人揉97 | 免费精品国产va自在自线 | 深爱激情五月网 | 日韩在线视频观看免费 | 超碰999| 欧美日韩国产在线一区 | 午夜精品福利一区二区三区蜜桃 | 日本高清中文字幕有码在线 | 美女黄频 | 国产精品一区在线 | 伊人久久一区 | 丁香九月激情综合 | 成人三级视频 | 九九久久影院 | 久久影院精品 | 五月色综合 | 色婷婷综合成人av | 天天躁日日躁狠狠躁av麻豆 | 天天骚夜夜操 | 黄色片网站大全 | 精品久久久久久久久久岛国gif | 欧美日韩性视频 | 久久高清国产视频 | 精品视频免费播放 | 久久精品视频99 | 免费在线一区二区三区 | 亚洲精品一区中文字幕乱码 | 国产99久久久国产精品成人免费 | 久久精品香蕉 | 天天天天天天干 | 久久久免费在线观看 | 五月开心激情 | 国产美女精品在线 | 日本最新高清不卡中文字幕 | 亚洲免费在线观看视频 | 国产精品扒开做爽爽的视频 | 亚洲精品福利在线观看 | 日韩在线在线 | 在线观看成年人 | 99久久精品久久久久久动态片 | 亚洲开心色| 久久久久99精品成人片三人毛片 | 波多野结衣资源 | 国产一级黄色av | 日韩电影在线观看一区二区三区 | 国产 成人 久久 | 夜夜夜夜猛噜噜噜噜噜初音未来 | 99热最新精品 | 黄色在线观看免费 | 亚洲美女在线一区 | 免费av高清 | 国产又粗又猛又色又黄网站 | 天天爽网站 | 亚洲高清av| 久草免费电影 | 久久精品8 | 久久久久久久久久电影 | 中文字幕久久精品亚洲乱码 | 69成人在线| 国产一线二线三线性视频 | 亚洲精品乱码久久 | 四虎成人免费观看 | 久久精品xxx| 五月天色站 | 在线看片91| 久久免费美女视频 | 婷婷激情5月天 | 国产在线专区 | 国产精品24小时在线观看 | 毛片永久新网址首页 | 久久玖 | 91精品一区二区三区蜜桃 | 亚洲国产免费看 | 国产精品午夜久久 | 人人干97 | 国产麻豆精品在线观看 | 永久免费在线 | 88av网站| 手机在线观看国产精品 | 国内精品视频一区二区三区八戒 | 国产最新福利 | 精品毛片久久久久久 | 91在线免费播放视频 | 欧美综合在线视频 | 久久免费电影网 | 亚洲激精日韩激精欧美精品 | 亚洲区另类春色综合小说 | 超碰人人乐 | 欧美视频一区二 | 91精品1区2区| 婷婷六月丁香激情 | 奇米影视777四色米奇影院 | 黄色日视频 | 国产剧情亚洲 | 超碰在线97国产 | 国产精品自产拍在线观看桃花 | 一个色综合网站 | 国产精品免费在线 | 欧美一二三四在线 | 中文字幕区 | 99爱视频| 91在线国产观看 | 婷婷色伊人 | 亚洲精品五月天 | a午夜在线 | 99久久日韩精品视频免费在线观看 | 国产不卡在线观看 | 久久99久久99精品免观看粉嫩 | 亚洲视屏 | 国产第一页精品 | 天天艹| 久久成人毛片 | 在线观看一 | 日韩理论电影在线 | 麻豆国产视频 | 激情视频91| 91大神免费视频 | 久久女同性恋中文字幕 | 欧美视频二区 | 日韩特级黄色片 | 99精品国产成人一区二区 | 精品亚洲网 | 91最新在线视频 | av高清不卡 | 成人在线中文字幕 | 国产精品久久久久免费观看 | 亚洲男人天堂a | 亚洲亚洲精品在线观看 | 在线日韩av| 中文字幕国产精品 | 久久久久五月天 | 24小时日本在线www免费的 | 美女视频永久黄网站免费观看国产 | 日韩 国产 | 美女黄网站视频免费 | 日韩中文字幕视频在线观看 | 国产日韩视频在线 | 久草电影在线 | 91视频 - 88av | 国产在线一区观看 | 久久精品免视看 | 久久久久激情 | www.av中文字幕.com | 日韩夜夜爽 | 成人在线电影观看 | 色网站免费在线观看 | 狠狠色丁香久久婷婷综合丁香 | 国产精品亚洲精品 | 久久久久国产一区二区三区四区 | 亚洲精品18日本一区app | 亚洲一区在线看 | 中文字幕 在线看 | 欧美综合在线观看 | 精品国产片 | av免费网 | 国产在线观看你懂的 | 国产在线v| 国产精品久久久久久一二三四五 | 亚洲三级网站 | 西西人体4444www高清视频 | 亚洲精品乱码久久久久v最新版 | 亚洲一二区视频 | 国产视频精品免费播放 | 久久精品视频网址 | 亚洲资源在线观看 | 欧美午夜精品久久久久 | 亚洲精品女人久久久 | 91色欧美| 欧美一二三视频 | 国产精品网站一区二区三区 | 欧美性黑人| 日韩精品免费在线观看 | 免费看黄视频 | 亚洲日本成人网 | 日本精品视频在线 | 久久99国产精品久久99 | 中文字幕一区二区三区在线播放 | 99精品在线免费观看 | 看全黄大色黄大片 | 亚洲色图激情文学 | 在线韩国电影免费观影完整版 | 伊人干综合 | 香蕉视频免费在线播放 | www.久久久.com | 69xxxx欧美| 亚洲黄色软件 | 色99在线| 成人一级片免费看 | 91九色蝌蚪在线 | 日韩电影在线观看一区二区三区 | 天堂网一区二区 | 青青河边草免费视频 | 黄影院| 久久免费视频网站 | 国产精品久久久久久婷婷天堂 | 国产女教师精品久久av | 国产1区在线 | 91精品视频免费看 | 国产精品久久久久国产精品日日 | 国产v视频| 亚洲精品视频在线免费播放 | 99精品福利视频 | 国产成人精品av在线观 | 亚洲视频 视频在线 | 日韩精品免费在线 | 免费观看黄色av | 日韩高清久久 | 国产美女精品视频免费观看 | 中文字幕乱码日本亚洲一区二区 | 成人国产精品久久久春色 | 91精品国产一区二区三区 | 狠狠操狠狠干天天操 | 久久精品一区二区三区中文字幕 | 亚洲一级久久 | 97在线观看免费高清完整版在线观看 | 亚洲欧洲精品一区二区 | 美女视频黄免费的 | 极品中文字幕 | 91国内在线| 亚洲丝袜一区 | 在线观看岛国片 | 久久综合狠狠综合久久狠狠色综合 | 在线免费观看麻豆视频 | 三上悠亚一区二区在线观看 | 午夜av免费看 | 久草在线视频首页 | 黄色亚洲免费 | 婷婷丁香社区 | 久久国产精品99久久久久 | 亚洲视频在线观看 | 精品久久久久久综合日本 | 国产免费激情久久 | 国产精品一区二区果冻传媒 | 免费合欢视频成人app | 成人观看视频 | 日韩网站一区 | 婷婷六月天天 | 久久成人欧美 | 一区二区三区 中文字幕 | 伊人黄色网| 午夜视频在线观看一区二区三区 | 精品电影一区二区 | 亚洲精品久久久久中文字幕二区 | 日本久久久久久科技有限公司 | 国色天香永久免费 | 免费观看久久 | 又黄又爽又无遮挡的视频 | 五月婷婷操 | 精品久久久久久久久亚洲 | 婷婷中文字幕在线观看 | 亚洲欧洲国产日韩精品 | 五月婷婷六月丁香在线观看 | 亚洲色图激情文学 | 99视| 亚洲视频 视频在线 | 在线免费观看国产视频 | 色吊丝在线永久观看最新版本 | 亚洲精品中文在线 | 一区二区三区韩国免费中文网站 | 少妇bbbb揉bbbb日本 | 片黄色毛片黄色毛片 | 91一区啪爱嗯打偷拍欧美 | 亚洲一级二级 | 国产一区二区综合 | 亚洲精品在线一区二区三区 | 免费看色视频 | ww视频在线观看 | 啪啪肉肉污av国网站 | 久久九九免费视频 | 色播五月婷婷 | 久久精品国产一区二区三 | 欧美大片在线观看一区 | 在线观看免费色 |