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

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

?? generic_fifo_sc_a.v

?? USB v1.1 RTL and design specification
?? V
字號:
/////////////////////////////////////////////////////////////////////
////                                                             ////
////  Universal FIFO Single Clock                                ////
////                                                             ////
////                                                             ////
////  Author: Rudolf Usselmann                                   ////
////          rudi@asics.ws                                      ////
////                                                             ////
////                                                             ////
////  D/L from: http://www.opencores.org/cores/generic_fifos/    ////
////                                                             ////
/////////////////////////////////////////////////////////////////////
////                                                             ////
//// Copyright (C) 2000-2002 Rudolf Usselmann                    ////
////                         www.asics.ws                        ////
////                         rudi@asics.ws                       ////
////                                                             ////
//// This source file may be used and distributed without        ////
//// restriction provided that this copyright statement is not   ////
//// removed from the file and that any derivative work contains ////
//// the original copyright notice and the associated disclaimer.////
////                                                             ////
////     THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY     ////
//// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED   ////
//// TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS   ////
//// FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL THE AUTHOR      ////
//// OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,         ////
//// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES    ////
//// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE   ////
//// GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR        ////
//// BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF  ////
//// LIABILITY, WHETHER IN  CONTRACT, STRICT LIABILITY, OR TORT  ////
//// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT  ////
//// OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE         ////
//// POSSIBILITY OF SUCH DAMAGE.                                 ////
////                                                             ////
/////////////////////////////////////////////////////////////////////

//  CVS Log
//
//  $Id: generic_fifo_sc_a.v,v 1.1.1.1 2002/09/25 05:42:06 rudi Exp $
//
//  $Date: 2002/09/25 05:42:06 $
//  $Revision: 1.1.1.1 $
//  $Author: rudi $
//  $Locker:  $
//  $State: Exp $
//
// Change History:
//               $Log: generic_fifo_sc_a.v,v $
//               Revision 1.1.1.1  2002/09/25 05:42:06  rudi
//               Initial Checkin
//
//
//
//
//
//
//
//
//
//
//

`include "timescale.v"

/*

Description
===========

I/Os
----
rst	low active, either sync. or async. master reset (see below how to select)
clr	synchronous clear (just like reset but always synchronous), high active
re	read enable, synchronous, high active
we	read enable, synchronous, high active
din	Data Input
dout	Data Output

full	Indicates the FIFO is full (combinatorial output)
full_r	same as above, but registered output (see note below)
empty	Indicates the FIFO is empty
empty_r	same as above, but registered output (see note below)

full_n		Indicates if the FIFO has space for N entries (combinatorial output)
full_n_r	same as above, but registered output (see note below)
empty_n		Indicates the FIFO has at least N entries (combinatorial output)
empty_n_r	same as above, but registered output (see note below)

level		indicates the FIFO level:
		2'b00	0-25%	 full
		2'b01	25-50%	 full
		2'b10	50-75%	 full
		2'b11	%75-100% full

combinatorial vs. registered status outputs
-------------------------------------------
Both the combinatorial and registered status outputs have exactly the same
synchronous timing. Meaning they are being asserted immediately at the clock
edge after the last read or write. The combinatorial outputs however, pass
through several levels of logic before they are output. The registered status
outputs are direct outputs of a flip-flop. The reason both are provided, is
that the registered outputs require quite a bit of additional logic inside
the FIFO. If you can meet timing of your device with the combinatorial
outputs, use them ! The FIFO will be smaller. If the status signals are
in the critical pass, use the registered outputs, they have a much smaller
output delay (actually only Tcq).

Parameters
----------
The FIFO takes 3 parameters:
dw	Data bus width
aw	Address bus width (Determines the FIFO size by evaluating 2^aw)
n	N is a second status threshold constant for full_n and empty_n
	If you have no need for the second status threshold, do not
	connect the outputs and the logic should be removed by your
	synthesis tool.

Synthesis Results
-----------------
In a Spartan 2e a 8 bit wide, 8 entries deep FIFO, takes 85 LUTs and runs
at about 116 MHz (IO insertion disabled). The registered status outputs
are valid after 2.1NS, the combinatorial once take out to 6.5 NS to be
available.


Misc
----
This design assumes you will do appropriate status checking externally.

IMPORTANT ! writing while the FIFO is full or reading while the FIFO is
empty will place the FIFO in an undefined state.

*/


// Selecting Sync. or Async Reset
// ------------------------------
// Uncomment one of the two lines below. The first line for
// synchronous reset, the second for asynchronous reset

`define SC_FIFO_ASYNC_RESET				// Uncomment for Syncr. reset
//`define SC_FIFO_ASYNC_RESET	or negedge rst		// Uncomment for Async. reset


