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

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

?? usbf_pd.v

?? usb的verilog 代碼。對理解usb的原理有很大幫助
?? V
字號:
/////////////////////////////////////////////////////////////////////////                                                             ////////  Packet Disassembler                                        ////////  Disassembles Token and Data USB packets                    ////////                                                             ////////  Author: Rudolf Usselmann                                   ////////          rudi@asics.ws                                      ////////                                                             ////////                                                             ////////  Downloaded from: http://www.opencores.org/cores/usb/       ////////                                                             /////////////////////////////////////////////////////////////////////////////                                                             //////// Copyright (C) 2000 Rudolf Usselmann                         ////////                    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: usbf_pd.v,v 1.2 2001/08/10 08:48:33 rudi Exp $////  $Date: 2001/08/10 08:48:33 $//  $Revision: 1.2 $//  $Author: rudi $//  $Locker:  $//  $State: Exp $//// Change History://               $Log: usbf_pd.v,v $//               Revision 1.2  2001/08/10 08:48:33  rudi////               - Changed IO names to be more clear.//               - Uniquifyed define names to be core specific.////               Revision 1.1  2001/08/03 05:30:09  rudi//////               1) Reorganized directory structure////               Revision 1.2  2001/03/31 13:00:51  rudi////               - Added Core configuration//               - Added handling of OUT packets less than MAX_PL_SZ in DMA mode//               - Modified WISHBONE interface and sync logic//               - Moved SSRAM outside the core (added interface)//               - Many small bug fixes ...////               Revision 1.0  2001/03/07 09:17:12  rudi//////               Changed all revisions to revision 1.0. This is because OpenCores CVS//               interface could not handle the original '0.1' revision ....////               Revision 0.1.0.1  2001/02/28 08:10:59  rudi//               Initial Release////`include "usbf_defines.v"module usbf_pd(	clk, rst,		// UTMI RX I/F		rx_data, rx_valid, rx_active, rx_err,		// PID Information		pid_OUT, pid_IN, pid_SOF, pid_SETUP,		pid_DATA0, pid_DATA1, pid_DATA2, pid_MDATA,		pid_ACK, pid_NACK, pid_STALL, pid_NYET,		pid_PRE, pid_ERR, pid_SPLIT, pid_PING,		pid_cks_err,		// Token Information		token_fadr, token_endp, token_valid, crc5_err,		frame_no,		// Receive Data Output		rx_data_st, rx_data_valid, rx_data_done, crc16_err,		// Misc.		seq_err		);input		clk, rst;		//UTMI RX Interfaceinput	[7:0]	rx_data;input		rx_valid, rx_active, rx_err;		// Decoded PIDs (used when token_valid is asserted)output		pid_OUT, pid_IN, pid_SOF, pid_SETUP;output		pid_DATA0, pid_DATA1, pid_DATA2, pid_MDATA;output		pid_ACK, pid_NACK, pid_STALL, pid_NYET;output		pid_PRE, pid_ERR, pid_SPLIT, pid_PING;output		pid_cks_err;		// Indicates a PID checksum erroroutput	[6:0]	token_fadr;		// Function address from tokenoutput	[3:0]	token_endp;		// Endpoint number from tokenoutput		token_valid;		// Token is validoutput		crc5_err;		// Token crc5 erroroutput	[10:0]	frame_no;		// Frame number for SOF tokensoutput	[7:0]	rx_data_st;		// Data to memory store unitoutput		rx_data_valid;		// Data on rx_data_st is validoutput		rx_data_done;		// Indicates end of a transferoutput		crc16_err;		// Data packet CRC 16 erroroutput		seq_err;		// State Machine Sequence Error/////////////////////////////////////////////////////////////////////// Local Wires and Registers//parameter	[3:0]	// synopsys enum state		IDLE   = 4'b0001,		ACTIVE = 4'b0010,		TOKEN  = 4'b0100,		DATA   = 4'b1000;reg	[3:0]	/* synopsys enum state */ state, next_state;// synopsys state_vector statereg	[7:0]	pid;			// Packet PDIreg		pid_le_sm;		// PID Load enable from State Machinewire		pid_ld_en;		// Enable loading of PID (all conditions)wire		pid_cks_err;		// Indicates a pid checksum err		// Decoded PID valueswire		pid_OUT, pid_IN, pid_SOF, pid_SETUP;wire		pid_DATA0, pid_DATA1, pid_DATA2, pid_MDATA;wire		pid_ACK, pid_NACK, pid_STALL, pid_NYET;wire		pid_PRE, pid_ERR, pid_SPLIT, pid_PING, pid_RES;wire		pid_TOKEN;		// All TOKEN packet that we recognizewire		pid_DATA;		// All DATA packets that we recognizereg	[7:0]	token0, token1;		// Token Registersreg		token_le_1, token_le_2;	// Latch enables for token storage registerswire	[4:0]	token_crc5;reg	[7:0]	d0, d1, d2;		// Data path delay line (used to filter out crcs)reg		data_valid_d;		// Data Valid output from State Machinereg		data_done;		// Data cycle complete output from State Machinereg		data_valid0; 		// Data valid delay linereg		rxv1;reg		rxv2;reg		seq_err;		// State machine sequence errorreg		pid_ack;reg		token_valid_r1;reg		token_valid_str1, token_valid_str2;reg		rx_active_r;wire	[4:0]	crc5_out;wire	[4:0]	crc5_out2;wire		crc16_clr;reg	[15:0]	crc16_sum;wire	[15:0]	crc16_out;/////////////////////////////////////////////////////////////////////// Misc Logic//// PID Decoding Logicassign pid_ld_en = pid_le_sm & rx_active & rx_valid;always @(posedge clk)	if(!rst)		pid <= #1 8'hf0;	else	if(pid_ld_en)		pid <= #1 rx_data;assign	pid_cks_err = (pid[3:0] != ~pid[7:4]);assign	pid_OUT   = pid[3:0] == `USBF_T_PID_OUT;assign	pid_IN    = pid[3:0] == `USBF_T_PID_IN;assign	pid_SOF   = pid[3:0] == `USBF_T_PID_SOF;assign	pid_SETUP = pid[3:0] == `USBF_T_PID_SETUP;assign	pid_DATA0 = pid[3:0] == `USBF_T_PID_DATA0;assign	pid_DATA1 = pid[3:0] == `USBF_T_PID_DATA1;assign	pid_DATA2 = pid[3:0] == `USBF_T_PID_DATA2;assign	pid_MDATA = pid[3:0] == `USBF_T_PID_MDATA;assign	pid_ACK   = pid[3:0] == `USBF_T_PID_ACK;assign	pid_NACK  = pid[3:0] == `USBF_T_PID_NACK;assign	pid_STALL = pid[3:0] == `USBF_T_PID_STALL;assign	pid_NYET  = pid[3:0] == `USBF_T_PID_NYET;assign	pid_PRE   = pid[3:0] == `USBF_T_PID_PRE;assign	pid_ERR   = pid[3:0] == `USBF_T_PID_ERR;assign	pid_SPLIT = pid[3:0] == `USBF_T_PID_SPLIT;assign	pid_PING  = pid[3:0] == `USBF_T_PID_PING;assign	pid_RES   = pid[3:0] == `USBF_T_PID_RES;assign	pid_TOKEN = pid_OUT | pid_IN | pid_SOF | pid_SETUP | pid_PING;assign	pid_DATA = pid_DATA0 | pid_DATA1 | pid_DATA2 | pid_MDATA;// Token Decoding LOGICalways @(posedge clk)	if(token_le_1)	token0 <= #1 rx_data;always @(posedge clk)	if(token_le_2)	token1 <= #1 rx_data;always @(posedge clk)	token_valid_r1 <= #1 token_le_2;always @(posedge clk)	token_valid_str1 <= #1 token_valid_r1 | pid_ack;always @(posedge clk)	token_valid_str2 <= #1 token_valid_str1;//assign token_valid = token_valid_str1 | token_valid_str2;assign token_valid = token_valid_str1;// CRC 5 should perform the check in one cycle (flow through logic)// 11 bits and crc5 input, 1 bit outputassign crc5_err = token_valid & (crc5_out2 != token_crc5);usbf_crc5 u0(	.crc_in(	5'h1f				),	.din(	{	token_endp[0],			token_endp[1],			token_endp[2],			token_endp[3],			token_fadr[0],			token_fadr[1],			token_fadr[2],			token_fadr[3],			token_fadr[4],			token_fadr[5],			token_fadr[6]	}		),	.crc_out(	crc5_out			) );// Invert and reverse result bitsassign	crc5_out2 = ~{crc5_out[0], crc5_out[1], crc5_out[2], crc5_out[3],			crc5_out[4]};assign frame_no = {token0, token1[7:5]};assign token_fadr = token0[7:1];assign token_endp = {token0[0],token1[7:5]};assign token_crc5 = token1[4:0];// Data receiving logic// build a delay line and stop when we are about to get crcalways @(posedge clk)	if(!rst)		rxv1 <= #1 0;	else	if(data_valid_d)	rxv1 <= #1 1;	else	if(data_done)		rxv1 <= #1 0;always @(posedge clk)	if(!rst)		rxv2 <= #1 0;	else	if(rxv1 & data_valid_d)	rxv2 <= #1 1;	else	if(data_done)		rxv2 <= #1 0;always @(posedge clk)	data_valid0 <= #1 rxv2 & data_valid_d;always @(posedge clk)   begin	if(data_valid_d)	d0 <= #1 rx_data;	if(data_valid_d)	d1 <= #1 d0;	if(data_valid_d)	d2 <= #1 d1;   endassign rx_data_st = d2;assign rx_data_valid = data_valid0;assign rx_data_done = data_done;// crc16 accumulates rx_data as long as data_valid_d is asserted.// when data_done is asserted, crc16 reports status, and resets itself// next cycle.always @(posedge clk)	rx_active_r <= #1 rx_active;assign crc16_clr = rx_active & !rx_active_r;always @(posedge clk)	if(crc16_clr)		crc16_sum <= #1 16'hffff;	else	if(data_valid_d)	crc16_sum <= #1 crc16_out;usbf_crc16 u1(	.crc_in(	crc16_sum		),	.din(	{rx_data[0], rx_data[1], rx_data[2], rx_data[3],		rx_data[4], rx_data[5], rx_data[6], rx_data[7]}	),	.crc_out(	crc16_out		) );// Verify against polynomial assign crc16_err = data_done & (crc16_sum != 16'h800d);/////////////////////////////////////////////////////////////////////// Receive/Decode State machine//always @(posedge clk)	if(!rst)	state <= #1 IDLE;	else		state <= #1 next_state;always @(state or rx_valid or rx_active or rx_err or pid_ACK or pid_TOKEN	or pid_DATA)   begin	next_state = state;	// Default don't change current state	pid_le_sm = 0;	token_le_1 = 0;	token_le_2 = 0;	data_valid_d = 0;	data_done = 0;	seq_err = 0;	pid_ack = 0;	case(state)		// synopsys full_case parallel_case	   IDLE:		   begin			pid_le_sm = 1;			if(rx_valid & rx_active)	next_state = ACTIVE;		   end	   ACTIVE:		   begin			// Received a ACK from Host			if(pid_ACK & !rx_err)			   begin				pid_ack = 1;				next_state = IDLE;			   end			else			// Receiving a TOKEN			if(pid_TOKEN & rx_valid & rx_active & !rx_err)			   begin				token_le_1 = 1;				next_state = TOKEN;			   end			else			// Receiving DATA			if(pid_DATA & rx_valid & rx_active & !rx_err)			   begin				data_valid_d = 1;				next_state = DATA;			   end			else			if(	!rx_active | rx_err |				(rx_valid & !(pid_TOKEN | pid_DATA)) )	// ERROR			   begin				seq_err = !rx_err;				next_state = IDLE;			   end		   end	   TOKEN:		   begin			if(rx_valid & rx_active & !rx_err)			   begin				token_le_2 = 1;				next_state = IDLE;			   end			else			if(!rx_active | rx_err)	// ERROR			   begin				seq_err = !rx_err;				next_state = IDLE;			   end		   end	   DATA:		   begin			if(rx_valid & rx_active & !rx_err)	data_valid_d = 1;			if(!rx_active | rx_err)			   begin				data_done = 1;				next_state = IDLE;			   end		   end	endcase   endendmodule

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91精品91久久久中77777| 国产剧情一区二区| 国产精品不卡在线| 久久综合久久久久88| 久久久五月婷婷| 中文一区二区在线观看| 中文字幕成人在线观看| 国产精品女主播在线观看| 国产婷婷色一区二区三区在线| 日韩美女视频在线| 国产亚洲一二三区| 亚洲欧洲日本在线| 亚洲一区二区欧美激情| 日韩av不卡一区二区| 国内久久婷婷综合| 99久久婷婷国产| 在线观看国产91| 日韩精品一区二区三区中文不卡| 91精品视频网| 欧美国产欧美综合| 一区二区三区四区高清精品免费观看| 亚洲一区二区欧美| 久久不见久久见免费视频1| 豆国产96在线|亚洲| 色诱视频网站一区| 欧美成人精品福利| 最新中文字幕一区二区三区| 亚洲bt欧美bt精品777| 久久99精品一区二区三区 | 亚洲一区二区精品视频| 日韩av一二三| 成人av资源在线| 欧美精品一级二级三级| 精品国产成人系列| 亚洲视频在线一区二区| 日本成人在线一区| 91小宝寻花一区二区三区| 91精品麻豆日日躁夜夜躁| 国产午夜精品福利| 亚洲一二三四在线观看| 国产精品综合av一区二区国产馆| 色综合天天综合狠狠| 欧美一区二区大片| 亚洲色图欧美在线| 国产一区二区在线视频| 欧美吻胸吃奶大尺度电影| 国产欧美日韩一区二区三区在线观看| 亚洲综合丁香婷婷六月香| 国产精品性做久久久久久| 欧美色大人视频| 中文字幕欧美一| 国产成人精品免费网站| 日韩精品一区二区三区中文精品| 亚洲精选视频在线| 成人黄动漫网站免费app| 精品久久国产97色综合| 午夜视频在线观看一区| 97久久精品人人做人人爽| 2023国产精华国产精品| 免费成人在线播放| 在线电影欧美成精品| 夜夜夜精品看看| 91网站最新地址| 国产精品天美传媒| 成人性色生活片| 国产亚洲欧美激情| 国产麻豆一精品一av一免费| 欧美一级国产精品| 日本美女一区二区三区| 欧美日韩精品二区第二页| 亚洲视频在线观看三级| av影院午夜一区| 国产精品麻豆久久久| 波多野结衣亚洲| 欧美国产日韩亚洲一区| caoporen国产精品视频| 国产精品乱码一区二三区小蝌蚪| 高清成人在线观看| 国产精品天美传媒沈樵| 成人免费毛片嘿嘿连载视频| 国产精品乱子久久久久| caoporn国产一区二区| 亚洲女同ⅹxx女同tv| 日本丶国产丶欧美色综合| 亚洲自拍欧美精品| 正在播放一区二区| 国内精品久久久久影院色| 久久久久国色av免费看影院| 成人晚上爱看视频| 亚洲欧洲一区二区在线播放| 99热在这里有精品免费| 亚洲综合成人在线| 欧美一区二区三区在线观看视频| 久久精品国产亚洲5555| 日本一区二区高清| 欧美亚洲丝袜传媒另类| 美女免费视频一区| 日本一区二区不卡视频| 欧美三级韩国三级日本三斤| 久久精品99国产精品日本| 国产午夜亚洲精品午夜鲁丝片| 99久久久久免费精品国产| 亚洲一区日韩精品中文字幕| 欧美成人精品福利| 91视频免费观看| 琪琪久久久久日韩精品| 国产精品视频看| 91.成人天堂一区| 国产精品一级片| 一区二区免费视频| 久久亚洲欧美国产精品乐播| 91免费小视频| 国产在线播放一区三区四| 亚洲黄色录像片| 久久久亚洲精华液精华液精华液| 在线观看免费成人| 国产一区三区三区| 香蕉成人伊视频在线观看| 亚洲国产精品高清| 91麻豆精品国产| 色综合久久综合网欧美综合网 | 91网站在线播放| 激情都市一区二区| 午夜av电影一区| 亚洲人成网站色在线观看 | 成人av在线影院| 蜜桃在线一区二区三区| 一区二区三区在线观看欧美| 久久久精品国产免费观看同学| 欧美四级电影网| eeuss鲁一区二区三区| 国产一区二区精品久久99| 婷婷综合另类小说色区| 亚洲另类在线制服丝袜| 中文成人av在线| 久久久精品影视| 亚洲精品在线观看视频| 91精品欧美福利在线观看| 欧美四级电影网| 欧美怡红院视频| 91黄视频在线观看| 99久久精品国产麻豆演员表| 丰满少妇在线播放bd日韩电影| 久久国产精品色| 另类中文字幕网| 美国精品在线观看| 日韩精品电影一区亚洲| 亚洲午夜日本在线观看| 一区二区三区自拍| 亚洲另类春色国产| 一区二区三区欧美激情| 亚洲午夜免费电影| 亚洲国产乱码最新视频| 亚洲伊人伊色伊影伊综合网| 亚洲婷婷综合色高清在线| 亚洲男人的天堂在线aⅴ视频| 亚洲色图色小说| 亚洲激情欧美激情| 午夜视频一区二区三区| 天天色天天爱天天射综合| 视频一区视频二区中文字幕| 日韩不卡免费视频| 黄色日韩三级电影| www.亚洲激情.com| 色www精品视频在线观看| 91豆麻精品91久久久久久| 91久久精品一区二区| 欧美日韩在线免费视频| 欧美一区二区日韩一区二区| 精品国产在天天线2019| 中文字幕欧美日本乱码一线二线| 中文字幕亚洲一区二区av在线| 亚洲精品免费在线观看| 日韩精彩视频在线观看| 国产一区二区三区高清播放| 不卡的av在线| 91精品国产综合久久久蜜臀粉嫩| 欧美成人aa大片| 亚洲天堂久久久久久久| 图片区小说区区亚洲影院| 国产精品一区2区| 欧美色视频在线观看| 日韩精品中文字幕在线一区| 国产精品久久久久影院亚瑟| 亚洲午夜在线电影| 黄色成人免费在线| 欧美视频一二三区| 久久久www成人免费无遮挡大片| 中文字幕日韩一区二区| 免费日韩伦理电影| jvid福利写真一区二区三区| 欧美一区二区三区小说| 最新不卡av在线| 极品少妇xxxx偷拍精品少妇| 91麻豆精品视频| 久久这里只有精品视频网| 亚洲第一成年网| 不卡一区在线观看| 久久夜色精品一区| 日本va欧美va欧美va精品|