SHARE
TWEET

Untitled

a guest Oct 21st, 2019 96 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. `timescale 1ns/100ps
  2.  
  3.  
  4. module tb;
  5.  
  6.     reg clk;
  7.     reg f1,f2;
  8.     reg reset;
  9.  
  10.     int cnt=0;
  11.  
  12.  
  13.  
  14.     wire [15:0] addr;
  15.     trireg [ 7:0] data;
  16.  
  17.     wire sync,dbin,wr_n;
  18.  
  19.  
  20.  
  21.  
  22.     initial
  23.     begin
  24.         clk = 1'b1;
  25.  
  26.         forever
  27.         begin
  28.             #(0.5);
  29.             clk = ~clk;
  30.         end
  31.     end
  32.  
  33.  
  34.  
  35.     always @(posedge clk)
  36.     begin
  37.         cnt++;
  38.         if(cnt>=100) cnt=0;
  39.  
  40.         if( cnt==0 )
  41.             f1 <= 1'b1;
  42.         else
  43.             f1 <= 1'b0;
  44.  
  45.         if( cnt==50 )
  46.             f2 <= 1'b1;
  47.         else
  48.             f2 <= 1'b0;
  49.     end
  50.    
  51.  
  52.     initial
  53.     begin
  54.         reset = 1'b1;
  55.  
  56.         repeat(10) @(posedge f2);
  57.  
  58.         reset <= 1'b0;
  59.     end
  60.  
  61.  
  62.  
  63.  
  64.  
  65.     vm80a vm80a
  66.     (
  67.         .pin_clk  (clk),
  68.         .pin_f1   (f1),
  69.         .pin_f2   (f2),
  70.         .pin_reset(reset),
  71.         .pin_a    (addr),
  72.         .pin_d    (data),
  73.         .pin_hold (1'b0),
  74.         .pin_hlda (),
  75.         .pin_ready(1'b1),
  76.         .pin_wait (),
  77.         .pin_int  (1'b0),
  78.         .pin_inte (),
  79.         .pin_sync (sync),
  80.         .pin_dbin (dbin),
  81.         .pin_wr_n (wr_n)
  82.     );
  83.  
  84.  
  85.  
  86.  
  87.  
  88.  
  89.  
  90.  
  91.  
  92.     // simple ROM
  93.     reg [7:0] rom [0:15] =
  94.     '{
  95.         8'h31, //
  96.         8'h10, //
  97.         8'h80, // ld   sp,#8010
  98.  
  99.         8'h3e, //
  100.         8'h00, // ld   a,#00
  101.  
  102.         8'h06, //
  103.         8'h01, // ld   b,#01
  104.  
  105.         8'h90, // sub  b
  106.  
  107.         8'hf5, // push af
  108.  
  109.         8'h3e, //
  110.         8'h01, // ld   a,#01
  111.  
  112.         8'h06, //
  113.         8'h00, // ld   b,#00
  114.  
  115.         8'h90, // sub  b
  116.  
  117.         8'hf5, // push af
  118.  
  119.         8'h76  // halt
  120.     };
  121.  
  122.     assign data = (dbin && addr<16) ? rom[addr] : 8'hZZ;
  123.  
  124.  
  125.     // simple RAM
  126.     reg [7:0] ram [0:15];
  127.  
  128.     assign data = (dbin && addr>=32768) ? ram[addr[3:0]] : 8'hZZ;
  129.  
  130.     always @(posedge wr_n)
  131.     if( addr>=32768 )
  132.         ram[addr[3:0]] = data;
  133.  
  134.  
  135. endmodule
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
Top