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

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

?? usb1_ctrl.v

?? USB v1.1 RTL and design specification
?? V
?? 第 1 頁 / 共 2 頁
字號:
/////////////////////////////////////////////////////////////////////
////                                                             ////
////  Internal Setup Engine                                      ////
////                                                             ////
////                                                             ////
////  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_ctrl.v,v 1.2 2002/09/25 06:06:49 rudi Exp $
//
//  $Date: 2002/09/25 06:06:49 $
//  $Revision: 1.2 $
//  $Author: rudi $
//  $Locker:  $
//  $State: Exp $
//
// Change History:
//               $Log: usb1_ctrl.v,v $
//               Revision 1.2  2002/09/25 06:06:49  rudi
//               - Added New Top Level
//               - Remove old top level and associated files
//               - Moved FIFOs to "Generic FIFOs" project
//
//               Revision 1.1.1.1  2002/09/19 12:07:09  rudi
//               Initial Checkin
//
//
//
//
//
//

`include "usb1_defines.v"

module usb1_ctrl(	clk, rst,

			rom_adr, rom_data,

			ctrl_setup, ctrl_in, ctrl_out,

			ep0_din, ep0_dout, ep0_re, ep0_we, ep0_stat,
			ep0_size,

			send_stall, frame_no,
			funct_adr, configured, halt,

			v_set_int, v_set_feature, wValue, wIndex, vendor_data,

			report_data
		);

input		clk, rst;

output	[6:0]	rom_adr;
input	[7:0]	rom_data;

input		ctrl_setup;
input		ctrl_in;
input		ctrl_out;

input	[7:0]	ep0_din;
output	[7:0]	ep0_dout;
output		ep0_re, ep0_we;
input	[3:0]	ep0_stat;
output	[7:0]	ep0_size;

output		send_stall;
input	[10:0]	frame_no;
output	[6:0]	funct_adr;
output		configured, halt;

output		v_set_int;
output		v_set_feature;
output	[15:0]	wValue;
output	[15:0]	wIndex;
input	[15:0]	vendor_data;

output [7 : 0] report_data;
reg [7 : 0] report_data;

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

parameter	IDLE			=	20'b0000_0000_0000_0000_0001,
		GET_HDR				=	20'b0000_0000_0000_0000_0010,
		GET_STATUS_S		=	20'b0000_0000_0000_0000_0100,
		CLEAR_FEATURE_S		=	20'b0000_0000_0000_0000_1000,
		SET_FEATURE_S		=	20'b0000_0000_0000_0001_0000,
		SET_ADDRESS_S		=	20'b0000_0000_0000_0010_0000,
		GET_DESCRIPTOR_S	=	20'b0000_0000_0000_0100_0000,
		SET_DESCRIPTOR_S	=	20'b0000_0000_0000_1000_0000,
		GET_CONFIG_S		=	20'b0000_0000_0001_0000_0000,
		SET_CONFIG_S		=	20'b0000_0000_0010_0000_0000,
		GET_INTERFACE_S		=	20'b0000_0000_0100_0000_0000,
		SET_INTERFACE_S		=	20'b0000_0000_1000_0000_0000,
		SYNCH_FRAME_S		=	20'b0000_0001_0000_0000_0000,
		WAIT_IN_DATA		=	20'b0000_0010_0000_0000_0000,
		STATUS_IN			=	20'b0000_0100_0000_0000_0000,
		STATUS_OUT			=	20'b0000_1000_0000_0000_0000,
		V_SET_INT_S			=	20'b0001_0000_0000_0000_0000,
		V_GET_STATUS_S		=	20'b0010_0000_0000_0000_0000,
		C_SET_REPORT_S		=	20'b0100_0000_0000_0000_0000,
		WAIT_OUT_DATA		=	20'b1000_0000_0000_0000_0000;

wire	[7:0]	bmReqType, bRequest;
wire	[15:0]	wValue, wIndex, wLength;
wire		bm_req_dir;
wire	[1:0]	bm_req_type;
wire	[4:0]	bm_req_recp;

reg		get_status, clear_feature, set_feature, set_address;
reg		get_descriptor, set_descriptor, get_config, set_config;
reg		get_interface, set_interface, synch_frame;
reg		hdr_done_r, config_err;
reg		v_set_int, v_set_feature, v_get_status;
reg		c_set_report;
reg		c_set_idle;

wire		fifo_re1, fifo_full, fifo_empty;
reg		fifo_we_d;
reg	[4:0]	data_sel;
reg		ep0_we;
reg	[7:0]	ep0_dout;
reg	[7:0]	ep0_size;
reg		send_stall;
reg	[19:0]	state, next_state;
reg		get_hdr;
reg	[7:0]	le;
wire		hdr_done;
reg		adv;
reg	[7:0]	hdr0, hdr1, hdr2, hdr3, hdr4, hdr5, hdr6, hdr7;
reg	[6:0]	funct_adr;
reg		set_adr_pending;
reg	[6:0]	funct_adr_tmp;

reg		in_size_0;
reg		in_size_1;
reg		in_size_2;
wire		high_sel;
reg		write_done, write_done_r;

reg 	get_report;
reg		get_report_l0;

///////////////////////////////////////////////////////////////////
//
// FIFO interface
//

assign ep0_re = fifo_re1;
assign fifo_empty = ep0_stat[1];
assign fifo_full = ep0_stat[2];

///////////////////////////////////////////////////////////////////
//
// Current States
//
reg	addressed;
reg	configured;
reg	halt;
wire	clr_halt;
wire	set_halt=0;	// FIX_ME

// For this implementation we do not implement HALT for the
// device nor for any of the endpoints. This is useless for
// this device, but can be added here later ...
// FYI, we report device/endpoint errors via interrupts,
// instead of halting the entire or part of the device, much
// nicer for non-critical errors.

assign clr_halt = ctrl_setup;

always @(posedge clk)
	if(!rst)	addressed <= #1 1'b0;
	else
	if(set_address)	addressed <= #1 1'b1;

always @(posedge clk)
	if(!rst)	configured <= #1 1'b0;
	else
	if(set_config)	configured <= #1 1'b1;

always @(posedge clk)
	if(!rst)	halt <= #1 1'b0;
	else
	if(clr_halt)	halt <= #1 1'b0;
	else
	if(set_halt)	halt <= #1 1'b1;

///////////////////////////////////////////////////////////////////
//
// Descriptor ROM
//
reg	[6:0]	rom_adr;
reg		rom_sel, rom_sel_r;
wire		rom_done;
reg	[6:0]	rom_size;
reg		fifo_we_rom_r;
reg		fifo_we_rom_r2;
wire		fifo_we_rom;
reg	[7:0]	rom_start_d;
reg	[6:0]	rom_size_dd;
wire	[6:0]	rom_size_d;

always @(wValue)
	case(wValue[13:8])		// synopsys full_case parallel_case
	   6'h01:	rom_start_d = `ROM_START0;
	   6'h02:	rom_start_d = `ROM_START1;
	   6'h03:
		case(wValue[3:0])	// synopsys full_case parallel_case
		   4'h00:	rom_start_d = `ROM_START2A;
		   4'h01:	rom_start_d = `ROM_START2B;
		   4'h02:	rom_start_d = `ROM_START2C;
		   default:	rom_start_d = `ROM_START2A;
		endcase
	   6'h22:	rom_start_d = `ROM_START3;
	   default:	rom_start_d = 7'h00;
	endcase

