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

Subversion Repositories zet86

[/] [zet86/] [tags/] [INITIAL/] [rtl-model/] [exec.v] - Blame information for rev 49

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 zeus
`timescale 1ns/10ps
2
 
3
`include "defines.v"
4
 
5
module exec(ir, off, imm, cs, ip, of, zf, cx_zero, clk, rst,
6
            memout, wr_data, addr, we, m_io, wr_cnd, byteop, mem_rdy);
7
  // IO Ports
8
  input [`IR_SIZE-1:0] ir;
9
  input [15:0] off, imm;
10
  input        clk;
11
  input        rst;
12
  input [15:0] memout;
13
  input        mem_rdy;
14
 
15
  output [15:0] wr_data, ip;
16
  output        of;
17
  output        zf;
18
  output        cx_zero;
19
  output        we, m_io, byteop;
20
  output [19:0] addr;
21
  output [15:0] cs;
22
 
23
  // Net declarations
24
  wire [15:0] a, b, c, s, alu_iflags, omemalu, bus_b;
25
  wire [31:0] aluout;
26
  wire [3:0]  addr_a, addr_b, addr_c, addr_d;
27
  wire [2:0]  t, func;
28
  wire [1:0]  addr_s;
29
  wire        wrfl, high, wr_mem, memalu, a_byte, c_byte;
30
  wire        wr, wr_reg, block;
31
  /* wire */ output       wr_cnd;
32
//  wire        jmp;
33
  wire        mem_op, b_imm;
34
  wire  [8:0] flags, iflags, oflags;
35
//  wire  [4:0] logic_flags;
36
 
37
  // Module instances
38
  alu     alu0( /*{c,*/ a /*}*/, bus_b, aluout, t, func, alu_iflags, oflags,
39
               ~byteop, s, off);
40
  regfile reg0( a, b, c, cs, ip, {aluout[31:16], omemalu}, s, flags, wr_reg, wrfl,
41
                high, clk, rst, addr_a, addr_b, addr_c, addr_d, addr_s, iflags,
42
                ~byteop, a_byte, c_byte, cx_zero);
43
//  jmp_cond jc0( logic_flags, addr_b, addr_c[0], c, jmp);  
44
 
45
  // Assignments
46
  assign addr_s = ir[1:0];
47
  assign addr_a = ir[5:2];
48
  assign addr_b = ir[9:6];
49
  assign addr_c = ir[13:10];
50
  assign addr_d = ir[17:14];
51
  assign wrfl   = ir[18];
52
  assign wr_mem = ir[19];
53
  assign wr     = ir[20];
54
  assign wr_cnd = ir[21];
55
  assign high   = ir[22];
56
  assign t      = ir[25:23];
57
  assign func   = ir[28:26];
58
  assign byteop = ir[29];
59
  assign memalu = ir[30];
60
  assign mem_op = ir[31];
61
  assign m_io   = ir[32];
62
  assign b_imm  = ir[33];
63
  assign a_byte = ir[34];
64
  assign c_byte = ir[35];
65
 
66
  assign omemalu = memalu ? aluout[15:0] : memout;
67
  assign bus_b   = b_imm ? imm : b;
68
 
69
  assign we = ~wr_mem;
70
  assign addr = aluout[19:0];
71
  assign wr_data = c;
72
  assign wr_reg = (wr /* | (jmp & wr_cnd) */) && !block;
73
  assign of = flags[8];
74
  assign zf = flags[3];
75
  assign block = mem_op && !mem_rdy;
76
 
77
  assign iflags = oflags;
78
  assign alu_iflags = { 4'b0, flags[8:3], 1'b0, flags[2], 1'b0, flags[1],
79
                        1'b1, flags[0] };
80
//  assign logic_flags = { flags[8], flags[4], flags[3], flags[1], flags[0] };
81
endmodule

powered by: WebSVN 2.1.0

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