URL
https://opencores.org/ocsvn/usbhostslave/usbhostslave/trunk
Subversion Repositories usbhostslave
[/] [usbhostslave/] [trunk/] [usbDevice/] [bench/] [testHarness.v] - Rev 40
Compare with Previous | Blame | View Log
`include "timescale.v" module testHarness( ); // ----------------------------------- // Local Wires // ----------------------------------- reg clk; reg rst; wire [8:0] adr; wire [7:0] masterDout; wire [7:0] masterDin; wire [7:0] usbSlaveDout; wire [7:0] usbHostDout; wire stb; wire we; wire ack; wire host_stb; wire DPlusPullup; wire DPlusPullDown; wire DMinusPullup; wire DMinusPulDown; reg USBWireVP; reg USBWireVM; wire [1:0] hostUSBWireDataIn; wire [1:0] hostUSBWireDataOut; wire hostUSBWireCtrlOut; wire usbSlaveOE_n; wire usbSlaveVP_out; wire usbSlaveVM_out; wire USBDMinusPullup; assign USBDMinusPullup = 1'b0; initial begin $dumpfile("wave.vcd"); $dumpvars(0, testHarness); end pullup(DPlusPullup); pulldown(DPlusPullDown); pullup(DMinusPullup); pulldown(DMinusPullDown); assign hostUSBWireDataIn = {USBWireVP, USBWireVM}; always @(*) begin if (hostUSBWireCtrlOut == 1'b1 && usbSlaveOE_n == 1'b1) {USBWireVP, USBWireVM} <= hostUSBWireDataOut; else if (hostUSBWireCtrlOut == 1'b0 && usbSlaveOE_n == 1'b0) {USBWireVP, USBWireVM} <= {usbSlaveVP_out, usbSlaveVM_out}; else if (hostUSBWireCtrlOut == 1'b1 && usbSlaveOE_n == 1'b0) {USBWireVP, USBWireVM} <= 2'bxx; else if (hostUSBWireCtrlOut == 1'b0 && usbSlaveOE_n == 1'b1) begin if (USBDPlusPullup == 1'b1) USBWireVP <= DPlusPullup; else USBWireVP <= DPlusPullDown; if (USBDMinusPullup == 1'b1) USBWireVM <= DMinusPullup; else USBWireVM <= DMinusPullDown; end end assign host_stb = stb; assign masterDin = usbHostDout; //Parameters declaration: defparam u_usbHost.HOST_FIFO_DEPTH = 64; parameter HOST_FIFO_DEPTH = 64; defparam u_usbHost.HOST_FIFO_ADDR_WIDTH = 6; parameter HOST_FIFO_ADDR_WIDTH = 6; usbHost u_usbHost ( .clk_i(clk), .rst_i(rst), .address_i(adr[7:0]), .data_i(masterDout), .data_o(usbHostDout), .we_i(we), .strobe_i(host_stb), .ack_o(ack), .usbClk(clk), .hostSOFSentIntOut(hostSOFSentIntOut), .hostConnEventIntOut(hostConnEventIntOut), .hostResumeIntOut(hostResumeIntOut), .hostTransDoneIntOut(hostTransDoneIntOut), .USBWireDataIn(hostUSBWireDataIn), .USBWireDataInTick(USBWireDataInTick), .USBWireDataOut(hostUSBWireDataOut), .USBWireDataOutTick(USBWireDataOutTick), .USBWireCtrlOut(hostUSBWireCtrlOut), .USBFullSpeed(USBFullSpeed) ); usbDevice u_usbDevice ( .clk(clk), .rst(rst), .usbSlaveVP_in(USBWireVP), .usbSlaveVM_in(USBWireVM), .usbSlaveVP_out(usbSlaveVP_out), .usbSlaveVM_out(usbSlaveVM_out), .usbSlaveOE_n(usbSlaveOE_n), .usbDPlusPullup(USBDPlusPullup), .vBusDetect(1'b1) ); wb_master_model #(.dwidth(8), .awidth(9)) u_wb_master_model ( .clk(clk), .rst(rst), .adr(adr), .din(masterDin), .dout(masterDout), .cyc(), .stb(stb), .we(we), .sel(), .ack(ack), .err(1'b0), .rty(1'b0) ); //--------------- reset --------------- initial begin @(posedge clk); @(posedge clk); @(posedge clk); @(posedge clk); @(posedge clk); @(posedge clk); @(posedge clk); @(posedge clk); rst <= 1'b1; @(posedge clk); rst <= 1'b0; @(posedge clk); end // ****************************** Clock section ****************************** `define CLK_50MHZ_HALF_PERIOD 10 `define CLK_25MHZ_HALF_PERIOD 20 always begin #`CLK_25MHZ_HALF_PERIOD clk <= 1'b0; #`CLK_25MHZ_HALF_PERIOD clk <= 1'b1; end endmodule