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

📄 usb_rom.h

📁 USB 1.1 PHY的代码
💻 H
字号:
/////////////////////////////////////////////////////////////////////////                                                             ////////  USB Descriptor ROM                                         ////////                                                             ////////  SystemC Version: usb_rom.h                                 ////////  Author: Alfredo Luiz Foltran Fialho                        ////////          alfoltran@ig.com.br                                ////////                                                             ////////                                                             /////////////////////////////////////////////////////////////////////////////                                                             //////// Verilog Version: usb1_rom1.v                                //////// 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.                                 ////////                                                             /////////////////////////////////////////////////////////////////////////#ifndef USB_ROM_H#define USB_ROM_H#include "systemc.h"SC_MODULE(usb_rom) {  public:	sc_in<bool>			clk;	sc_in<sc_uint<8> >	adr;	sc_out<sc_uint<8> >	dout;	void dout_update(void) {		switch (adr.read()) {// synopsys full_case parallel_case			// ====================================			// =====    DEVICE Descriptor     =====			// ====================================			case 0x00:	dout.write(  18); break;	// this descriptor length			case 0x01:	dout.write(0x01); break;	// descriptor type			case 0x02:	dout.write(0x10); break;	// USB version low byte			case 0x03:	dout.write(0x01); break;	// USB version high byte			case 0x04:	dout.write(0xff); break;	// device class			case 0x05:	dout.write(0x00); break;	// device sub class			case 0x06:	dout.write(0xff); break;	// device protocol			case 0x07:	dout.write(  64); break;	// max packet size			case 0x08:	dout.write(0x34); break;	// vendor ID low byte			case 0x09:	dout.write(0x12); break;	// vendor ID high byte			case 0x0a:	dout.write(0x78); break;	// product ID low byte			case 0x0b:	dout.write(0x56); break;	// product ID high byte			case 0x0c:	dout.write(0x10); break;	// device rel. number low byte			case 0x0d:	dout.write(0x00); break;	// device rel. number high byte			case 0x0e:	dout.write(0x01); break;	// Manufacturer String Index			case 0x0f:	dout.write(0x02); break;	// Product Descr. String Index			case 0x10:	dout.write(0x03); break;	// S/N String Index			case 0x11:	dout.write(0x01); break;	// Number of possible config.			// ====================================			// ===== Configuration Descriptor =====			// ====================================			case 0x12:	dout.write(0x09); break;	// this descriptor length			case 0x13:	dout.write(0x02); break;	// descriptor type			case 0x14:	dout.write(  60); break;	// total data length low byte			case 0x15:	dout.write(   0); break;	// total data length high byte			case 0x16:	dout.write(0x01); break;	// number of interfaces			case 0x17:	dout.write(0x01); break;	// number of configurations			case 0x18:	dout.write(0x00); break;	// Conf. String Index			case 0x19:	dout.write(0x40); break;	// Config. Characteristics			case 0x1a:	dout.write(0x00); break;	// Max. Power Consumption			// ====================================			// =====   Interface Descriptor   =====			// ====================================			case 0x1b:	dout.write(0x09); break;	// this descriptor length			case 0x1c:	dout.write(0x04); break;	// descriptor type			case 0x1d:	dout.write(0x00); break;	// interface number			case 0x1e:	dout.write(0x00); break;	// alternate setting			case 0x1f:	dout.write(0x06); break;	// number of endpoints			case 0x20:	dout.write(0xff); break;	// interface class			case 0x21:	dout.write(0x01); break;	// interface sub class			case 0x22:	dout.write(0xff); break;	// interface protocol			case 0x23:	dout.write(0x00); break;	// interface string index			// ====================================			// =====   Endpoint 1 Descriptor  =====			// ====================================			case 0x24:	dout.write(0x07); break;	// this descriptor length			case 0x25:	dout.write(0x05); break;	// descriptor type			case 0x26:	dout.write(0x81); break;	// endpoint address			case 0x27:	dout.write(0x01); break;	// endpoint attributes			case 0x28:	dout.write(0x00); break;	// max packet size low byte			case 0x29:	dout.write(0x01); break;	// max packet size high byte			case 0x2a:	dout.write(0x01); break;	// polling interval			// ====================================			// =====   Endpoint 2 Descriptor  =====			// ====================================			case 0x2b:	dout.write(0x07); break;	// this descriptor length			case 0x2c:	dout.write(0x05); break;	// descriptor type			case 0x2d:	dout.write(0x02); break;	// endpoint address			case 0x2e:	dout.write(0x01); break;	// endpoint attributes			case 0x2f:	dout.write(0x00); break;	// max packet size low byte			case 0x30:	dout.write(0x01); break;	// max packet size high byte			case 0x31:	dout.write(0x01); break;	// polling interval			// ====================================			// =====   Endpoint 3 Descriptor  =====			// ====================================			case 0x32:	dout.write(0x07); break;	// this descriptor length			case 0x33:	dout.write(0x05); break;	// descriptor type			case 0x34:	dout.write(0x83); break;	// endpoint address			case 0x35:	dout.write(0x02); break;	// endpoint attributes			case 0x36:	dout.write(  64); break;	// max packet size low byte			case 0x37:	dout.write(   0); break;	// max packet size high byte			case 0x38:	dout.write(0x01); break;	// polling interval			// ====================================			// =====   Endpoint 4 Descriptor  =====			// ====================================			case 0x39:	dout.write(0x07); break;	// this descriptor length			case 0x3a:	dout.write(0x05); break;	// descriptor type			case 0x3b:	dout.write(0x04); break;	// endpoint address			case 0x3c:	dout.write(0x02); break;	// endpoint attributes			case 0x3d:	dout.write(  64); break;	// max packet size low byte			case 0x3e:	dout.write(   0); break;	// max packet size high byte			case 0x3f:	dout.write(0x01); break;	// polling interval			// ====================================			// =====   Endpoint 5 Descriptor  =====			// ====================================			case 0x40:	dout.write(0x07); break;	// this descriptor length			case 0x41:	dout.write(0x05); break;	// descriptor type			case 0x42:	dout.write(0x85); break;	// endpoint address			case 0x43:	dout.write(0x03); break;	// endpoint attributes			case 0x44:	dout.write(  64); break;	// max packet size low byte			case 0x45:	dout.write(   0); break;	// max packet size high byte			case 0x46:	dout.write(0x01); break;	// polling interval			// ====================================			// =====   Endpoint 6 Descriptor  =====			// ====================================			case 0x47:	dout.write(0x07); break;	// this descriptor length			case 0x48:	dout.write(0x05); break;	// descriptor type			case 0x49:	dout.write(0x06); break;	// endpoint address			case 0x4a:	dout.write(0x03); break;	// endpoint attributes			case 0x4b:	dout.write(  64); break;	// max packet size low byte			case 0x4c:	dout.write(   0); break;	// max packet size high byte			case 0x4d:	dout.write(0x01); break;	// polling interval			// ====================================			// ===== String Descriptor Lang ID=====			// ====================================			case 0x4e:	dout.write(0x06); break;	// this descriptor length			case 0x4f:	dout.write(0x03); break;	// descriptor type						// Brazilian Portuguese			case 0x50:	dout.write(0x16); break;	// Language ID 0 low byte			case 0x51:	dout.write(0x04); break;	// Language ID 0 high byte						// Brazilian Portuguese			case 0x52:	dout.write(0x16); break;	// Language ID 1 low byte			case 0x53:	dout.write(0x04); break;	// Language ID 1 high byte						// Brazilian Portuguese			case 0x54:	dout.write(0x16); break;	// Language ID 2 low byte			case 0x55:	dout.write(0x04); break;	// Language ID 2 high byte			// ====================================			// =====   String Descriptor 1    =====			// ====================================			case 0x56:	dout.write(  26); break;	// this descriptor length			case 0x57:	dout.write(0x03); break;	// descriptor type						// "BrazilIP.org"			case 0x58:	dout.write(   0); break;			case 0x59:	dout.write( 'g'); break;			case 0x5a:	dout.write(   0); break;			case 0x5b:	dout.write( 'r'); break;			case 0x5c:	dout.write(   0); break;			case 0x5d:	dout.write( 'o'); break;			case 0x5e:	dout.write(   0); break;			case 0x5f:	dout.write( '.'); break;			case 0x60:	dout.write(   0); break;			case 0x61:	dout.write( 'P'); break;			case 0x62:	dout.write(   0); break;			case 0x63:	dout.write( 'I'); break;			case 0x64:	dout.write(   0); break;			case 0x65:	dout.write( 'l'); break;			case 0x66:	dout.write(   0); break;			case 0x67:	dout.write( 'i'); break;			case 0x68:	dout.write(   0); break;			case 0x69:	dout.write( 'z'); break;			case 0x6a:	dout.write(   0); break;			case 0x6b:	dout.write( 'a'); break;			case 0x6c:	dout.write(   0); break;			case 0x6d:	dout.write( 'r'); break;			case 0x6e:	dout.write(   0); break;			case 0x6f:	dout.write( 'B'); break;			// ====================================			// =====   String Descriptor 2    =====			// ====================================			case 0x70:	dout.write(  28); break;	// this descriptor length			case 0x71:	dout.write(0x03); break;	// descriptor type						// "Projeto F阯ix"			case 0x72:	dout.write(   0); break;			case 0x73:	dout.write( 'x'); break;			case 0x74:	dout.write(   0); break;			case 0x75:	dout.write( 'i'); break;			case 0x76:	dout.write(   0); break;			case 0x77:	dout.write( 'n'); break;			case 0x78:	dout.write(   0); break;			case 0x79:	dout.write(0xea); break;	//e-circumflex			case 0x7a:	dout.write(   0); break;			case 0x7b:	dout.write( 'F'); break;			case 0x7c:	dout.write(   0); break;			case 0x7d:	dout.write( ' '); break;			case 0x7e:	dout.write(   0); break;			case 0x7f:	dout.write( 'o'); break;			case 0x80:	dout.write(   0); break;			case 0x81:	dout.write( 't'); break;			case 0x82:	dout.write(   0); break;			case 0x83:	dout.write( 'e'); break;			case 0x84:	dout.write(   0); break;			case 0x85:	dout.write( 'j'); break;			case 0x86:	dout.write(   0); break;			case 0x87:	dout.write( 'o'); break;			case 0x88:	dout.write(   0); break;			case 0x89:	dout.write( 'r'); break;			case 0x8a:	dout.write(   0); break;			case 0x8b:	dout.write( 'P'); break;			// ====================================			// =====   String Descriptor 3    =====			// ====================================			case 0x8c:	dout.write(  54); break;	// this descriptor length			case 0x8d:	dout.write(0x03); break;	// descriptor type						// "Vers鉶 Experimental (2003)"			case 0x8e:	dout.write(   0); break;			case 0x8f:	dout.write( ')'); break;			case 0x90:	dout.write(   0); break;			case 0x91:	dout.write( '3'); break;			case 0x92:	dout.write(   0); break;			case 0x93:	dout.write( '0'); break;			case 0x94:	dout.write(   0); break;			case 0x95:	dout.write( '0'); break;			case 0x96:	dout.write(   0); break;			case 0x97:	dout.write( '2'); break;			case 0x98:	dout.write(   0); break;			case 0x99:	dout.write( '('); break;			case 0x9a:	dout.write(   0); break;			case 0x9b:	dout.write( ' '); break;			case 0x9c:	dout.write(   0); break;			case 0x9d:	dout.write( 'l'); break;			case 0x9e:	dout.write(   0); break;			case 0x9f:	dout.write( 'a'); break;			case 0xa0:	dout.write(   0); break;			case 0xa1:	dout.write( 't'); break;			case 0xa2:	dout.write(   0); break;			case 0xa3:	dout.write( 'n'); break;			case 0xa4:	dout.write(   0); break;			case 0xa5:	dout.write( 'e'); break;			case 0xa6:	dout.write(   0); break;			case 0xa7:	dout.write( 'm'); break;			case 0xa8:	dout.write(   0); break;			case 0xa9:	dout.write( 'i'); break;			case 0xaa:	dout.write(   0); break;			case 0xab:	dout.write( 'r'); break;			case 0xac:	dout.write(   0); break;			case 0xad:	dout.write( 'e'); break;			case 0xae:	dout.write(   0); break;			case 0xaf:	dout.write( 'p'); break;			case 0xb0:	dout.write(   0); break;			case 0xb1:	dout.write( 'x'); break;			case 0xb2:	dout.write(   0); break;			case 0xb3:	dout.write( 'E'); break;			case 0xb4:	dout.write(   0); break;			case 0xb5:	dout.write( ' '); break;			case 0xb6:	dout.write(   0); break;			case 0xb7:	dout.write( 'o'); break;			case 0xb8:	dout.write(   0); break;			case 0xb9:	dout.write(0xe3); break;	//a-tilde			case 0xba:	dout.write(   0); break;			case 0xbb:	dout.write( 's'); break;			case 0xbc:	dout.write(   0); break;			case 0xbd:	dout.write( 'r'); break;			case 0xbe:	dout.write(   0); break;			case 0xbf:	dout.write( 'e'); break;			case 0xc0:	dout.write(   0); break;			case 0xc1:	dout.write( 'V'); break;			default:	dout.write(0x00); break;		}	}	SC_CTOR(usb_rom) {		SC_METHOD(dout_update);		sensitive << clk.pos();	}};#endif

⌨️ 快捷键说明

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