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

📄 usbf_utmi_if.v

📁 USB2.0 chip的一部分verilog源码。opencore上下的
💻 V
字号:
`include "usbf_defines.v"module usbf_utmi_if( 		// UTMI接口部分的端口定义		phy_clk, rst,		DataOut, TxValid, TxReady,		RxValid, RxActive, RxError, DataIn,		XcvSelect, TermSel, SuspendM, LineState,		OpMode, usb_vbus,		// 内部接口		rx_data, rx_valid, rx_active, rx_err,		tx_data, tx_valid, tx_valid_last, tx_ready,		tx_first,		// 其他接口		mode_hs, usb_reset, usb_suspend, usb_attached,		resume_req, suspend_clr);input			phy_clk;					//工作时钟input			rst;						//复位output [7:0]	DataOut;					//输出数据output		TxValid;					//有效的数据传送input			TxReady;					//数据传送就绪input	[7:0]		DataIn;					//输入数据input			RxValid;					//有效的接收input			RxActive;					//接收准备就绪input			RxError;					//接收出错output		XcvSelect;					//通信模式选择output		TermSel;					//通信模式操作output		SuspendM;					//挂起标志input	[1:0]		LineState;					//节点连线状态output [1:0]	OpMode;					//操作模式input			usb_vbus;					//USB总线状态output [7:0]	rx_data;					//接收数据output		rx_valid, rx_active, rx_err;		//接收标志信号input	[7:0]		tx_data;					//传送数据input			tx_valid;					//本次传送是否有效input			tx_valid_last;				//上一次传送是否有效output		tx_ready;					//数据传送就绪input			tx_first;					//第一次传送数据output		mode_hs;					//高速模式output		usb_reset;					//USB复位output		usb_suspend;				//USB挂起output		usb_attached;				//设备连接至USBinput			resume_req;				//恢复请求output		suspend_clr;				//挂起状态清除//模块内部连线与寄存器资源定义reg	[7:0]		rx_data;					//接收数据字节寄存器reg			rx_valid, rx_active, rx_err;		//数据接收状态寄存器reg	[7:0]		DataOut;					//输出数据字节寄存器reg			tx_ready;					//数据传送就绪标志寄存器reg			TxValid;					//有效数据传送标志寄存器wire			drive_k;					//强制输出reg			drive_k_r;					//数据接收操作的输入寄存器行为描述`ifdef USBF_ASYNC_RESETalways @(posedge phy_clk or negedge rst)		`elsealways @(posedge phy_clk)					//没有复位信号`endif	if(!rst)	rx_valid <= 1'b0;				//若发现复位信号,则数据接收无效	else		rx_valid <= RxValid;			//否则数据接收状态与UTMI接口的状态一致//数据接收状态准备就绪,等待接收数据`ifdef USBF_ASYNC_RESETalways @(posedge phy_clk or negedge rst)`elsealways @(posedge phy_clk)`endif	if(!rst)	rx_active <= 1'b0;	else		rx_active <= RxActive;//数据接收出错`ifdef USBF_ASYNC_RESETalways @(posedge phy_clk or negedge rst)`elsealways @(posedge phy_clk)`endif	if(!rst)	rx_err <= 1'b0;	else		rx_err <= RxError;//开始接收数据always @(posedge phy_clk)		rx_data <= DataIn;//数据发送操作的输出/输入寄存器行为描述//是否开始输出数据always @(posedge phy_clk)	if(TxReady || tx_first)	DataOut <= tx_data;	else	if(drive_k)		DataOut <= 8'h00;		//若强制输出,则输出0x00//数据发送就绪状态与UTMI接口部分一致always @(posedge phy_clk)	tx_ready <= TxReady;always @(posedge phy_clk)	drive_k_r <= drive_k;//有效的数据发送标志信号`ifdef USBF_ASYNC_RESETalways @(posedge phy_clk or negedge rst)`elsealways @(posedge phy_clk)`endif	if(!rst)	TxValid <= 1'b0;	else	TxValid <= tx_valid | drive_k | tx_valid_last | (TxValid & !(TxReady | drive_k_r));// Line Status Signaling & Speed Negotiation Block//usbf_utmi_ls	u0(		.clk(		phy_clk		),		.rst(		rst		),		.resume_req(	resume_req	),		.rx_active(	rx_active	),		.tx_ready(	tx_ready	),		.drive_k(	drive_k		),		.XcvSelect(	XcvSelect	),		.TermSel(	TermSel		),		.SuspendM(	SuspendM	),		.LineState(	LineState	),		.OpMode(	OpMode		),		.usb_vbus(	usb_vbus	),		.mode_hs(	mode_hs		),		.usb_reset(	usb_reset	),		.usb_suspend(	usb_suspend	),		.usb_attached(	usb_attached	),		.suspend_clr(	suspend_clr	)		);endmodule

⌨️ 快捷键说明

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