Subversion Repositories zxusbnet

Rev

Rev 66 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed | ?url?

  1. // ZXiznet project
  2. // (c) NedoPC 2012
  3. //
  4. // top-level module
  5.  
  6. module top
  7. (
  8.         // zxbus
  9.         input  wire [15:0] za,
  10.         inout  wire [ 7:0] zd,
  11.        
  12.         // buffered data bus for chips
  13.         inout  wire [ 7:0] bd,
  14.  
  15.         // zxbus control signals
  16.         input  wire        ziorq_n,
  17.         input  wire        zrd_n,
  18.         input  wire        zwr_n,
  19.         input  wire        zmreq_n,
  20.         output wire        ziorqge,
  21.         output wire        zblkrom,
  22.         input  wire        zcsrom_n,
  23.         input  wire        zrst_n,
  24.         output wire        zint_n,
  25.  
  26.         // buffered RD_N and WR_N for chips
  27.         output wire        brd_n,
  28.         output wire        bwr_n,
  29.  
  30.  
  31.         // w5300 Ethernet chip
  32.         output wire        w5300_rst_n,
  33.         output wire [ 9:0] w5300_addr,
  34.         output wire        w5300_cs_n,
  35.         input  wire        w5300_int_n,
  36.  
  37.  
  38.         // sl811 Usb chip
  39.         //output wire        sl811_rst_n,
  40.         input  wire        sl811_intrq,
  41.         output wire        sl811_ms_n,
  42.         output wire        sl811_cs_n,
  43.         output wire        sl811_a0,
  44.  
  45.         // usb power presence
  46.         input  wire        usb_power
  47.  
  48.         // = total 56 pins (maximum is 66)
  49.         //   among them 27 outputs (maximum is 64)
  50. );
  51.  
  52.  
  53.         wire ena_w5300_int;
  54.         wire ena_sl811_int;
  55.         wire ena_zxbus_int;
  56.         wire internal_int;
  57.  
  58.         wire [7:0] ports_wrdata;
  59.         wire [7:0] ports_rddata;
  60.         wire [1:0] ports_addr;
  61.         wire       ports_wrena;
  62.         wire       ports_wrstb_n;
  63.  
  64.         wire [1:0] rommap_win;
  65.         wire       rommap_ena;
  66.  
  67.         wire       w5300_a0inv;
  68.         wire       w5300_ports;
  69.         wire [2:0] w5300_hi;
  70.  
  71.  
  72.         // zx-bus
  73.         zbus zbus
  74.         (
  75.                 .za(za),
  76.                 .zd(zd),
  77.                 //
  78.                 .bd(bd),
  79.                 //
  80.                 .ziorq_n (ziorq_n ),
  81.                 .zrd_n   (zrd_n   ),
  82.                 .zwr_n   (zwr_n   ),
  83.                 .zmreq_n (zmreq_n ),
  84.                 .ziorqge (ziorqge ),
  85.                 .zblkrom (zblkrom ),
  86.                 .zcsrom_n(zcsrom_n),
  87.                 .zrst_n  (zrst_n  ),
  88.                 //
  89.                 .ports_wrena  (ports_wrena  ),
  90.                 .ports_wrstb_n(ports_wrstb_n),
  91.                 .ports_addr   (ports_addr   ),
  92.                 .ports_wrdata (ports_wrdata ),
  93.                 .ports_rddata (ports_rddata ),
  94.                 //
  95.                 .rommap_win(rommap_win),
  96.                 .rommap_ena(rommap_ena),
  97.                 //
  98.                 .sl811_cs_n(sl811_cs_n),
  99.                 .sl811_a0  (sl811_a0  ),
  100.                 //
  101.                 .w5300_cs_n (w5300_cs_n ),
  102.                 .w5300_ports(w5300_ports)
  103.         );
  104.  
  105.  
  106.         // map Z80 space to wiznet space
  107.         wizmap wizmap
  108.         (
  109.                 .za(za),
  110.  
  111.                 .w5300_a0inv(w5300_a0inv),
  112.                 .w5300_addr (w5300_addr ),
  113.                 .w5300_ports(w5300_ports),
  114.                 .w5300_hi   (w5300_hi   )
  115.         );
  116.  
  117.  
  118.         // ports
  119.         ports ports
  120.         (
  121.                 .rst_n(zrst_n),
  122.                 //
  123.                 .wrstb_n(ports_wrstb_n),
  124.                 .wrena  (ports_wrena  ),
  125.                 .addr   (ports_addr   ),
  126.                 .wrdata (ports_wrdata ),
  127.                 .rddata (ports_rddata ),
  128.                 //
  129.                 .ena_w5300_int(ena_w5300_int),
  130.                 .ena_sl811_int(ena_sl811_int),
  131.                 .ena_zxbus_int(ena_zxbus_int),
  132.                 //
  133.                 .w5300_int_n(w5300_int_n),
  134.                 .sl811_intrq(sl811_intrq),
  135.                 //
  136.                 .internal_int(internal_int),
  137.                 //
  138.                 .rommap_win(rommap_win),
  139.                 .rommap_ena(rommap_ena),
  140.                 //
  141.                 .w5300_a0inv(w5300_a0inv),
  142.                 .w5300_rst_n(w5300_rst_n),
  143.                 .w5300_ports(w5300_ports),
  144.                 .w5300_hi   (w5300_hi   ),
  145.                 //
  146.                 .sl811_ms_n (sl811_ms_n ),
  147.                 //.sl811_rst_n(sl811_rst_n),
  148.                 //
  149.                 .usb_power(usb_power)
  150.         );
  151.  
  152.  
  153.         // buffered RD_N and WR_N
  154.         assign brd_n = zrd_n;
  155.         assign bwr_n = zwr_n;
  156.  
  157.  
  158.  
  159.  
  160.         // interrupt generation
  161.         assign internal_int = (ena_w5300_int & (~w5300_int_n)) |
  162.                               (ena_sl811_int &   sl811_intrq ) ;
  163.         //
  164.         assign zint_n = (internal_int & ena_zxbus_int) ? 1'b0 : 1'bZ;
  165.  
  166.  
  167. endmodule
  168.  
  169.