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

📄 usbmonitor.v

📁 实现USB接口功能的VHDL和verilog完整源代码
💻 V
字号:

// THIS BLOCK INCLUDES 8051IF 

module Usbmonitor
	(
	// inputs from bus
		pwronreset,
		clock48,	// 48 MHz clock
		rcvin,		// differential in
		vpin,		// plus in
		vmin,		// minus in
		vmo,		// minus out
		vpo,		// plus out
		usboen,	// oe for usb bits
		suspend
	);
  
  input     pwronreset;
  input	     clock48;
  input	     rcvin;
  input	     vpin;
  input	     vmin;
  output     vmo;
  output     vpo;
  output     usboen;
  output     suspend;

// wires for endpoints
  wire	     endp0rdstall = 1'b0;
  wire	     endp0wrstall = 1'b0;
  wire	     endp1wrstall = 1'b0;
  wire       endp2rdstall =1 'b0; 
 
  wire [7:0] currentalternatesetting;
  wire [7:0] endpwrdata;
  wire [7:0] endp2rddata;
  wire [7:0] endp0rddata;
  wire [6:0] devromdescriptorindex;
  wire [7:0] devromsetupaddr;
  wire [7:0] romdevsetupdata;
  wire [2:0] setupbyteaddr = 3'b000;
  wire [7:0] setupdataout;	// one of 8 bytes of the setup stage data
  wire[10:0] framenumber;
  wire[3:0] vidpin =4'hf;
Ucore core (
        .clock48 (clock48),
        .rcvin (rcvin),
        .vpin (vpin),
        .vmin (vmin),
        .vmo (vmo),
        .vpo (vpo),
        .usboen (usboen),
        .usbclockout (usbclock),
        .usbclock (usbclock),
        .pwronreset(pwronreset),
	    .usbreset (usbreset),
	    .endpwrdata (endpwrdata),
	    .datapacketok (datapacketok),
	    .datapacketnotok (datapacketnotok),
        .devromdescriptorindex(devromdescriptorindex),
        .devromsetupaddr(devromsetupaddr),
        .romdevsetupdata(romdevsetupdata),
	    .romen(romen),
	    .endp0internaltogglebit(endp0internaltogglebit),
        .setupcycle(setupcycle),
        .setupbyteaddr(setupbyteaddr),
        .setupdata(setupdataout),
	    .rcvack(rcvack),
	    .suspend(suspend),
		.framenumber(framenumber),
		.currentalternatesetting (currentalternatesetting),
    
	// Vendor CMD Decoding

	`include "Uvendorconnections.v"

	// connections to endpoint0 - read/write
	.endp0wr (endp0wr),
	.endp0wrready (endp0wrready),
	.endp0wrstall (endp0wrstall),
	.endp0rd (endp0rd),
	.endp0rddata (endp0rddata),
	.endp0rdready (endp0rdready),
	.endp0rdstall (endp0rdstall),

	// connections to endpoint1 - write only
	.endp1wr (endp1wr),
	.endp1wrready (endp1wrready),
	.endp1wrstall (endp1wrstall),

	// connections to endpoint2 - read only
	.endp2rd (endp2rd),
	.endp2rddata(endp2rddata),
	.endp2rdready(endp2rdready),
	.endp2rdstall (endp2rdstall)
	);
wire [7:0] cmddatamc;
wire [7:0] statusdatamc;
wire [7:0] datawrdata;
wire [7:0] datarddata;

UCtlreg ctlreg (
				.usbclock(usbclock),
				.syncreset(usbreset),
				.setcmd(setcmd),
				.getstatus(getstatus),
				.cmdwrusb(endp0wr),
				.statusrdusb(endp0rd),
				.cmddatausb(endpwrdata),
				.statusdatausb(endp0rddata),
				.statusrdreadyusb(endp0rdready),
				.cmdwrreadyusb(endp0wrready),
				// Memory Card
				.cmdrdmc(cmdrdmc),
				.cmddatamc(cmddatamc),
				.statuswrmc(statuswrmc),
				.statusdatamc(statusdatamc),
				.statuswrreadymc(statuswrreadymc),
				.cmdrdreadymc(cmdrdreadymc),
				// Configuration of MMC or SSFDC
				.enmmc(1'b0)//(enmmc)
				);

Ufifo endpoint1wr (
	  .usbclock(usbclock),
	  .syncreset(usbreset),

   // write port USB
	  .fifowr(endp1wr),
	  .fifowrdata(endpwrdata),
	  .fifowrready(endp1wrready),
	  .datapacketok(datapacketok),
	  .datapacketnotok(datapacketnotok),
   // read port M/C 
	  //.fiford(1'b0),
	  .fiford(datard),   // 8051 make the read strobe for getting data
	  .fiforddata(datarddata),
	  .fifordready(datardready)
	  );


Ufiforx endpoint2rd (
	  .usbclock(usbclock),
	  .syncreset(usbreset),

   // write port  M/C
	  .fifowr(datawr),
	  .fifowrdata(datawrdata),
	  .fifowrready(datawrready),
	  .datapacketok(datapacketok),
	  .datapacketnotok(datapacketnotok),
   // read port  USB
	  .fiford(endp2rd),
	  .fiforddata(endp2rddata),
	  .fifordready(endp2rdready)
	  );


Udevrom rom (
	// addressing
	.devromdescriptorindex (devromdescriptorindex),
	.devromsetupaddr (devromsetupaddr),

	// read port
	.romdevsetupdata (romdevsetupdata)
	);

	       
endmodule

⌨️ 快捷键说明

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