Line 1... |
Line 1... |
/* $Id: aeMB2_bpcu.v,v 1.4 2007-12-17 12:53:43 sybreon Exp $
|
/* $Id: aeMB2_bpcu.v,v 1.5 2007-12-21 22:39:38 sybreon Exp $
|
**
|
**
|
** AEMB2 BRANCH/PROGRAMME COUNTER
|
** AEMB2 BRANCH/PROGRAMME COUNTER
|
**
|
**
|
** Copyright (C) 2004-2007 Shawn Tan Ser Ngiap <shawn.tan@aeste.net>
|
** Copyright (C) 2004-2007 Shawn Tan Ser Ngiap <shawn.tan@aeste.net>
|
**
|
**
|
Line 113... |
Line 113... |
wire fMULT = (rOPD_EX == 3'o3);
|
wire fMULT = (rOPD_EX == 3'o3);
|
wire fWRE = |rRD_EX;
|
wire fWRE = |rRD_EX;
|
wire fOPBHZD = (rRB_IF == rRD_EX) & (fLOAD | fMULT) & !fMOV & !rOPC_IF[3] & fWRE;
|
wire fOPBHZD = (rRB_IF == rRD_EX) & (fLOAD | fMULT) & !fMOV & !rOPC_IF[3] & fWRE;
|
wire fOPAHZD = (rRA_IF == rRD_EX) & (fLOAD | fMULT) & !fBRU & fWRE;
|
wire fOPAHZD = (rRA_IF == rRD_EX) & (fLOAD | fMULT) & !fBRU & fWRE;
|
wire fOPDHZD = (rRD_IF == rRD_EX) & (fLOAD | fMULT) & fSTR & fWRE;
|
wire fOPDHZD = (rRD_IF == rRD_EX) & (fLOAD | fMULT) & fSTR & fWRE;
|
wire fHZD = fOPBHZD | fOPAHZD | fOPDHZD;
|
wire fHZD = (fOPBHZD | fOPAHZD | fOPDHZD) & !rBRA[1];
|
|
|
/*
|
/*
|
IWB PC OUTPUT
|
IWB PC OUTPUT
|
|
|
This is part of the address generation stage. It pre-selects the
|
This is part of the address generation stage. It pre-selects the
|
Line 241... |
Line 241... |
end
|
end
|
|
|
endmodule // aeMB2_bpcu
|
endmodule // aeMB2_bpcu
|
|
|
/* $Log: not supported by cvs2svn $
|
/* $Log: not supported by cvs2svn $
|
|
/* Revision 1.4 2007/12/17 12:53:43 sybreon
|
|
/* Made idle thread PC track main PC.
|
|
/*
|
/* Revision 1.3 2007/12/13 20:12:11 sybreon
|
/* Revision 1.3 2007/12/13 20:12:11 sybreon
|
/* Code cleanup + minor speed regression.
|
/* Code cleanup + minor speed regression.
|
/*
|
/*
|
/* Revision 1.2 2007/12/12 19:16:59 sybreon
|
/* Revision 1.2 2007/12/12 19:16:59 sybreon
|
/* Minor optimisations (~10% faster)
|
/* Minor optimisations (~10% faster)
|