Annotation of gforth/arch/misc/misc-sim.v, revision 1.1
1.1 ! pazsan 1: // misc simulator environment
! 2:
! 3: `define L [0:l-1]
! 4:
! 5: module main;
! 6: parameter l=16, d=10;
! 7: reg clock;
! 8: wire `L addr, data;
! 9: wire csel, rw, read, write;
! 10:
! 11: reg `L mem[0:(1<<l)-1];
! 12: reg [0:7] keys[0:15];
! 13: integer inputq, fileno, start;
! 14:
! 15: initial
! 16: begin
! 17: clock = 0;
! 18: for(start='h0000; start < 'h8000; start=start+1)
! 19: mem[start] = 0;
! 20: $readmemh("kernl-misc.hex", mem);
! 21: // fileno=$fopen("misc.out");
! 22: mem['hffff] = 1;
! 23: mem['hfffe] = 32;
! 24: keys[0]=99;
! 25: keys[1]=114;
! 26: keys[2]=32;
! 27: keys[3]=49;
! 28: keys[4]=32;
! 29: keys[5]=50;
! 30: keys[6]=32;
! 31: keys[7]=43;
! 32: keys[8]=32;
! 33: keys[9]=46;
! 34: keys[10]=13;
! 35: keys[11]=32;
! 36: inputq=0;
! 37: #d clock = 0;
! 38: #d clock = 0;
! 39: forever
! 40: begin
! 41: #d clock = ~clock;
! 42: end
! 43: end
! 44:
! 45: assign #d
! 46: write = csel & ~rw,
! 47: read = csel & rw;
! 48:
! 49: always @(posedge write)
! 50: #d if(addr == 'hfffc) $write("%c", data);
! 51: else
! 52: mem[addr] = data;
! 53:
! 54: assign
! 55: data = (read & ~write) ? mem[addr] : {l{1'bz}};
! 56:
! 57: always @(addr or read or write)
! 58: if(read & ~write & (addr == 'hfffe))
! 59: begin
! 60: #(d*4)
! 61: mem['hfffe] = { 8'b0, keys[inputq] };
! 62: inputq = inputq + 1;
! 63: if(inputq > 11) $finish;
! 64: end
! 65:
! 66: misc #(l,d)
! 67: misc0(clock, data, addr, csel, rw);
! 68:
! 69: endmodule /* main */
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>