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

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

?? usb1_pa.v

?? USB v1.1 RTL and design specification
?? V
字號:
/////////////////////////////////////////////////////////////////////
////                                                             ////
////  Packet Assembler                                           ////
////  Assembles Token and Data USB packets                       ////
////                                                             ////
////  Author: Rudolf Usselmann                                   ////
////          rudi@asics.ws                                      ////
////                                                             ////
////                                                             ////
////  Downloaded from: http://www.opencores.org/cores/usb1_funct/////
////                                                             ////
/////////////////////////////////////////////////////////////////////
////                                                             ////
//// 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: usb1_pa.v,v 1.1.1.1 2002/09/19 12:07:13 rudi Exp $
//
//  $Date: 2002/09/19 12:07:13 $
//  $Revision: 1.1.1.1 $
//  $Author: rudi $
//  $Locker:  $
//  $State: Exp $
//
// Change History:
//               $Log: usb1_pa.v,v $
//               Revision 1.1.1.1  2002/09/19 12:07:13  rudi
//               Initial Checkin
//
//
//
//
//
//
//

`include "usb1_defines.v"

module usb1_pa(	clk, rst,

		// UTMI TX I/F
		tx_data, tx_valid, tx_valid_last, tx_ready,
		tx_first,

		// Protocol Engine Interface
		send_token, token_pid_sel,
		send_data, data_pid_sel,

		// IDMA Interface
		tx_data_st, rd_next,

		ep_empty
		);

input		clk, rst;

// UTMI TX Interface
output	[7:0]	tx_data;
output		tx_valid;
output		tx_valid_last;
input		tx_ready;
output		tx_first;

// Protocol Engine Interface
input		send_token;
input	[1:0]	token_pid_sel;
input		send_data;
input	[1:0]	data_pid_sel;

// IDMA Interface
input	[7:0]	tx_data_st;
output		rd_next;

input		ep_empty;

///////////////////////////////////////////////////////////////////
//
// Local Wires and Registers
//

parameter	[3:0]	// synopsys enum state
		IDLE   = 4'b0001,
		DATA   = 4'b0010,
		CRC1   = 4'b0100,
		CRC2   = 4'b1000;

reg	[3:0]	/* synopsys enum state */ state, next_state;
// synopsys state_vector state

reg		last;
reg		rd_next;

reg	[7:0]	token_pid, data_pid;	// PIDs from selectors
reg	[7:0]	tx_data_d;
reg	[7:0]	tx_data_data;
reg		dsel;
reg		tx_valid_d;
reg		send_token_r;
reg	[7:0]	tx_spec_data;
reg		crc_sel1, crc_sel2;
reg		tx_first_r;
reg		send_data_r;
wire		crc16_clr;
reg	[15:0]	crc16;
wire	[15:0]	crc16_next;
wire	[15:0]	crc16_rev;
reg		crc16_add;
reg		send_data_r2;
reg		tx_valid_r;
reg		tx_valid_r1;

wire		zero_length;

///////////////////////////////////////////////////////////////////
//
// Misc Logic
//
reg		zero_length_r;
assign		zero_length = ep_empty;

always @(posedge clk or negedge rst)
	if(!rst)	zero_length_r <= #1 1'b0;
	else
	if(last)	zero_length_r <= #1 1'b0;
	else
	if(crc16_clr)	zero_length_r <= #1 zero_length;

always @(posedge clk)
	tx_valid_r1 <= #1 tx_valid;

always @(posedge clk)
	tx_valid_r <= #1 tx_valid_r1;

always @(posedge clk or negedge rst)
	if(!rst)	send_token_r <= #1 1'b0;
	else
	if(send_token)	send_token_r <= #1 1'b1;
	else
	if(tx_ready)	send_token_r <= #1 1'b0;

// PID Select
always @(token_pid_sel)
	case(token_pid_sel)		// synopsys full_case parallel_case
	   2'd0: token_pid = {  ~`USBF_T_PID_ACK,   `USBF_T_PID_ACK};
	   2'd1: token_pid = { ~`USBF_T_PID_NACK,  `USBF_T_PID_NACK};
	   2'd2: token_pid = {~`USBF_T_PID_STALL, `USBF_T_PID_STALL};
	   2'd3: token_pid = { ~`USBF_T_PID_NYET,  `USBF_T_PID_NYET};
	endcase

always @(data_pid_sel)
	case(data_pid_sel)		// synopsys full_case parallel_case
	   2'd0: data_pid = { ~`USBF_T_PID_DATA0, `USBF_T_PID_DATA0};
	   2'd1: data_pid = { ~`USBF_T_PID_DATA1, `USBF_T_PID_DATA1};
	   2'd2: data_pid = { ~`USBF_T_PID_DATA2, `USBF_T_PID_DATA2};
	   2'd3: data_pid = { ~`USBF_T_PID_MDATA, `USBF_T_PID_MDATA};
	endcase

// Data path Muxes

always @(send_token or send_token_r or token_pid or tx_data_data)
	if(send_token | send_token_r)	tx_data_d = token_pid;
	else				tx_data_d = tx_data_data;

always @(dsel or tx_data_st or tx_spec_data)
	if(dsel)	tx_data_data = tx_spec_data;
	else		tx_data_data = tx_data_st;

always @(crc_sel1 or crc_sel2 or data_pid or crc16_rev)
	if(!crc_sel1 & !crc_sel2)	tx_spec_data = data_pid;
	else
	if(crc_sel1)			tx_spec_data = crc16_rev[15:8];	// CRC 1
	else				tx_spec_data = crc16_rev[7:0];	// CRC 2

assign tx_data = tx_data_d;

// TX Valid assignment
assign tx_valid_last = send_token | last;
assign tx_valid = tx_valid_d;

always @(posedge clk)
	tx_first_r <= #1 send_token | send_data;

assign tx_first = (send_token | send_data) & ! tx_first_r;

// CRC Logic
always @(posedge clk)
	send_data_r <= #1 send_data;

always @(posedge clk)
	send_data_r2 <= #1 send_data_r;

assign crc16_clr = send_data & !send_data_r;

always @(posedge clk)
	crc16_add <= #1 !zero_length_r &
			((send_data_r & !send_data_r2) | (rd_next & !crc_sel1));

always @(posedge clk)
	if(crc16_clr)		crc16 <= #1 16'hffff;
	else
	if(crc16_add)		crc16 <= #1 crc16_next;

usb1_crc16 u1(
	.crc_in(	crc16		),
	.din(	{tx_data_st[0], tx_data_st[1],
		tx_data_st[2], tx_data_st[3],
		tx_data_st[4], tx_data_st[5],
		tx_data_st[6], tx_data_st[7]}	),
	.crc_out(	crc16_next		) );

assign crc16_rev[15] = ~crc16[8];
assign crc16_rev[14] = ~crc16[9];
assign crc16_rev[13] = ~crc16[10];
assign crc16_rev[12] = ~crc16[11];
assign crc16_rev[11] = ~crc16[12];
assign crc16_rev[10] = ~crc16[13];
assign crc16_rev[9]  = ~crc16[14];
assign crc16_rev[8]  = ~crc16[15];
assign crc16_rev[7]  = ~crc16[0];
assign crc16_rev[6]  = ~crc16[1];
assign crc16_rev[5]  = ~crc16[2];
assign crc16_rev[4]  = ~crc16[3];
assign crc16_rev[3]  = ~crc16[4];
assign crc16_rev[2]  = ~crc16[5];
assign crc16_rev[1]  = ~crc16[6];
assign crc16_rev[0]  = ~crc16[7];

///////////////////////////////////////////////////////////////////
//
// Transmit/Encode state machine
//

always @(posedge clk or negedge rst)
	if(!rst)	state <= #1 IDLE;
	else		state <= #1 next_state;

always @(state or send_data or tx_ready or tx_valid_r or zero_length)
   begin
	next_state = state;	// Default don't change current state
	tx_valid_d = 1'b0;
	dsel = 1'b0;
	rd_next = 1'b0;
	last = 1'b0;
	crc_sel1 = 1'b0;
	crc_sel2 = 1'b0;
	case(state)		// synopsys full_case parallel_case
	   IDLE:
		   begin
			if(zero_length & send_data)
			   begin
				tx_valid_d = 1'b1;
				dsel = 1'b1;
				next_state = CRC1;
			   end
			else
			if(send_data)		// Send DATA packet
			   begin
				tx_valid_d = 1'b1;
				dsel = 1'b1;
				next_state = DATA;
			   end
		   end
	   DATA:
		   begin
			if(tx_ready & tx_valid_r)
				rd_next = 1'b1;

			tx_valid_d = 1'b1;
			if(!send_data & tx_ready & tx_valid_r)
			   begin
				dsel = 1'b1;
				crc_sel1 = 1'b1;
				next_state = CRC1;
			   end
		   end
	   CRC1:
		   begin
			dsel = 1'b1;
			tx_valid_d = 1'b1;
			if(tx_ready)
			   begin
				last = 1'b1;
				crc_sel2 = 1'b1;
				next_state = CRC2;
			   end
			else
			   begin
				tx_valid_d = 1'b1;
				crc_sel1 = 1'b1;
			   end

		   end
	   CRC2:
		   begin
			dsel = 1'b1;
			crc_sel2 = 1'b1;
			if(tx_ready)
			   begin
				next_state = IDLE;
			   end
			else
			   begin
				last = 1'b1;
			   end

		   end
	endcase
   end

endmodule

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲国产美女搞黄色| 欧美老年两性高潮| 国产人久久人人人人爽| 国产精品亚洲成人| 国产精品久久久久久久久快鸭| 99久久综合精品| 午夜精品一区二区三区免费视频 | 偷拍一区二区三区四区| 一区二区三区美女| 欧美电影在线免费观看| 欧美肥大bbwbbw高潮| 国产亚洲成aⅴ人片在线观看 | 国产精品中文字幕日韩精品 | 五月婷婷激情综合网| 亚洲v中文字幕| 久久午夜色播影院免费高清| 成人免费观看视频| 首页综合国产亚洲丝袜| 国产精品激情偷乱一区二区∴| 国产精品久久看| 亚洲自拍都市欧美小说| 中文幕一区二区三区久久蜜桃| 欧美日韩综合色| 丰满亚洲少妇av| 国模冰冰炮一区二区| 亚洲成av人片在线观看| 久久精品72免费观看| 亚洲精品少妇30p| 日本一区二区三区视频视频| 国产精品情趣视频| 亚洲成人一二三| 国产精品一区在线观看你懂的| 成人永久看片免费视频天堂| 91麻豆.com| 91一区二区三区在线播放| 欧美日韩国产首页在线观看| 日本韩国欧美国产| 91社区在线播放| 91精品国产91久久久久久一区二区 | 亚洲成av人片| 国产盗摄精品一区二区三区在线| 日日夜夜免费精品| 国产91精品免费| 欧美日韩国产成人在线免费| 欧美国产乱子伦| 国产午夜亚洲精品不卡| 亚洲一区免费在线观看| 国产91精品一区二区| 欧美日本精品一区二区三区| 国产精品色噜噜| 国产在线精品免费| 国产69精品一区二区亚洲孕妇 | 午夜精品久久久久久久久久久 | 亚洲乱码日产精品bd| 精品无码三级在线观看视频| 免费av成人在线| 精品一二三四区| 欧美三级中文字| 亚洲男人的天堂在线观看| 亚洲欧美另类久久久精品2019| 蜜桃av一区二区三区电影| 国产毛片精品国产一区二区三区| 欧美视频一区二区在线观看| 欧美一级在线免费| 亚洲成人精品一区二区| 色婷婷亚洲综合| 5566中文字幕一区二区电影| 欧美一级欧美三级在线观看| 午夜激情一区二区三区| av一区二区三区黑人| 国产视频一区在线观看| 久久精品国产999大香线蕉| 欧美精品久久99| 亚洲自拍欧美精品| 欧美日韩国产高清一区二区| 亚洲国产精品欧美一二99| 色欧美乱欧美15图片| 一区二区三区在线观看动漫| 91麻豆免费观看| 一区二区免费在线| 欧美日韩电影一区| 日日噜噜夜夜狠狠视频欧美人| 欧美日韩国产高清一区二区| 天堂久久一区二区三区| 91精品国产高清一区二区三区 | 国产成人aaa| 国产精品久久久久久亚洲伦| 92精品国产成人观看免费 | 日韩av网站在线观看| 国产成人精品网址| 国产免费成人在线视频| 成人激情综合网站| 欧美一级二级三级乱码| 日韩毛片精品高清免费| 精品一二三四区| 久久久久久久久岛国免费| 五月婷婷久久丁香| 26uuu欧美| 94色蜜桃网一区二区三区| 亚洲一区二区三区在线看| 91精品国产综合久久久久久久久久| 男人的j进女人的j一区| 国产性色一区二区| 日本精品裸体写真集在线观看| 午夜精品久久久久久| 久久婷婷国产综合精品青草| 成人av在线网站| 视频在线在亚洲| 国产精品每日更新在线播放网址| 欧美视频自拍偷拍| 国产中文一区二区三区| 亚洲男同性视频| 久久女同互慰一区二区三区| 91视视频在线直接观看在线看网页在线看| 亚洲免费在线视频一区 二区| 这里只有精品电影| 99热这里都是精品| 美腿丝袜在线亚洲一区| 亚洲人亚洲人成电影网站色| 91精品国产aⅴ一区二区| 97久久精品人人澡人人爽| 乱一区二区av| 亚洲午夜日本在线观看| 国产精品久久久久一区| 精品日韩一区二区三区 | 精品国产乱码久久久久久蜜臀| 亚洲成a人片在线不卡一二三区| 精品国产三级电影在线观看| 在线免费观看日本一区| 亚洲香肠在线观看| 中文字幕色av一区二区三区| eeuss影院一区二区三区| 久久99久久精品| 性感美女久久精品| 一区二区三区欧美| 中文字幕免费不卡在线| 91精品国产aⅴ一区二区| 在线观看成人小视频| a在线播放不卡| 丁香婷婷深情五月亚洲| 精品系列免费在线观看| 蜜桃精品在线观看| 卡一卡二国产精品| 青草国产精品久久久久久| 午夜精品久久久久影视| 亚洲在线中文字幕| 一区二区三区四区激情| 亚洲人快播电影网| 一区二区三区成人| 最新中文字幕一区二区三区| 国产精品人妖ts系列视频| 久久久久久久网| 国产日韩欧美电影| 国产精品美女久久久久av爽李琼| 国产亚洲一区二区三区四区| 久久综合五月天婷婷伊人| 欧美精品一区二区三区很污很色的 | 一二三区精品视频| 亚洲第一福利一区| 亚洲成av人片一区二区| 秋霞电影网一区二区| 日韩电影在线免费看| 麻豆精品视频在线观看视频| 九色综合狠狠综合久久| 国产美女精品在线| 成人午夜激情影院| 91成人在线免费观看| 制服丝袜中文字幕一区| 精品国产免费久久| 中文字幕精品三区| 一个色综合av| 久久国产视频网| 成人涩涩免费视频| 欧美日韩一区二区三区四区| 欧美一区二区三区色| 久久午夜色播影院免费高清| 国产精品免费丝袜| 亚洲成在人线在线播放| 蜜桃视频免费观看一区| 成人一区二区三区中文字幕| 91久久国产最好的精华液| 在线播放中文字幕一区| 国产午夜久久久久| 亚洲一区成人在线| 国产一区二区三区最好精华液| 99免费精品视频| 欧美一级二级三级蜜桃| 国产精品国产三级国产aⅴ无密码| 一区二区三区在线看| 国产乱码精品一品二品| 日本高清无吗v一区| 26uuu精品一区二区在线观看| 狠狠色狠狠色综合日日91app| 成人久久18免费网站麻豆 | 成人av先锋影音| 欧美一区二视频| 亚洲欧美日本韩国| 国产精品一区二区三区网站| 91高清在线观看| 国产日本欧洲亚洲|