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

Subversion Repositories usbhostslave

[/] [usbhostslave/] [trunk/] [RTL/] [hostController/] [hctxportarbiter.v] - Diff between revs 5 and 20

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

Rev 5 Rev 20
Line 40... Line 40...
//// 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                     ////
////                                                              ////
////                                                              ////
//////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////
//
//
// $Id: hctxportarbiter.v,v 1.2 2004-12-18 14:36:09 sfielding Exp $
 
//
 
// CVS Revision History
 
//
 
// $Log: not supported by cvs2svn $
 
//
 
`timescale 1ns / 1ps
`timescale 1ns / 1ps
 
 
module HCTxPortArbiter (clk, directCntlCntl, directCntlData, directCntlGnt, directCntlReq, directCntlWEn, HCTxPortCntl, HCTxPortData, HCTxPortWEnable, rst, sendPacketCntl, sendPacketData, sendPacketGnt, sendPacketReq, sendPacketWEn, SOFCntlCntl, SOFCntlData, SOFCntlGnt, SOFCntlReq, SOFCntlWEn);
module HCTxPortArbiter (clk, directCntlCntl, directCntlData, directCntlGnt, directCntlReq, directCntlWEn, HCTxPortCntl, HCTxPortData, HCTxPortWEnable, rst, sendPacketCntl, sendPacketData, sendPacketGnt, sendPacketReq, sendPacketWEn, SOFCntlCntl, SOFCntlData, SOFCntlGnt, SOFCntlReq, SOFCntlWEn);
input   clk;
input   clk;
input   [7:0]directCntlCntl;
input   [7:0]directCntlCntl;
Line 150... Line 144...
// Machine: HCTxArb
// Machine: HCTxArb
 
 
// NextState logic (combinatorial)
// NextState logic (combinatorial)
always @ (SOFCntlReq or sendPacketReq or directCntlReq or SOFCntlGnt or sendPacketGnt or directCntlGnt or muxCntl or CurrState_HCTxArb)
always @ (SOFCntlReq or sendPacketReq or directCntlReq or SOFCntlGnt or sendPacketGnt or directCntlGnt or muxCntl or CurrState_HCTxArb)
begin
begin
  NextState_HCTxArb = CurrState_HCTxArb;
  NextState_HCTxArb <= CurrState_HCTxArb;
  // Set default values for outputs and signals
  // Set default values for outputs and signals
  next_SOFCntlGnt <= SOFCntlGnt;
  next_SOFCntlGnt <= SOFCntlGnt;
  next_sendPacketGnt <= sendPacketGnt;
  next_sendPacketGnt <= sendPacketGnt;
  next_directCntlGnt <= directCntlGnt;
  next_directCntlGnt <= directCntlGnt;
  next_muxCntl <= muxCntl;
  next_muxCntl <= muxCntl;
  case (CurrState_HCTxArb)  // synopsys parallel_case full_case
  case (CurrState_HCTxArb)  // synopsys parallel_case full_case
    `START_HARB:
    `START_HARB:
    begin
    begin
      NextState_HCTxArb = `WAIT_REQ;
      NextState_HCTxArb <= `WAIT_REQ;
    end
    end
    `WAIT_REQ:
    `WAIT_REQ:
    begin
    begin
      if (SOFCntlReq == 1'b1)
      if (SOFCntlReq == 1'b1)
      begin
      begin
        NextState_HCTxArb = `SEND_SOF;
        NextState_HCTxArb <= `SEND_SOF;
        next_SOFCntlGnt <= 1'b1;
        next_SOFCntlGnt <= 1'b1;
        next_muxCntl <= `SOF_CTRL_MUX;
        next_muxCntl <= `SOF_CTRL_MUX;
      end
      end
      else if (sendPacketReq == 1'b1)
      else if (sendPacketReq == 1'b1)
      begin
      begin
        NextState_HCTxArb = `SEND_PACKET;
        NextState_HCTxArb <= `SEND_PACKET;
        next_sendPacketGnt <= 1'b1;
        next_sendPacketGnt <= 1'b1;
        next_muxCntl <= `SEND_PACKET_MUX;
        next_muxCntl <= `SEND_PACKET_MUX;
      end
      end
      else if (directCntlReq == 1'b1)
      else if (directCntlReq == 1'b1)
      begin
      begin
        NextState_HCTxArb = `DIRECT_CONTROL;
        NextState_HCTxArb <= `DIRECT_CONTROL;
        next_directCntlGnt <= 1'b1;
        next_directCntlGnt <= 1'b1;
        next_muxCntl <= `DIRECT_CTRL_MUX;
        next_muxCntl <= `DIRECT_CTRL_MUX;
      end
      end
    end
    end
    `SEND_SOF:
    `SEND_SOF:
    begin
    begin
      if (SOFCntlReq == 1'b0)
      if (SOFCntlReq == 1'b0)
      begin
      begin
        NextState_HCTxArb = `WAIT_REQ;
        NextState_HCTxArb <= `WAIT_REQ;
        next_SOFCntlGnt <= 1'b0;
        next_SOFCntlGnt <= 1'b0;
      end
      end
    end
    end
    `SEND_PACKET:
    `SEND_PACKET:
    begin
    begin
      if (sendPacketReq == 1'b0)
      if (sendPacketReq == 1'b0)
      begin
      begin
        NextState_HCTxArb = `WAIT_REQ;
        NextState_HCTxArb <= `WAIT_REQ;
        next_sendPacketGnt <= 1'b0;
        next_sendPacketGnt <= 1'b0;
      end
      end
    end
    end
    `DIRECT_CONTROL:
    `DIRECT_CONTROL:
    begin
    begin
      if (directCntlReq == 1'b0)
      if (directCntlReq == 1'b0)
      begin
      begin
        NextState_HCTxArb = `WAIT_REQ;
        NextState_HCTxArb <= `WAIT_REQ;
        next_directCntlGnt <= 1'b0;
        next_directCntlGnt <= 1'b0;
      end
      end
    end
    end
  endcase
  endcase
end
end
 
 
// Current State Logic (sequential)
// Current State Logic (sequential)
always @ (posedge clk)
always @ (posedge clk)
begin
begin
  if (rst)
  if (rst)
    CurrState_HCTxArb = `START_HARB;
    CurrState_HCTxArb <= `START_HARB;
  else
  else
    CurrState_HCTxArb = NextState_HCTxArb;
    CurrState_HCTxArb <= NextState_HCTxArb;
end
end
 
 
// Registered outputs logic
// Registered outputs logic
always @ (posedge clk)
always @ (posedge clk)
begin
begin
  if (rst)
  if (rst)
  begin
  begin
    SOFCntlGnt = 1'b0;
    SOFCntlGnt <= 1'b0;
    sendPacketGnt = 1'b0;
    sendPacketGnt <= 1'b0;
    directCntlGnt = 1'b0;
    directCntlGnt <= 1'b0;
    muxCntl = 2'b00;
    muxCntl <= 2'b00;
  end
  end
  else
  else
  begin
  begin
    SOFCntlGnt = next_SOFCntlGnt;
    SOFCntlGnt <= next_SOFCntlGnt;
    sendPacketGnt = next_sendPacketGnt;
    sendPacketGnt <= next_sendPacketGnt;
    directCntlGnt = next_directCntlGnt;
    directCntlGnt <= next_directCntlGnt;
    muxCntl = next_muxCntl;
    muxCntl <= next_muxCntl;
  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.