LOGIN   :::   RECOVER PASS   :::   GET ACCOUNT    
Browse
  • Projects
  • Code (CVS)
  • Forums
  • News
  • Articles
  • Polls
  •  
    OpenCores
  • FAQ
  • CVS HowTo
  • Mission
  • Media
  • Tools
  • Advertise
  • Mirrors
  • Logos
  • Contact us
  • Job Opportunity
  •  
    Tools
  • Search
      
  • Download Cores (CVSGet)
  •  
    More
  • Wishbone
  • Perlilog
  • EDA tools
  • OpenTech CD
  •  
    Navigation: All forums > Cores > Message List > Message Post

    Message

    Reply | Reply all
    Date Prev | Date Next | Thread Prev | Thread Next Date Index | Thread Index

    From: Matt Ettus<matt@e...>
    Date: Wed May 2 04:55:11 CEST 2007
    Subject: [oc] Ethernet tri-mode
    Top

    I am trying to work with the ethernet_tri_mode core. I am having some
    trouble with it and can't reach the original author.

    The core instantiates a dual ported RAM which is based on the altsyncram
    Altera primitive, which is obviously not portable. I am trying to
    replace it with one in plain verilog. However, I am not familiar with
    the altsyncram primitive, so I don't know if the author intended
    synchronous or asynchronous read ports. If synchronous, it is also not
    clear if it should be read-through or not. If anyone can help me figure
    out what the attached altsyncram instantiation does, it would be most
    appreciated.

    Thanks,
    Matt

    -------------- next part --------------
    module duram(
    data_a,
    data_b,
    wren_a,
    wren_b,
    address_a,
    address_b,
    clock_a,
    clock_b,
    q_a,
    q_b); //synthesis syn_black_box

    parameter DATA_WIDTH = 32;
    parameter ADDR_WIDTH = 5;
    parameter BLK_RAM_TYPE = "AUTO";
    parameter DURAM_MODE = "BIDIR_DUAL_PORT";
    parameter ADDR_DEPTH = 2**ADDR_WIDTH;



    input [DATA_WIDTH -1:0] data_a;
    input wren_a;
    input [ADDR_WIDTH -1:0] address_a;
    input clock_a;
    output [DATA_WIDTH -1:0] q_a;
    input [DATA_WIDTH -1:0] data_b;
    input wren_b;
    input [ADDR_WIDTH -1:0] address_b;
    input clock_b;
    output [DATA_WIDTH -1:0] q_b;



    altsyncram U_altsyncram (
    .wren_a (wren_a),
    .wren_b (wren_b),
    .data_a (data_a),
    .data_b (data_b),
    .address_a (address_a),
    .address_b (address_b),
    .clock0 (clock_a),
    .clock1 (clock_b),
    .q_a (q_a),
    .q_b (q_b),
    // synopsys translate_off
    .aclr0 (),
    .aclr1 (),
    .addressstall_a (),
    .addressstall_b (),
    .byteena_a (),
    .byteena_b (),
    .clocken0 (),
    .clocken1 (),
    .rden_b ()
    // synopsys translate_on
    );
    defparam
    U_altsyncram.intended_device_family = "Stratix",
    U_altsyncram.ram_block_type = BLK_RAM_TYPE,
    U_altsyncram.operation_mode = DURAM_MODE,
    U_altsyncram.width_a = DATA_WIDTH,
    U_altsyncram.widthad_a = ADDR_WIDTH,
    // U_altsyncram.numwords_a = 256,
    U_altsyncram.width_b = DATA_WIDTH,
    U_altsyncram.widthad_b = ADDR_WIDTH,
    // U_altsyncram.numwords_b = 256,
    U_altsyncram.lpm_type = "altsyncram",
    U_altsyncram.width_byteena_a = 1,
    U_altsyncram.width_byteena_b = 1,
    U_altsyncram.outdata_reg_a = "UNREGISTERED",
    U_altsyncram.outdata_aclr_a = "NONE",
    U_altsyncram.outdata_reg_b = "UNREGISTERED",
    U_altsyncram.indata_aclr_a = "NONE",
    U_altsyncram.wrcontrol_aclr_a = "NONE",
    U_altsyncram.address_aclr_a = "NONE",
    U_altsyncram.indata_reg_b = "CLOCK1",
    U_altsyncram.address_reg_b = "CLOCK1",
    U_altsyncram.wrcontrol_wraddress_reg_b = "CLOCK1",
    U_altsyncram.indata_aclr_b = "NONE",
    U_altsyncram.wrcontrol_aclr_b = "NONE",
    U_altsyncram.address_aclr_b = "NONE",
    U_altsyncram.outdata_aclr_b = "NONE",
    U_altsyncram.power_up_uninitialized = "FALSE";
    endmodule

    Follow upAuthor
    [oc] Ethernet tri-modeH Peter Anvin

     
    Copyright (c) 1999 OPENCORES.ORG. All rights reserved.