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

📄 usb_tx_phy.h

📁 USB 1.1 PHY的代码
💻 H
字号:
/////////////////////////////////////////////////////////////////////////                                                             ////////  USB TX PHY                                                 ////////                                                             ////////  SystemC Version: usb_tx_phy.h                              ////////  Author: Alfredo Luiz Foltran Fialho                        ////////          alfoltran@ig.com.br                                ////////                                                             ////////                                                             /////////////////////////////////////////////////////////////////////////////                                                             //////// Verilog Version: usb_tx_phy.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_TX_PHY_H#define USB_TX_PHY_Henum TX_STATE {TX_IDLE, TX_SOP, TX_DATA, TX_EOP1, TX_EOP2, TX_WAIT};SC_MODULE(usb_tx_phy) {  public:	sc_in<bool>			clk;	sc_in<bool>			rst;	sc_in<bool>			fs_ce;	sc_in<bool>			phy_mode;	sc_out<bool>		txdp, txdn, txoe;	sc_in<sc_uint<8> >	DataOut_i;	sc_in<bool>			TxValid_i;	sc_out<bool>		TxReady_o;	sc_signal<sc_uint<3> >	state, next_state;	sc_signal<bool>			tx_ready, tx_ready_d;	sc_signal<bool>			ld_sop_d, ld_data, ld_data_d, ld_eop_d;	sc_signal<bool>			tx_ip, tx_ip_sync;	sc_signal<sc_uint<3> >	bit_cnt;	sc_signal<sc_uint<8> >	hold_reg;	sc_signal<bool>			sd_raw_o;	sc_signal<bool>			hold;	sc_signal<bool>			data_done, sft_done, sft_done_r, sft_done_e, eop_done;	sc_signal<sc_uint<3> >	one_cnt;	sc_signal<bool>			stuff;	sc_signal<bool>			sd_bs_o, sd_nrzi_o;	sc_signal<bool>			append_eop, append_eop_sync1, append_eop_sync2, append_eop_sync3;	sc_signal<bool>			txoe_r1, txoe_r2;	void misc_logic_up1(void);	void misc_logic_up2(void);	void tpi_up1(void);			// Transmit in Progress Indicator	void tpi_up2(void);	void tpi_up3(void);	void sr_up1(void);			// Shift Register	void sr_up2(void);	void sr_up3(void);	void sr_up4(void);	void sr_up5(void);	void sr_hold_up(void);	void sr_sft_done_e_up(void);	void bs_up1(void);			// Bit Stuffer	void bs_up2(void);	void bs_stuff_up(void);	void nrzi_up(void);			// NRZI Encoder	void eop_up1(void);			// EOP Append Logic	void eop_up2(void);	void eop_up3(void);	void eop_up4(void);	void eop_done_up(void);	void oel_up1(void);			// Output Enable Logic	void oel_up2(void);	void oel_up3(void);	void or_up(void);			// Output Registers	void tx_statemachine(void);	void tx_state_up(void);	SC_CTOR(usb_tx_phy) {		SC_METHOD(misc_logic_up1);		sensitive << clk.pos();		SC_METHOD(misc_logic_up2);		sensitive << clk.pos();		#ifdef USB_ASYNC_RESET			sensitive << rst.neg();		#endif		SC_METHOD(tpi_up1);		sensitive << clk.pos();		#ifdef USB_ASYNC_RESET			sensitive << rst.neg();		#endif		SC_METHOD(tpi_up2);		sensitive << clk.pos();		#ifdef USB_ASYNC_RESET			sensitive << rst.neg();		#endif		SC_METHOD(tpi_up3);		sensitive << clk.pos();		#ifdef USB_ASYNC_RESET			sensitive << rst.neg();		#endif		SC_METHOD(sr_up1);		sensitive << clk.pos();		#ifdef USB_ASYNC_RESET			sensitive << rst.neg();		#endif		SC_METHOD(sr_up2);		sensitive << clk.pos();		SC_METHOD(sr_up3);		sensitive << clk.pos();		SC_METHOD(sr_up4);		sensitive << clk.pos();		SC_METHOD(sr_up5);		sensitive << clk.pos();		SC_METHOD(sr_hold_up);		sensitive << stuff;		SC_METHOD(sr_sft_done_e_up);		sensitive << sft_done << sft_done_r;		SC_METHOD(bs_up1);		sensitive << clk.pos();		#ifdef USB_ASYNC_RESET			sensitive << rst.neg();		#endif		SC_METHOD(bs_up2);		sensitive << clk.pos();		#ifdef USB_ASYNC_RESET			sensitive << rst.neg();		#endif		SC_METHOD(bs_stuff_up);		sensitive << one_cnt;		SC_METHOD(nrzi_up);		sensitive << clk.pos();		#ifdef USB_ASYNC_RESET			sensitive << rst.neg();		#endif		SC_METHOD(eop_up1);		sensitive << clk.pos();		#ifdef USB_ASYNC_RESET			sensitive << rst.neg();		#endif		SC_METHOD(eop_up2);		sensitive << clk.pos();		#ifdef USB_ASYNC_RESET			sensitive << rst.neg();		#endif		SC_METHOD(eop_up3);		sensitive << clk.pos();		#ifdef USB_ASYNC_RESET			sensitive << rst.neg();		#endif		SC_METHOD(eop_up4);		sensitive << clk.pos();		#ifdef USB_ASYNC_RESET			sensitive << rst.neg();		#endif		SC_METHOD(eop_done_up);		sensitive << append_eop_sync3;		SC_METHOD(oel_up1);		sensitive << clk.pos();		#ifdef USB_ASYNC_RESET			sensitive << rst.neg();		#endif		SC_METHOD(oel_up2);		sensitive << clk.pos();		#ifdef USB_ASYNC_RESET			sensitive << rst.neg();		#endif		SC_METHOD(oel_up3);		sensitive << clk.pos();		#ifdef USB_ASYNC_RESET			sensitive << rst.neg();		#endif		SC_METHOD(or_up);		sensitive << clk.pos();		#ifdef USB_ASYNC_RESET			sensitive << rst.neg();		#endif		SC_METHOD(tx_statemachine);		sensitive << state << TxValid_i << data_done << sft_done_e << eop_done << fs_ce;		SC_METHOD(tx_state_up);		sensitive << clk.pos();		#ifdef USB_ASYNC_RESET			sensitive << rst.neg();		#endif	}};#endif

⌨️ 快捷键说明

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