亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? generate_ddr_sim_model.pl

?? 基于NIOS II的ddr2控制器,配有詳細(xì)的文檔,經(jīng)驗(yàn)證后可使用.
?? PL
?? 第 1 頁(yè) / 共 5 頁(yè)
字號(hào):
#Copyright (C)1991-2002 Altera Corporation
#Any megafunction design, and related net list (encrypted or decrypted),
#support information, device programming or simulation file, and any other
#associated documentation or information provided by Altera or a partner
#under Altera's Megafunction Partnership Program may be used only to
#program PLD devices (but not masked PLD devices) from Altera.  Any other
#use of such megafunction design, net list, support information, device
#programming or simulation file, or any other related documentation or
#information is prohibited for any other purpose, including, but not
#limited to modification, reverse engineering, de-compiling, or use with
#any other silicon devices, unless such use is explicitly licensed under
#a separate agreement with Altera or a megafunction partner.  Title to
#the intellectual property, including patents, copyrights, trademarks,
#trade secrets, or maskworks, embodied in any such megafunction design,
#net list, support information, device programming or simulation file, or
#any other related documentation or information provided by Altera or a
#megafunction partner, remains with Altera, the megafunction partner, or
#their respective licensors.  No other licenses, including any licenses
#needed under any third party's intellectual property, are provided herein.
#Copying or modifying any file, or portion thereof, to which this notice
#is attached violates this copyright.

use europa_all;
use strict;

# This model tries to leverage as many functions and GUI similarities as
# possible from Aaron Ferrucci's sdram_controller.pm.  The actual
# generated code and pin interface is quite different, but all the
# parameters and restrictions of generic SDRAM still apply...

### NB: &one_hot_encoding now in europa_utils.pm!
### NB: str2hex routine now in europa_utils.pm!

sub convert_times
{
    my ($WSA, $time_values) = @_;
    
    my $sys_clk = $WSA->{system_clock_rate};
    
    for my $k (keys %{$time_values})
    {
        $WSA->{$k} .= $time_values->{$k};
        convert_time_unit(\$WSA->{$k}, $sys_clk);
    }
} # &convert_times

