[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Commit-gnuradio] r4952 - in gnuradio/branches/developers/matt/u2f/openc
From: |
matt |
Subject: |
[Commit-gnuradio] r4952 - in gnuradio/branches/developers/matt/u2f/opencores: . aemb aemb/CVS aemb/rtl aemb/rtl/CVS aemb/rtl/verilog aemb/rtl/verilog/CVS aemb/sim aemb/sim/CVS aemb/sw aemb/sw/CVS aemb/sw/c aemb/sw/c/CVS ethernet_tri_mode/CVS ethernet_tri_mode/bench/CVS ethernet_tri_mode/rtl/CVS ethernet_tri_mode/rtl/verilog/CVS ethernet_tri_mode/rtl/verilog/TECH/CVS ethernet_tri_mode/sim/CVS ethernet_tri_mode/sim/rtl_sim/CVS ethernet_tri_mode/sim/rtl_sim/ncsim_sim/CVS i2c/CVS i2c/bench/CVS i2c/doc/CVS i2c/rtl/CVS i2c/sim/CVS i2c/sim/i2c_verilog/CVS i2c/sim/i2c_verilog/run/CVS i2c/software/CVS spi/CVS spi/bench/CVS spi/doc/CVS spi/rtl/CVS spi/sim/CVS spi/sim/rtl_sim/CVS spi_boot/CVS spi_boot/bench/CVS spi_boot/doc/CVS spi_boot/rtl/CVS spi_boot/rtl/vhdl/CVS spi_boot/sim/CVS spi_boot/sw/CVS wb_conbus/CVS wb_conbus/bench/CVS wb_conbus/rtl/CVS |
Date: |
Wed, 11 Apr 2007 14:59:37 -0600 (MDT) |
Author: matt
Date: 2007-04-11 14:59:34 -0600 (Wed, 11 Apr 2007)
New Revision: 4952
Added:
gnuradio/branches/developers/matt/u2f/opencores/aemb/
gnuradio/branches/developers/matt/u2f/opencores/aemb/CVS/
gnuradio/branches/developers/matt/u2f/opencores/aemb/CVS/Entries
gnuradio/branches/developers/matt/u2f/opencores/aemb/CVS/Entries.Log
gnuradio/branches/developers/matt/u2f/opencores/aemb/CVS/Repository
gnuradio/branches/developers/matt/u2f/opencores/aemb/CVS/Root
gnuradio/branches/developers/matt/u2f/opencores/aemb/CVS/Template
gnuradio/branches/developers/matt/u2f/opencores/aemb/rtl/
gnuradio/branches/developers/matt/u2f/opencores/aemb/rtl/CVS/
gnuradio/branches/developers/matt/u2f/opencores/aemb/rtl/CVS/Entries
gnuradio/branches/developers/matt/u2f/opencores/aemb/rtl/CVS/Repository
gnuradio/branches/developers/matt/u2f/opencores/aemb/rtl/CVS/Root
gnuradio/branches/developers/matt/u2f/opencores/aemb/rtl/CVS/Template
gnuradio/branches/developers/matt/u2f/opencores/aemb/rtl/verilog/
gnuradio/branches/developers/matt/u2f/opencores/aemb/rtl/verilog/CVS/
gnuradio/branches/developers/matt/u2f/opencores/aemb/rtl/verilog/CVS/Entries
gnuradio/branches/developers/matt/u2f/opencores/aemb/rtl/verilog/CVS/Repository
gnuradio/branches/developers/matt/u2f/opencores/aemb/rtl/verilog/CVS/Root
gnuradio/branches/developers/matt/u2f/opencores/aemb/rtl/verilog/CVS/Template
gnuradio/branches/developers/matt/u2f/opencores/aemb/rtl/verilog/aeMB_aslu.v
gnuradio/branches/developers/matt/u2f/opencores/aemb/rtl/verilog/aeMB_control.v
gnuradio/branches/developers/matt/u2f/opencores/aemb/rtl/verilog/aeMB_core.v
gnuradio/branches/developers/matt/u2f/opencores/aemb/rtl/verilog/aeMB_decode.v
gnuradio/branches/developers/matt/u2f/opencores/aemb/rtl/verilog/aeMB_fetch.v
gnuradio/branches/developers/matt/u2f/opencores/aemb/rtl/verilog/aeMB_regfile.v
gnuradio/branches/developers/matt/u2f/opencores/aemb/rtl/verilog/aeMB_testbench.v
gnuradio/branches/developers/matt/u2f/opencores/aemb/sim/
gnuradio/branches/developers/matt/u2f/opencores/aemb/sim/CVS/
gnuradio/branches/developers/matt/u2f/opencores/aemb/sim/CVS/Entries
gnuradio/branches/developers/matt/u2f/opencores/aemb/sim/CVS/Repository
gnuradio/branches/developers/matt/u2f/opencores/aemb/sim/CVS/Root
gnuradio/branches/developers/matt/u2f/opencores/aemb/sim/CVS/Template
gnuradio/branches/developers/matt/u2f/opencores/aemb/sim/cversim
gnuradio/branches/developers/matt/u2f/opencores/aemb/sim/iversim
gnuradio/branches/developers/matt/u2f/opencores/aemb/sw/
gnuradio/branches/developers/matt/u2f/opencores/aemb/sw/CVS/
gnuradio/branches/developers/matt/u2f/opencores/aemb/sw/CVS/Entries
gnuradio/branches/developers/matt/u2f/opencores/aemb/sw/CVS/Repository
gnuradio/branches/developers/matt/u2f/opencores/aemb/sw/CVS/Root
gnuradio/branches/developers/matt/u2f/opencores/aemb/sw/CVS/Template
gnuradio/branches/developers/matt/u2f/opencores/aemb/sw/c/
gnuradio/branches/developers/matt/u2f/opencores/aemb/sw/c/CVS/
gnuradio/branches/developers/matt/u2f/opencores/aemb/sw/c/CVS/Entries
gnuradio/branches/developers/matt/u2f/opencores/aemb/sw/c/CVS/Repository
gnuradio/branches/developers/matt/u2f/opencores/aemb/sw/c/CVS/Root
gnuradio/branches/developers/matt/u2f/opencores/aemb/sw/c/CVS/Template
gnuradio/branches/developers/matt/u2f/opencores/aemb/sw/c/aeMB_testbench.c
gnuradio/branches/developers/matt/u2f/opencores/aemb/sw/gccrom
Modified:
gnuradio/branches/developers/matt/u2f/opencores/ethernet_tri_mode/CVS/Entries
gnuradio/branches/developers/matt/u2f/opencores/ethernet_tri_mode/bench/CVS/Entries
gnuradio/branches/developers/matt/u2f/opencores/ethernet_tri_mode/rtl/CVS/Entries
gnuradio/branches/developers/matt/u2f/opencores/ethernet_tri_mode/rtl/verilog/CVS/Entries
gnuradio/branches/developers/matt/u2f/opencores/ethernet_tri_mode/rtl/verilog/TECH/CVS/Entries
gnuradio/branches/developers/matt/u2f/opencores/ethernet_tri_mode/sim/CVS/Entries
gnuradio/branches/developers/matt/u2f/opencores/ethernet_tri_mode/sim/rtl_sim/CVS/Entries
gnuradio/branches/developers/matt/u2f/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/CVS/Entries
gnuradio/branches/developers/matt/u2f/opencores/i2c/CVS/Entries
gnuradio/branches/developers/matt/u2f/opencores/i2c/bench/CVS/Entries
gnuradio/branches/developers/matt/u2f/opencores/i2c/doc/CVS/Entries
gnuradio/branches/developers/matt/u2f/opencores/i2c/rtl/CVS/Entries
gnuradio/branches/developers/matt/u2f/opencores/i2c/sim/CVS/Entries
gnuradio/branches/developers/matt/u2f/opencores/i2c/sim/i2c_verilog/CVS/Entries
gnuradio/branches/developers/matt/u2f/opencores/i2c/sim/i2c_verilog/run/CVS/Entries
gnuradio/branches/developers/matt/u2f/opencores/i2c/software/CVS/Entries
gnuradio/branches/developers/matt/u2f/opencores/spi/CVS/Entries
gnuradio/branches/developers/matt/u2f/opencores/spi/bench/CVS/Entries
gnuradio/branches/developers/matt/u2f/opencores/spi/doc/CVS/Entries
gnuradio/branches/developers/matt/u2f/opencores/spi/rtl/CVS/Entries
gnuradio/branches/developers/matt/u2f/opencores/spi/sim/CVS/Entries
gnuradio/branches/developers/matt/u2f/opencores/spi/sim/rtl_sim/CVS/Entries
gnuradio/branches/developers/matt/u2f/opencores/spi_boot/CVS/Entries
gnuradio/branches/developers/matt/u2f/opencores/spi_boot/bench/CVS/Entries
gnuradio/branches/developers/matt/u2f/opencores/spi_boot/doc/CVS/Entries
gnuradio/branches/developers/matt/u2f/opencores/spi_boot/rtl/CVS/Entries
gnuradio/branches/developers/matt/u2f/opencores/spi_boot/rtl/vhdl/CVS/Entries
gnuradio/branches/developers/matt/u2f/opencores/spi_boot/sim/CVS/Entries
gnuradio/branches/developers/matt/u2f/opencores/spi_boot/sw/CVS/Entries
gnuradio/branches/developers/matt/u2f/opencores/wb_conbus/CVS/Entries
gnuradio/branches/developers/matt/u2f/opencores/wb_conbus/bench/CVS/Entries
gnuradio/branches/developers/matt/u2f/opencores/wb_conbus/rtl/CVS/Entries
Log:
aeMB Microblaze compatible core as of 4/11/07 plus latest versions of some
other stuff
Added: gnuradio/branches/developers/matt/u2f/opencores/aemb/CVS/Entries
===================================================================
--- gnuradio/branches/developers/matt/u2f/opencores/aemb/CVS/Entries
(rev 0)
+++ gnuradio/branches/developers/matt/u2f/opencores/aemb/CVS/Entries
2007-04-11 20:59:34 UTC (rev 4952)
@@ -0,0 +1,5 @@
+D/doc////
+D/rtl////
+D/sim////
+D/sw////
+D/syn////
Added: gnuradio/branches/developers/matt/u2f/opencores/aemb/CVS/Entries.Log
===================================================================
--- gnuradio/branches/developers/matt/u2f/opencores/aemb/CVS/Entries.Log
(rev 0)
+++ gnuradio/branches/developers/matt/u2f/opencores/aemb/CVS/Entries.Log
2007-04-11 20:59:34 UTC (rev 4952)
@@ -0,0 +1,2 @@
+R D/syn////
+R D/doc////
Added: gnuradio/branches/developers/matt/u2f/opencores/aemb/CVS/Repository
===================================================================
--- gnuradio/branches/developers/matt/u2f/opencores/aemb/CVS/Repository
(rev 0)
+++ gnuradio/branches/developers/matt/u2f/opencores/aemb/CVS/Repository
2007-04-11 20:59:34 UTC (rev 4952)
@@ -0,0 +1 @@
+aemb
Added: gnuradio/branches/developers/matt/u2f/opencores/aemb/CVS/Root
===================================================================
--- gnuradio/branches/developers/matt/u2f/opencores/aemb/CVS/Root
(rev 0)
+++ gnuradio/branches/developers/matt/u2f/opencores/aemb/CVS/Root
2007-04-11 20:59:34 UTC (rev 4952)
@@ -0,0 +1 @@
+:pserver:address@hidden:/cvsroot/anonymous
Added: gnuradio/branches/developers/matt/u2f/opencores/aemb/CVS/Template
===================================================================
Added: gnuradio/branches/developers/matt/u2f/opencores/aemb/rtl/CVS/Entries
===================================================================
--- gnuradio/branches/developers/matt/u2f/opencores/aemb/rtl/CVS/Entries
(rev 0)
+++ gnuradio/branches/developers/matt/u2f/opencores/aemb/rtl/CVS/Entries
2007-04-11 20:59:34 UTC (rev 4952)
@@ -0,0 +1 @@
+D/verilog////
Added: gnuradio/branches/developers/matt/u2f/opencores/aemb/rtl/CVS/Repository
===================================================================
--- gnuradio/branches/developers/matt/u2f/opencores/aemb/rtl/CVS/Repository
(rev 0)
+++ gnuradio/branches/developers/matt/u2f/opencores/aemb/rtl/CVS/Repository
2007-04-11 20:59:34 UTC (rev 4952)
@@ -0,0 +1 @@
+aemb/rtl
Added: gnuradio/branches/developers/matt/u2f/opencores/aemb/rtl/CVS/Root
===================================================================
--- gnuradio/branches/developers/matt/u2f/opencores/aemb/rtl/CVS/Root
(rev 0)
+++ gnuradio/branches/developers/matt/u2f/opencores/aemb/rtl/CVS/Root
2007-04-11 20:59:34 UTC (rev 4952)
@@ -0,0 +1 @@
+:pserver:address@hidden:/cvsroot/anonymous
Added: gnuradio/branches/developers/matt/u2f/opencores/aemb/rtl/CVS/Template
===================================================================
Added:
gnuradio/branches/developers/matt/u2f/opencores/aemb/rtl/verilog/CVS/Entries
===================================================================
---
gnuradio/branches/developers/matt/u2f/opencores/aemb/rtl/verilog/CVS/Entries
(rev 0)
+++
gnuradio/branches/developers/matt/u2f/opencores/aemb/rtl/verilog/CVS/Entries
2007-04-11 20:59:34 UTC (rev 4952)
@@ -0,0 +1,8 @@
+/aeMB_aslu.v/1.4/Wed Apr 11 06:30:44 2007//
+/aeMB_control.v/1.3/Wed Apr 11 06:30:44 2007//
+/aeMB_core.v/1.3/Wed Apr 11 06:30:44 2007//
+/aeMB_decode.v/1.4/Wed Apr 11 06:30:44 2007//
+/aeMB_fetch.v/1.3/Wed Apr 11 06:30:44 2007//
+/aeMB_testbench.v/1.4/Wed Apr 11 06:30:44 2007//
+/aeMB_regfile.v/1.7/Wed Apr 11 20:57:31 2007//
+D
Added:
gnuradio/branches/developers/matt/u2f/opencores/aemb/rtl/verilog/CVS/Repository
===================================================================
---
gnuradio/branches/developers/matt/u2f/opencores/aemb/rtl/verilog/CVS/Repository
(rev 0)
+++
gnuradio/branches/developers/matt/u2f/opencores/aemb/rtl/verilog/CVS/Repository
2007-04-11 20:59:34 UTC (rev 4952)
@@ -0,0 +1 @@
+aemb/rtl/verilog
Added: gnuradio/branches/developers/matt/u2f/opencores/aemb/rtl/verilog/CVS/Root
===================================================================
--- gnuradio/branches/developers/matt/u2f/opencores/aemb/rtl/verilog/CVS/Root
(rev 0)
+++ gnuradio/branches/developers/matt/u2f/opencores/aemb/rtl/verilog/CVS/Root
2007-04-11 20:59:34 UTC (rev 4952)
@@ -0,0 +1 @@
+:pserver:address@hidden:/cvsroot/anonymous
Added:
gnuradio/branches/developers/matt/u2f/opencores/aemb/rtl/verilog/CVS/Template
===================================================================
Added:
gnuradio/branches/developers/matt/u2f/opencores/aemb/rtl/verilog/aeMB_aslu.v
===================================================================
---
gnuradio/branches/developers/matt/u2f/opencores/aemb/rtl/verilog/aeMB_aslu.v
(rev 0)
+++
gnuradio/branches/developers/matt/u2f/opencores/aemb/rtl/verilog/aeMB_aslu.v
2007-04-11 20:59:34 UTC (rev 4952)
@@ -0,0 +1,194 @@
+/*
+ * $Id: aeMB_aslu.v,v 1.4 2007/04/11 04:30:43 sybreon Exp $
+ *
+ * AEMB Arithmetic Shift Logic Unit
+ * Copyright (C) 2006 Shawn Tan Ser Ngiap <address@hidden>
+ *
+ * This library is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as published by
+ * the Free Software Foundation; either version 2.1 of the License,
+ * or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+ * License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library; if not, write to the Free Software Foundation,
Inc.,
+ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ * DESCRIPTION
+ * Arithmetic, shift and logic execution unit
+ *
+ * HISTORY
+ * $Log: aeMB_aslu.v,v $
+ * Revision 1.4 2007/04/11 04:30:43 sybreon
+ * Added pipeline stalling from incomplete bus cycles.
+ * Separated sync and async portions of code.
+ *
+ * Revision 1.3 2007/04/04 06:11:05 sybreon
+ * Added CMP instruction
+ *
+ * Revision 1.2 2007/04/03 14:46:26 sybreon
+ * Fixed endian correction issues on data bus.
+ *
+ * Revision 1.1 2007/03/09 17:52:17 sybreon
+ * initial import
+ *
+ */
+
+// address@hidden
+module aeMB_aslu (/*AUTOARG*/
+ // Outputs
+ dwb_adr_o, rRESULT,
+ // Inputs
+ dwb_dat_i, rBRA, rDLY, rREGA, rREGB, rSIMM, rMXSRC, rMXTGT, rMXALU,
+ rOPC, rPC, rIMM, rRD, rRA, rMXLDST, nclk, nrst, drun, nrun
+ );
+ parameter DSIZ = 32;
+
+ output [DSIZ-1:0] dwb_adr_o;
+ input [31:0] dwb_dat_i;
+
+ output [31:0] rRESULT;
+ input rBRA, rDLY;
+ input [31:0] rREGA, rREGB;
+ input [31:0] rSIMM;
+ input [1:0] rMXSRC,rMXTGT;
+ input [1:0] rMXALU;
+ input [5:0] rOPC;
+ input [31:0] rPC;
+ input [15:0] rIMM;
+ input [4:0] rRD, rRA;
+ input [1:0] rMXLDST;
+
+ input nclk, nrst, drun, nrun;
+
+ reg [31:0] rRESULT, xRESULT;
+ reg rMSR_C, xMSR_C;
+
+ // Endian correction
+ //wire [31:0] wDWBDAT = dwb_dat_i;
+ wire [31:0] wDWBDAT =
{dwb_dat_i[7:0],dwb_dat_i[15:8],dwb_dat_i[23:16],dwb_dat_i[31:24]};
+
+ // Source and Target Select
+ wire [31:0] wOPA =
+ (rMXSRC == 2'b11) ? wDWBDAT :
+ (rMXSRC == 2'b10) ? rRESULT :
+ (rMXSRC == 2'b01) ? rPC :
+ rREGA;
+ wire [31:0] wOPB =
+ (rMXTGT == 2'b11) ? wDWBDAT :
+ (rMXTGT == 2'b10) ? rRESULT :
+ (rMXTGT == 2'b01) ? rSIMM :
+ rREGB;
+
+ // ARITHMETIC
+ //wire wADDC_ = (rOPC[1] & (rMXLDST == 2'o0)) ? rMSR_C : 1'b0;
+ wire wADDC_ = (rOPC[1]) ? rMSR_C : 1'b0;
+ wire wSUBC_ = (rOPC[1]) ? rMSR_C : 1'b1;
+ wire wADDC, wSUBC, wRES_AC,wCMPC;
+ wire [31:0] wADD,wSUB,wRES_A,wCMP;
+
+ // TODO: verify signed compare
+ wire wCMPU = (wOPA > wOPB);
+ wire wCMPF = (rIMM[1]) ? wCMPU :
+ ((wCMPU & ~(wOPB[31] ^ wOPA[31])) | (wOPB[31] &
~wOPA[31]));
+ assign {wCMPC,wCMP} = {wSUBC,wCMPF,wSUB[30:0]};
+ assign {wADDC,wADD} = (wOPB + wOPA) + wADDC_;
+ assign {wSUBC,wSUB} = (wOPB + ~wOPA) + wSUBC_;
+
+ reg rRES_AC;
+ reg [31:0] rRES_A;
+ always @(/*AUTOSENSE*/rIMM or rOPC or wADD or wADDC or wCMP
+ or wCMPC or wSUB or wSUBC)
+ //{rRES_AC,rRES_A} <= #1 (rOPC[0] & ~rOPC[5]) ? {~wSUBC,wSUB} :
{wADDC,wADD};
+ case ({rOPC[5],rOPC[3],rOPC[0],rIMM[0]})
+ 4'h2, 4'h6, 4'h7: {rRES_AC,rRES_A} <= #1 {~wSUBC,wSUB}; // SUB
+ 4'h3: {rRES_AC,rRES_A} <= #1 {~wCMPC,wCMP}; // CMP
+ default: {rRES_AC,rRES_A} <= #1 {wADDC,wADD};
+ endcase // case ({rOPC[5],rOPC[3],rOPC[0],rIMM[0]})
+
+ // LOGIC
+ wire [31:0] wOR = wOPA | wOPB;
+ wire [31:0] wAND = wOPA & wOPB;
+ wire [31:0] wXOR = wOPA ^ wOPB;
+ wire [31:0] wANDN = wOPA & ~wOPB;
+
+ reg [31:0] rRES_L;
+ always @(/*AUTOSENSE*/rOPC or wAND or wANDN or wOR or wXOR)
+ case (rOPC[1:0])
+ 2'o0: rRES_L <= #1 wOR;
+ 2'o1: rRES_L <= #1 wAND;
+ 2'o2: rRES_L <= #1 wXOR;
+ 2'o3: rRES_L <= #1 wANDN;
+ endcase // case (rOPC[1:0])
+
+ // SHIFT
+ wire wSRAC, wSRCC, wSRLC, wRES_SC;
+ wire [31:0] wSRA,wSRC, wSRL, wSEXT8, wSEXT16, wRES_S;
+ assign {wSRAC,wSRA} = {wOPA[0],wOPA[0],wOPA[31:1]};
+ assign {wSRCC,wSRC} = {wOPA[0],rMSR_C,wOPA[31:1]};
+ assign {wSRLC,wSRL} = {wOPA[0],1'b0,wOPA[31:1]};
+ assign wSEXT8 = {{(24){wOPA[7]}},wOPA[7:0]};
+ assign wSEXT16 = {{(16){wOPA[15]}},wOPA[15:0]};
+
+ reg rRES_SC;
+ reg [31:0] rRES_S;
+
+ always @(/*AUTOSENSE*/rIMM or rMSR_C or wSEXT16 or wSEXT8 or wSRA
+ or wSRAC or wSRC or wSRCC or wSRL or wSRLC)
+ case (rIMM[6:5])
+ 2'o0: {rRES_SC,rRES_S} <= #1 {wSRAC,wSRA};
+ 2'o1: {rRES_SC,rRES_S} <= #1 {wSRCC,wSRC};
+ 2'o2: {rRES_SC,rRES_S} <= #1 {wSRLC,wSRL};
+ 2'o3: {rRES_SC,rRES_S} <= #1 (rIMM[0]) ? {rMSR_C,wSEXT16} :
{rMSR_C,wSEXT8};
+ endcase // case (rIMM[6:5])
+
+ // MOVE
+ reg [31:0] rRES_M;
+ always @(/*AUTOSENSE*/rRA or wOPA or wOPB)
+ rRES_M <= #1 (rRA[3]) ? wOPB : wOPA;
+
+ // DWB I/F
+ //assign dwb_adr_o = rRESULT;
+ assign dwb_adr_o = {rRESULT[DSIZ-1:2],2'b00};
+
+ // RESULT + C
+ always @(/*AUTOSENSE*/drun or rMSR_C or rMXALU or rOPC or rRES_A
+ or rRES_AC or rRES_L or rRES_M or rRES_S or rRES_SC)
+ if (drun) begin
+ case (rMXALU)
+ 2'o0: xRESULT <= #1 rRES_A;
+ 2'o1: xRESULT <= #1 rRES_L;
+ 2'o2: xRESULT <= #1 rRES_S;
+ 2'o3: xRESULT <= #1 rRES_M;
+ endcase // case (rMXALU)
+ case (rMXALU)
+ 2'o0: xMSR_C <= #1 (rOPC[2]) ? rMSR_C : rRES_AC;
+ 2'o2: xMSR_C <= #1 rRES_SC;
+ default: xMSR_C <= #1 rMSR_C;
+ endcase // case (rMXALU)
+ end else begin // if (drun)
+ /*AUTORESET*/
+ // Beginning of autoreset for uninitialized flops
+ xMSR_C <= 1'h0;
+ xRESULT <= 32'h0;
+ // End of automatics
+ end // else: !if(drun)
+
+ // PIPELINE REGISTER //////////////////////////////////////////////////
+ always @(negedge nclk or negedge nrst)
+ if (!nrst) begin
+ /*AUTORESET*/
+ // Beginning of autoreset for uninitialized flops
+ rMSR_C <= 1'h0;
+ rRESULT <= 32'h0;
+ // End of automatics
+ end else if (nrun) begin
+ rRESULT <= #1 xRESULT;
+ rMSR_C <= #1 xMSR_C;
+ end
+
+endmodule // aeMB_aslu
Added:
gnuradio/branches/developers/matt/u2f/opencores/aemb/rtl/verilog/aeMB_control.v
===================================================================
---
gnuradio/branches/developers/matt/u2f/opencores/aemb/rtl/verilog/aeMB_control.v
(rev 0)
+++
gnuradio/branches/developers/matt/u2f/opencores/aemb/rtl/verilog/aeMB_control.v
2007-04-11 20:59:34 UTC (rev 4952)
@@ -0,0 +1,143 @@
+/*
+ * $Id: aeMB_control.v,v 1.3 2007/04/11 04:30:43 sybreon Exp $
+ *
+ * AE68 System Control Unit
+ * Copyright (C) 2006 Shawn Tan Ser Ngiap <address@hidden>
+ *
+ * This library is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as published by
+ * the Free Software Foundation; either version 2.1 of the License,
+ * or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+ * License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library; if not, write to the Free Software Foundation,
Inc.,
+ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ * DESCRIPTION
+ * Controls the state of the processor.
+ *
+ * HISTORY
+ * $Log: aeMB_control.v,v $
+ * Revision 1.3 2007/04/11 04:30:43 sybreon
+ * Added pipeline stalling from incomplete bus cycles.
+ * Separated sync and async portions of code.
+ *
+ * Revision 1.2 2007/04/04 14:08:34 sybreon
+ * Added initial interrupt/exception support.
+ *
+ * Revision 1.1 2007/03/09 17:52:17 sybreon
+ * initial import
+ *
+ */
+
+// address@hidden
+module aeMB_control (/*AUTOARG*/
+ // Outputs
+ rFSM, nclk, nrst, nrun, frun, drun,
+ // Inputs
+ sys_rst_i, sys_clk_i, sys_int_i, sys_exc_i, rIWBSTB, iwb_ack_i,
+ rDWBSTB, dwb_ack_i, rBRA, rDLY
+ );
+ // System
+ input sys_rst_i, sys_clk_i;
+ input sys_int_i;
+ input sys_exc_i;
+ //input sys_run_i;
+
+ // Instruction WB
+ input rIWBSTB;
+ input iwb_ack_i;
+
+ // Data WB
+ input rDWBSTB;
+ input dwb_ack_i;
+
+ // Internal
+ input rBRA, rDLY;
+ output [1:0] rFSM;
+ //, rLDST;
+ output nclk, nrst, nrun;
+ output frun, drun;
+
+ // Clock code here
+ assign nclk = sys_clk_i;
+
+ // Debounce reset
+ reg [1:0] rRST;
+ assign nrst = rRST[1];
+ always @(posedge nclk or negedge sys_rst_i)
+ if (!sys_rst_i) begin
+ //rNRST <= 2'h3;
+ /*AUTORESET*/
+ // Beginning of autoreset for uninitialized flops
+ rRST <= 2'h0;
+ // End of automatics
+ end else begin
+ rRST <= {rRST[0],1'b1};
+ end
+
+ // Quiet RUN signal
+ assign nrun = ~((rDWBSTB ^ dwb_ack_i) | ((rIWBSTB ^ iwb_ack_i)));
+
+ // Debounce Interrupt/Exception Signals
+ reg [2:0] rEXC, rINT;
+ always @(negedge nclk or negedge nrst)
+ if (!nrst) begin
+ /*AUTORESET*/
+ // Beginning of autoreset for uninitialized flops
+ rEXC <= 3'h0;
+ rINT <= 3'h0;
+ // End of automatics
+ end else if (nrun) begin
+ rEXC <= #1 {rEXC[1:0], sys_exc_i};
+ rINT <= #1 {rINT[1:0], sys_int_i};
+ end
+
+ // Machine States
+ parameter [1:0]
+ FSM_RUN = 2'o0,
+ FSM_SWEXC = 2'o3,
+ FSM_HWEXC = 2'o2,
+ FSM_HWINT = 2'o1;
+
+ reg [1:0] rFSM, rNXT;
+ always @(negedge nclk or negedge nrst)
+ if (!nrst) begin
+ /*AUTORESET*/
+ // Beginning of autoreset for uninitialized flops
+ rFSM <= 2'h0;
+ // End of automatics
+ end else if (nrun) begin
+ rFSM <= #1 rNXT;
+ end
+
+ always @(/*AUTOSENSE*/rEXC or rFSM or rINT)
+ case (rFSM)
+ FSM_HWEXC: rNXT <= FSM_RUN;
+ //FSM_SWEXC: rNXT <= FSM_RUN;
+ FSM_HWINT: rNXT <= FSM_RUN;
+ default: begin
+ rNXT <= (rEXC == 3'h3) ? FSM_HWEXC :
+ (rINT == 3'h3) ? FSM_HWINT :
+ FSM_RUN;
+ end
+ endcase // case (rFSM)
+
+ // Pause/Bubble
+ reg [1:0] rRUN;
+ assign {drun,frun} = rRUN;
+
+ always @(posedge nclk or negedge nrst)
+ if (!nrst) begin
+ rRUN <= 2'h3;
+ /*AUTORESET*/
+ end else begin
+ rRUN <= #1 {~(rBRA ^ rDLY), ~rBRA};
+ end
+
+endmodule // aeMB_control
Added:
gnuradio/branches/developers/matt/u2f/opencores/aemb/rtl/verilog/aeMB_core.v
===================================================================
---
gnuradio/branches/developers/matt/u2f/opencores/aemb/rtl/verilog/aeMB_core.v
(rev 0)
+++
gnuradio/branches/developers/matt/u2f/opencores/aemb/rtl/verilog/aeMB_core.v
2007-04-11 20:59:34 UTC (rev 4952)
@@ -0,0 +1,224 @@
+/*
+ * $Id: aeMB_core.v,v 1.3 2007/04/11 04:30:43 sybreon Exp $
+ *
+ * AEMB 32-bit Microblaze Compatible Core
+ * Copyright (C) 2006 Shawn Tan Ser Ngiap <address@hidden>
+ *
+ * This library is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as published by
+ * the Free Software Foundation; either version 2.1 of the License,
+ * or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+ * License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library; if not, write to the Free Software Foundation,
Inc.,
+ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ * DESCRIPTION
+ * Microblaze compatible, WISHBONE compliant hardware core. This core is
+ * capable of executing software compile for EDK 2.1 using GCC. It has the
+ * capability of handling interrupts as well as exceptions.
+ *
+ * HISTORY
+ * $Log: aeMB_core.v,v $
+ * Revision 1.3 2007/04/11 04:30:43 sybreon
+ * Added pipeline stalling from incomplete bus cycles.
+ * Separated sync and async portions of code.
+ *
+ * Revision 1.2 2007/04/04 06:13:23 sybreon
+ * Removed unused signals
+ *
+ * Revision 1.1 2007/03/09 17:52:17 sybreon
+ * initial import
+ *
+ */
+
+module aeMB_core (/*AUTOARG*/
+ // Outputs
+ iwb_stb_o, iwb_adr_o, dwb_we_o, dwb_stb_o, dwb_dat_o, dwb_adr_o,
+ // Inputs
+ sys_rst_i, sys_int_i, sys_exc_i, sys_clk_i, iwb_dat_i, iwb_ack_i,
+ dwb_dat_i, dwb_ack_i
+ );
+ // Instruction WB address space
+ parameter ISIZ = 32;
+ // Data WB address space
+ parameter DSIZ = 32;
+
+ /*AUTOOUTPUT*/
+ // Beginning of automatic outputs (from unused autoinst outputs)
+ output [DSIZ-1:0] dwb_adr_o; // From aslu of aeMB_aslu.v
+ output [31:0] dwb_dat_o; // From regfile of
aeMB_regfile.v
+ output dwb_stb_o; // From decode of aeMB_decode.v
+ output dwb_we_o; // From decode of aeMB_decode.v
+ output [ISIZ-1:0] iwb_adr_o; // From fetch of aeMB_fetch.v
+ output iwb_stb_o; // From decode of aeMB_decode.v
+ // End of automatics
+ /*AUTOINPUT*/
+ // Beginning of automatic inputs (from unused autoinst inputs)
+ input dwb_ack_i; // To control of aeMB_control.v
+ input [31:0] dwb_dat_i; // To regfile of
aeMB_regfile.v, ...
+ input iwb_ack_i; // To control of aeMB_control.v
+ input [31:0] iwb_dat_i; // To fetch of
aeMB_fetch.v, ...
+ input sys_clk_i; // To control of aeMB_control.v
+ input sys_exc_i; // To control of aeMB_control.v
+ input sys_int_i; // To control of aeMB_control.v
+ input sys_rst_i; // To control of aeMB_control.v
+ // End of automatics
+ /*AUTOWIRE*/
+ // Beginning of automatic wires (for undeclared instantiated-module outputs)
+ wire drun; // From control of
aeMB_control.v
+ wire frun; // From control of
aeMB_control.v
+ wire nclk; // From control of
aeMB_control.v
+ wire nrst; // From control of
aeMB_control.v
+ wire nrun; // From control of
aeMB_control.v
+ wire rBRA; // From decode of
aeMB_decode.v
+ wire rDLY; // From decode of
aeMB_decode.v
+ wire rDWBSTB; // From decode of
aeMB_decode.v
+ wire rDWBWE; // From decode of
aeMB_decode.v
+ wire [1:0] rFSM; // From control of
aeMB_control.v
+ wire [15:0] rIMM; // From decode of aeMB_decode.v
+ wire rIWBSTB; // From decode of
aeMB_decode.v
+ wire rLNK; // From decode of
aeMB_decode.v
+ wire [1:0] rMXALU; // From decode of aeMB_decode.v
+ wire [1:0] rMXLDST; // From decode of aeMB_decode.v
+ wire [1:0] rMXSRC; // From decode of aeMB_decode.v
+ wire [1:0] rMXTGT; // From decode of aeMB_decode.v
+ wire [5:0] rOPC; // From decode of aeMB_decode.v
+ wire [31:0] rPC; // From fetch of aeMB_fetch.v
+ wire [4:0] rRA; // From decode of aeMB_decode.v
+ wire [4:0] rRB; // From decode of aeMB_decode.v
+ wire [4:0] rRD; // From decode of aeMB_decode.v
+ wire [4:0] rRD_; // From decode of aeMB_decode.v
+ wire [31:0] rREGA; // From regfile of
aeMB_regfile.v
+ wire [31:0] rREGB; // From regfile of
aeMB_regfile.v
+ wire [31:0] rRESULT; // From aslu of aeMB_aslu.v
+ wire rRWE; // From decode of
aeMB_decode.v
+ wire [31:0] rSIMM; // From decode of aeMB_decode.v
+ // End of automatics
+
+ aeMB_regfile #(DSIZ)
+ regfile (/*AUTOINST*/
+ // Outputs
+ .dwb_dat_o (dwb_dat_o[31:0]),
+ .rREGA (rREGA[31:0]),
+ .rREGB (rREGB[31:0]),
+ // Inputs
+ .dwb_dat_i (dwb_dat_i[31:0]),
+ .rDWBSTB (rDWBSTB),
+ .rDWBWE (rDWBWE),
+ .rRA (rRA[4:0]),
+ .rRB (rRB[4:0]),
+ .rRD (rRD[4:0]),
+ .rRD_ (rRD_[4:0]),
+ .rRESULT (rRESULT[31:0]),
+ .rFSM (rFSM[1:0]),
+ .rPC (rPC[31:0]),
+ .rLNK (rLNK),
+ .rRWE (rRWE),
+ .nclk (nclk),
+ .nrst (nrst),
+ .drun (drun),
+ .nrun (nrun));
+
+ aeMB_fetch #(ISIZ)
+ fetch (/*AUTOINST*/
+ // Outputs
+ .iwb_adr_o (iwb_adr_o[ISIZ-1:0]),
+ .rPC (rPC[31:0]),
+ // Inputs
+ .iwb_dat_i (iwb_dat_i[31:0]),
+ .nclk (nclk),
+ .nrst (nrst),
+ .nrun (nrun),
+ .rFSM (rFSM[1:0]),
+ .rBRA (rBRA),
+ .rRESULT (rRESULT[31:0]));
+
+ aeMB_control
+ control (/*AUTOINST*/
+ // Outputs
+ .rFSM (rFSM[1:0]),
+ .nclk (nclk),
+ .nrst (nrst),
+ .nrun (nrun),
+ .frun (frun),
+ .drun (drun),
+ // Inputs
+ .sys_rst_i (sys_rst_i),
+ .sys_clk_i (sys_clk_i),
+ .sys_int_i (sys_int_i),
+ .sys_exc_i (sys_exc_i),
+ .rIWBSTB (rIWBSTB),
+ .iwb_ack_i (iwb_ack_i),
+ .rDWBSTB (rDWBSTB),
+ .dwb_ack_i (dwb_ack_i),
+ .rBRA (rBRA),
+ .rDLY (rDLY));
+
+ aeMB_aslu #(DSIZ)
+ aslu (/*AUTOINST*/
+ // Outputs
+ .dwb_adr_o (dwb_adr_o[DSIZ-1:0]),
+ .rRESULT (rRESULT[31:0]),
+ // Inputs
+ .dwb_dat_i (dwb_dat_i[31:0]),
+ .rBRA (rBRA),
+ .rDLY (rDLY),
+ .rREGA (rREGA[31:0]),
+ .rREGB (rREGB[31:0]),
+ .rSIMM (rSIMM[31:0]),
+ .rMXSRC (rMXSRC[1:0]),
+ .rMXTGT (rMXTGT[1:0]),
+ .rMXALU (rMXALU[1:0]),
+ .rOPC (rOPC[5:0]),
+ .rPC (rPC[31:0]),
+ .rIMM (rIMM[15:0]),
+ .rRD (rRD[4:0]),
+ .rRA (rRA[4:0]),
+ .rMXLDST (rMXLDST[1:0]),
+ .nclk (nclk),
+ .nrst (nrst),
+ .drun (drun),
+ .nrun (nrun));
+
+ aeMB_decode
+ decode (/*AUTOINST*/
+ // Outputs
+ .rSIMM (rSIMM[31:0]),
+ .rMXALU (rMXALU[1:0]),
+ .rMXSRC (rMXSRC[1:0]),
+ .rMXTGT (rMXTGT[1:0]),
+ .rRA (rRA[4:0]),
+ .rRB (rRB[4:0]),
+ .rRD (rRD[4:0]),
+ .rRD_ (rRD_[4:0]),
+ .rOPC (rOPC[5:0]),
+ .rIMM (rIMM[15:0]),
+ .rDWBSTB (rDWBSTB),
+ .rDWBWE (rDWBWE),
+ .rIWBSTB (rIWBSTB),
+ .rDLY (rDLY),
+ .rLNK (rLNK),
+ .rBRA (rBRA),
+ .rRWE (rRWE),
+ .rMXLDST (rMXLDST[1:0]),
+ .iwb_stb_o (iwb_stb_o),
+ .dwb_stb_o (dwb_stb_o),
+ .dwb_we_o (dwb_we_o),
+ // Inputs
+ .rREGA (rREGA[31:0]),
+ .rRESULT (rRESULT[31:0]),
+ .iwb_dat_i (iwb_dat_i[31:0]),
+ .dwb_dat_i (dwb_dat_i[31:0]),
+ .nclk (nclk),
+ .nrst (nrst),
+ .drun (drun),
+ .frun (frun),
+ .nrun (nrun));
+
+endmodule // aeMB_core
Added:
gnuradio/branches/developers/matt/u2f/opencores/aemb/rtl/verilog/aeMB_decode.v
===================================================================
---
gnuradio/branches/developers/matt/u2f/opencores/aemb/rtl/verilog/aeMB_decode.v
(rev 0)
+++
gnuradio/branches/developers/matt/u2f/opencores/aemb/rtl/verilog/aeMB_decode.v
2007-04-11 20:59:34 UTC (rev 4952)
@@ -0,0 +1,430 @@
+/*
+ * $Id: aeMB_decode.v,v 1.4 2007/04/11 04:30:43 sybreon Exp $
+ *
+ * AEMB Instruction Decoder
+ * Copyright (C) 2006 Shawn Tan Ser Ngiap <address@hidden>
+ *
+ * This library is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as published by
+ * the Free Software Foundation; either version 2.1 of the License,
+ * or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+ * License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library; if not, write to the Free Software Foundation,
Inc.,
+ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ * DESCRIPTION
+ * Instruction decoder
+ *
+ * HISTORY
+ * $Log: aeMB_decode.v,v $
+ * Revision 1.4 2007/04/11 04:30:43 sybreon
+ * Added pipeline stalling from incomplete bus cycles.
+ * Separated sync and async portions of code.
+ *
+ * Revision 1.3 2007/04/04 06:12:27 sybreon
+ * Fixed minor bugs
+ *
+ * Revision 1.2 2007/04/03 14:46:26 sybreon
+ * Fixed endian correction issues on data bus.
+ *
+ * Revision 1.1 2007/03/09 17:52:17 sybreon
+ * initial import
+ *
+ */
+
+// address@hidden
+module aeMB_decode (/*AUTOARG*/
+ // Outputs
+ rSIMM, rMXALU, rMXSRC, rMXTGT, rRA, rRB, rRD, rRD_, rOPC, rIMM,
+ rDWBSTB, rDWBWE, rIWBSTB, rDLY, rLNK, rBRA, rRWE, rMXLDST,
+ iwb_stb_o, dwb_stb_o, dwb_we_o,
+ // Inputs
+ rREGA, rRESULT, iwb_dat_i, dwb_dat_i, nclk, nrst, drun, frun, nrun
+ );
+ // Internal I/F
+ output [31:0] rSIMM;
+ output [1:0] rMXALU;
+ output [1:0] rMXSRC, rMXTGT;
+ output [4:0] rRA, rRB, rRD, rRD_;
+ output [5:0] rOPC;
+ output [15:0] rIMM;
+ output rDWBSTB, rDWBWE, rIWBSTB;
+ output rDLY, rLNK, rBRA, rRWE;
+ output [1:0] rMXLDST;
+ input [31:0] rREGA, rRESULT;
+
+ // External I/F
+ input [31:0] iwb_dat_i, dwb_dat_i;
+ output iwb_stb_o;
+ output dwb_stb_o, dwb_we_o;
+
+ // System I/F
+ input nclk, nrst, drun, frun, nrun;
+
+ // Endian Correction
+ //wire [31:0] wWBDAT = dwb_dat_i;
+ //wire [31:0] wIREG = iwb_dat_i;
+ wire [31:0] wWBDAT =
{dwb_dat_i[7:0],dwb_dat_i[15:8],dwb_dat_i[23:16],dwb_dat_i[31:24]};
+ wire [31:0] wIREG =
{iwb_dat_i[7:0],iwb_dat_i[15:8],iwb_dat_i[23:16],iwb_dat_i[31:24]};
+
+ // Decode
+ wire [5:0] wOPC = wIREG[31:26];
+ wire [4:0] wRD = wIREG[25:21];
+ wire [4:0] wRA = wIREG[20:16];
+ wire [4:0] wRB = wIREG[15:11];
+ wire [15:0] wIMM = wIREG[15:0];
+
+ // rOPC, rRD, rRA, rRB, rIMM;
+ reg [5:0] rOPC;
+ reg [4:0] rRD, rRA, rRB, rRD_;
+ reg [15:0] rIMM;
+ reg [5:0] xOPC;
+ reg [4:0] xRD, xRA, xRB, xRD_;
+ reg [15:0] xIMM;
+
+ always @(/*AUTOSENSE*/frun or wIMM or wOPC or wRA or wRB or wRD)
+ if (frun) begin
+ xOPC <= wOPC;
+ xRD <= wRD;
+ xRA <= wRA;
+ xRB <= wRB;
+ xIMM <= wIMM;
+ end else begin
+ xOPC <= 6'o40;
+ /*AUTORESET*/
+ // Beginning of autoreset for uninitialized flops
+ xIMM <= 16'h0;
+ xRA <= 5'h0;
+ xRB <= 5'h0;
+ xRD <= 5'h0;
+ // End of automatics
+ end // else: !if(frun)
+
+ always @(/*AUTOSENSE*/drun or rRD)
+ if (drun) begin
+ xRD_ <= rRD;
+ end else begin
+ /*AUTORESET*/
+ // Beginning of autoreset for uninitialized flops
+ xRD_ <= 5'h0;
+ // End of automatics
+ end
+
+ // Groups
+ wire fGH0 = (wOPC[5:3] == 3'o0);
+ wire fGH1 = (wOPC[5:3] == 3'o1);
+ wire fGH2 = (wOPC[5:3] == 3'o2);
+ wire fGH3 = (wOPC[5:3] == 3'o3);
+ wire fGH4 = (wOPC[5:3] == 3'o4);
+ wire fGH5 = (wOPC[5:3] == 3'o5);
+ wire fGH6 = (wOPC[5:3] == 3'o6);
+ wire fGH7 = (wOPC[5:3] == 3'o7);
+ wire fGL0 = (wOPC[2:0] == 3'o0);
+ wire fGL1 = (wOPC[2:0] == 3'o1);
+ wire fGL2 = (wOPC[2:0] == 3'o2);
+ wire fGL3 = (wOPC[2:0] == 3'o3);
+ wire fGL4 = (wOPC[2:0] == 3'o4);
+ wire fGL5 = (wOPC[2:0] == 3'o5);
+ wire fGL6 = (wOPC[2:0] == 3'o6);
+ wire fGL7 = (wOPC[2:0] == 3'o7);
+
+ // Decode Logic
+ wire fADD = ({wOPC[5:4],wOPC[0]} == 3'o0);
+ wire fSUB = ({wOPC[5:4],wOPC[0]} == 3'o1);
+ wire fLOGIC = ({wOPC[5:4],wOPC[2]} == 3'o4);
+ wire fMUL = ({wOPC[5:4]} == 3'o1);
+
+ wire fLD = ({wOPC[5:4],wOPC[2]} == 3'o6);
+ wire fST = ({wOPC[5:4],wOPC[2]} == 3'o7);
+
+ wire fBCC = (wOPC[5:4] == 2'b10) & fGL7;
+ wire fBRU = (wOPC[5:4] == 2'b10) & fGL6;
+ wire fBRA = fBRU & wRA[3];
+
+ wire fSHIFT = fGH4 & fGL4;
+ wire fIMM = fGH5 & fGL4;
+ wire fRET = fGH5 & fGL5;
+ wire fMISC = fGH4 & fGL5;
+
+ // MXALU
+ reg [1:0] rMXALU, xMXALU;
+ always @(/*AUTOSENSE*/fBRA or fLOGIC or fSHIFT or frun)
+ if (frun) begin
+ xMXALU <= //(!fNBR) ? 2'o0 :
+ (fSHIFT) ? 2'o2 :
+ (fLOGIC) ? 2'o1 :
+ (fBRA) ? 2'o3 :
+ 2'o0;
+ end else begin
+ /*AUTORESET*/
+ // Beginning of autoreset for uninitialized flops
+ xMXALU <= 2'h0;
+ // End of automatics
+ end // else: !if(frun)
+
+ // BCC/BRA/RET
+ reg rMXDLY,rMXLNK,xMXDLY,xMXLNK;
+ reg [1:0] rMXBRA,xMXBRA;
+ always @(/*AUTOSENSE*/fBCC or fBRU or fRET or frun or wRA or wRD)
+ if (frun) begin
+ xMXBRA <= //(!fNBR) ? 2'o0 :
+ (fBCC) ? 2'o3 :
+ (fRET) ? 2'o1 :
+ (fBRU) ? 2'o2 :
+ 2'o0;
+ xMXDLY <= //(!fNBR) ? 1'b0 :
+ (fBCC) ? wRD[4] :
+ (fRET) ? 1'b1 :
+ (fBRU) ? wRA[4] :
+ 1'b0;
+ xMXLNK <= //(!fNBR) ? 1'b0 :
+ (fBRU) ? wRA[2] : 1'b0;
+ end else begin // if (frun)
+ /*AUTORESET*/
+ // Beginning of autoreset for uninitialized flops
+ xMXBRA <= 2'h0;
+ xMXDLY <= 1'h0;
+ xMXLNK <= 1'h0;
+ // End of automatics
+ end // else: !if(frun)
+
+ // LD ST
+ reg [1:0] rMXLDST,xMXLDST;
+ always @(/*AUTOSENSE*/fLD or fST or frun)
+ if (frun) begin
+ xMXLDST <= //(!fNBR) ? 2'o0 :
+ (fLD) ? 2'o2 :
+ (fST) ? 2'o3 :
+ 2'o0;
+ end else begin
+ /*AUTORESET*/
+ // Beginning of autoreset for uninitialized flops
+ xMXLDST <= 2'h0;
+ // End of automatics
+ end // else: !if(frun)
+
+ // SRC/TGT - incorporates forwarding
+ reg [1:0] rMXSRC, rMXTGT, rMXALT, xMXSRC,xMXTGT,xMXALT;
+ wire fRWE = (rRD != 5'd0) & (rMXBRA != 2'o3);
+ //wire fFWDBCC = (rMXBRA != 2'o3);
+
+ always @(/*AUTOSENSE*/fBCC or fBRU or fRWE or frun or rMXLDST
+ or rRD or wOPC or wRA or wRB)
+ if (frun) begin
+ xMXSRC <= //(!fNBR) ? 2'o0 :
+ (fBRU|fBCC) ? 2'o1 : // PC
+ ((rRD == wRA) & (rMXLDST == 2'o2)) ? 2'o3 : // DWB
+ ((rRD == wRA) & fRWE) ? 2'o2 : // FWD
+ 2'o0; // RA
+ xMXTGT <= //(!fNBR) ? 2'o0 :
+ (wOPC[3]) ? 2'o1 : // IMM
+ ((rRD == wRB) & (rMXLDST == 2'o2)) ? 2'o3 : // DWB
+ ((rRD == wRB) & fRWE) ? 2'o2 : // FWD
+ 2'o0; // RB
+ xMXALT <= //(!fNBR) ? 2'o0 :
+ //(fBRU|fBCC) ? 2'o1 : // PC
+ ((rRD == wRA) & (rMXLDST == 2'o2)) ? 2'o3 : // DWB
+ ((rRD == wRA) & fRWE) ? 2'o2 : // FWD
+ 2'o0; // RA
+ end else begin // if (frun)
+ /*AUTORESET*/
+ // Beginning of autoreset for uninitialized flops
+ xMXALT <= 2'h0;
+ xMXSRC <= 2'h0;
+ xMXTGT <= 2'h0;
+ // End of automatics
+ end // else: !if(frun)
+
+ // IMM processing
+ reg [31:0] rSIMM, xSIMM;
+ reg [15:0] rIMMHI, xIMMHI;
+ reg rFIMM, xFIMM;
+
+ always @(/*AUTOSENSE*/fIMM or frun or rFIMM or rIMMHI or wIMM)
+ if (frun) begin
+ xSIMM <= (rFIMM) ? {rIMMHI,wIMM} : {{(16){wIMM[15]}},wIMM};
+ xFIMM <= fIMM;
+ xIMMHI <= (fIMM) ? wIMM : rIMMHI;
+ end else begin
+ /*AUTORESET*/
+ // Beginning of autoreset for uninitialized flops
+ xFIMM <= 1'h0;
+ xIMMHI <= 16'h0;
+ xSIMM <= 32'h0;
+ // End of automatics
+ end // else: !if(frun)
+
+ // CC
+ // COMPARATOR
+ //wire [31:0] wREGA = rREGA;
+ wire [31:0] wREGA =
+ (rMXALT == 2'o3) ? wWBDAT :
+ (rMXALT == 2'o2) ? rRESULT :
+ rREGA;
+
+ wire wBEQ = (wREGA == 32'd0);
+ wire wBNE = ~wBEQ;
+ wire wBLT = wREGA[31];
+ wire wBLE = wBLT | wBEQ;
+ wire wBGE = ~wBLT;
+ wire wBGT = ~wBLE;
+
+ reg rBCC;
+ always @(/*AUTOSENSE*/rRD or wBEQ or wBGE or wBGT or wBLE or wBLT
+ or wBNE)
+ case (rRD[2:0])
+ 3'o0: rBCC <= wBEQ;
+ 3'o1: rBCC <= wBNE;
+ 3'o2: rBCC <= wBLT;
+ 3'o3: rBCC <= wBLE;
+ 3'o4: rBCC <= wBGT;
+ 3'o5: rBCC <= wBGE;
+ default: rBCC <= 1'b0;
+ endcase // case (rRD[2:0])
+
+ // Branch Signal
+ reg rBRA, rDLY, rLNK, xBRA, xDLY, xLNK;
+ always @(/*AUTOSENSE*/drun or rBCC or rMXBRA or rMXDLY or rMXLNK)
+ if (drun) begin
+ case (rMXBRA)
+ 2'o0: xBRA <= 1'b0;
+ 2'o3: xBRA <= rBCC;
+ default: xBRA <= 1'b1;
+ endcase // case (rMXBRA)
+
+ case (rMXBRA)
+ 2'o0: xDLY <= 1'b0;
+ 2'o3: xDLY <= rBCC & rMXDLY;
+ default: xDLY <= rMXDLY;
+ endcase // case (rMXBRA)
+
+ case (rMXBRA)
+ 2'o2: xLNK <= rMXLNK;
+ default: xLNK <= 1'b0;
+ endcase // case (rMXBRA)
+ end else begin // if (drun)
+ /*AUTORESET*/
+ // Beginning of autoreset for uninitialized flops
+ xBRA <= 1'h0;
+ xDLY <= 1'h0;
+ xLNK <= 1'h0;
+ // End of automatics
+ end // else: !if(drun)
+
+ // MXRWE
+ reg rRWE, xRWE;
+ wire wRWE = (rRD != 5'd0);
+ always @(/*AUTOSENSE*/drun or rMXBRA or rMXLDST or wRWE)
+ if (drun) begin
+ case (rMXBRA)
+ default: xRWE <= 1'b0;
+ 2'o2: xRWE <= wRWE ^ rMXLDST[0];
+ 2'o0: xRWE <= wRWE;
+ endcase // case (rMXBRA)
+ end else begin
+ /*AUTORESET*/
+ // Beginning of autoreset for uninitialized flops
+ xRWE <= 1'h0;
+ // End of automatics
+ end // else: !if(drun)
+
+ // DWB logic
+ reg rDWBSTB, rDWBWE, xDWBSTB, xDWBWE;
+ assign dwb_stb_o = rDWBSTB;
+ assign dwb_we_o = rDWBWE;
+
+ always @(/*AUTOSENSE*/drun or rMXLDST)
+ if (drun) begin
+ xDWBSTB <= rMXLDST[1];
+ xDWBWE <= rMXLDST[0];
+ end else begin
+ /*AUTORESET*/
+ // Beginning of autoreset for uninitialized flops
+ xDWBSTB <= 1'h0;
+ xDWBWE <= 1'h0;
+ // End of automatics
+ end
+
+ // WB other signals
+ assign iwb_stb_o = rIWBSTB;
+ assign rIWBSTB = 1'b1;
+
+ // PIPELINE REGISTERS ///////////////////////////////////////////////
+
+ always @(negedge nclk or negedge nrst)
+ if (!nrst) begin
+ rOPC <= 6'o40;
+ /*AUTORESET*/
+ // Beginning of autoreset for uninitialized flops
+ rFIMM <= 1'h0;
+ rIMM <= 16'h0;
+ rIMMHI <= 16'h0;
+ rMXALT <= 2'h0;
+ rMXALU <= 2'h0;
+ rMXBRA <= 2'h0;
+ rMXDLY <= 1'h0;
+ rMXLDST <= 2'h0;
+ rMXLNK <= 1'h0;
+ rMXSRC <= 2'h0;
+ rMXTGT <= 2'h0;
+ rRA <= 5'h0;
+ rRB <= 5'h0;
+ rRD <= 5'h0;
+ rSIMM <= 32'h0;
+ // End of automatics
+ end else if (nrun) begin // if (!nrst)
+ rIMM <= #1 xIMM;
+ rOPC <= #1 xOPC;
+ rRA <= #1 xRA;
+ rRB <= #1 xRB;
+ rRD <= #1 xRD;
+
+ rMXALU <= #1 xMXALU;
+ rMXBRA <= #1 xMXBRA;
+ rMXDLY <= #1 xMXDLY;
+ rMXLNK <= #1 xMXLNK;
+ rMXLDST <= #1 xMXLDST;
+
+ rMXSRC <= #1 xMXSRC;
+ rMXTGT <= #1 xMXTGT;
+ rMXALT <= #1 xMXALT;
+
+ rSIMM <= #1 xSIMM;
+ rFIMM <= #1 xFIMM;
+ rIMMHI <= #1 xIMMHI;
+ end // else: !if(!nrst)
+
+ always @(negedge nclk or negedge nrst)
+ if (!nrst) begin
+ /*AUTORESET*/
+ // Beginning of autoreset for uninitialized flops
+ rBRA <= 1'h0;
+ rDLY <= 1'h0;
+ rDWBSTB <= 1'h0;
+ rDWBWE <= 1'h0;
+ rLNK <= 1'h0;
+ rRD_ <= 5'h0;
+ rRWE <= 1'h0;
+ // End of automatics
+ end else if (nrun) begin // if (!nrst)
+ rRD_ <= #1 xRD_;
+ rBRA <= #1 xBRA;
+ rDLY <= #1 xDLY;
+ rLNK <= #1 xLNK;
+ rRWE <= #1 xRWE;
+ rDWBSTB <= #1 xDWBSTB;
+ rDWBWE <= #1 xDWBWE;
+ end // else: !if(!nrst)
+
+endmodule // aeMB_decode
+
+// Local Variables:
+// verilog-library-directories:(".")
+// verilog-library-files:("")
+// End:
\ No newline at end of file
Added:
gnuradio/branches/developers/matt/u2f/opencores/aemb/rtl/verilog/aeMB_fetch.v
===================================================================
---
gnuradio/branches/developers/matt/u2f/opencores/aemb/rtl/verilog/aeMB_fetch.v
(rev 0)
+++
gnuradio/branches/developers/matt/u2f/opencores/aemb/rtl/verilog/aeMB_fetch.v
2007-04-11 20:59:34 UTC (rev 4952)
@@ -0,0 +1,96 @@
+/*
+ * $Id: aeMB_fetch.v,v 1.3 2007/04/11 04:30:43 sybreon Exp $
+ *
+ * AEMB Instruction Fetch
+ * Copyright (C) 2006 Shawn Tan Ser Ngiap <address@hidden>
+ *
+ * This library is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as published by
+ * the Free Software Foundation; either version 2.1 of the License,
+ * or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+ * License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library; if not, write to the Free Software Foundation,
Inc.,
+ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ * DESCRIPTION
+ * Controls the instruction side of AEMB.
+ *
+ * HISTORY
+ * $Log: aeMB_fetch.v,v $
+ * Revision 1.3 2007/04/11 04:30:43 sybreon
+ * Added pipeline stalling from incomplete bus cycles.
+ * Separated sync and async portions of code.
+ *
+ * Revision 1.2 2007/04/04 14:08:34 sybreon
+ * Added initial interrupt/exception support.
+ *
+ * Revision 1.1 2007/03/09 17:52:17 sybreon
+ * initial import
+ *
+ */
+
+// address@hidden
+
+module aeMB_fetch (/*AUTOARG*/
+ // Outputs
+ iwb_adr_o, rPC,
+ // Inputs
+ iwb_dat_i, nclk, nrst, nrun, rFSM, rBRA, rRESULT
+ );
+ parameter ISIZ = 32;
+
+ // Instruction WB I/F
+ output [ISIZ-1:0] iwb_adr_o;
+ input [31:0] iwb_dat_i;
+
+ // System
+ input nclk, nrst, nrun;
+
+ // Internal
+ output [31:0] rPC;
+ //output [31:0] rPCNXT;
+ input [1:0] rFSM;
+ input rBRA;
+ input [31:0] rRESULT;
+
+ // WB ADR signal
+ reg [31:0] rIWBADR, rPC, xIWBADR, xPC;
+
+ wire [31:0] wPCNXT = {(rIWBADR[ISIZ-1:2] + 1'b1),2'b00};
+ assign iwb_adr_o = {rIWBADR[ISIZ-1:2],2'b00}; // Word Aligned
+
+ always @(/*AUTOSENSE*/rBRA or rFSM or rIWBADR or rRESULT or wPCNXT)
+ begin
+ // PC Sources - ALU, Direct, Next
+ case (rFSM)
+ //2'b01: xIWBADR <= 32'h00000010; // HWINT
+ //2'b10: xIWBADR <= 32'h00000020; // HWEXC
+ //2'b11: xIWBADR <= #1 32'h00000008; // SWEXC
+ default: xIWBADR <= (rBRA) ? rRESULT : wPCNXT;
+ endcase // case (rFSM)
+
+ xPC <= {rIWBADR[31:2],2'd0};
+ end // always @ (...
+
+ // PIPELINE REGISTERS //////////////////////////////////////////////////
+
+ always @(negedge nclk or negedge nrst)
+ if (!nrst) begin
+ /*AUTORESET*/
+ // Beginning of autoreset for uninitialized flops
+ rIWBADR <= 32'h0;
+ rPC <= 32'h0;
+ // End of automatics
+ end else if (nrun) begin
+ rPC <= #1 xPC;
+ rIWBADR <= #1 xIWBADR;
+ end
+
+endmodule // aeMB_fetch
+
\ No newline at end of file
Added:
gnuradio/branches/developers/matt/u2f/opencores/aemb/rtl/verilog/aeMB_regfile.v
===================================================================
---
gnuradio/branches/developers/matt/u2f/opencores/aemb/rtl/verilog/aeMB_regfile.v
(rev 0)
+++
gnuradio/branches/developers/matt/u2f/opencores/aemb/rtl/verilog/aeMB_regfile.v
2007-04-11 20:59:34 UTC (rev 4952)
@@ -0,0 +1,430 @@
+/*
+ * $Id: aeMB_regfile.v,v 1.7 2007/04/11 16:30:06 sybreon Exp $
+ *
+ * AEMB Register File
+ * Copyright (C) 2006 Shawn Tan Ser Ngiap <address@hidden>
+ *
+ * This library is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as published by
+ * the Free Software Foundation; either version 2.1 of the License,
+ * or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+ * License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library; if not, write to the Free Software Foundation,
Inc.,
+ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ * DESCRIPTION
+ * Implements the 32 registers as registers. Some registers require
+ * special actions during hardware exception/interrupts. Data forwarding
+ * is also taken care of inside here to simplify decode logic.
+ *
+ * HISTORY
+ * $Log: aeMB_regfile.v,v $
+ * Revision 1.7 2007/04/11 16:30:06 sybreon
+ * Cosmetic changes
+ *
+ * Revision 1.6 2007/04/11 04:30:43 sybreon
+ * Added pipeline stalling from incomplete bus cycles.
+ * Separated sync and async portions of code.
+ *
+ * Revision 1.5 2007/04/04 14:08:34 sybreon
+ * Added initial interrupt/exception support.
+ *
+ * Revision 1.4 2007/04/04 06:11:47 sybreon
+ * Fixed memory read-write data hazard
+ *
+ * Revision 1.3 2007/04/03 14:46:26 sybreon
+ * Fixed endian correction issues on data bus.
+ *
+ * Revision 1.2 2007/03/26 12:21:31 sybreon
+ * Fixed a minor bug where RD is trashed by a STORE instruction. Spotted by
Joon Lee.
+ *
+ * Revision 1.1 2007/03/09 17:52:17 sybreon
+ * initial import
+ *
+ */
+
+// address@hidden - REG
+// address@hidden - RAM
+module aeMB_regfile(/*AUTOARG*/
+ // Outputs
+ dwb_dat_o, rREGA, rREGB,
+ // Inputs
+ dwb_dat_i, rDWBSTB, rDWBWE, rRA, rRB, rRD, rRD_, rRESULT, rFSM,
+ rPC, rLNK, rRWE, nclk, nrst, drun, nrun
+ );
+ // Data WB bus width
+ parameter DSIZ = 32;
+
+ // Data WB I/F
+ output [31:0] dwb_dat_o;
+ input [31:0] dwb_dat_i;
+
+ // Internal I/F
+ output [31:0] rREGA, rREGB;
+ input rDWBSTB, rDWBWE;
+ input [4:0] rRA, rRB, rRD, rRD_;
+ input [31:0] rRESULT;
+ input [1:0] rFSM;
+ input [31:0] rPC;
+ //, rPCNXT;
+ input rLNK, rRWE;
+ input nclk, nrst, drun, nrun;
+
+ // Register File
+ reg [31:0] r00,r01,r02,r03,r04,r05,r06,r07;
+ reg [31:0] r08,r09,r0A,r0B,r0C,r0D,r0E,r0F;
+ reg [31:0] r10,r11,r12,r13,r14,r15,r16,r17;
+ reg [31:0] r18,r19,r1A,r1B,r1C,r1D,r1E,r1F;
+
+ // FLAGS
+ wire fWE = rRWE & ~rDWBWE;
+ wire fLNK = rLNK;
+ wire fLD = rDWBSTB ^ rDWBWE;
+
+ // PC Latch
+ reg [31:0] rPC_;
+ always @(negedge nclk or negedge nrst)
+ if (!nrst) begin
+ /*AUTORESET*/
+ // Beginning of autoreset for uninitialized flops
+ rPC_ <= 32'h0;
+ // End of automatics
+ end else if (nrun) begin
+ rPC_ <= #1 rPC;
+ end
+
+ // DWB data - Endian Correction
+ reg [31:0] rDWBDAT, xDWBDAT;
+ //assign dwb_dat_o = rDWBDAT;
+ //wire [31:0] wDWBDAT = dwb_dat_i;
+ assign dwb_dat_o =
{rDWBDAT[7:0],rDWBDAT[15:8],rDWBDAT[23:16],rDWBDAT[31:24]};
+ wire [31:0] wDWBDAT =
{dwb_dat_i[7:0],dwb_dat_i[15:8],dwb_dat_i[23:16],dwb_dat_i[31:24]};
+
+ // Forwarding Control
+ wire fDFWD = (rRD == rRD_) & fWE;
+ wire fMFWD = rDWBSTB & ~rDWBWE;
+ wire [31:0] wRESULT = (fMFWD) ? wDWBDAT : rRESULT;
+
+ // Register Load
+ always @(/*AUTOSENSE*/drun or fDFWD or r00 or r01 or r02 or r03
+ or r04 or r05 or r06 or r07 or r08 or r09 or r0A or r0B
+ or r0C or r0D or r0E or r0F or r10 or r11 or r12 or r13
+ or r14 or r15 or r16 or r17 or r18 or r19 or r1A or r1B
+ or r1C or r1D or r1E or r1F or rRD or wRESULT)
+ if (drun) begin
+ case (rRD)
+ 5'h00: xDWBDAT <= (fDFWD) ? wRESULT : r00;
+ 5'h01: xDWBDAT <= (fDFWD) ? wRESULT : r01;
+ 5'h02: xDWBDAT <= (fDFWD) ? wRESULT : r02;
+ 5'h03: xDWBDAT <= (fDFWD) ? wRESULT : r03;
+ 5'h04: xDWBDAT <= (fDFWD) ? wRESULT : r04;
+ 5'h05: xDWBDAT <= (fDFWD) ? wRESULT : r05;
+ 5'h06: xDWBDAT <= (fDFWD) ? wRESULT : r06;
+ 5'h07: xDWBDAT <= (fDFWD) ? wRESULT : r07;
+ 5'h08: xDWBDAT <= (fDFWD) ? wRESULT : r08;
+ 5'h09: xDWBDAT <= (fDFWD) ? wRESULT : r09;
+ 5'h0A: xDWBDAT <= (fDFWD) ? wRESULT : r0A;
+ 5'h0B: xDWBDAT <= (fDFWD) ? wRESULT : r0B;
+ 5'h0C: xDWBDAT <= (fDFWD) ? wRESULT : r0C;
+ 5'h0D: xDWBDAT <= (fDFWD) ? wRESULT : r0D;
+ 5'h0E: xDWBDAT <= (fDFWD) ? wRESULT : r0E;
+ 5'h0F: xDWBDAT <= (fDFWD) ? wRESULT : r0F;
+ 5'h10: xDWBDAT <= (fDFWD) ? wRESULT : r10;
+ 5'h11: xDWBDAT <= (fDFWD) ? wRESULT : r11;
+ 5'h12: xDWBDAT <= (fDFWD) ? wRESULT : r12;
+ 5'h13: xDWBDAT <= (fDFWD) ? wRESULT : r13;
+ 5'h14: xDWBDAT <= (fDFWD) ? wRESULT : r14;
+ 5'h15: xDWBDAT <= (fDFWD) ? wRESULT : r15;
+ 5'h16: xDWBDAT <= (fDFWD) ? wRESULT : r16;
+ 5'h17: xDWBDAT <= (fDFWD) ? wRESULT : r17;
+ 5'h18: xDWBDAT <= (fDFWD) ? wRESULT : r18;
+ 5'h19: xDWBDAT <= (fDFWD) ? wRESULT : r19;
+ 5'h1A: xDWBDAT <= (fDFWD) ? wRESULT : r1A;
+ 5'h1B: xDWBDAT <= (fDFWD) ? wRESULT : r1B;
+ 5'h1C: xDWBDAT <= (fDFWD) ? wRESULT : r1C;
+ 5'h1D: xDWBDAT <= (fDFWD) ? wRESULT : r1D;
+ 5'h1E: xDWBDAT <= (fDFWD) ? wRESULT : r1E;
+ 5'h1F: xDWBDAT <= (fDFWD) ? wRESULT : r1F;
+ endcase // case (rRD)
+ end else begin // if (drun)
+ /*AUTORESET*/
+ // Beginning of autoreset for uninitialized flops
+ xDWBDAT <= 32'h0;
+ // End of automatics
+ end // else: !if(drun)
+
+ // Load Registers
+ reg [31:0] xREGA, xREGB;
+ always @(/*AUTOSENSE*/drun or r00 or r01 or r02 or r03 or r04
+ or r05 or r06 or r07 or r08 or r09 or r0A or r0B or r0C
+ or r0D or r0E or r0F or r10 or r11 or r12 or r13 or r14
+ or r15 or r16 or r17 or r18 or r19 or r1A or r1B or r1C
+ or r1D or r1E or r1F or rRA or rRB)
+ if (drun) begin
+ case (rRA)
+ 5'h1F: xREGA <= r1F;
+ 5'h1E: xREGA <= r1E;
+ 5'h1D: xREGA <= r1D;
+ 5'h1C: xREGA <= r1C;
+ 5'h1B: xREGA <= r1B;
+ 5'h1A: xREGA <= r1A;
+ 5'h19: xREGA <= r19;
+ 5'h18: xREGA <= r18;
+ 5'h17: xREGA <= r17;
+ 5'h16: xREGA <= r16;
+ 5'h15: xREGA <= r15;
+ 5'h14: xREGA <= r14;
+ 5'h13: xREGA <= r13;
+ 5'h12: xREGA <= r12;
+ 5'h11: xREGA <= r11;
+ 5'h10: xREGA <= r10;
+ 5'h0F: xREGA <= r0F;
+ 5'h0E: xREGA <= r0E;
+ 5'h0D: xREGA <= r0D;
+ 5'h0C: xREGA <= r0C;
+ 5'h0B: xREGA <= r0B;
+ 5'h0A: xREGA <= r0A;
+ 5'h09: xREGA <= r09;
+ 5'h08: xREGA <= r08;
+ 5'h07: xREGA <= r07;
+ 5'h06: xREGA <= r06;
+ 5'h05: xREGA <= r05;
+ 5'h04: xREGA <= r04;
+ 5'h03: xREGA <= r03;
+ 5'h02: xREGA <= r02;
+ 5'h01: xREGA <= r01;
+ 5'h00: xREGA <= r00;
+ endcase // case (rRA)
+
+ case (rRB)
+ 5'h1F: xREGB <= r1F;
+ 5'h1E: xREGB <= r1E;
+ 5'h1D: xREGB <= r1D;
+ 5'h1C: xREGB <= r1C;
+ 5'h1B: xREGB <= r1B;
+ 5'h1A: xREGB <= r1A;
+ 5'h19: xREGB <= r19;
+ 5'h18: xREGB <= r18;
+ 5'h17: xREGB <= r17;
+ 5'h16: xREGB <= r16;
+ 5'h15: xREGB <= r15;
+ 5'h14: xREGB <= r14;
+ 5'h13: xREGB <= r13;
+ 5'h12: xREGB <= r12;
+ 5'h11: xREGB <= r11;
+ 5'h10: xREGB <= r10;
+ 5'h0F: xREGB <= r0F;
+ 5'h0E: xREGB <= r0E;
+ 5'h0D: xREGB <= r0D;
+ 5'h0C: xREGB <= r0C;
+ 5'h0B: xREGB <= r0B;
+ 5'h0A: xREGB <= r0A;
+ 5'h09: xREGB <= r09;
+ 5'h08: xREGB <= r08;
+ 5'h07: xREGB <= r07;
+ 5'h06: xREGB <= r06;
+ 5'h05: xREGB <= r05;
+ 5'h04: xREGB <= r04;
+ 5'h03: xREGB <= r03;
+ 5'h02: xREGB <= r02;
+ 5'h01: xREGB <= r01;
+ 5'h00: xREGB <= r00;
+ endcase // case (rRB)
+ end else begin // if (drun)
+ /*AUTORESET*/
+ // Beginning of autoreset for uninitialized flops
+ xREGA <= 32'h0;
+ xREGB <= 32'h0;
+ // End of automatics
+ end // else: !if(drun)
+
+
+ // Normal Registers
+ wire fR00 = (rRD_ == 5'h00);
+ wire fR01 = (rRD_ == 5'h01);
+ wire fR02 = (rRD_ == 5'h02);
+ wire fR03 = (rRD_ == 5'h03);
+ wire fR04 = (rRD_ == 5'h04);
+ wire fR05 = (rRD_ == 5'h05);
+ wire fR06 = (rRD_ == 5'h06);
+ wire fR07 = (rRD_ == 5'h07);
+ wire fR08 = (rRD_ == 5'h08);
+ wire fR09 = (rRD_ == 5'h09);
+ wire fR0A = (rRD_ == 5'h0A);
+ wire fR0B = (rRD_ == 5'h0B);
+ wire fR0C = (rRD_ == 5'h0C);
+ wire fR0D = (rRD_ == 5'h0D);
+ wire fR0E = (rRD_ == 5'h0E);
+ wire fR0F = (rRD_ == 5'h0F);
+ wire fR10 = (rRD_ == 5'h10);
+ wire fR11 = (rRD_ == 5'h11);
+ wire fR12 = (rRD_ == 5'h12);
+ wire fR13 = (rRD_ == 5'h13);
+ wire fR14 = (rRD_ == 5'h14);
+ wire fR15 = (rRD_ == 5'h15);
+ wire fR16 = (rRD_ == 5'h16);
+ wire fR17 = (rRD_ == 5'h17);
+ wire fR18 = (rRD_ == 5'h18);
+ wire fR19 = (rRD_ == 5'h19);
+ wire fR1A = (rRD_ == 5'h1A);
+ wire fR1B = (rRD_ == 5'h1B);
+ wire fR1C = (rRD_ == 5'h1C);
+ wire fR1D = (rRD_ == 5'h1D);
+ wire fR1E = (rRD_ == 5'h1E);
+ wire fR1F = (rRD_ == 5'h1F);
+
+ always @(negedge nclk or negedge nrst)
+ if (!nrst) begin
+ /*AUTORESET*/
+ // Beginning of autoreset for uninitialized flops
+ r01 <= 32'h0;
+ r02 <= 32'h0;
+ r03 <= 32'h0;
+ r04 <= 32'h0;
+ r05 <= 32'h0;
+ r06 <= 32'h0;
+ r07 <= 32'h0;
+ r08 <= 32'h0;
+ r09 <= 32'h0;
+ r0A <= 32'h0;
+ r0B <= 32'h0;
+ r0C <= 32'h0;
+ r0D <= 32'h0;
+ r0F <= 32'h0;
+ r10 <= 32'h0;
+ r12 <= 32'h0;
+ r13 <= 32'h0;
+ r14 <= 32'h0;
+ r15 <= 32'h0;
+ r16 <= 32'h0;
+ r17 <= 32'h0;
+ r18 <= 32'h0;
+ r19 <= 32'h0;
+ r1A <= 32'h0;
+ r1B <= 32'h0;
+ r1C <= 32'h0;
+ r1D <= 32'h0;
+ r1E <= 32'h0;
+ r1F <= 32'h0;
+ // End of automatics
+ end else begin // if (!nrst)
+ r01 <= #1 (!fR01) ? r01 : (fLD) ? wDWBDAT : (fLNK) ? rPC_ : (fWE) ?
rRESULT : r01;
+ r02 <= #1 (!fR02) ? r02 : (fLD) ? wDWBDAT : (fLNK) ? rPC_ : (fWE) ?
rRESULT : r02;
+ r03 <= #1 (!fR03) ? r03 : (fLD) ? wDWBDAT : (fLNK) ? rPC_ : (fWE) ?
rRESULT : r03;
+ r04 <= #1 (!fR04) ? r04 : (fLD) ? wDWBDAT : (fLNK) ? rPC_ : (fWE) ?
rRESULT : r04;
+ r05 <= #1 (!fR05) ? r05 : (fLD) ? wDWBDAT : (fLNK) ? rPC_ : (fWE) ?
rRESULT : r05;
+ r06 <= #1 (!fR06) ? r06 : (fLD) ? wDWBDAT : (fLNK) ? rPC_ : (fWE) ?
rRESULT : r06;
+ r07 <= #1 (!fR07) ? r07 : (fLD) ? wDWBDAT : (fLNK) ? rPC_ : (fWE) ?
rRESULT : r07;
+ r08 <= #1 (!fR08) ? r08 : (fLD) ? wDWBDAT : (fLNK) ? rPC_ : (fWE) ?
rRESULT : r08;
+ r09 <= #1 (!fR09) ? r09 : (fLD) ? wDWBDAT : (fLNK) ? rPC_ : (fWE) ?
rRESULT : r09;
+ r0A <= #1 (!fR0A) ? r0A : (fLD) ? wDWBDAT : (fLNK) ? rPC_ : (fWE) ?
rRESULT : r0A;
+ r0B <= #1 (!fR0B) ? r0B : (fLD) ? wDWBDAT : (fLNK) ? rPC_ : (fWE) ?
rRESULT : r0B;
+ r0C <= #1 (!fR0C) ? r0C : (fLD) ? wDWBDAT : (fLNK) ? rPC_ : (fWE) ?
rRESULT : r0C;
+ r0D <= #1 (!fR0D) ? r0D : (fLD) ? wDWBDAT : (fLNK) ? rPC_ : (fWE) ?
rRESULT : r0D;
+ r0F <= #1 (!fR0F) ? r0F : (fLD) ? wDWBDAT : (fLNK) ? rPC_ : (fWE) ?
rRESULT : r0F;
+ r10 <= #1 (!fR10) ? r10 : (fLD) ? wDWBDAT : (fLNK) ? rPC_ : (fWE) ?
rRESULT : r10;
+ r12 <= #1 (!fR12) ? r12 : (fLD) ? wDWBDAT : (fLNK) ? rPC_ : (fWE) ?
rRESULT : r12;
+ r13 <= #1 (!fR13) ? r13 : (fLD) ? wDWBDAT : (fLNK) ? rPC_ : (fWE) ?
rRESULT : r13;
+ r14 <= #1 (!fR14) ? r14 : (fLD) ? wDWBDAT : (fLNK) ? rPC_ : (fWE) ?
rRESULT : r14;
+ r15 <= #1 (!fR15) ? r15 : (fLD) ? wDWBDAT : (fLNK) ? rPC_ : (fWE) ?
rRESULT : r15;
+ r16 <= #1 (!fR16) ? r16 : (fLD) ? wDWBDAT : (fLNK) ? rPC_ : (fWE) ?
rRESULT : r16;
+ r17 <= #1 (!fR17) ? r17 : (fLD) ? wDWBDAT : (fLNK) ? rPC_ : (fWE) ?
rRESULT : r17;
+ r18 <= #1 (!fR18) ? r18 : (fLD) ? wDWBDAT : (fLNK) ? rPC_ : (fWE) ?
rRESULT : r18;
+ r19 <= #1 (!fR19) ? r19 : (fLD) ? wDWBDAT : (fLNK) ? rPC_ : (fWE) ?
rRESULT : r19;
+ r1A <= #1 (!fR1A) ? r1A : (fLD) ? wDWBDAT : (fLNK) ? rPC_ : (fWE) ?
rRESULT : r1A;
+ r1B <= #1 (!fR1B) ? r1B : (fLD) ? wDWBDAT : (fLNK) ? rPC_ : (fWE) ?
rRESULT : r1B;
+ r1C <= #1 (!fR1C) ? r1C : (fLD) ? wDWBDAT : (fLNK) ? rPC_ : (fWE) ?
rRESULT : r1C;
+ r1D <= #1 (!fR1D) ? r1D : (fLD) ? wDWBDAT : (fLNK) ? rPC_ : (fWE) ?
rRESULT : r1D;
+ r1E <= #1 (!fR1E) ? r1E : (fLD) ? wDWBDAT : (fLNK) ? rPC_ : (fWE) ?
rRESULT : r1E;
+ r1F <= #1 (!fR1F) ? r1F : (fLD) ? wDWBDAT : (fLNK) ? rPC_ : (fWE) ?
rRESULT : r1F;
+
+ end // else: !if(!nrst)
+
+ // Special Registers
+ always @(negedge nclk or negedge nrst)
+ if (!nrst) begin
+ /*AUTORESET*/
+ // Beginning of autoreset for uninitialized flops
+ r00 <= 32'h0;
+ r0E <= 32'h0;
+ r11 <= 32'h0;
+ // End of automatics
+ end else begin
+ // R00 - Zero
+ r00 <= #1 r00;
+ // R0E - Interrupt
+ r0E <= #1 //(rFSM == 2'b01) ? rPCNXT :
+ (!fR0E) ? r0E : (fLD) ? wDWBDAT : (fLNK) ? rPC_ : (fWE) ?
rRESULT : r0E;
+ // R11 - Exception
+ r11 <= #1 //(rFSM == 2'b10) ? rPCNXT :
+ (!fR11) ? r11 : (fLD) ? wDWBDAT : (fLNK) ? rPC_ : (fWE) ?
rRESULT : r11;
+ end // else: !if(!nrst)
+
+ // Alternative Design
+ reg [31:0] rMEMA[0:31], rMEMB[0:31], rMEMD[0:31];
+ wire [31:0] wDDAT, wREGA, wREGB, wREGD, wWBDAT;
+ wire wDWE = (fLD | fLNK | fWE) & |rRD_ & nrun;
+ assign wDDAT = (fLD) ? wDWBDAT :
+ (fLNK) ? rPC_ : rRESULT;
+ assign wWBDAT = (fDFWD) ? wRESULT : wREGD;
+
+ assign wREGA = rMEMA[rRA];
+ assign wREGB = rMEMB[rRB];
+ assign wREGD = rMEMD[rRD];
+
+ always @(negedge nclk)
+ if (wDWE) begin
+ rMEMA[rRD_] <= wDDAT;
+ rMEMB[rRD_] <= wDDAT;
+ rMEMD[rRD_] <= wDDAT;
+ end
+
+ // PIPELINE REGISTERS //////////////////////////////////////////////////
+
+ reg [31:0] rREGA, rREGB;
+ always @(/*AUTOSENSE*/wREGA or wREGB)
+ begin
+ //rREGA <= #1 xREGA;
+ //rREGB <= #1 xREGB;
+ rREGA <= #1 wREGA;
+ rREGB <= #1 wREGB;
+ end
+
+ always @(negedge nclk or negedge nrst)
+ if (!nrst) begin
+ /*AUTORESET*/
+ // Beginning of autoreset for uninitialized flops
+ rDWBDAT <= 32'h0;
+ // End of automatics
+ end else if (nrun) begin
+ //rDWBDAT <= #1 xDWBDAT;
+ rDWBDAT <= #1 wWBDAT;
+ end
+
+ // SIMULATION ONLY ///////////////////////////////////////////////////
+ integer i;
+ initial begin
+ for (i=0;i<31;i=i+1) begin
+ rMEMA[i] <= 0;
+ rMEMB[i] <= 0;
+ rMEMD[i] <= 0;
+ end
+ end
+
+ always @(negedge nclk) begin
+ if ((fWE & (rRD_== 5'd0)) || (fLNK & (rRD_== 5'd0)) || (fLD & (rRD_==
5'd0))) $displayh("!!! Warning: Write to R0 !!!");
+ end
+
+endmodule // aeMB_regfile
+
+
+// Local Variables:
+// verilog-library-directories:(".")
+// verilog-library-files:("")
+// End:
\ No newline at end of file
Added:
gnuradio/branches/developers/matt/u2f/opencores/aemb/rtl/verilog/aeMB_testbench.v
===================================================================
---
gnuradio/branches/developers/matt/u2f/opencores/aemb/rtl/verilog/aeMB_testbench.v
(rev 0)
+++
gnuradio/branches/developers/matt/u2f/opencores/aemb/rtl/verilog/aeMB_testbench.v
2007-04-11 20:59:34 UTC (rev 4952)
@@ -0,0 +1,135 @@
+/*
+ * $Id: aeMB_testbench.v,v 1.4 2007/04/11 04:30:43 sybreon Exp $
+ *
+ * AEMB Generic Testbench
+ * Copyright (C) 2006 Shawn Tan Ser Ngiap <address@hidden>
+ *
+ * This library is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as published by
+ * the Free Software Foundation; either version 2.1 of the License,
+ * or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+ * License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library; if not, write to the Free Software Foundation,
Inc.,
+ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ * DESCRIPTION
+ * Top level test bench and fake RAM/ROM.
+ *
+ * HISTORY
+ * $Log: aeMB_testbench.v,v $
+ * Revision 1.4 2007/04/11 04:30:43 sybreon
+ * Added pipeline stalling from incomplete bus cycles.
+ * Separated sync and async portions of code.
+ *
+ * Revision 1.3 2007/04/04 14:08:34 sybreon
+ * Added initial interrupt/exception support.
+ *
+ * Revision 1.2 2007/04/04 06:11:59 sybreon
+ * Extended testbench code
+ *
+ * Revision 1.1 2007/03/09 17:52:17 sybreon
+ * initial import
+ *
+ */
+
+module testbench ();
+ parameter ISIZ = 16;
+ parameter DSIZ = 16;
+
+ reg sys_clk_i, sys_rst_i, sys_int_i, sys_exc_i;
+
+ initial begin
+ $dumpfile("aeMB_core.vcd");
+ $dumpvars(1,dut);
+ end
+
+ initial begin
+ sys_clk_i = 1;
+ sys_rst_i = 0;
+ sys_int_i = 0;
+ sys_exc_i = 0;
+ #10 sys_rst_i = 1;
+ #10000 sys_int_i = 1;
+ #100 sys_int_i = 0;
+ end
+
+ initial fork
+ //#100000 $displayh("\nTest Completed.");
+ //#11000 $finish;
+ join
+
+ always #5 sys_clk_i = ~sys_clk_i;
+
+ // FAKE ROM
+ reg [31:0] rom [0:65535];
+ reg [31:0] iwb_dat_i;
+ reg iwb_ack_i, dwb_ack_i;
+ wire [ISIZ-1:0] iwb_adr_o;
+ wire iwb_stb_o;
+ wire dwb_stb_o;
+
+ always @(posedge sys_clk_i) begin
+ iwb_ack_i <= #1 iwb_stb_o;
+ //& $random;
+ dwb_ack_i <= #1 dwb_stb_o;
+ //& $random;
+ iwb_dat_i <= #1 rom[iwb_adr_o[ISIZ-1:2]];
+ end
+
+ // FAKE RAM
+ reg [31:0] ram [0:65535];
+ reg [31:0] dwb_dat_i;
+ reg [31:0] dwblat;
+ wire dwb_we_o;
+ wire [31:0] dwb_dat_o;
+ wire [DSIZ-1:0] dwb_adr_o;
+
+ always @(posedge sys_clk_i) begin
+ ram[dwb_adr_o[DSIZ-1:2]] <= (dwb_we_o & dwb_stb_o) ? dwb_dat_o :
ram[dwb_adr_o[DSIZ-1:2]];
+ dwblat <= dwb_adr_o;
+ dwb_dat_i <= ram[dwb_adr_o[DSIZ-1:2]];
+ end
+
+ integer i;
+ initial begin
+ for (i=0;i<65535;i=i+1) begin
+ ram[i] <= 32'h0;
+ rom[i] <= 32'h0;
+ end
+
+ #1 $readmemh("aeMB.rom",rom);
+ #1 $readmemh("aeMB.rom",ram);
+
+ end
+
+ always @(negedge sys_clk_i) begin
+ if (dwb_stb_o & dwb_we_o & dwb_ack_i)
+ $displayh($stime,"; ST: 0x",dwb_adr_o,"=0x",dwb_dat_o);
+ if (dwb_stb_o & ~dwb_we_o & dwb_ack_i)
+ $displayh($stime,"; LD: 0x",dwb_adr_o,"=0x",dwb_dat_i);
+
+ if ((dwb_adr_o == 16'h8888) && (dwb_dat_o == 32'h7a55ed00))
+ $display("*** SERVICE ***");
+
+ if (dut.control.rFSM == 2'o1)
+ $display("*** INTERRUPT ***");
+
+ end // always @ (posedge sys_clk_i)
+
+ aeMB_core #(ISIZ,DSIZ)
+ dut (
+ .sys_int_i(sys_int_i),.sys_exc_i(sys_exc_i),
+ .dwb_ack_i(dwb_ack_i),.dwb_stb_o(dwb_stb_o),.dwb_adr_o(dwb_adr_o),
+ .dwb_dat_o(dwb_dat_o),.dwb_dat_i(dwb_dat_i),.dwb_we_o(dwb_we_o),
+ .iwb_adr_o(iwb_adr_o),.iwb_dat_i(iwb_dat_i),.iwb_stb_o(iwb_stb_o),
+ .iwb_ack_i(iwb_ack_i),
+ .sys_clk_i(sys_clk_i), .sys_rst_i(sys_rst_i)
+ );
+
+endmodule // testbench
Added: gnuradio/branches/developers/matt/u2f/opencores/aemb/sim/CVS/Entries
===================================================================
--- gnuradio/branches/developers/matt/u2f/opencores/aemb/sim/CVS/Entries
(rev 0)
+++ gnuradio/branches/developers/matt/u2f/opencores/aemb/sim/CVS/Entries
2007-04-11 20:59:34 UTC (rev 4952)
@@ -0,0 +1,3 @@
+/cversim/1.1/Fri Mar 9 17:41:55 2007//
+/iversim/1.1/Fri Mar 9 17:41:55 2007//
+D
Added: gnuradio/branches/developers/matt/u2f/opencores/aemb/sim/CVS/Repository
===================================================================
--- gnuradio/branches/developers/matt/u2f/opencores/aemb/sim/CVS/Repository
(rev 0)
+++ gnuradio/branches/developers/matt/u2f/opencores/aemb/sim/CVS/Repository
2007-04-11 20:59:34 UTC (rev 4952)
@@ -0,0 +1 @@
+aemb/sim
Added: gnuradio/branches/developers/matt/u2f/opencores/aemb/sim/CVS/Root
===================================================================
--- gnuradio/branches/developers/matt/u2f/opencores/aemb/sim/CVS/Root
(rev 0)
+++ gnuradio/branches/developers/matt/u2f/opencores/aemb/sim/CVS/Root
2007-04-11 20:59:34 UTC (rev 4952)
@@ -0,0 +1 @@
+:pserver:address@hidden:/cvsroot/anonymous
Added: gnuradio/branches/developers/matt/u2f/opencores/aemb/sim/CVS/Template
===================================================================
Added: gnuradio/branches/developers/matt/u2f/opencores/aemb/sim/cversim
===================================================================
--- gnuradio/branches/developers/matt/u2f/opencores/aemb/sim/cversim
(rev 0)
+++ gnuradio/branches/developers/matt/u2f/opencores/aemb/sim/cversim
2007-04-11 20:59:34 UTC (rev 4952)
@@ -0,0 +1,7 @@
+#!/bin/sh
+# $Id: cversim,v 1.1 2007/03/09 17:41:55 sybreon Exp $
+# $Log: cversim,v $
+# Revision 1.1 2007/03/09 17:41:55 sybreon
+# initial import
+#
+cver $@ ../rtl/verilog/*.v
Property changes on:
gnuradio/branches/developers/matt/u2f/opencores/aemb/sim/cversim
___________________________________________________________________
Name: svn:executable
+ *
Added: gnuradio/branches/developers/matt/u2f/opencores/aemb/sim/iversim
===================================================================
--- gnuradio/branches/developers/matt/u2f/opencores/aemb/sim/iversim
(rev 0)
+++ gnuradio/branches/developers/matt/u2f/opencores/aemb/sim/iversim
2007-04-11 20:59:34 UTC (rev 4952)
@@ -0,0 +1,7 @@
+#!/bin/sh
+# $Id: iversim,v 1.1 2007/03/09 17:41:55 sybreon Exp $
+# $Log: iversim,v $
+# Revision 1.1 2007/03/09 17:41:55 sybreon
+# initial import
+#
+iverilog $@ ../rtl/verilog/*.v && vvp a.out && rm a.out
Property changes on:
gnuradio/branches/developers/matt/u2f/opencores/aemb/sim/iversim
___________________________________________________________________
Name: svn:executable
+ *
Added: gnuradio/branches/developers/matt/u2f/opencores/aemb/sw/CVS/Entries
===================================================================
--- gnuradio/branches/developers/matt/u2f/opencores/aemb/sw/CVS/Entries
(rev 0)
+++ gnuradio/branches/developers/matt/u2f/opencores/aemb/sw/CVS/Entries
2007-04-11 20:59:34 UTC (rev 4952)
@@ -0,0 +1,2 @@
+/gccrom/1.2/Wed Apr 4 06:14:39 2007//
+D/c////
Added: gnuradio/branches/developers/matt/u2f/opencores/aemb/sw/CVS/Repository
===================================================================
--- gnuradio/branches/developers/matt/u2f/opencores/aemb/sw/CVS/Repository
(rev 0)
+++ gnuradio/branches/developers/matt/u2f/opencores/aemb/sw/CVS/Repository
2007-04-11 20:59:34 UTC (rev 4952)
@@ -0,0 +1 @@
+aemb/sw
Added: gnuradio/branches/developers/matt/u2f/opencores/aemb/sw/CVS/Root
===================================================================
--- gnuradio/branches/developers/matt/u2f/opencores/aemb/sw/CVS/Root
(rev 0)
+++ gnuradio/branches/developers/matt/u2f/opencores/aemb/sw/CVS/Root
2007-04-11 20:59:34 UTC (rev 4952)
@@ -0,0 +1 @@
+:pserver:address@hidden:/cvsroot/anonymous
Added: gnuradio/branches/developers/matt/u2f/opencores/aemb/sw/CVS/Template
===================================================================
Added: gnuradio/branches/developers/matt/u2f/opencores/aemb/sw/c/CVS/Entries
===================================================================
--- gnuradio/branches/developers/matt/u2f/opencores/aemb/sw/c/CVS/Entries
(rev 0)
+++ gnuradio/branches/developers/matt/u2f/opencores/aemb/sw/c/CVS/Entries
2007-04-11 20:59:34 UTC (rev 4952)
@@ -0,0 +1,2 @@
+/aeMB_testbench.c/1.3/Wed Apr 4 14:09:04 2007//
+D
Added: gnuradio/branches/developers/matt/u2f/opencores/aemb/sw/c/CVS/Repository
===================================================================
--- gnuradio/branches/developers/matt/u2f/opencores/aemb/sw/c/CVS/Repository
(rev 0)
+++ gnuradio/branches/developers/matt/u2f/opencores/aemb/sw/c/CVS/Repository
2007-04-11 20:59:34 UTC (rev 4952)
@@ -0,0 +1 @@
+aemb/sw/c
Added: gnuradio/branches/developers/matt/u2f/opencores/aemb/sw/c/CVS/Root
===================================================================
--- gnuradio/branches/developers/matt/u2f/opencores/aemb/sw/c/CVS/Root
(rev 0)
+++ gnuradio/branches/developers/matt/u2f/opencores/aemb/sw/c/CVS/Root
2007-04-11 20:59:34 UTC (rev 4952)
@@ -0,0 +1 @@
+:pserver:address@hidden:/cvsroot/anonymous
Added: gnuradio/branches/developers/matt/u2f/opencores/aemb/sw/c/CVS/Template
===================================================================
Added:
gnuradio/branches/developers/matt/u2f/opencores/aemb/sw/c/aeMB_testbench.c
===================================================================
--- gnuradio/branches/developers/matt/u2f/opencores/aemb/sw/c/aeMB_testbench.c
(rev 0)
+++ gnuradio/branches/developers/matt/u2f/opencores/aemb/sw/c/aeMB_testbench.c
2007-04-11 20:59:34 UTC (rev 4952)
@@ -0,0 +1,135 @@
+/*
+ * $Id: aeMB_testbench.c,v 1.3 2007/04/04 14:09:04 sybreon Exp $
+ *
+ * AEMB Function Verification C Testbench
+ * Copyright (C) 2006 Shawn Tan Ser Ngiap <address@hidden>
+ *
+ * This library is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as published by
+ * the Free Software Foundation; either version 2.1 of the License,
+ * or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+ * License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library; if not, write to the Free Software Foundation,
Inc.,
+ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ * DESCRIPTION
+ * Runs a simple test programme that calculates fibonnaci numbers using two
+ * different methods. It tests a whole gamut of operations and is tightly
+ * linked to the ae68_testbench.v testbench module for verification.
+ *
+ * The fibonnaci code is from
+ * http://en.literateprograms.org/Fibonacci_numbers_(C)
+ *
+ * HISTORY
+ * $Log: aeMB_testbench.c,v $
+ * Revision 1.3 2007/04/04 14:09:04 sybreon
+ * Added initial interrupt/exception support.
+ *
+ * Revision 1.2 2007/04/04 06:07:45 sybreon
+ * Fixed C code bug which passes the test
+ *
+ * Revision 1.1 2007/03/09 17:41:57 sybreon
+ * initial import
+ *
+ */
+
+/* Special Prototypes */
+void int_call_func (); // __attribute__((save_volatiles));
+void int_handler_func () __attribute__ ((interrupt_handler));
+
+/* Interrupt Handler */
+void int_handler_func () {
+ int_call_func();
+}
+
+void int_call_func () {
+ int *p;
+ p = 0x88888888;
+ *p = 0x00ED557A; // Write a value to a IO port.
+}
+
+/* Recursive Version */
+
+unsigned int slowfib(unsigned int n)
+{
+ return n < 2 ? n : slowfib(n-1) + slowfib(n-2);
+}
+
+/* Iterative Version */
+
+unsigned int fastfib(unsigned int n)
+{
+ unsigned int a[3];
+ unsigned int *p=a;
+ unsigned int i;
+
+ for(i=0; i<=n; ++i) {
+ if(i<2) *p=i;
+ else {
+ if(p==a) *p=*(a+1)+*(a+2);
+ else if(p==a+1) *p=*a+*(a+2);
+ else *p=*a+*(a+1);
+ }
+ if(++p>a+2) p=a;
+ }
+
+ return p==a?*(p+2):*(p-1);
+}
+
+/* Compare the Results */
+
+int main() {
+ unsigned int n;
+ unsigned int fib_fast, fib_slow;
+ unsigned int fib_lut[] = {0,
+ 1,
+ 1,
+ 2,
+ 3,
+ 5,
+ 8,
+ 13,
+ 21,
+ 34,
+ 55,
+ 89,
+ 144,
+ 233,
+ 377,
+ 610,
+ 987,
+ 1597,
+ 2584,
+ 4181,
+ 6765,
+ 10946,
+ 17711,
+ 28657,
+ 46368,
+ 75025,
+ 121393,
+ 196418,
+ 317811,
+ 514229,
+ 832040,
+ 1346269,
+ 2178309,
+ 3524578,
+ 5702887};
+
+ for (n=0;n<35;n++) {
+ fib_slow = slowfib(n);
+ fib_fast = fastfib(n);
+ while ((fib_fast != fib_lut[n]) || (fib_slow != fib_fast)) {
+ fib_lut[n] = 0x00ED17FA;
+ }
+ }
+
+ return fib_fast;
+}
Added: gnuradio/branches/developers/matt/u2f/opencores/aemb/sw/gccrom
===================================================================
--- gnuradio/branches/developers/matt/u2f/opencores/aemb/sw/gccrom
(rev 0)
+++ gnuradio/branches/developers/matt/u2f/opencores/aemb/sw/gccrom
2007-04-11 20:59:34 UTC (rev 4952)
@@ -0,0 +1,17 @@
+#!/bin/sh
+# $Id: gccrom,v 1.2 2007/04/04 06:14:39 sybreon Exp $
+# $Log: gccrom,v $
+# Revision 1.2 2007/04/04 06:14:39 sybreon
+# Minor changes
+#
+# Revision 1.1 2007/03/09 17:41:56 sybreon
+# initial import
+#
+#mb-gcc -g -mxl-soft-div -mxl-soft-mul -msoft-float -mno-clearbss
-msmall-divides -mno-memcpy -mno-xl-gp-opt -o rom.o $@ && \
+mb-gcc -g -mxl-soft-div -mxl-soft-mul -msoft-float -o rom.o $@ && \
+mb-objcopy -O binary rom.o rom.bin && \
+hexdump -v -e'1/4 "%.8X\n"' rom.bin > ../sim/aeMB.rom && \
+mb-objdump -DSC rom.o > rom.dump && \
+rm rom.bin && \
+#mb-run -tv rom.o 2> rom.run && \
+echo "ROM generated"
Property changes on:
gnuradio/branches/developers/matt/u2f/opencores/aemb/sw/gccrom
___________________________________________________________________
Name: svn:executable
+ *
Modified:
gnuradio/branches/developers/matt/u2f/opencores/ethernet_tri_mode/CVS/Entries
===================================================================
---
gnuradio/branches/developers/matt/u2f/opencores/ethernet_tri_mode/CVS/Entries
2007-04-11 20:49:42 UTC (rev 4951)
+++
gnuradio/branches/developers/matt/u2f/opencores/ethernet_tri_mode/CVS/Entries
2007-04-11 20:59:34 UTC (rev 4952)
@@ -1,2 +1,6 @@
/start.tcl/1.3/Sun May 28 05:00:17 2006//
-D
+D/bench////
+D/doc////
+D/rtl////
+D/sim////
+D/syn////
Modified:
gnuradio/branches/developers/matt/u2f/opencores/ethernet_tri_mode/bench/CVS/Entries
===================================================================
---
gnuradio/branches/developers/matt/u2f/opencores/ethernet_tri_mode/bench/CVS/Entries
2007-04-11 20:49:42 UTC (rev 4951)
+++
gnuradio/branches/developers/matt/u2f/opencores/ethernet_tri_mode/bench/CVS/Entries
2007-04-11 20:59:34 UTC (rev 4952)
@@ -1 +1 @@
-D
+D/verilog////
Modified:
gnuradio/branches/developers/matt/u2f/opencores/ethernet_tri_mode/rtl/CVS/Entries
===================================================================
---
gnuradio/branches/developers/matt/u2f/opencores/ethernet_tri_mode/rtl/CVS/Entries
2007-04-11 20:49:42 UTC (rev 4951)
+++
gnuradio/branches/developers/matt/u2f/opencores/ethernet_tri_mode/rtl/CVS/Entries
2007-04-11 20:59:34 UTC (rev 4952)
@@ -1 +1 @@
-D
+D/verilog////
Modified:
gnuradio/branches/developers/matt/u2f/opencores/ethernet_tri_mode/rtl/verilog/CVS/Entries
===================================================================
---
gnuradio/branches/developers/matt/u2f/opencores/ethernet_tri_mode/rtl/verilog/CVS/Entries
2007-04-11 20:49:42 UTC (rev 4951)
+++
gnuradio/branches/developers/matt/u2f/opencores/ethernet_tri_mode/rtl/verilog/CVS/Entries
2007-04-11 20:59:34 UTC (rev 4952)
@@ -7,4 +7,8 @@
/eth_miim.v/1.3/Thu Jan 19 14:07:53 2006//
/header.v/1.1/Thu Jan 19 14:07:53 2006//
/reg_int.v/1.4/Fri Nov 17 17:53:07 2006//
-D
+D/MAC_rx////
+D/MAC_tx////
+D/RMON////
+D/TECH////
+D/miim////
Modified:
gnuradio/branches/developers/matt/u2f/opencores/ethernet_tri_mode/rtl/verilog/TECH/CVS/Entries
===================================================================
---
gnuradio/branches/developers/matt/u2f/opencores/ethernet_tri_mode/rtl/verilog/TECH/CVS/Entries
2007-04-11 20:49:42 UTC (rev 4951)
+++
gnuradio/branches/developers/matt/u2f/opencores/ethernet_tri_mode/rtl/verilog/TECH/CVS/Entries
2007-04-11 20:59:34 UTC (rev 4952)
@@ -1,4 +1,5 @@
/CLK_DIV2.v/1.3/Thu Jan 19 14:07:56 2006//
/CLK_SWITCH.v/1.3/Thu Jan 19 14:07:56 2006//
/duram.v/1.2/Thu Jan 19 14:07:56 2006//
-D
+D/altera////
+D/xilinx////
Modified:
gnuradio/branches/developers/matt/u2f/opencores/ethernet_tri_mode/sim/CVS/Entries
===================================================================
---
gnuradio/branches/developers/matt/u2f/opencores/ethernet_tri_mode/sim/CVS/Entries
2007-04-11 20:49:42 UTC (rev 4951)
+++
gnuradio/branches/developers/matt/u2f/opencores/ethernet_tri_mode/sim/CVS/Entries
2007-04-11 20:59:34 UTC (rev 4952)
@@ -1 +1 @@
-D
+D/rtl_sim////
Modified:
gnuradio/branches/developers/matt/u2f/opencores/ethernet_tri_mode/sim/rtl_sim/CVS/Entries
===================================================================
---
gnuradio/branches/developers/matt/u2f/opencores/ethernet_tri_mode/sim/rtl_sim/CVS/Entries
2007-04-11 20:49:42 UTC (rev 4951)
+++
gnuradio/branches/developers/matt/u2f/opencores/ethernet_tri_mode/sim/rtl_sim/CVS/Entries
2007-04-11 20:59:34 UTC (rev 4952)
@@ -1 +1 @@
-D
+D/ncsim_sim////
Modified:
gnuradio/branches/developers/matt/u2f/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/CVS/Entries
===================================================================
---
gnuradio/branches/developers/matt/u2f/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/CVS/Entries
2007-04-11 20:49:42 UTC (rev 4951)
+++
gnuradio/branches/developers/matt/u2f/opencores/ethernet_tri_mode/sim/rtl_sim/ncsim_sim/CVS/Entries
2007-04-11 20:59:34 UTC (rev 4952)
@@ -1 +1,6 @@
-D
+D/bin////
+D/data////
+D/log////
+D/out////
+D/run////
+D/script////
Modified: gnuradio/branches/developers/matt/u2f/opencores/i2c/CVS/Entries
===================================================================
--- gnuradio/branches/developers/matt/u2f/opencores/i2c/CVS/Entries
2007-04-11 20:49:42 UTC (rev 4951)
+++ gnuradio/branches/developers/matt/u2f/opencores/i2c/CVS/Entries
2007-04-11 20:59:34 UTC (rev 4952)
@@ -1 +1,8 @@
-D
+D/bench////
+D/doc////
+D/documentation////
+D/rtl////
+D/sim////
+D/software////
+D/verilog////
+D/vhdl////
Modified: gnuradio/branches/developers/matt/u2f/opencores/i2c/bench/CVS/Entries
===================================================================
--- gnuradio/branches/developers/matt/u2f/opencores/i2c/bench/CVS/Entries
2007-04-11 20:49:42 UTC (rev 4951)
+++ gnuradio/branches/developers/matt/u2f/opencores/i2c/bench/CVS/Entries
2007-04-11 20:59:34 UTC (rev 4952)
@@ -1 +1 @@
-D
+D/verilog////
Modified: gnuradio/branches/developers/matt/u2f/opencores/i2c/doc/CVS/Entries
===================================================================
--- gnuradio/branches/developers/matt/u2f/opencores/i2c/doc/CVS/Entries
2007-04-11 20:49:42 UTC (rev 4951)
+++ gnuradio/branches/developers/matt/u2f/opencores/i2c/doc/CVS/Entries
2007-04-11 20:59:34 UTC (rev 4952)
@@ -1,2 +1,2 @@
/i2c_specs.pdf/1.3/Thu Jul 3 15:20:47 2003/-kb/
-D
+D/src////
Modified: gnuradio/branches/developers/matt/u2f/opencores/i2c/rtl/CVS/Entries
===================================================================
--- gnuradio/branches/developers/matt/u2f/opencores/i2c/rtl/CVS/Entries
2007-04-11 20:49:42 UTC (rev 4951)
+++ gnuradio/branches/developers/matt/u2f/opencores/i2c/rtl/CVS/Entries
2007-04-11 20:59:34 UTC (rev 4952)
@@ -1 +1,2 @@
-D
+D/verilog////
+D/vhdl////
Modified: gnuradio/branches/developers/matt/u2f/opencores/i2c/sim/CVS/Entries
===================================================================
--- gnuradio/branches/developers/matt/u2f/opencores/i2c/sim/CVS/Entries
2007-04-11 20:49:42 UTC (rev 4951)
+++ gnuradio/branches/developers/matt/u2f/opencores/i2c/sim/CVS/Entries
2007-04-11 20:59:34 UTC (rev 4952)
@@ -1 +1 @@
-D
+D/i2c_verilog////
Modified:
gnuradio/branches/developers/matt/u2f/opencores/i2c/sim/i2c_verilog/CVS/Entries
===================================================================
---
gnuradio/branches/developers/matt/u2f/opencores/i2c/sim/i2c_verilog/CVS/Entries
2007-04-11 20:49:42 UTC (rev 4951)
+++
gnuradio/branches/developers/matt/u2f/opencores/i2c/sim/i2c_verilog/CVS/Entries
2007-04-11 20:59:34 UTC (rev 4952)
@@ -1 +1 @@
-D
+D/run////
Modified:
gnuradio/branches/developers/matt/u2f/opencores/i2c/sim/i2c_verilog/run/CVS/Entries
===================================================================
---
gnuradio/branches/developers/matt/u2f/opencores/i2c/sim/i2c_verilog/run/CVS/Entries
2007-04-11 20:49:42 UTC (rev 4951)
+++
gnuradio/branches/developers/matt/u2f/opencores/i2c/sim/i2c_verilog/run/CVS/Entries
2007-04-11 20:59:34 UTC (rev 4952)
@@ -2,4 +2,5 @@
/ncverilog.key/1.1/Sat Jun 15 07:37:11 2002//
/ncverilog.log/1.1/Sat Jun 15 07:37:11 2002//
/run/1.2/Fri Apr 6 09:02:38 2007//
-D
+D/INCA_libs////
+D/waves////
Modified:
gnuradio/branches/developers/matt/u2f/opencores/i2c/software/CVS/Entries
===================================================================
--- gnuradio/branches/developers/matt/u2f/opencores/i2c/software/CVS/Entries
2007-04-11 20:49:42 UTC (rev 4951)
+++ gnuradio/branches/developers/matt/u2f/opencores/i2c/software/CVS/Entries
2007-04-11 20:59:34 UTC (rev 4952)
@@ -1 +1,2 @@
-D
+D/drivers////
+D/include////
Modified: gnuradio/branches/developers/matt/u2f/opencores/spi/CVS/Entries
===================================================================
--- gnuradio/branches/developers/matt/u2f/opencores/spi/CVS/Entries
2007-04-11 20:49:42 UTC (rev 4951)
+++ gnuradio/branches/developers/matt/u2f/opencores/spi/CVS/Entries
2007-04-11 20:59:34 UTC (rev 4952)
@@ -1 +1,4 @@
-D
+D/bench////
+D/doc////
+D/rtl////
+D/sim////
Modified: gnuradio/branches/developers/matt/u2f/opencores/spi/bench/CVS/Entries
===================================================================
--- gnuradio/branches/developers/matt/u2f/opencores/spi/bench/CVS/Entries
2007-04-11 20:49:42 UTC (rev 4951)
+++ gnuradio/branches/developers/matt/u2f/opencores/spi/bench/CVS/Entries
2007-04-11 20:59:34 UTC (rev 4952)
@@ -1 +1 @@
-D
+D/verilog////
Modified: gnuradio/branches/developers/matt/u2f/opencores/spi/doc/CVS/Entries
===================================================================
--- gnuradio/branches/developers/matt/u2f/opencores/spi/doc/CVS/Entries
2007-04-11 20:49:42 UTC (rev 4951)
+++ gnuradio/branches/developers/matt/u2f/opencores/spi/doc/CVS/Entries
2007-04-11 20:59:34 UTC (rev 4952)
@@ -1,2 +1,2 @@
/spi.pdf/1.5/Mon Mar 15 17:46:05 2004/-kb/
-D
+D/src////
Modified: gnuradio/branches/developers/matt/u2f/opencores/spi/rtl/CVS/Entries
===================================================================
--- gnuradio/branches/developers/matt/u2f/opencores/spi/rtl/CVS/Entries
2007-04-11 20:49:42 UTC (rev 4951)
+++ gnuradio/branches/developers/matt/u2f/opencores/spi/rtl/CVS/Entries
2007-04-11 20:59:34 UTC (rev 4952)
@@ -1 +1 @@
-D
+D/verilog////
Modified: gnuradio/branches/developers/matt/u2f/opencores/spi/sim/CVS/Entries
===================================================================
--- gnuradio/branches/developers/matt/u2f/opencores/spi/sim/CVS/Entries
2007-04-11 20:49:42 UTC (rev 4951)
+++ gnuradio/branches/developers/matt/u2f/opencores/spi/sim/CVS/Entries
2007-04-11 20:59:34 UTC (rev 4952)
@@ -1 +1,2 @@
-D
+D/rtl_sim////
+D/run////
Modified:
gnuradio/branches/developers/matt/u2f/opencores/spi/sim/rtl_sim/CVS/Entries
===================================================================
--- gnuradio/branches/developers/matt/u2f/opencores/spi/sim/rtl_sim/CVS/Entries
2007-04-11 20:49:42 UTC (rev 4951)
+++ gnuradio/branches/developers/matt/u2f/opencores/spi/sim/rtl_sim/CVS/Entries
2007-04-11 20:59:34 UTC (rev 4952)
@@ -1 +1 @@
-D
+D/run////
Modified: gnuradio/branches/developers/matt/u2f/opencores/spi_boot/CVS/Entries
===================================================================
--- gnuradio/branches/developers/matt/u2f/opencores/spi_boot/CVS/Entries
2007-04-11 20:49:42 UTC (rev 4951)
+++ gnuradio/branches/developers/matt/u2f/opencores/spi_boot/CVS/Entries
2007-04-11 20:59:34 UTC (rev 4952)
@@ -2,4 +2,8 @@
/COPYING/1.1/Tue Feb 8 20:14:49 2005//
/KNOWN_BUGS/1.1/Sun Feb 13 18:28:35 2005//
/README/1.12/Thu Apr 14 21:32:58 2005//
-D
+D/bench////
+D/doc////
+D/rtl////
+D/sim////
+D/sw////
Modified:
gnuradio/branches/developers/matt/u2f/opencores/spi_boot/bench/CVS/Entries
===================================================================
--- gnuradio/branches/developers/matt/u2f/opencores/spi_boot/bench/CVS/Entries
2007-04-11 20:49:42 UTC (rev 4951)
+++ gnuradio/branches/developers/matt/u2f/opencores/spi_boot/bench/CVS/Entries
2007-04-11 20:59:34 UTC (rev 4952)
@@ -1 +1 @@
-D
+D/vhdl////
Modified:
gnuradio/branches/developers/matt/u2f/opencores/spi_boot/doc/CVS/Entries
===================================================================
--- gnuradio/branches/developers/matt/u2f/opencores/spi_boot/doc/CVS/Entries
2007-04-11 20:49:42 UTC (rev 4951)
+++ gnuradio/branches/developers/matt/u2f/opencores/spi_boot/doc/CVS/Entries
2007-04-11 20:59:34 UTC (rev 4952)
@@ -1,3 +1,3 @@
/spi_boot.pdf/1.6/Thu Mar 16 17:09:56 2006/-kb/
/spi_boot_schematic.pdf/1.3/Thu Apr 14 21:20:35 2005/-kb/
-D
+D/src////
Modified:
gnuradio/branches/developers/matt/u2f/opencores/spi_boot/rtl/CVS/Entries
===================================================================
--- gnuradio/branches/developers/matt/u2f/opencores/spi_boot/rtl/CVS/Entries
2007-04-11 20:49:42 UTC (rev 4951)
+++ gnuradio/branches/developers/matt/u2f/opencores/spi_boot/rtl/CVS/Entries
2007-04-11 20:59:34 UTC (rev 4952)
@@ -1 +1 @@
-D
+D/vhdl////
Modified:
gnuradio/branches/developers/matt/u2f/opencores/spi_boot/rtl/vhdl/CVS/Entries
===================================================================
---
gnuradio/branches/developers/matt/u2f/opencores/spi_boot/rtl/vhdl/CVS/Entries
2007-04-11 20:49:42 UTC (rev 4951)
+++
gnuradio/branches/developers/matt/u2f/opencores/spi_boot/rtl/vhdl/CVS/Entries
2007-04-11 20:59:34 UTC (rev 4952)
@@ -12,4 +12,4 @@
/spi_boot_pack-p.vhd/1.1/Tue Feb 8 20:41:33 2005//
/spi_counter-c.vhd/1.1/Tue Feb 8 20:41:33 2005//
/spi_counter.vhd/1.2/Sun Feb 25 18:24:12 2007//
-D
+D/sample////
Modified:
gnuradio/branches/developers/matt/u2f/opencores/spi_boot/sim/CVS/Entries
===================================================================
--- gnuradio/branches/developers/matt/u2f/opencores/spi_boot/sim/CVS/Entries
2007-04-11 20:49:42 UTC (rev 4951)
+++ gnuradio/branches/developers/matt/u2f/opencores/spi_boot/sim/CVS/Entries
2007-04-11 20:59:34 UTC (rev 4952)
@@ -1 +1 @@
-D
+D/rtl_sim////
Modified:
gnuradio/branches/developers/matt/u2f/opencores/spi_boot/sw/CVS/Entries
===================================================================
--- gnuradio/branches/developers/matt/u2f/opencores/spi_boot/sw/CVS/Entries
2007-04-11 20:49:42 UTC (rev 4951)
+++ gnuradio/branches/developers/matt/u2f/opencores/spi_boot/sw/CVS/Entries
2007-04-11 20:59:34 UTC (rev 4952)
@@ -1 +1 @@
-D
+D/misc////
Modified: gnuradio/branches/developers/matt/u2f/opencores/wb_conbus/CVS/Entries
===================================================================
--- gnuradio/branches/developers/matt/u2f/opencores/wb_conbus/CVS/Entries
2007-04-11 20:49:42 UTC (rev 4951)
+++ gnuradio/branches/developers/matt/u2f/opencores/wb_conbus/CVS/Entries
2007-04-11 20:59:34 UTC (rev 4952)
@@ -1 +1,2 @@
-D
+D/bench////
+D/rtl////
Modified:
gnuradio/branches/developers/matt/u2f/opencores/wb_conbus/bench/CVS/Entries
===================================================================
--- gnuradio/branches/developers/matt/u2f/opencores/wb_conbus/bench/CVS/Entries
2007-04-11 20:49:42 UTC (rev 4951)
+++ gnuradio/branches/developers/matt/u2f/opencores/wb_conbus/bench/CVS/Entries
2007-04-11 20:59:34 UTC (rev 4952)
@@ -1 +1 @@
-D
+D/verilog////
Modified:
gnuradio/branches/developers/matt/u2f/opencores/wb_conbus/rtl/CVS/Entries
===================================================================
--- gnuradio/branches/developers/matt/u2f/opencores/wb_conbus/rtl/CVS/Entries
2007-04-11 20:49:42 UTC (rev 4951)
+++ gnuradio/branches/developers/matt/u2f/opencores/wb_conbus/rtl/CVS/Entries
2007-04-11 20:59:34 UTC (rev 4952)
@@ -1 +1 @@
-D
+D/verilog////
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Commit-gnuradio] r4952 - in gnuradio/branches/developers/matt/u2f/opencores: . aemb aemb/CVS aemb/rtl aemb/rtl/CVS aemb/rtl/verilog aemb/rtl/verilog/CVS aemb/sim aemb/sim/CVS aemb/sw aemb/sw/CVS aemb/sw/c aemb/sw/c/CVS ethernet_tri_mode/CVS ethernet_tri_mode/bench/CVS ethernet_tri_mode/rtl/CVS ethernet_tri_mode/rtl/verilog/CVS ethernet_tri_mode/rtl/verilog/TECH/CVS ethernet_tri_mode/sim/CVS ethernet_tri_mode/sim/rtl_sim/CVS ethernet_tri_mode/sim/rtl_sim/ncsim_sim/CVS i2c/CVS i2c/bench/CVS i2c/doc/CVS i2c/rtl/CVS i2c/sim/CVS i2c/sim/i2c_verilog/CVS i2c/sim/i2c_verilog/run/CVS i2c/software/CVS spi/CVS spi/bench/CVS spi/doc/CVS spi/rtl/CVS spi/sim/CVS spi/sim/rtl_sim/CVS spi_boot/CVS spi_boot/bench/CVS spi_boot/doc/CVS spi_boot/rtl/CVS spi_boot/rtl/vhdl/CVS spi_boot/sim/CVS spi_boot/sw/CVS wb_conbus/CVS wb_conbus/bench/CVS wb_conbus/rtl/CVS,
matt <=