⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 usbf_top.v

📁 usb的verilog 代码。对理解usb的原理有很大帮助
💻 V
📖 第 1 页 / 共 2 页
字号:
/////////////////////////////////////////////////////////////////////////                                                             ////////  USB function core                                          ////////                                                             ////////                                                             ////////  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_top.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_top.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:52  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.2  2001/03/07 09:08:13  rudi////               Added USB control signaling (Line Status) block. Fixed some minor//               typos, added resume bit and signal.////               Revision 0.1.0.1  2001/02/28 08:11:40  rudi//               Initial Release////`include "usbf_defines.v"module usbf_top(// WISHBONE Interface		clk_i, rst_i, wb_addr_i, wb_data_i, wb_data_o,		wb_ack_o, wb_we_i, wb_stb_i, wb_cyc_i, inta_o, intb_o,		dma_req_o, dma_ack_i, susp_o, resume_req_i,		// UTMI Interface		phy_clk_pad_i, phy_rst_pad_o,		DataOut_pad_o, TxValid_pad_o, TxReady_pad_i,		RxValid_pad_i, RxActive_pad_i, RxError_pad_i,		DataIn_pad_i, XcvSelect_pad_o, TermSel_pad_o,		SuspendM_pad_o, LineState_pad_i,		OpMode_pad_o, usb_vbus_pad_i,		VControl_Load_pad_o, VControl_pad_o, VStatus_pad_i,		// Buffer Memory Interface		sram_adr_o, sram_data_i, sram_data_o, sram_re_o, sram_we_o		);parameter	SSRAM_HADR = `USBF_SSRAM_HADR;input		clk_i;input		rst_i;input	[`USBF_UFC_HADR:0]	wb_addr_i;input	[31:0]	wb_data_i;output	[31:0]	wb_data_o;output		wb_ack_o;input		wb_we_i;input		wb_stb_i;input		wb_cyc_i;output		inta_o;output		intb_o;output	[15:0]	dma_req_o;input	[15:0]	dma_ack_i;output		susp_o;input		resume_req_i;input		phy_clk_pad_i;output		phy_rst_pad_o;output	[7:0]	DataOut_pad_o;output		TxValid_pad_o;input		TxReady_pad_i;input	[7:0]	DataIn_pad_i;input		RxValid_pad_i;input		RxActive_pad_i;input		RxError_pad_i;output		XcvSelect_pad_o;output		TermSel_pad_o;output		SuspendM_pad_o;input	[1:0]	LineState_pad_i;output	[1:0]	OpMode_pad_o;input		usb_vbus_pad_i;output		VControl_Load_pad_o;output	[3:0]	VControl_pad_o;input	[7:0]	VStatus_pad_i;output	[SSRAM_HADR:0]	sram_adr_o;input	[31:0]	sram_data_i;output	[31:0]	sram_data_o;output		sram_re_o;output		sram_we_o;/////////////////////////////////////////////////////////////////////// Local Wires and Registers//// UTMI Interfacewire	[7:0]	rx_data;wire		rx_valid, rx_active, rx_err;wire	[7:0]	tx_data;wire		tx_valid;wire		tx_ready;wire		tx_first;wire		tx_valid_last;// Misc UTMI USB statuswire		mode_hs;	// High Speed Modewire		usb_reset;	// USB Resetwire		usb_suspend;	// USB Sleepwire		usb_attached;	// Attached to USBwire		resume_req;	// Resume Request// Memory Arbiter Interfacewire	[SSRAM_HADR:0]	madr;		// word addresswire	[31:0]	mdout;wire	[31:0]	mdin;wire		mwe;wire		mreq;wire		mack;wire		rst;// Wishbone Memory interfacewire	[`USBF_UFC_HADR:0]	ma_adr;wire	[31:0]	ma2wb_d;wire	[31:0]	wb2ma_d;wire		ma_we;wire		ma_req;wire		ma_ack;// WISHBONE Register File interfacewire		rf_re;wire		rf_we;wire	[31:0]	wb2rf_d;wire	[31:0]	rf2wb_d;// Internal Register File Interfacewire	[6:0]	funct_adr;	// This functions address (set by controller)wire	[31:0]	idin;		// Data Inputwire	[3:0]	ep_sel;		// Endpoint Number Inputwire		match;		// Endpoint Matchedwire		dma_in_buf_sz1;wire		dma_out_buf_avail;wire		buf0_rl;	// Reload Buf 0 with original valueswire		buf0_set;	// Write to buf 0wire		buf1_set;	// Write to buf 1wire		uc_bsel_set;	// Write to the uc_bsel fieldwire		uc_dpd_set;	// Write to the uc_dpd fieldwire		int_buf1_set;	// Set buf1 full/empty interruptwire		int_buf0_set;	// Set buf0 full/empty interruptwire		int_upid_set;	// Set unsupported PID interruptwire		int_crc16_set;	// Set CRC16 error interruptwire		int_to_set;	// Set time out interruptwire		int_seqerr_set;	// Set PID sequence error interruptwire		out_to_small;	// OUT packet was to small for DMA operationwire	[31:0]	csr;		// Internal CSR Outputwire	[31:0]	buf0;		// Internal Buf 0 Outputwire	[31:0]	buf1;		// Internal Buf 1 Outputwire	[31:0]	frm_nat;	// Frame Number and Time Registerwire		nse_err;	// No Such Endpoint Errorwire		pid_cs_err;	// PID CS errorwire		crc5_err;	// CRC5 Errorwire		rf_resume_req;	// Resume Request From main CSRreg		susp_o;/////////////////////////////////////////////////////////////////////// Misc Logic//assign rst = rst_i;assign phy_rst_pad_o = ~rst;assign resume_req = resume_req_i;always @(posedge clk_i)	susp_o <= #1 usb_suspend;/////////////////////////////////////////////////////////////////////// Module Instantiations//// UTMI Interfaceusbf_utmi_if	u0(		.phy_clk(	phy_clk_pad_i	),		.rst(		rst		),		.DataOut(	DataOut_pad_o	),		.TxValid(	TxValid_pad_o	),		.TxReady(	TxReady_pad_i	),		.RxValid(	RxValid_pad_i	),		.RxActive(	RxActive_pad_i	),		.RxError(	RxError_pad_i	),		.DataIn(	DataIn_pad_i	),		.XcvSelect(	XcvSelect_pad_o	),		.TermSel(	TermSel_pad_o	),		.SuspendM(	SuspendM_pad_o	),		.LineState(	LineState_pad_i	),		.OpMode(	OpMode_pad_o	),		.usb_vbus(	usb_vbus_pad_i	),		.rx_data(	rx_data		),		.rx_valid(	rx_valid	),		.rx_active(	rx_active	),		.rx_err(	rx_err		),		.tx_data(	tx_data		),		.tx_valid(	tx_valid	),		.tx_valid_last(	tx_valid_last	),		.tx_ready(	tx_ready	),		.tx_first(	tx_first	),		.mode_hs(	mode_hs		),		.usb_reset(	usb_reset	),		.usb_suspend(	usb_suspend	),		.usb_attached(	usb_attached	),		.resume_req(	resume_req	)		);// Protocol Layerusbf_pl #(SSRAM_HADR)	u1(	.clk(			phy_clk_pad_i		),		.rst(			rst			),		.rx_data(		rx_data			),		.rx_valid(		rx_valid		),		.rx_active(		rx_active		),		.rx_err(		rx_err			),		.tx_data(		tx_data			),		.tx_valid(		tx_valid		),		.tx_valid_last(		tx_valid_last		),		.tx_ready(		tx_ready		),		.tx_first(		tx_first		),		.tx_valid_out(		TxValid_pad_o		),		.mode_hs(		mode_hs			),		.usb_reset(		usb_reset		),		.usb_suspend(		usb_suspend		),		.usb_attached(		usb_attached		),		.madr(			madr			),

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -