OpenCores
URL https://opencores.org/ocsvn/usbhostslave/usbhostslave/trunk

Subversion Repositories usbhostslave

[/] [usbhostslave/] [trunk/] [RTL/] [hostController/] [sendpacketarbiter.v] - Diff between revs 9 and 22

Go to most recent revision | Show entire file | Details | Blame | View Log

Rev 9 Rev 22
Line 1... Line 1...
 
 
 
// File        : ../RTL/hostController/sendpacketarbiter.v
 
// Generated   : 10/06/06 19:35:26
 
// From        : ../RTL/hostController/sendpacketarbiter.asf
 
// By          : FSM2VHDL ver. 5.0.0.9
 
 
//////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////
////                                                              ////
////                                                              ////
//// sendpacketarbiter
//// sendpacketarbiter
////                                                              ////
////                                                              ////
//// This file is part of the usbhostslave opencores effort.
//// This file is part of the usbhostslave opencores effort.
Line 40... Line 45...
//// Public License along with this source; if not, download it   ////
//// Public License along with this source; if not, download it   ////
//// from http://www.opencores.org/lgpl.shtml                     ////
//// from http://www.opencores.org/lgpl.shtml                     ////
////                                                              ////
////                                                              ////
//////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////
//
//
`timescale 1ns / 1ps
`include "timescale.v"
`include "usbConstants_h.v"
`include "usbConstants_h.v"
 
 
module sendPacketArbiter (clk, HC_PID, HC_SP_WEn, HCTxGnt, HCTxReq, rst, sendPacketPID, sendPacketWEnable, SOF_SP_WEn, SOFTxGnt, SOFTxReq);
module sendPacketArbiter (HCTxGnt, HCTxReq, HC_PID, HC_SP_WEn, SOFTxGnt, SOFTxReq, SOF_SP_WEn, clk, rst, sendPacketPID, sendPacketWEnable);
input   clk;
input   HCTxReq;
input   [3:0]HC_PID;
input   [3:0]HC_PID;
input   HC_SP_WEn;
input   HC_SP_WEn;
input   HCTxReq;
 
input   rst;
 
input   SOF_SP_WEn;
 
input   SOFTxReq;
input   SOFTxReq;
 
input   SOF_SP_WEn;
 
input   clk;
 
input   rst;
output  HCTxGnt;
output  HCTxGnt;
 
output  SOFTxGnt;
output  [3:0]sendPacketPID;
output  [3:0]sendPacketPID;
output  sendPacketWEnable;
output  sendPacketWEnable;
output  SOFTxGnt;
 
 
 
wire    clk;
 
wire    [3:0]HC_PID;
 
wire    HC_SP_WEn;
 
reg     HCTxGnt, next_HCTxGnt;
reg     HCTxGnt, next_HCTxGnt;
wire    HCTxReq;
wire    HCTxReq;
 
wire    [3:0] HC_PID;
 
wire    HC_SP_WEn;
 
reg     SOFTxGnt, next_SOFTxGnt;
 
wire    SOFTxReq;
 
wire    SOF_SP_WEn;
 
wire    clk;
wire    rst;
wire    rst;
reg     [3:0]sendPacketPID, next_sendPacketPID;
reg     [3:0]sendPacketPID, next_sendPacketPID;
reg     sendPacketWEnable, next_sendPacketWEnable;
reg     sendPacketWEnable, next_sendPacketWEnable;
wire    SOF_SP_WEn;
 
reg     SOFTxGnt, next_SOFTxGnt;
 
wire    SOFTxReq;
 
 
 
// diagram signals declarations
// diagram signals declarations
reg muxSOFNotHC, next_muxSOFNotHC;
reg muxSOFNotHC, next_muxSOFNotHC;
 
 
// BINARY ENCODED state machine: sendPktArb
// BINARY ENCODED state machine: sendPktArb
Line 78... Line 83...
`define HC_ACT 2'b00
`define HC_ACT 2'b00
`define SOF_ACT 2'b01
`define SOF_ACT 2'b01
`define SARB_WAIT_REQ 2'b10
`define SARB_WAIT_REQ 2'b10
`define START_SARB 2'b11
`define START_SARB 2'b11
 
 
reg [1:0]CurrState_sendPktArb, NextState_sendPktArb;
reg [1:0] CurrState_sendPktArb;
 
reg [1:0] NextState_sendPktArb;
 
 
// Diagram actions (continuous assignments allowed only: assign ...)
// Diagram actions (continuous assignments allowed only: assign ...)
 
 
// hostController/SOFTransmit mux
// hostController/SOFTransmit mux
always @(muxSOFNotHC or SOF_SP_WEn or HC_SP_WEn or HC_PID)
always @(muxSOFNotHC or SOF_SP_WEn or HC_SP_WEn or HC_PID)
begin
begin
if (muxSOFNotHC  == 1'b1)
if (muxSOFNotHC  == 1'b1)
begin
begin
Line 96... Line 103...
sendPacketWEnable <= HC_SP_WEn;
sendPacketWEnable <= HC_SP_WEn;
sendPacketPID <= HC_PID;
sendPacketPID <= HC_PID;
end
end
end
end
 
 
 
//--------------------------------------------------------------------
// Machine: sendPktArb
// Machine: sendPktArb
 
//--------------------------------------------------------------------
// NextState logic (combinatorial)
//----------------------------------
 
// Next State Logic (combinatorial)
 
//----------------------------------
always @ (HCTxReq or SOFTxReq or HCTxGnt or SOFTxGnt or muxSOFNotHC or CurrState_sendPktArb)
always @ (HCTxReq or SOFTxReq or HCTxGnt or SOFTxGnt or muxSOFNotHC or CurrState_sendPktArb)
begin
begin : sendPktArb_NextState
  NextState_sendPktArb <= CurrState_sendPktArb;
  NextState_sendPktArb <= CurrState_sendPktArb;
  // Set default values for outputs and signals
  // Set default values for outputs and signals
  next_HCTxGnt <= HCTxGnt;
  next_HCTxGnt <= HCTxGnt;
  next_SOFTxGnt <= SOFTxGnt;
  next_SOFTxGnt <= SOFTxGnt;
  next_muxSOFNotHC <= muxSOFNotHC;
  next_muxSOFNotHC <= muxSOFNotHC;
  case (CurrState_sendPktArb)  // synopsys parallel_case full_case
        case (CurrState_sendPktArb)
    `HC_ACT:
    `HC_ACT:
    begin
 
      if (HCTxReq == 1'b0)
      if (HCTxReq == 1'b0)
      begin
      begin
        NextState_sendPktArb <= `SARB_WAIT_REQ;
        NextState_sendPktArb <= `SARB_WAIT_REQ;
        next_HCTxGnt <= 1'b0;
        next_HCTxGnt <= 1'b0;
      end
      end
    end
 
    `SOF_ACT:
    `SOF_ACT:
    begin
 
      if (SOFTxReq == 1'b0)
      if (SOFTxReq == 1'b0)
      begin
      begin
        NextState_sendPktArb <= `SARB_WAIT_REQ;
        NextState_sendPktArb <= `SARB_WAIT_REQ;
        next_SOFTxGnt <= 1'b0;
        next_SOFTxGnt <= 1'b0;
      end
      end
    end
 
    `SARB_WAIT_REQ:
    `SARB_WAIT_REQ:
    begin
 
      if (SOFTxReq == 1'b1)
      if (SOFTxReq == 1'b1)
      begin
      begin
        NextState_sendPktArb <= `SOF_ACT;
        NextState_sendPktArb <= `SOF_ACT;
        next_SOFTxGnt <= 1'b1;
        next_SOFTxGnt <= 1'b1;
        next_muxSOFNotHC <= 1'b1;
        next_muxSOFNotHC <= 1'b1;
Line 138... Line 142...
      begin
      begin
        NextState_sendPktArb <= `HC_ACT;
        NextState_sendPktArb <= `HC_ACT;
        next_HCTxGnt <= 1'b1;
        next_HCTxGnt <= 1'b1;
        next_muxSOFNotHC <= 1'b0;
        next_muxSOFNotHC <= 1'b0;
      end
      end
    end
 
    `START_SARB:
    `START_SARB:
    begin
 
      NextState_sendPktArb <= `SARB_WAIT_REQ;
      NextState_sendPktArb <= `SARB_WAIT_REQ;
    end
 
  endcase
  endcase
end
end
 
 
 
//----------------------------------
// Current State Logic (sequential)
// Current State Logic (sequential)
 
//----------------------------------
always @ (posedge clk)
always @ (posedge clk)
begin
begin : sendPktArb_CurrentState
  if (rst)
  if (rst)
    CurrState_sendPktArb <= `START_SARB;
    CurrState_sendPktArb <= `START_SARB;
  else
  else
    CurrState_sendPktArb <= NextState_sendPktArb;
    CurrState_sendPktArb <= NextState_sendPktArb;
end
end
 
 
 
//----------------------------------
// Registered outputs logic
// Registered outputs logic
 
//----------------------------------
always @ (posedge clk)
always @ (posedge clk)
begin
begin : sendPktArb_RegOutput
  if (rst)
  if (rst)
  begin
  begin
    HCTxGnt <= 1'b0;
 
    SOFTxGnt <= 1'b0;
 
    muxSOFNotHC <= 1'b0;
    muxSOFNotHC <= 1'b0;
 
                SOFTxGnt <= 1'b0;
 
                HCTxGnt <= 1'b0;
  end
  end
  else
  else
  begin
  begin
    HCTxGnt <= next_HCTxGnt;
 
    SOFTxGnt <= next_SOFTxGnt;
 
    muxSOFNotHC <= next_muxSOFNotHC;
    muxSOFNotHC <= next_muxSOFNotHC;
 
                SOFTxGnt <= next_SOFTxGnt;
 
                HCTxGnt <= next_HCTxGnt;
  end
  end
end
end
 
 
endmodule
endmodule
 No newline at end of file
 No newline at end of file

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.