Make words 16 bits wide
[yule.git] / eval.v
diff --git a/eval.v b/eval.v
index 2509113e3e76db06122c3a9d6dfc3adfa1844023..8aa21590ca0ea88af0f0667a3b4db5b14f1dcddc 100644 (file)
--- a/eval.v
+++ b/eval.v
@@ -1,8 +1,8 @@
-module EVAL(input clk, input mclk, input [7:0] Ein, output [7:0] Eout, output [3:0] gcop, output [5:0] ostate, input conn_ea, input conn_et);
+module EVAL(input clk, input mclk, input [15:0] Ein, output [15:0] Eout, output [3:0] gcop, output [5:0] ostate, input conn_ea, input conn_et);
    reg [21:0] rom_output;
    reg [5:0]  eostate = 6'o0;
    reg [5:0]  enstate;
-   reg [7:0]  Ein_latched;
+   reg [15:0]  Ein_latched;
 
    always @(posedge clk) begin
          Ein_latched <= Ein;
@@ -26,6 +26,9 @@ module EVAL(input clk, input mclk, input [7:0] Ein, output [7:0] Eout, output [3
    wire [3:0] gcop = rom_output[6:3];
    wire [2:0] lit = rom_output[2:0];
 
+   wire          et_zero = ~|E[15:13];
+   wire          ea_zero = ~|E[12:0];
+
    always @* begin
          case(eostate)
                6'o00:   begin rom_output <= 22'o14004002; enstate <= 6'o01; end
@@ -92,33 +95,33 @@ module EVAL(input clk, input mclk, input [7:0] Ein, output [7:0] Eout, output [3
 
    always @ (posedge clk) begin
          eostate <=
-                               et_disp ? (enstate | E[7:5]) :
+                               et_disp ? (enstate | E[15:13]) :
                                eaz_etz_eqv_disp ? (enstate | {ea_zero, et_zero, 1'b0}) :
                                enstate;
    end
 
    assign ostate = eostate;
 
-   reg [7:0] V;
-   reg [7:0] X;
-   reg [7:0] N;
-   reg [7:0] L;
-   reg [7:0] C;
+   reg [15:0] V;
+   reg [15:0] X;
+   reg [15:0] N;
+   reg [15:0] L;
+   reg [15:0] C;
 
-   wire [7:0] E;
+   wire [15:0] E;
 
-   wire [7:0] EfromV = rdV ? V : 0;
-   wire [7:0] EfromX = rdX ? X : 0;
-   wire [7:0] EfromXp = rdXp ? {X[7:5], X[4:0] + 1} : 0;
-   wire [7:0] EfromN = rdN ? N : 0;
-   wire [7:0] EfromL = rdL ? L : 0;
-   wire [7:0] EfromC = rdC ? C : 0;
-   wire [4:0] EAfromEin = conn_ea ? Ein[4:0] : 0;
-   wire [3:0] ETfromEin = conn_et ? Ein[7:5] : 0;
-   wire [7:0] EfromEin  = {ETfromEin, EAfromEin};
-   wire [4:0] EAfromLIT = ea_lit ? {1'b0, lit, 1'b0} : 0;
-   wire [3:0] ETfromLIT = et_lit ? lit : 0;
-   wire [7:0] EfromLIT = {ETfromLIT, EAfromLIT};
+   wire [15:0] EfromV = rdV ? V : 0;
+   wire [15:0] EfromX = rdX ? X : 0;
+   wire [15:0] EfromXp = rdXp ? {X[15:13], X[12:0] + 1} : 0;
+   wire [15:0] EfromN = rdN ? N : 0;
+   wire [15:0] EfromL = rdL ? L : 0;
+   wire [15:0] EfromC = rdC ? C : 0;
+   wire [12:0] EAfromEin = conn_ea ? Ein[12:0] : 0;
+   wire [2:0]  ETfromEin = conn_et ? Ein[15:13] : 0;
+   wire [15:0] EfromEin  = {ETfromEin, EAfromEin};
+   wire [12:0] EAfromLIT = ea_lit ? {8'b0, lit, 1'b0} : 0;
+   wire [2:0]  ETfromLIT = et_lit ? lit : 0;
+   wire [15:0] EfromLIT = {ETfromLIT, EAfromLIT};
 
    assign E = EfromV | EfromX | EfromXp | EfromN | EfromL | EfromC | EfromLIT | EfromEin;
    assign Eout = EfromV | EfromX | EfromXp | EfromN | EfromL | EfromC | EfromLIT;
This page took 0.011387 seconds and 4 git commands to generate.