OpenCores
URL https://opencores.org/ocsvn/core_arm/core_arm/trunk

Subversion Repositories core_arm

[/] [core_arm/] [trunk/] [vhdl/] [peripherals/] [mem/] [config.pl] - Rev 4

Compare with Previous | Blame | View Log

#!/usr/bin/perl
 
%peri_mem_cfg = (
 
# Memory controller config
 
    CONFIG_MCTRL_8BIT => 0,
    CONFIG_MCTRL_16BIT => 0,
    CONFIG_MCTRL_5CS => 0,
    CONFIG_MCTRL_WFB => 0,
    CONFIG_MCTRL_SDRAM => 0,
    CONFIG_MCTRL_SDRAM_INVCLK => 0,
 
    # Boot 
    CFG_BOOT_SOURCE =>  "perimem_memory",
    CONFIG_BOOT_RWS =>  0,
    CONFIG_BOOT_WWS =>  0,
    CONFIG_BOOT_SYSCLK =>  25000000,
    CONFIG_BOOT_BAUDRATE =>  19200,
    CONFIG_BOOT_EXTBAUD =>  0,
    CONFIG_BOOT_PROMABITS =>  11,
 
    # Peripherals 
    CONFIG_PERI_WPROT => 0
 
);
 
%peri_mem_map = 
   (
     # Memory controller 
    CONFIG_MCTRL_8BIT => [CONFIG_MCTRL_8BIT => 1],
    CONFIG_MCTRL_16BIT => [CONFIG_MCTRL_16BIT => 1],
    CONFIG_MCTRL_5CS => [CONFIG_MCTRL_5CS => 1],
    CONFIG_MCTRL_WFB => [CONFIG_MCTRL_WFB => 1],
    CONFIG_MCTRL_SDRAM => [CONFIG_MCTRL_SDRAM => 1],
    CONFIG_MCTRL_SDRAM_INVCLK => [CONFIG_MCTRL_SDRAM_INVCLK => 1],
 
    # Boot 
    CFG_BOOT_SOURCE => [
	CONFIG_BOOT_EXTPROM => "perimem_memory",
	CONFIG_BOOT_INTPROM => "perimem_prom",
	CONFIG_BOOT_MIXPROM => "perimem_dual" 
	],
 
    CONFIG_BOOT_RWS => [CONFIG_BOOT_RWS => sub { my ($v) = @_; $v = hex ($v) & 0x3;  return $v;} ],
    CONFIG_BOOT_WWS => [CONFIG_BOOT_WWS => sub { my ($v) = @_; $v = hex ($v) & 0x3;  return $v;} ],
    CONFIG_BOOT_SYSCLK => [CONFIG_BOOT_SYSCLK => sub { my ($v) = @_; return $v;} ],
    CONFIG_BOOT_BAUDRATE => [CONFIG_BOOT_BAUDRATE => sub { my ($v) = @_; $v = hex ($v) & 0x3fffff;  return $v;} ],
    CONFIG_BOOT_EXTBAUD => [CONFIG_BOOT_EXTBAUD => 1],
    CONFIG_BOOT_PROMABITS => [CONFIG_BOOT_PROMABITS => sub { my ($v) = @_; $v = hex ($v) & 0x3f;  return $v;} ],
 
    # Peripherals 
    CONFIG_PERI_WPROT => [CONFIG_PERI_WPROT => 1]
 
);		     
 
sub peri_mem_config_file {
 
    my ($pericfg) = @_;
    my %pericfg = %{$pericfg};
    my $fn = "vhdl/peripherals/mem/peri_mem_config.vhd";
 
    if (-f $fn) {
	print STDERR ("Making backup of $fn\n");
	`cp $fn $fn.bck`;
    }
 
    foreach $k (keys %pericfg) {
	$v = $pericfg{$k};
	$peri_mem_config_file_data = cfg_replace ($k,$v,$peri_mem_config_file_data);
    }
 
    if (open(FILEH, ">$fn")) {
	print FILEH $peri_mem_config_file_data;
    } else {
	die ("opening \"$fn\": $!\n");
    }
}
 
$peri_mem_config_file_data=<<PERI_MEM_CONFIG_END;
 
library IEEE;
use IEEE.std_logic_1164.all;
use IEEE.std_logic_arith.all;
 
package peri_mem_config is
 
-----------------------------------------------------------------------------
-- Automatically generated by vhdl/peripherals/mem/config.pl from of .config
-----------------------------------------------------------------------------
 
constant CFG_PERIMEM_BUS8EN : boolean := %CONFIG_MCTRL_8BIT%[b]; -- enable 8-bit bus operation
constant CFG_PERIMEM_BUS16EN : boolean := %CONFIG_MCTRL_16BIT%[b]; -- enable 16-bit bus operation
constant CFG_PERIMEM_WENDFB : boolean := %CONFIG_MCTRL_WFB%[b]; -- enable wen feed-back to data bus drivers
constant CFG_PERIMEM_RAMSEL5 : boolean := %CONFIG_MCTRL_5CS%[b]; -- enable 5th ram select
constant CFG_PERIMEM_SDRAMEN : boolean := %CONFIG_MCTRL_SDRAM%[b]; -- enable sdram controller
constant CFG_PERIMEM_SDINVCLK : boolean := %CONFIG_MCTRL_SDRAM_INVCLK%[b]; -- invert sdram clock
 
type cfg_perimem_boottype is (perimem_memory, perimem_prom, perimem_dual);
 
constant CFG_PERIMEM_BOOT :  cfg_perimem_boottype := %CFG_BOOT_SOURCE%; -- select boot source
constant CFG_PERIMEM_BRAMRWS   	: unsigned(3 downto 0) := conv_unsigned(%CONFIG_BOOT_RWS%, 4);	-- ram read waitstates
constant CFG_PERIMEM_BRAMWWS   	: unsigned(3 downto 0) := conv_unsigned(%CONFIG_BOOT_WWS%, 4);	-- ram write waitstates
constant CFG_PERIMEM_SYSCLK   	: integer := %CONFIG_BOOT_SYSCLK%;	-- cpu clock
constant CFG_PERIMEM_BAUD     	: positive := %CONFIG_BOOT_BAUDRATE%;	-- UART baud rate
constant CFG_PERIMEM_EXTBAUD  	: boolean := %CONFIG_BOOT_EXTBAUD%[b];	-- use external baud rate setting
constant CFG_PERIMEM_PABITS   	: positive := %CONFIG_BOOT_PROMABITS%;	-- internal boot-prom address bits
 
constant CFG_PERIMEM_WPROTEN   	: boolean := %CONFIG_PERI_WPROT%[b]; -- enable RAM write-protection unit
 
-----------------------------------------------------------------------------
-- end of automatic configuration
-----------------------------------------------------------------------------
 
end peri_mem_config;
 
PERI_MEM_CONFIG_END
 
1;
 
 
 
 
 
 
 
 
 
 
 
 
 

Compare with Previous | Blame | View Log

powered by: WebSVN 2.1.0

© copyright 1999-2025 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.