Sophie

Sophie

distrib > Fedora > 13 > i386 > by-pkgid > 03bbc623e83a65c14dc0cc7e4f559728 > files > 18

perl-Perlilog-0.3-4.fc13.noarch.rpm

port wbport wbs clk_i:wb_clk_i, rst_i:wb_rst_i, cyc_i:wb_cyc_i,
                stb_i:wb_stb_i, we_i:wb_we_i, ack_o:wb_ack_o,
                adr_i:wb_adr_i, dat_i:wb_dat_i, dat_o:wb_dat_o;

module rom(wb_clk_i, wb_rst_i, rst_i, wb_adr_i, wb_dat_i, wb_dat_o, 
	   wb_we_i, wb_stb_i, wb_cyc_i, wb_ack_o);

   input        wb_clk_i, wb_rst_i, wb_we_i, wb_stb_i, wb_cyc_i;
   input [:] 	wb_adr_i;     // lower address bits
   input [:] 	wb_dat_i;   
   output [:] wb_dat_o;  
   reg [:] 	wb_dat_o;

   output 	wb_ack_o;

   assign wb_ack_o = wb_cyc_i && wb_stb_i; // Always single clock cycles
   
   always @(wb_adr_i)
      case (wb_adr_i)
CASES
	default: wb_dat_o = 0;
      endcase
endmodule

perl
  $c = 0;
  $cases = "";

  foreach ($self->get('romdata')) {
    $val = $_ + 0;
    $cases.="        $c: wb_dat_o = $val;\n";
    $c++;
  }
  chomp $cases;
  $code = $self->get('verilog');
  $code =~ s/CASES/$cases/;
  $self->set('verilog', $code);
endperl