|
|
module usbDeviceXilinxTop (
|
module usbDeviceXilinxTop (
|
|
|
//
|
//
|
// Global signals
|
// Global signals
|
//
|
//
|
clk,
|
clk,
|
|
|
//
|
//
|
// misc Starter Kit control sigs
|
// misc Starter Kit control sigs
|
//
|
//
|
E_NRST,
|
E_NRST,
|
SPI_SCK,
|
SPI_SCK,
|
NF_CE,
|
NF_CE,
|
SD_CS,
|
SD_CS,
|
|
|
//
|
//
|
// USB slave
|
// USB slave
|
//
|
//
|
usbSlaveVP,
|
usbSlaveVP,
|
usbSlaveVM,
|
usbSlaveVM,
|
usbSlaveOE_n,
|
usbSlaveOE_n,
|
usbDPlusPullup
|
usbDPlusPullup
|
|
|
);
|
);
|
|
|
//
|
//
|
// Global signals
|
// Global signals
|
//
|
//
|
input clk;
|
input clk;
|
|
|
//
|
//
|
// misc Starter Kit control sigs
|
// misc Starter Kit control sigs
|
//
|
//
|
output E_NRST;
|
output E_NRST;
|
output SPI_SCK;
|
output SPI_SCK;
|
output NF_CE;
|
output NF_CE;
|
output SD_CS;
|
output SD_CS;
|
|
|
//
|
//
|
// USB slave
|
// USB slave
|
//
|
//
|
inout usbSlaveVP;
|
inout usbSlaveVP;
|
inout usbSlaveVM;
|
inout usbSlaveVM;
|
output usbSlaveOE_n;
|
output usbSlaveOE_n;
|
output usbDPlusPullup;
|
output usbDPlusPullup;
|
|
|
//local wires and regs
|
//local wires and regs
|
reg [1:0] rstReg;
|
reg [1:0] rstReg;
|
wire rst;
|
wire rst;
|
wire pll_locked;
|
wire pll_locked;
|
wire clk48MHz;
|
wire clk48MHz;
|
|
|
|
|
assign E_NRST = 1'b0;
|
assign E_NRST = 1'b0;
|
assign SPI_SCK = 1'b0;
|
assign SPI_SCK = 1'b0;
|
assign NF_CE = 1'b0;
|
assign NF_CE = 1'b0;
|
assign SD_CS = 1'b1;
|
assign SD_CS = 1'b1;
|
|
|
|
|
pll_48MHz_xilinx pll_48MHz_inst (
|
pll_48MHz_xilinx pll_48MHz_inst (
|
.CLKIN_IN ( clk ),
|
.CLKIN_IN ( clk ),
|
.CLK0_OUT (clk48MHz),
|
.CLK0_OUT (clk48MHz),
|
.LOCKED_OUT( pll_locked)
|
.LOCKED_OUT( pll_locked)
|
);
|
);
|
|
|
//generate sync reset from pll lock signal
|
//generate sync reset from pll lock signal
|
always @(posedge clk48MHz) begin
|
always @(posedge clk48MHz) begin
|
rstReg[1:0] <= {rstReg[0], ~pll_locked};
|
rstReg[1:0] <= {rstReg[0], ~pll_locked};
|
end
|
end
|
assign rst = rstReg[1];
|
assign rst = rstReg[1];
|
|
|
|
|
usbDevice u_usbDevice (
|
usbDevice u_usbDevice (
|
.clk(clk48MHz),
|
.clk(clk48MHz),
|
.rst(rst),
|
.rst(rst),
|
.usbSlaveVP_in(usbSlaveVP_in),
|
.usbSlaveVP_in(usbSlaveVP_in),
|
.usbSlaveVM_in(usbSlaveVM_in),
|
.usbSlaveVM_in(usbSlaveVM_in),
|
.usbSlaveVP_out(usbSlaveVP_out),
|
.usbSlaveVP_out(usbSlaveVP_out),
|
.usbSlaveVM_out(usbSlaveVM_out),
|
.usbSlaveVM_out(usbSlaveVM_out),
|
.usbSlaveOE_n(usbSlaveOE_n),
|
.usbSlaveOE_n(usbSlaveOE_n),
|
.usbDPlusPullup(usbDPlusPullup),
|
.usbDPlusPullup(usbDPlusPullup),
|
.vBusDetect(1'b1)
|
.vBusDetect(1'b1)
|
);
|
);
|
|
|
|
|
assign {usbSlaveVP_in, usbSlaveVM_in} = {usbSlaveVP, usbSlaveVM};
|
assign {usbSlaveVP_in, usbSlaveVM_in} = {usbSlaveVP, usbSlaveVM};
|
assign {usbSlaveVP, usbSlaveVM} = (usbSlaveOE_n == 1'b0) ? {usbSlaveVP_out, usbSlaveVM_out} : 2'bzz;
|
assign {usbSlaveVP, usbSlaveVM} = (usbSlaveOE_n == 1'b0) ? {usbSlaveVP_out, usbSlaveVM_out} : 2'bzz;
|
|
|
endmodule
|
endmodule
|
|
|
|
|
|
|