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>