always @(wValue)
	case(wValue[13:8])		// synopsys full_case parallel_case
	   6'h01:	rom_size_dd = `ROM_SIZE0;
	   6'h02:	rom_size_dd = `ROM_SIZE1;
	   6'h03:
		case(wValue[3:0])	// synopsys full_case parallel_case
		   4'h00:	rom_size_dd = `ROM_SIZE2A;
		   4'h01:	rom_size_dd = `ROM_SIZE2B;
		   4'h02:	rom_size_dd = `ROM_SIZE2C;
		   default:	rom_size_dd = `ROM_SIZE2A;
		endcase
	   6'h22:	rom_size_dd = `ROM_SIZE3;
	   default:	rom_size_dd = 7'h01;
	endcase

assign rom_size_d = ({3'h0, rom_size_dd} > wLength[9:0]) ? (|wLength[9:7] ? rom_size_dd : wLength[6:0]) : rom_size_dd;

always @(posedge clk)
	rom_sel_r <= #1 rom_sel;

always @(posedge clk)
	if(!rst)			rom_adr <= #1 7'h0;
	else
	if(rom_sel & !rom_sel_r)	rom_adr <= #1 rom_start_d;
	else
	if(rom_sel & !fifo_full)	rom_adr <= #1 rom_adr + 7'h1;

always @(posedge clk)
	if(!rst)			rom_size <= #1 7'h0;
	else
	if(rom_sel & !rom_sel_r)	rom_size <= #1 rom_size_d;
	else
	if(rom_sel & !fifo_full)	rom_size <= #1 rom_size - 7'h01;

always @(posedge clk)
	fifo_we_rom_r <= #1 rom_sel;

always @(posedge clk)
	fifo_we_rom_r2 <= #1 fifo_we_rom_r;

assign fifo_we_rom = rom_sel & fifo_we_rom_r2;

assign rom_done = (rom_size == 7'h0) & !(rom_sel & !rom_sel_r);

///////////////////////////////////////////////////////////////////
//
// Get Header
//

assign fifo_re1 = (get_hdr | get_report) & !fifo_empty;

always @(posedge clk)
	adv <= #1 get_hdr & !fifo_empty & !adv;

always @(posedge clk)
	if(!rst)	le <= #1 8'h0;
	else
	if(!get_hdr)	le <= #1 8'h0;
	else
	if(!(|le))	le <= #1 8'h1;
	else
	if(adv)		le <= #1 {le[6:0], 1'b0};

always @(posedge clk)
	if(le[0])	hdr0 <= #1 ep0_din;

always @(posedge clk)
	if(le[1])	hdr1 <= #1 ep0_din;

always @(posedge clk)
	if(le[2])	hdr2 <= #1 ep0_din;

always @(posedge clk)
	if(le[3])	hdr3 <= #1 ep0_din;

always @(posedge clk)
	if(le[4])	hdr4 <= #1 ep0_din;

always @(posedge clk)
	if(le[5])	hdr5 <= #1 ep0_din;

always @(posedge clk)
	if(le[6])	hdr6 <= #1 ep0_din;

always @(posedge clk)
	if(le[7])	hdr7 <= #1 ep0_din;

assign hdr_done = le[7] & adv;

always @(posedge clk)
	if(!rst) get_report_l0 <= 1'b0;
	else get_report_l0 <= get_report;

always @(posedge clk)
	if(!rst) report_data <= #1 8'h5a;
	else if(get_report_l0) report_data <= #1 ep0_din;

///////////////////////////////////////////////////////////////////
//
// Send Data to Host
//
parameter	ZERO_DATA	=	5'b00001,
		ZERO_ONE_DATA	=	5'b00010,
		CONFIG_DATA	=	5'b00100,
		SYNC_FRAME_DATA	=	5'b01000,
		VEND_DATA	=	5'b10000;

assign high_sel = write_done_r;

always @(posedge clk)
	case(data_sel)		// synopsys full_case parallel_case
	   ZERO_DATA:		ep0_dout <= #1 rom_sel ? rom_data : 8'h0;
	   ZERO_ONE_DATA:	ep0_dout <= #1 high_sel ? 8'h1 : 8'h0;
	   CONFIG_DATA:		ep0_dout <= #1 {7'h0, configured};	// return configuration
	   SYNC_FRAME_DATA:	ep0_dout <= #1 high_sel ? {5'h0, frame_no[10:8]} : frame_no[7:0];
	   VEND_DATA:		ep0_dout <= #1 high_sel ? vendor_data[15:8] : vendor_data[7:0];
	endcase

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美一区午夜视频在线观看| 99综合电影在线视频| 欧美色综合网站| 天天做天天摸天天爽国产一区 | 欧美tk丨vk视频| 久久99精品国产91久久来源| 久久综合五月天婷婷伊人| 国产精品99久久久久| 中文字幕永久在线不卡| 欧美日韩国产片| 精东粉嫩av免费一区二区三区| 久久午夜免费电影| 91丨九色丨蝌蚪丨老版| 亚洲成av人片一区二区梦乃| 精品少妇一区二区三区| 成人精品国产福利| 亚洲国产综合视频在线观看| 日韩视频免费观看高清完整版在线观看| 久久99精品久久久久久国产越南| 日本一区二区三区在线不卡| 欧美伊人精品成人久久综合97| 免费成人av资源网| 国产精品久久一卡二卡| 欧美日本在线看| 成人毛片视频在线观看| 午夜精品一区二区三区免费视频| 欧美tickle裸体挠脚心vk| www.日本不卡| 麻豆免费看一区二区三区| 中文字幕日本不卡| 日韩一区二区中文字幕| 成人av网站在线| 日av在线不卡| 亚洲精品国产无套在线观| 精品裸体舞一区二区三区| 一本色道久久综合亚洲91| 狠狠狠色丁香婷婷综合久久五月| 亚洲嫩草精品久久| 久久久综合精品| 欧美另类高清zo欧美| 成人国产一区二区三区精品| 石原莉奈在线亚洲二区| 亚洲欧美偷拍另类a∨色屁股| 日韩欧美国产综合在线一区二区三区| 成人h精品动漫一区二区三区| 日日骚欧美日韩| 亚洲精品免费在线观看| 国产日韩欧美在线一区| 欧美一二区视频| 欧美午夜精品一区| av一区二区三区四区| 精品一区二区三区不卡| 三级亚洲高清视频| 亚洲国产日韩a在线播放| 亚洲欧洲精品一区二区三区| 久久久久久一级片| 日韩欧美一二三四区| 精品视频一区二区三区免费| 91女神在线视频| 北条麻妃一区二区三区| 国产91精品一区二区| 国内不卡的二区三区中文字幕| 天天综合天天做天天综合| 亚洲一区中文日韩| 亚洲美女在线一区| 亚洲免费视频成人| 综合欧美亚洲日本| 《视频一区视频二区| 国产精品你懂的在线| 国产精品免费网站在线观看| 国产日韩欧美综合一区| 国产无一区二区| 久久久久久一级片| 亚洲精品一区二区三区蜜桃下载| 欧美一区二区三区人| 日韩一区和二区| 日韩欧美你懂的| 久久香蕉国产线看观看99| 亚洲精品一区二区三区四区高清| 欧美va亚洲va在线观看蝴蝶网| 日韩欧美激情在线| 国产午夜亚洲精品理论片色戒 | 久久草av在线| 久久黄色级2电影| 精品一区二区三区在线播放| 精品一区二区免费在线观看| 国产美女一区二区三区| 国产99久久久国产精品免费看| 成人精品一区二区三区四区| www..com久久爱| 在线亚洲高清视频| 在线播放国产精品二区一二区四区| 欧美一区二区视频观看视频| 精品美女一区二区| 国产精品久久久久婷婷| 尤物视频一区二区| 日本亚洲一区二区| 国产一二精品视频| 色综合色狠狠综合色| 欧美日韩国产在线观看| 精品粉嫩超白一线天av| 国产精品美女久久久久久久久 | 久久亚洲一区二区三区明星换脸| 欧美激情一区二区三区蜜桃视频| 日韩毛片精品高清免费| 亚洲午夜激情av| 极品少妇一区二区三区精品视频| 成人免费视频一区二区| 欧美日韩国产精品成人| 久久嫩草精品久久久精品一| 一区二区三区中文字幕| 久久精品国产久精国产| 99久久精品国产观看| 777a∨成人精品桃花网| 国产精品污www在线观看| 亚洲1区2区3区4区| 韩国精品主播一区二区在线观看 | 99热在这里有精品免费| 欧美精品乱码久久久久久按摩 | 无码av中文一区二区三区桃花岛| 精品制服美女久久| 99re在线精品| 夜夜揉揉日日人人青青一国产精品 | a美女胸又www黄视频久久| 欧美一区二区黄| 成人欧美一区二区三区白人| 毛片一区二区三区| 91精彩视频在线观看| www国产亚洲精品久久麻豆| 亚洲同性同志一二三专区| 久久精品噜噜噜成人av农村| 色综合天天综合网天天看片| 久久午夜电影网| 日本vs亚洲vs韩国一区三区二区| 成人晚上爱看视频| 26uuu亚洲| 午夜精品久久久| 成人高清在线视频| 亚洲精品一区二区在线观看| 亚洲影视在线观看| 91在线观看成人| 国产视频在线观看一区二区三区 | 免费的成人av| 欧美在线一二三| 国产精品国产三级国产普通话99| 免费观看一级欧美片| 欧美人xxxx| 亚洲综合视频在线| 91蜜桃免费观看视频| 欧美韩国一区二区| 国产一区二区免费视频| 日韩美女视频在线| 青青草一区二区三区| 欧美丰满高潮xxxx喷水动漫| 一区二区欧美国产| 91蜜桃视频在线| 亚洲三级在线看| 99久久免费国产| 中文字幕一区二区三区不卡| 国产成人免费视频| 国产日韩精品一区| 国产精品主播直播| 国产欧美一区二区三区网站| 国内不卡的二区三区中文字幕 | 欧美夫妻性生活| 亚洲成人动漫av| 国产三级精品视频| 国产91在线观看丝袜| 久久久久国色av免费看影院| 韩国理伦片一区二区三区在线播放| 日韩免费观看2025年上映的电影| 人禽交欧美网站| 欧美成人一区二区三区片免费| 美女在线视频一区| 欧美zozozo| 国产成人免费视频网站| 国产精品久久久久国产精品日日| 成人久久视频在线观看| 亚洲三级在线播放| 欧美羞羞免费网站| 日韩专区一卡二卡| 26uuu国产电影一区二区| 国产aⅴ精品一区二区三区色成熟| 国产精品免费观看视频| 色综合欧美在线视频区| 三级欧美韩日大片在线看| 欧美一级精品在线| 国产精品一区久久久久| 国产精品三级电影| 欧洲一区二区三区在线| 麻豆精品视频在线观看| 国产无人区一区二区三区| 91麻豆免费视频| 日韩影院免费视频| 久久嫩草精品久久久精品一| 91尤物视频在线观看| 日本不卡在线视频| 中文字幕精品—区二区四季| 欧美视频一区二区三区| 狠狠v欧美v日韩v亚洲ⅴ|