# Convert stuff like
# 
# 15.625us
# 100us
# 70ns
# 120us
# 20ns
# 2clocks
# 20ns
# 17ns
# 1clock+7ns
#
# into CLOCKS (rounded up), and return in the input value.
sub convert_time_unit
{
    my ($valRef, $system_clock_rate) = @_;
    
    my $result = $$valRef;
    
    my $system_clock_period = 1 / $system_clock_rate;
    
    $result =~ s/ms/*(1e-3)/g;
    $result =~ s/us/*(1e-6)/g;
    $result =~ s/ns/*(1e-9)/g;
    $result =~ s/clock[s]?/*($system_clock_period)/g;
    
    # create result in seconds:
    $result = eval($result);  
    # convert result from seconds into clocks:
    $result = ceil ($result * $system_clock_rate);

    # print "em_sdram.pm/convert_time_unit:\t$$valRef\t=\t$result clocks\n";

    if ($@)
    {
        ribbit("failed to eval '$$valRef' in convert_time_unit(): '$@'");
    }
    
    $$valRef = $result;
} # & convert_time_unit

sub get_time_values
{
  # This table gives the units that apply to each WSA parameter.
  return (
    refresh_period        => "us",
    powerup_delay         => "us",
    t_rfc                 => "ns",
    t_mrd                 => "clocks",
    t_rp                  => "ns",
    t_rcd                 => "ns",
    t_ac                  => "ns",
    t_wr                  => "ns",
    init_nop_delay        => "us",
  );
} # &get_time_values

# replicate_bit(width, value)
#
# e.g.
# replicate(4, 0) returns "4'b0000'".
sub replicate_bit
{
  # width has to be only decimal digits, and non-zero.
  my $width = shift
      or ribbit("Usage error: no width! ".
                "(expected 'replicate_bit(width, value)')\n");
  $width =~ /^\d+$/ or die "Unexpected width: '$width'\n";
  
  # value must be 0 or 1.
  my $value = shift;
  ribbit("Usage error: bad value '$value'!\n")
    if $value !~ /^[01]$/;

  ribbit("Usage error: too many parameters! ".
         "(expected 'replicate_bit(width, value)')\n") if @_;
  
  $value =~ /^\d+$/ or die "Unexpected value: '$value'\n";
  
  return $width . "'b" . ($value x $width);
} # &replicate_bit





# Main DDR simulation model.
sub make_ddr_sim_model 
{
    # No arguments means "Ignore -- I'm being called from make".
    if (!@_)
    {
        # print "\n\tmake_sdram_controller now uses a static".
        # " external 'class.ptf'!\n\n";
        return 0; # make_class_ptf();
    }
    
    # TEW: Get SDRAM's project, Options, etc:
    my $project = e_project->new(@_);
    my %Options = %{$project->WSA()};
    my $WSA = \%Options;
    
    # Grab the module that was created during handle_args.
    my $module = $project->top();

    # Grab some args to determine how to proceed, like model_base and init_file
    $WSA->{is_blank}=($WSA->{sim_Kind} =~ /^blank/i) ? "1" : "0";
    $WSA->{is_file} =($WSA->{sim_Kind} =~ /^textfile/i) ? "1" : "0";
    
    my $textfile = $WSA->{sim_Textfile_Info};
  
    #turn bar/foo.srec relative path into an absolute one if needed
    my $system_directory = $project->_system_directory();
    $textfile =~ s/^(\w+)(\\|\/)/$system_directory$2$1$2/;
    #turn foo.srec to absolute path
    $textfile =~ s/^(\w+)$/$system_directory\/$1/;
    
    $WSA->{textfile}= $textfile;

    # Figure out where our contents are coming from:
    $WSA->{Initfile} = $project->_target_module_name() . "_contents.srec";
    
    my $do_generation = $project->system_ptf()->{WIZARD_SCRIPT_ARGUMENTS}{do_build_sim};
    
    # Only generate model if "Simulation. Create simulator..." is ticked.
    if ($do_generation == 1) {
        print "# Creating memory simulation model for use with ".$project->_target_module_name()."\n";
        
        # We only accept .mif- and .srec-files (or just blankness)
        &ribbit ("Memory-initialization files must be either .mif or .srec.\n",
                 " not '$WSA->{Initfile}'\n")
            unless $WSA->{Initfile} =~ /\.(srec|mif)$/i;
        
    
        
        
        # Figure out what language we're generating for
        my $lang = $project->system_ptf()->{WIZARD_SCRIPT_ARGUMENTS}{hdl_language};
        my $extension;
        my $sim_file = $project->get_top_module_name();
        my $sim_dat  = $project->_target_module_name() . ".dat";
        if ($lang =~ /vhd/i    ) { 
            $sim_file .= ".vhd";
            $extension = ".vhd";
        }
        if ($lang =~ /verilog/i) { 
            $sim_file .= ".v";
            $extension = ".v";
        }
        my @write_lines;
    
    
    
        # Add datapath and other files to simulation list        
        my $sopc_device_family = lc($project->system_ptf()->{WIZARD_SCRIPT_ARGUMENTS}{device_family_id});
        my $device_family = lc($WSA->{MEGACORE}{NETLIST_SECTION}{STATIC_SECTION}{PRIVATES}{NAMESPACE}{parameterization}{PRIVATE}{family}{value});
        
        #if ($sopc_device_family ne $device_family) { print "WARNING! The device selected in SOPC Builder (".$sopc_device_family.") does match the DDR SDRAM device (".$device_family.")\n";}
    
        #print "SOPC Builder device family is ".$sopc_device_family."\n";
        #print "DDR Megacore device family is ".$device_family."\n";
            
        
        my $wrapper_name = $project->_target_module_name();
        my $quartus_directory = $project->get_quartus_rootdir();
    
        #print "Quartus came from ".$quartus_directory." and device family is $device_family\n";
        #print "Wrapper file name is ".$wrapper_name.$extension."\n";
        
        
        
        #print "\nOriginal files list = ".$project->module_ptf()->{HDL_INFO}{Simulation_HDL_Files}."\n";
        
        my $magic_proj_dir = "__PROJECT_DIRECTORY__/";
        my $datapath_files = "";
    
       # SOPC Builder treats Stratix II & Stratix II GX as different families but we don't...
       if ($sopc_device_family eq "stratixiigx") {
           $sopc_device_family = "stratixii";   
       }
       # SOPC Builder now treats Stratix & Stratix GX as different families (it didn't used to!) but we don't...
       if ($sopc_device_family eq "stratixgx") {
           $sopc_device_family = "stratix";   
       }
        
       # Simulation libraries required 
       $project->module_ptf()->{HDL_INFO}{Simulation_Library_Names} = "auk_ddr_user_lib,";
       #$project->module_ptf()->{HDL_INFO}{Simulation_Library_Names} .= "UNUSED";
       $project->module_ptf()->{HDL_INFO}{Simulation_Library_Names} .= "$sopc_device_family";
    
       if ($sopc_device_family eq "cycloneii") 
       { 
           $datapath_files .= $quartus_directory."/eda/sim_lib/cycloneii_atoms".$extension.",";  
           if ($lang =~ /vhd/i) {$datapath_files .= $quartus_directory."/eda/sim_lib/cycloneii_components.vhd,"; } 
       }
       if ($sopc_device_family eq "cyclone") 
       { 
           $datapath_files .= $quartus_directory."/eda/sim_lib/cyclone_atoms".$extension.",";  
           if ($lang =~ /vhd/i) {$datapath_files .= $quartus_directory."/eda/sim_lib/cyclone_components.vhd,"; } 
       }
       # SOPC Builder treats StratixII & StratixII GX as different so we have made the names the same for now  
       if ($sopc_device_family eq "stratixii") 
       { 
           $datapath_files .= $quartus_directory."/eda/sim_lib/stratixii_atoms".$extension.",";  
           if ($lang =~ /vhd/i) {$datapath_files .= $quartus_directory."/eda/sim_lib/stratixii_components.vhd,"; } 
       }
       # SOPC Builder treats StratixII & StratixII GX as different so we have made the names the same for now  
       if ($sopc_device_family eq "stratix")  
       { 
           $datapath_files .= $quartus_directory."/eda/sim_lib/stratix_atoms".$extension.",";  
           if ($lang =~ /vhd/i) {$datapath_files .= $quartus_directory."/eda/sim_lib/stratix_components.vhd,"; } 
       }
    
       # Now add the files needed for the datapath itself   
       $datapath_files .= $magic_proj_dir.$wrapper_name."_auk_ddr_dqs_group".$extension.",";
       $datapath_files .= $magic_proj_dir.$wrapper_name."_auk_ddr_clk_gen".$extension.",";
       $datapath_files .= $magic_proj_dir.$wrapper_name."_auk_ddr_datapath".$extension.",";
       if ($lang =~ /vhd/i) {$datapath_files .= $magic_proj_dir.$wrapper_name."_auk_ddr_datapath_pack.vhd,";}
       
       $project->module_ptf()->{HDL_INFO}{Simulation_HDL_Files} = $datapath_files.$project->module_ptf()->{HDL_INFO}{Simulation_HDL_Files};
        
        
        
        #print "Updated files list = ".$project->module_ptf()->{HDL_INFO}{Simulation_HDL_Files}."\n";
        #print "Create libraries called = ".$project->module_ptf()->{HDL_INFO}{Simulation_Library_Names}."\n";
        
        
        #--------------------------------------------------------
        # Create a shortcut to the right bit of the DDR's PTF
        my %myshortcut =  %{$WSA->{MEGACORE}{NETLIST_SECTION}{STATIC_SECTION}{PRIVATES}{NAMESPACE}{parameterization}};
        my $wizard_shortcut = \%myshortcut;
        #--------------------------------------------------------
    
        
        # Work out whether this should be DDR1 or DDR2
        my $memtype =  $wizard_shortcut->{PRIVATE}{gMEM_TYPE}{value};
        #print "This is a ".$memtype." controller\n";
    
        my $mem_pretty_name = "DDR SDRAM";
        if ($memtype eq "ddr2_sdram") {$mem_pretty_name = "DDR2 SDRAM";}
        
        my $default_pin_prefix = "ddr_";
        if ($memtype eq "ddr2_sdram") {$default_pin_prefix = "ddr2_";}
    
        my $local_burst_length =  $wizard_shortcut->{PRIVATE}{local_burst_length}{value};

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久久久国产免费免费| 久久久午夜精品理论片中文字幕| 国产精品每日更新在线播放网址| 日韩av中文在线观看| 99久久精品一区| 久久久一区二区三区| 无码av免费一区二区三区试看| 成人午夜私人影院| 精品国产91乱码一区二区三区 | 国产日产亚洲精品系列| 同产精品九九九| 色8久久人人97超碰香蕉987| 国产精品系列在线| 国产一区二区日韩精品| 91精品国产一区二区三区香蕉| 亚洲精品老司机| 成人午夜激情视频| 久久久国产精品麻豆| 玖玖九九国产精品| 欧美猛男超大videosgay| 亚洲免费观看高清| 成人av手机在线观看| 国产亚洲一区二区三区在线观看 | 蜜臀a∨国产成人精品| 欧美人体做爰大胆视频| 一区二区久久久久久| 91年精品国产| 亚洲人成人一区二区在线观看| 国产成人免费网站| 久久综合av免费| 国模大尺度一区二区三区| 欧美成人性福生活免费看| 日韩高清不卡在线| 欧美日韩电影在线播放| 亚洲一区二区不卡免费| 欧美午夜电影网| 亚洲国产精品久久久久婷婷884 | 国产91丝袜在线18| 国产日产欧美一区二区三区| 国产福利精品导航| 日本一区二区三区四区| 国产成人精品免费网站| 国产欧美一区二区精品秋霞影院| 国产美女精品人人做人人爽| 久久久午夜精品理论片中文字幕| 国产精品一区三区| 国产日韩v精品一区二区| 国产成人av自拍| 国产精品久久久久永久免费观看| 懂色av一区二区在线播放| 日本一区二区免费在线观看视频| 高清不卡一区二区在线| 99久久免费视频.com| 亚洲三级免费电影| 欧洲人成人精品| 无吗不卡中文字幕| 精品国产成人系列| 岛国精品在线观看| 亚洲日本一区二区三区| 欧美中文字幕一区| 国产精品乱码久久久久久| 国产99久久久国产精品潘金网站| 中文字幕av资源一区| 97se亚洲国产综合自在线| 樱花草国产18久久久久| 欧美日韩国产影片| 久草在线在线精品观看| 国产人成一区二区三区影院| 97国产一区二区| 午夜日韩在线电影| 精品少妇一区二区| 成人av免费网站| 亚洲一区av在线| 欧美电影免费观看高清完整版在 | 久久亚洲综合av| a亚洲天堂av| 亚洲电影激情视频网站| 欧美成人精精品一区二区频| 高清国产一区二区三区| 亚洲福利一区二区三区| 26uuu亚洲综合色| 97国产一区二区| 美女网站一区二区| 国产精品成人免费| 91麻豆精品国产综合久久久久久| 久久99热国产| 亚洲欧洲日本在线| 亚洲男人天堂av网| 在线亚洲精品福利网址导航| 日本网站在线观看一区二区三区| 久久久久久久久久美女| 91极品美女在线| 久久99国产乱子伦精品免费| 一区免费观看视频| 91精品国产aⅴ一区二区| www.亚洲在线| 日本在线不卡一区| 日韩美女视频一区| 日韩视频在线观看一区二区| 波多野结衣视频一区| 日本女优在线视频一区二区| 国产精品欧美综合在线| 3d动漫精品啪啪一区二区竹菊| 粉嫩在线一区二区三区视频| 视频一区欧美精品| 国产精品久久久久久久浪潮网站| 欧美一区二区黄色| 色伊人久久综合中文字幕| 久久99国产精品麻豆| 一区二区三区在线视频免费观看| 久久这里只有精品6| 欧美日韩一级视频| 91麻豆免费看| 国产精品自在在线| 日本三级亚洲精品| 怡红院av一区二区三区| 国产精品女同互慰在线看| 日韩一级片网址| 欧美午夜电影在线播放| 99久久99久久免费精品蜜臀| 国产一区在线观看视频| 日韩精品五月天| 一区二区免费在线播放| 国产精品全国免费观看高清| 精品国产精品一区二区夜夜嗨| 欧美性猛交一区二区三区精品| 成人av电影免费在线播放| 久久99深爱久久99精品| 日本在线不卡视频一二三区| 亚洲制服丝袜在线| 亚洲免费观看视频| 国产精品嫩草影院av蜜臀| 久久欧美中文字幕| 日韩免费电影网站| 欧美高清视频一二三区| 精品视频色一区| 色狠狠桃花综合| 91影视在线播放| 91日韩一区二区三区| eeuss影院一区二区三区| 成人网在线播放| 国产成人精品亚洲日本在线桃色 | 久久成人免费日本黄色| 日本亚洲视频在线| 午夜视频在线观看一区二区三区| 一区二区三区中文免费| 亚洲乱码中文字幕| 亚洲视频1区2区| 亚洲欧美在线观看| 日韩毛片一二三区| 最新国产精品久久精品| 国产精品蜜臀av| 国产精品二三区| 18欧美亚洲精品| 亚洲天堂网中文字| 亚洲视频你懂的| 一区二区三区蜜桃| 亚洲一区在线看| 亚洲图片自拍偷拍| 亚洲成人福利片| 五月激情综合网| 蜜桃视频在线一区| 久久精品国产77777蜜臀| 久久97超碰国产精品超碰| 九九九精品视频| 国产又粗又猛又爽又黄91精品| 国产精品一区免费在线观看| 在线不卡中文字幕| 欧美精品丝袜中出| 91精品久久久久久久91蜜桃| 日韩一区二区三区四区五区六区 | 欧美性一区二区| 欧美日韩视频在线一区二区| 制服丝袜日韩国产| 日韩欧美的一区| 国产日韩欧美在线一区| 亚洲欧洲日韩综合一区二区| 亚洲精品国产a久久久久久| 亚洲综合一区在线| 日韩在线一二三区| 韩国v欧美v日本v亚洲v| 大桥未久av一区二区三区中文| www.日韩精品| 欧美自拍偷拍一区| 欧美一区二区久久| 国产拍欧美日韩视频二区| 亚洲老司机在线| 日韩黄色片在线观看| 国产永久精品大片wwwapp | 极品少妇xxxx偷拍精品少妇| 国产盗摄女厕一区二区三区| av在线不卡观看免费观看| 欧美亚一区二区| 亚洲精品一区二区精华| 中文一区一区三区高中清不卡| 亚洲欧美成aⅴ人在线观看 | 国产欧美日本一区视频| 亚洲制服丝袜在线| 精品一二三四区| 日本韩国欧美一区二区三区|