module generic_fifo_sc_a(clk, rst, clr, din, we, dout, re,
			full, empty, full_r, empty_r,
			full_n, empty_n, full_n_r, empty_n_r,
			level);

parameter dw=8;
parameter aw=8;
parameter n=32;
parameter max_size = 1<<aw;

input			clk, rst, clr;
input	[dw-1:0]	din;
input			we;
output	[dw-1:0]	dout;
input			re;
output			full, full_r;
output			empty, empty_r;
output			full_n, full_n_r;
output			empty_n, empty_n_r;
output	[1:0]		level;

////////////////////////////////////////////////////////////////////
//
// Local Wires
//

reg	[aw-1:0]	wp;
wire	[aw-1:0]	wp_pl1;
wire	[aw-1:0]	wp_pl2;
reg	[aw-1:0]	rp;
wire	[aw-1:0]	rp_pl1;
reg			full_r;
reg			empty_r;
reg			gb;
reg			gb2;
reg	[aw:0]		cnt;
wire			full_n, empty_n;
reg			full_n_r, empty_n_r;

////////////////////////////////////////////////////////////////////
//
// Memory Block
//

generic_dpram  #(aw,dw) u0(
	.rclk(		clk		),
	.rrst(		!rst		),
	.rce(		1'b1		),
	.oe(		1'b1		),
	.raddr(		rp		),
	.do(		dout		),
	.wclk(		clk		),
	.wrst(		!rst		),
	.wce(		1'b1		),
	.we(		we		),
	.waddr(		wp		),
	.di(		din		)
	);

////////////////////////////////////////////////////////////////////
//
// Misc Logic
//

always @(posedge clk `SC_FIFO_ASYNC_RESET)
	if(!rst)	wp <= #1 {aw{1'b0}};
	else
	if(clr)		wp <= #1 {aw{1'b0}};
	else
	if(we)		wp <= #1 wp_pl1;

assign wp_pl1 = wp + { {aw-1{1'b0}}, 1'b1};
assign wp_pl2 = wp + { {aw-2{1'b0}}, 2'b10};

always @(posedge clk `SC_FIFO_ASYNC_RESET)
	if(!rst)	rp <= #1 {aw{1'b0}};
	else
	if(clr)		rp <= #1 {aw{1'b0}};
	else
	if(re)		rp <= #1 rp_pl1;

assign rp_pl1 = rp + { {aw-1{1'b0}}, 1'b1};

////////////////////////////////////////////////////////////////////
//
// Combinatorial Full & Empty Flags
//

assign empty = ((wp == rp) & !gb);
assign full  = ((wp == rp) &  gb);

// Guard Bit ...
always @(posedge clk `SC_FIFO_ASYNC_RESET)
	if(!rst)			gb <= #1 1'b0;
	else
	if(clr)				gb <= #1 1'b0;
	else
	if((wp_pl1 == rp) & we)		gb <= #1 1'b1;
	else
	if(re)				gb <= #1 1'b0;

////////////////////////////////////////////////////////////////////
//
// Registered Full & Empty Flags
//

// Guard Bit ...
always @(posedge clk `SC_FIFO_ASYNC_RESET)
	if(!rst)			gb2 <= #1 1'b0;
	else
	if(clr)				gb2 <= #1 1'b0;
	else
	if((wp_pl2 == rp) & we)		gb2 <= #1 1'b1;
	else
	if((wp != rp) & re)		gb2 <= #1 1'b0;

always @(posedge clk `SC_FIFO_ASYNC_RESET)
	if(!rst)				full_r <= #1 1'b0;
	else
	if(clr)					full_r <= #1 1'b0;
	else
	if(we & ((wp_pl1 == rp) & gb2) & !re)	full_r <= #1 1'b1;
	else
	if(re & ((wp_pl1 != rp) | !gb2) & !we)	full_r <= #1 1'b0;

always @(posedge clk `SC_FIFO_ASYNC_RESET)
	if(!rst)				empty_r <= #1 1'b1;
	else
	if(clr)					empty_r <= #1 1'b1;
	else
	if(we & ((wp != rp_pl1) | gb2) & !re)	empty_r <= #1 1'b0;
	else
	if(re & ((wp == rp_pl1) & !gb2) & !we)	empty_r <= #1 1'b1;

////////////////////////////////////////////////////////////////////
//
// Combinatorial Full_n & Empty_n Flags
//

assign empty_n = cnt < n;
assign full_n  = !(cnt < (max_size-n+1));
assign level = {2{cnt[aw]}} | cnt[aw-1:aw-2];

// N entries status
always @(posedge clk `SC_FIFO_ASYNC_RESET)
	if(!rst)	cnt <= #1 {aw+1{1'b0}};
	else
	if(clr)		cnt <= #1 {aw+1{1'b0}};
	else
	if( re & !we)	cnt <= #1 cnt + { {aw{1'b1}}, 1'b1};
	else
	if(!re &  we)	cnt <= #1 cnt + { {aw{1'b0}}, 1'b1};

////////////////////////////////////////////////////////////////////
//
// Registered Full_n & Empty_n Flags
//

always @(posedge clk `SC_FIFO_ASYNC_RESET)
	if(!rst)				empty_n_r <= #1 1'b1;
	else
	if(clr)					empty_n_r <= #1 1'b1;
	else
	if(we & (cnt >= (n-1) ) & !re)		empty_n_r <= #1 1'b0;
	else
	if(re & (cnt <= n ) & !we)		empty_n_r <= #1 1'b1;

always @(posedge clk `SC_FIFO_ASYNC_RESET)
	if(!rst)				full_n_r <= #1 1'b0;
	else
	if(clr)					full_n_r <= #1 1'b0;
	else
	if(we & (cnt >= (max_size-n) ) & !re)	full_n_r <= #1 1'b1;
	else
	if(re & (cnt <= (max_size-n+1)) & !we)	full_n_r <= #1 1'b0;

////////////////////////////////////////////////////////////////////
//
// Sanity Check
//

// synopsys translate_off
always @(posedge clk)
	if(we & full)
		$display("%m WARNING: Writing while fifo is FULL (%t)",$time);

always @(posedge clk)
	if(re & empty)
		$display("%m WARNING: Reading while fifo is EMPTY (%t)",$time);
// synopsys translate_on

endmodule

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
激情欧美日韩一区二区| 夜夜夜精品看看| 欧美狂野另类xxxxoooo| 色综合久久中文字幕| 成人性生交大片免费看中文 | 亚洲一区二区视频| 中文字幕不卡在线观看| 18欧美亚洲精品| 亚洲欧美日韩中文播放| 亚洲狠狠丁香婷婷综合久久久| 中文字幕色av一区二区三区| 中文字幕成人在线观看| 亚洲精品va在线观看| 亚洲一级不卡视频| 日本亚洲天堂网| 国模无码大尺度一区二区三区| 国产在线精品一区二区| 成人禁用看黄a在线| 97精品超碰一区二区三区| 欧美亚洲综合色| 日韩午夜激情免费电影| 国产视频一区二区在线观看| 国产精品国产三级国产| 一区二区三区免费观看| 日韩电影在线免费| 国产一区 二区| 91福利在线观看| 日韩一区二区免费高清| 国产精品三级视频| 午夜一区二区三区在线观看| 精一区二区三区| 99国产精品视频免费观看| 欧美日韩大陆一区二区| 欧美精品一区二区三区在线播放 | 国产精品国产三级国产a| 亚洲精品伦理在线| 另类中文字幕网| 99久久亚洲一区二区三区青草| 精品国产乱码久久久久久闺蜜| 欧美激情一区二区| 一区二区三区不卡视频| 国产福利精品导航| 欧美日韩一二三| 国产精品理伦片| 日本中文字幕一区二区有限公司| 国产sm精品调教视频网站| 欧美性猛片aaaaaaa做受| 国产亚洲欧美在线| 天天免费综合色| 99九九99九九九视频精品| 欧美哺乳videos| 亚洲自拍都市欧美小说| 粉嫩一区二区三区在线看| 91精品国产综合久久精品麻豆| 国产精品白丝在线| 国产激情精品久久久第一区二区 | 麻豆国产欧美日韩综合精品二区| 成人久久18免费网站麻豆 | 欧美三级中文字幕在线观看| 久久精品视频免费| 麻豆国产精品一区二区三区 | 精品国产3级a| 日韩国产高清影视| 精品污污网站免费看| 亚洲日本一区二区| 成人午夜视频免费看| 精品处破学生在线二十三| 日本vs亚洲vs韩国一区三区二区| 成人国产在线观看| 中文字幕精品一区二区精品绿巨人| 日韩不卡手机在线v区| 日韩精品专区在线| 秋霞电影网一区二区| 欧美日本视频在线| 亚洲第一电影网| 欧美精品丝袜中出| 日韩精品免费专区| 在线综合+亚洲+欧美中文字幕| 亚洲蜜臀av乱码久久精品蜜桃| jvid福利写真一区二区三区| 国产精品久久久久久久久搜平片| 国产精品综合久久| 欧美—级在线免费片| 成人av动漫网站| 1024成人网| 91精品办公室少妇高潮对白| 一区二区三区日韩| 欧美日本韩国一区| 美女一区二区视频| 久久综合色天天久久综合图片| 久久99久久99| 久久亚洲综合av| 粉嫩av亚洲一区二区图片| 国产精品久久久久久一区二区三区| 不卡视频一二三| 亚洲第一综合色| 欧美成va人片在线观看| 成人av午夜电影| 亚洲国产欧美另类丝袜| 日韩欧美精品在线视频| 懂色一区二区三区免费观看 | 99riav久久精品riav| 一区二区三区不卡视频在线观看 | 成人综合婷婷国产精品久久| 国产精品国产三级国产| 欧美精品一卡二卡| 国产精品99久久久久久久vr| 中文字幕一区二区在线播放| 欧美日韩另类一区| 国产精品99久久久久久有的能看| 亚洲欧美日本韩国| 欧美不卡在线视频| 色婷婷国产精品久久包臀| 日本美女视频一区二区| 国产精品美女久久久久久2018| 在线视频欧美精品| 国产一区二区三区日韩| 亚洲一区国产视频| 国产亚洲欧美激情| 欧美日韩黄视频| 丁香婷婷综合网| 蜜桃视频在线观看一区| 亚洲天堂免费看| 久久青草国产手机看片福利盒子 | 色综合久久久久久久久| 日韩成人av影视| 国产精品国产三级国产有无不卡 | 久久精品国产亚洲aⅴ| 亚洲欧美日韩久久| 国产亚洲精品aa午夜观看| 欧美日韩国产欧美日美国产精品| 成人午夜激情在线| 国产在线播放一区二区三区| 亚洲国产成人高清精品| 国产精品成人一区二区三区夜夜夜 | 91丨九色丨黑人外教| 爽好多水快深点欧美视频| 国产精品久久久久影视| 精品捆绑美女sm三区| 欧美日韩一区二区三区高清| 成人av午夜电影| 福利视频网站一区二区三区| 青青青爽久久午夜综合久久午夜 | 午夜影院久久久| 亚洲人成精品久久久久久| 久久精品视频一区二区三区| 欧美一区二区视频在线观看2020| 91蜜桃视频在线| 91在线视频网址| av在线一区二区三区| 成人午夜视频福利| 国产福利一区在线观看| 国产一区二区在线观看免费| 美女视频一区二区| 久久精品国内一区二区三区| 免费成人av资源网| 久久国产视频网| 精品一区二区三区视频在线观看| 久久爱另类一区二区小说| 免费久久99精品国产| 蜜桃久久久久久| 国内精品国产成人国产三级粉色| 久久国内精品视频| 国产不卡一区视频| caoporm超碰国产精品| 色综合久久中文综合久久97| 色88888久久久久久影院野外| 色婷婷久久久亚洲一区二区三区| 91美女精品福利| 欧美在线综合视频| 这里只有精品视频在线观看| 日韩精品专区在线影院重磅| 久久精品人人做人人综合 | 7799精品视频| 精品日韩av一区二区| 久久精品视频免费观看| 亚洲天堂免费看| 亚洲国产精品嫩草影院| 久久99久久久久| 粉嫩aⅴ一区二区三区四区五区| 91在线视频观看| 3d成人动漫网站| 日本一区二区久久| 亚洲精品国产a| 毛片av一区二区| 不卡av免费在线观看| 欧美精品国产精品| 亚洲色图视频网| 三级成人在线视频| 粉嫩一区二区三区在线看| 欧美吞精做爰啪啪高潮| 欧美精品一区在线观看| 一区二区激情视频| 国产精品中文有码| 欧美乱妇15p| 国产精品热久久久久夜色精品三区| 亚洲综合网站在线观看| 国产一区二区三区电影在线观看| 色哟哟国产精品免费观看| 欧美成人vr18sexvr|