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

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

?? usb_rx_phy.v

?? USB 1.1的verilog代碼
?? V
字號:
/////////////////////////////////////////////////////////////////////////                                                             ////////  USB 1.1 PHY                                                ////////  RX & DPLL                                                  ////////                                                             ////////                                                             ////////  Author: Rudolf Usselmann                                   ////////          rudi@asics.ws                                      ////////                                                             ////////                                                             ////////  Downloaded from: http://www.opencores.org/cores/usb_phy/   ////////                                                             /////////////////////////////////////////////////////////////////////////////                                                             //////// 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: usb_rx_phy.v,v 1.5 2004/10/19 09:29:07 rudi Exp $////  $Date: 2004/10/19 09:29:07 $//  $Revision: 1.5 $//  $Author: rudi $//  $Locker:  $//  $State: Exp $//// Change History://               $Log: usb_rx_phy.v,v $//               Revision 1.5  2004/10/19 09:29:07  rudi//               Fixed DPLL alignment in the rx_phy and bit stuffing errors in the tx_phy (if last bit bit was a stuff bit in a packet it was omitted).////               Revision 1.4  2003/12/02 04:56:00  rudi//               Fixed a bug reported by Karl C. Posch from Graz University of Technology. Thanks Karl !////               Revision 1.3  2003/10/19 18:07:45  rudi//               - Fixed Sync Error to be only checked/generated during the sync phase////               Revision 1.2  2003/10/19 17:40:13  rudi//               - Made core more robust against line noise//               - Added Error Checking and Reporting//               (See README.txt for more info)////               Revision 1.1.1.1  2002/09/16 14:27:01  rudi//               Created Directory Structure////////////////`include "timescale.v"module usb_rx_phy(	clk, rst, fs_ce,				// Transciever Interface			rxd, rxdp, rxdn,			// UTMI Interface			RxValid_o, RxActive_o, RxError_o, DataIn_o,			RxEn_i, LineState);input		clk;input		rst;output		fs_ce;input		rxd, rxdp, rxdn;output	[7:0]	DataIn_o;output		RxValid_o;output		RxActive_o;output		RxError_o;input		RxEn_i;output	[1:0]	LineState;/////////////////////////////////////////////////////////////////////// Local Wires and Registers//reg		rxd_s0, rxd_s1,  rxd_s;reg		rxdp_s0, rxdp_s1, rxdp_s, rxdp_s_r;reg		rxdn_s0, rxdn_s1, rxdn_s, rxdn_s_r;reg		synced_d;wire		k, j, se0;reg		rxd_r;reg		rx_en;reg		rx_active;reg	[2:0]	bit_cnt;reg		rx_valid1, rx_valid;reg		shift_en;reg		sd_r;reg		sd_nrzi;reg	[7:0]	hold_reg;wire		drop_bit;	// Indicates a stuffed bitreg	[2:0]	one_cnt;reg	[1:0]	dpll_state, dpll_next_state;reg		fs_ce_d;reg		fs_ce;wire		change;wire		lock_en;reg	[2:0]	fs_state, fs_next_state;reg		rx_valid_r;reg		sync_err_d, sync_err;reg		bit_stuff_err;reg		se0_r, byte_err;reg		se0_s;/////////////////////////////////////////////////////////////////////// Misc Logic//assign RxActive_o = rx_active;assign RxValid_o = rx_valid;assign RxError_o = sync_err | bit_stuff_err | byte_err;assign DataIn_o = hold_reg;assign LineState = {rxdn_s1, rxdp_s1};always @(posedge clk)	rx_en <= RxEn_i;always @(posedge clk)	sync_err <= !rx_active & sync_err_d;/////////////////////////////////////////////////////////////////////// Synchronize Inputs//// First synchronize to the local system clock to// avoid metastability outside the sync block (*_s0).// Then make sure we see the signal for at least two// clock cycles stable to avoid glitches and noisealways @(posedge clk)	rxd_s0  <= rxd;always @(posedge clk)	rxd_s1  <= rxd_s0;always @(posedge clk)							// Avoid detecting Line Glitches and noise	if(rxd_s0 && rxd_s1)	rxd_s <= 1'b1;	else	if(!rxd_s0 && !rxd_s1)	rxd_s <= 1'b0;always @(posedge clk)	rxdp_s0  <= rxdp;always @(posedge clk)	rxdp_s1  <= rxdp_s0;always @(posedge clk)	rxdp_s_r <= rxdp_s0 & rxdp_s1;always @(posedge clk)	rxdp_s   <= (rxdp_s0 & rxdp_s1) | rxdp_s_r;	// Avoid detecting Line Glitches and noisealways @(posedge clk)	rxdn_s0  <= rxdn;always @(posedge clk)	rxdn_s1  <= rxdn_s0;always @(posedge clk)	rxdn_s_r <= rxdn_s0 & rxdn_s1;always @(posedge clk)	rxdn_s   <= (rxdn_s0 & rxdn_s1) | rxdn_s_r;	// Avoid detecting Line Glitches and noiseassign k = !rxdp_s &  rxdn_s;assign j =  rxdp_s & !rxdn_s;assign se0 = !rxdp_s & !rxdn_s;always @(posedge clk)	if(fs_ce)	se0_s <= se0;/////////////////////////////////////////////////////////////////////// DPLL//// This design uses a clock enable to do 12Mhz timing and not a// real 12Mhz clock. Everything always runs at 48Mhz. We want to// make sure however, that the clock enable is always exactly in// the middle between two virtual 12Mhz rising edges.// We monitor rxdp and rxdn for any changes and do the appropiate// adjustments.// In addition to the locking done in the dpll FSM, we adjust the// final latch enable to compensate for various sync registers ...// Allow lockinf only when we are receivingassign	lock_en = rx_en;always @(posedge clk)	rxd_r <= rxd_s;// Edge detectorassign change = rxd_r != rxd_s;// DPLL FSM`ifdef USB_ASYNC_RESTalways @(posedge clk or negedge rst)`elsealways @(posedge clk)`endif	if(!rst)	dpll_state <= 2'h1;	else		dpll_state <= dpll_next_state;always @(dpll_state or lock_en or change)   begin	fs_ce_d = 1'b0;	case(dpll_state)	// synopsys full_case parallel_case	   2'h0:		if(lock_en && change)	dpll_next_state = 2'h0;		else			dpll_next_state = 2'h1;	   2'h1:begin		fs_ce_d = 1'b1;		if(lock_en && change)	dpll_next_state = 2'h3;		else			dpll_next_state = 2'h2;		end	   2'h2:		if(lock_en && change)	dpll_next_state = 2'h0;		else			dpll_next_state = 2'h3;	   2'h3:		if(lock_en && change)	dpll_next_state = 2'h0;		else			dpll_next_state = 2'h0;	endcase   end// Compensate for sync registers at the input - allign full speed// clock enable to be in the middle between two bit changes ...reg	fs_ce_r1, fs_ce_r2;always @(posedge clk)	fs_ce_r1 <= fs_ce_d;always @(posedge clk)	fs_ce_r2 <= fs_ce_r1;always @(posedge clk)	fs_ce <= fs_ce_r2;/////////////////////////////////////////////////////////////////////// Find Sync Pattern FSM//parameter	FS_IDLE	= 3'h0,		K1	= 3'h1,		J1	= 3'h2,		K2	= 3'h3,		J2	= 3'h4,		K3	= 3'h5,		J3	= 3'h6,		K4	= 3'h7;`ifdef USB_ASYNC_RESTalways @(posedge clk or negedge rst)`elsealways @(posedge clk)`endif	if(!rst)	fs_state <= FS_IDLE;	else		fs_state <= fs_next_state;always @(fs_state or fs_ce or k or j or rx_en or rx_active or se0 or se0_s)   begin	synced_d = 1'b0;	sync_err_d = 1'b0;	fs_next_state = fs_state;	if(fs_ce && !rx_active && !se0 && !se0_s)	   case(fs_state)	// synopsys full_case parallel_case		FS_IDLE:		     begin			if(k && rx_en)	fs_next_state = K1;		     end		K1:		     begin			if(j && rx_en)	fs_next_state = J1;			else			   begin					sync_err_d = 1'b1;					fs_next_state = FS_IDLE;			   end		     end		J1:		     begin			if(k && rx_en)	fs_next_state = K2;			else			   begin					sync_err_d = 1'b1;					fs_next_state = FS_IDLE;			   end		     end		K2:		     begin			if(j && rx_en)	fs_next_state = J2;			else			   begin					sync_err_d = 1'b1;					fs_next_state = FS_IDLE;			   end		     end		J2:		     begin			if(k && rx_en)	fs_next_state = K3;			else			   begin					sync_err_d = 1'b1;					fs_next_state = FS_IDLE;			   end		     end		K3:		     begin			if(j && rx_en)	fs_next_state = J3;			else			if(k && rx_en)			   begin					fs_next_state = FS_IDLE;	// Allow missing first K-J					synced_d = 1'b1;			   end			else			   begin					sync_err_d = 1'b1;					fs_next_state = FS_IDLE;			   end		     end		J3:		     begin			if(k && rx_en)	fs_next_state = K4;			else			   begin					sync_err_d = 1'b1;					fs_next_state = FS_IDLE;			   end		     end		K4:		     begin			if(k)	synced_d = 1'b1;			fs_next_state = FS_IDLE;		     end	   endcase   end/////////////////////////////////////////////////////////////////////// Generate RxActive//`ifdef USB_ASYNC_RESTalways @(posedge clk or negedge rst)`elsealways @(posedge clk)`endif	if(!rst)		rx_active <= 1'b0;	else	if(synced_d && rx_en)	rx_active <= 1'b1;	else	if(se0 && rx_valid_r)	rx_active <= 1'b0;always @(posedge clk)	if(rx_valid)	rx_valid_r <= 1'b1;	else	if(fs_ce)	rx_valid_r <= 1'b0;/////////////////////////////////////////////////////////////////////// NRZI Decoder//always @(posedge clk)	if(fs_ce)	sd_r <= rxd_s;`ifdef USB_ASYNC_RESTalways @(posedge clk or negedge rst)`elsealways @(posedge clk)`endif	if(!rst)		sd_nrzi <= 1'b0;	else	if(!rx_active)		sd_nrzi <= 1'b1;	else	if(rx_active && fs_ce)	sd_nrzi <= !(rxd_s ^ sd_r);/////////////////////////////////////////////////////////////////////// Bit Stuff Detect//`ifdef USB_ASYNC_RESTalways @(posedge clk or negedge rst)`elsealways @(posedge clk)`endif	if(!rst)	one_cnt <= 3'h0;	else	if(!shift_en)	one_cnt <= 3'h0;	else	if(fs_ce)	   begin		if(!sd_nrzi || drop_bit)	one_cnt <= 3'h0;		else				one_cnt <= one_cnt + 3'h1;	   endassign drop_bit = (one_cnt==3'h6);always @(posedge clk)	bit_stuff_err <= drop_bit & sd_nrzi & fs_ce & !se0 & rx_active; // Bit Stuff Error/////////////////////////////////////////////////////////////////////// Serial => Parallel converter//always @(posedge clk)	if(fs_ce)	shift_en <= synced_d | rx_active;always @(posedge clk)	if(fs_ce && shift_en && !drop_bit)		hold_reg <= {sd_nrzi, hold_reg[7:1]};/////////////////////////////////////////////////////////////////////// Generate RxValid//`ifdef USB_ASYNC_RESTalways @(posedge clk or negedge rst)`elsealways @(posedge clk)`endif	if(!rst)		bit_cnt <= 3'b0;	else	if(!shift_en)		bit_cnt <= 3'h0;	else	if(fs_ce && !drop_bit)	bit_cnt <= bit_cnt + 3'h1;`ifdef USB_ASYNC_RESTalways @(posedge clk or negedge rst)`elsealways @(posedge clk)`endif	if(!rst)					rx_valid1 <= 1'b0;	else	if(fs_ce && !drop_bit && (bit_cnt==3'h7))	rx_valid1 <= 1'b1;	else	if(rx_valid1 && fs_ce && !drop_bit)		rx_valid1 <= 1'b0;always @(posedge clk)	rx_valid <= !drop_bit & rx_valid1 & fs_ce;always @(posedge clk)	se0_r <= se0;always @(posedge clk)	byte_err <= se0 & !se0_r & (|bit_cnt[2:1]) & rx_active;endmodule

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲欧美国产77777| 欧美精品1区2区3区| 欧美中文字幕一区| 3d动漫精品啪啪| 国产亚洲欧美激情| 一区二区三区中文字幕电影| 日韩激情视频网站| 成人性视频免费网站| 欧美日韩一级二级| 国产无人区一区二区三区| 一区二区三区在线视频免费观看 | 在线看日韩精品电影| 日韩欧美色电影| 亚洲色图一区二区三区| 蜜臀av亚洲一区中文字幕| www.日本不卡| 日韩欧美国产系列| 亚洲美女在线国产| 国内精品国产三级国产a久久| av亚洲精华国产精华精华 | 日本美女一区二区三区| 成人永久免费视频| 在线电影院国产精品| 国产精品美女久久久久aⅴ | 精品国产欧美一区二区| 自拍av一区二区三区| 国内精品久久久久影院薰衣草| 91福利在线播放| 国产婷婷色一区二区三区| 亚洲成人久久影院| aaa欧美大片| 久久久久久**毛片大全| 日本午夜精品视频在线观看| 91网页版在线| 日本一区二区三区在线不卡| 美国欧美日韩国产在线播放| 色偷偷久久一区二区三区| 国产欧美精品一区| 久久国产免费看| 精品视频一区二区不卡| 亚洲视频你懂的| 国产成人自拍网| 精品国产91洋老外米糕| 五月激情综合婷婷| 欧美性淫爽ww久久久久无| 国产精品色在线观看| 国产综合色在线视频区| 欧美一区二区精品在线| 五月天亚洲婷婷| 欧日韩精品视频| 亚洲欧美日韩人成在线播放| 波多野结衣精品在线| 国产亚洲成aⅴ人片在线观看 | 2020国产成人综合网| 日韩av一二三| 欧美日韩mp4| 亚洲在线观看免费| 一本大道久久a久久精二百| 国产精品每日更新| 国产成人av资源| 欧美精品一区二区三| 九一久久久久久| 精品国产百合女同互慰| 激情欧美日韩一区二区| 日韩欧美的一区二区| 久久福利资源站| 精品国产乱码久久久久久久久| 麻豆精品久久久| 欧美α欧美αv大片| 日本一区中文字幕| 欧美r级在线观看| 国产在线视视频有精品| 精品国产伦一区二区三区观看方式| 蜜臀av性久久久久蜜臀av麻豆| 日韩视频不卡中文| 精品在线免费视频| 欧美变态口味重另类| 国产一区二区三区不卡在线观看 | 高清av一区二区| 国产精品素人一区二区| 99精品欧美一区二区三区综合在线| 欧美国产精品v| 99久久精品99国产精品| 一区二区在线观看视频| 欧美日韩中文一区| 日本欧洲一区二区| 精品88久久久久88久久久| 国产乱码精品一区二区三区av| 国产欧美一区二区在线| 99vv1com这只有精品| 亚洲午夜电影在线| 91麻豆精品91久久久久同性| 久久精品国产99国产精品| 久久美女高清视频| 99视频超级精品| 亚洲mv在线观看| 精品国产伦一区二区三区观看方式| 国产精品 日产精品 欧美精品| 中文字幕一区二区三区在线不卡| 色综合久久久久久久久| 日韩精品91亚洲二区在线观看| 欧美精品一区二区在线播放| 99热在这里有精品免费| 五月婷婷综合在线| 久久久精品免费观看| 91色乱码一区二区三区| 天天色天天爱天天射综合| 久久欧美一区二区| 色婷婷综合久久久| 麻豆91在线看| 专区另类欧美日韩| 欧美一级视频精品观看| 成人在线视频首页| 视频一区视频二区中文| 国产色综合一区| 欧美综合视频在线观看| 精品一区二区三区久久| 亚洲视频在线观看三级| 日韩欧美国产午夜精品| 91看片淫黄大片一级| 老司机免费视频一区二区三区| 国产精品美女久久久久久久久久久 | 久久综合网色—综合色88| 91蜜桃婷婷狠狠久久综合9色| 日韩国产精品91| 国产精品久久久久三级| 日韩三级伦理片妻子的秘密按摩| 成人av第一页| 久久精品国产亚洲一区二区三区| 17c精品麻豆一区二区免费| 欧美xxxx老人做受| 日本电影欧美片| 国产传媒一区在线| 青青草成人在线观看| 亚洲日本在线观看| xfplay精品久久| 欧美理论片在线| 91丝袜呻吟高潮美腿白嫩在线观看| 美腿丝袜亚洲一区| 亚洲一区在线观看网站| 国产欧美精品一区二区色综合朱莉 | 一区二区三区四区在线免费观看 | 成人黄色电影在线| 理论片日本一区| 亚洲成av人片在线观看| 亚洲欧洲性图库| 国产午夜精品在线观看| 制服视频三区第一页精品| 色综合久久天天| 成人高清av在线| 国产一区二区三区免费播放| 爽爽淫人综合网网站| 一区二区三区在线观看欧美| 国产精品久久久久婷婷| 国产欧美综合在线观看第十页 | 国产大陆a不卡| 精品一区二区免费| 日本不卡视频在线| 亚洲电影视频在线| 亚洲精品免费播放| 中文字幕成人av| 国产亚洲欧美在线| 久久久久久一二三区| 日韩午夜精品电影| 91精品在线一区二区| 欧美三级视频在线| 欧美性猛片xxxx免费看久爱| 色综合中文字幕国产 | 国产精品电影一区二区| 久久精品欧美日韩| 久久婷婷色综合| 日韩欧美中文字幕一区| 欧美日韩国产综合一区二区| 在线观看av一区二区| 日本福利一区二区| 欧美三级中文字| 欧美精品自拍偷拍| 69精品人人人人| 91精品国产综合久久久久久久久久| 欧美日韩亚洲综合在线| 欧美三级电影在线观看| 欧美日韩免费一区二区三区视频| 欧美这里有精品| 欧美中文字幕亚洲一区二区va在线 | 国产精品久久久久一区二区三区共| 国产网红主播福利一区二区| 日本一区二区三区dvd视频在线| 国产欧美精品一区二区色综合| 国产视频一区二区在线观看| 亚洲国产精品二十页| 国产精品久久久久7777按摩| 亚洲三级免费电影| 亚洲色图清纯唯美| 亚洲综合偷拍欧美一区色| 亚洲福利视频导航| 91社区在线播放| 精品视频在线视频| 精品国精品国产| 欧美国产精品中文字幕| 一区二区三区精品在线|