Subversion Repositories zxusbnet

Rev

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

  1. // DO NOT INSERT INTO ZXBUS!!!
  2. //
  3. // ZXiznet project TEST (see README)
  4. // (c) NedoPC 2018
  5. //
  6. // DO NOT INSERT INTO ZXBUS!!!
  7. //
  8. // top-level module
  9. //
  10. // DO NOT INSERT INTO ZXBUS!!!
  11.  
  12. module top
  13. (
  14.         input  wire        fclk, // 48MHz clock
  15.        
  16.         output reg         usb_clk, // 12MHz clock for USB chip (sl811)
  17.        
  18.         output wire [14:0] za,
  19.         input wire zb,
  20.         output wire [ 7:0] zd,
  21.        
  22.         output wire [ 7:0] bd,
  23.  
  24.         output wire        ziorq_n,
  25.         output wire        zrd_n,
  26.         input  wire        zwr_n,
  27.         output wire        zmreq_n,
  28.         output wire        ziorqge,
  29.         output wire        zblkrom,
  30.         output wire        zcsrom_n,
  31.         input  wire        zrst_n,
  32.         output wire        zint_n,
  33.  
  34.         // buffered RD_N and WR_N for chips
  35.         output wire        brd_n,
  36.         output wire        bwr_n,
  37.  
  38.         output wire         w5300_rst_n,
  39.         output wire  [ 9:0] w5300_addr,
  40.         output wire         w5300_cs_n,
  41.         input  wire        w5300_int_n,
  42.  
  43.  
  44.         // sl811 Usb chip
  45.         output wire         sl811_rst_n,
  46.         input  wire        sl811_intrq,
  47.         output wire         sl811_ms_n,
  48.         output wire         sl811_cs_n,
  49.         output wire         sl811_a0,
  50.  
  51.         // usb power presence
  52.         input  wire        usb_power
  53. );
  54.  
  55.  
  56.         reg usb_ckreg;
  57.  
  58.  
  59.         // USB chip clock
  60.         initial // for simulation
  61.         begin
  62.                 usb_ckreg = 1'b0;
  63.                 usb_clk   = 1'b0;
  64.         end
  65.         //
  66.         always @(posedge fclk)
  67.         begin
  68.                 usb_ckreg <=  usb_clk;
  69.                 usb_clk   <= ~usb_ckreg;
  70.         end
  71.  
  72.  
  73.  
  74.         // resets
  75.         assign w5300_rst_n = 1'b0;
  76.         assign sl811_rst_n = 1'b0;
  77.  
  78.         // usb selector
  79.         assign sl811_ms_n = ~usb_power;
  80.  
  81.  
  82.  
  83.         assign w5300_cs_n = 1'b1;
  84.         assign sl811_cs_n = 1'b1;
  85.  
  86.  
  87.  
  88.         reg [53:0] shreg;
  89.  
  90.         always @(posedge fclk)
  91.         begin
  92.                 shreg[53:1] <= shreg[52:0];
  93.  
  94.                 shreg[0] <= ~(shreg[53] ^ shreg[52] ^ shreg[17] ^ shreg[16]);
  95.         end
  96.  
  97.  
  98.         assign za = shreg[14:0];
  99.         assign zd         = shreg[23:16];
  100.         assign bd         = shreg[31:24];
  101.         assign w5300_addr = shreg[41:32];
  102.  
  103.  
  104.         assign ziorq_n  = shreg[42];
  105.         assign zrd_n    = shreg[43];
  106.         assign zmreq_n  = shreg[45];
  107.         assign ziorqge  = shreg[46];
  108.         assign zblkrom  = shreg[47];
  109.         assign zcsrom_n = shreg[48];
  110.         assign zint_n   = shreg[50];
  111.         assign brd_n    = shreg[51];
  112.         assign bwr_n    = shreg[52];
  113.         assign sl811_a0 = shreg[53];
  114.  
  115.  
  116.  
  117. endmodule
  118.  
  119.