hhanff
unread,Dec 5, 2011, 7:09:38 AM12/5/11You do not have permission to delete messages in this group
Either email addresses are anonymous for this group or you need the view member email addresses permission to view the original message
to
Hello!
My native language is VHDL. Thus I'm in trouble instantiating the
following Xilinx Module.
Basically I want to instantiate a Block RAM as declared in the Spartan
6 libraries guide.
// RAMB8BWER: 8k-bit Data and 1k-bit Parity Configurable
Synchronous Block RAM
// Spartan-6
// Xilinx HDL Language Template, version 13.2
RAMB8BWER #(
// DATA_WIDTH_A/DATA_WIDTH_B: 'If RAM_MODE="TDP": 0, 1, 2, 4, 9
or 18; If RAM_MODE="SDP": 36'
.DATA_WIDTH_A(4), // <- ****** BUS WIDTH SET TO = 4 ******
.DATA_WIDTH_B(4), // <- ****** BUS WIDTH SET TO = 4 ******
// DOA_REG/DOB_REG: Optional output register (0 or 1)
.DOA_REG(0),
.DOB_REG(0),
// EN_RSTRAM_A/EN_RSTRAM_B: Enable/disable RST
.EN_RSTRAM_A("TRUE"),
.EN_RSTRAM_B("TRUE"),
// INITP_00 to INITP_03: Initial memory contents.
[....]
.INIT_FILE("NONE"), //
Do not modify
// RAM_MODE: "SDP" or "TDP"
.RAM_MODE("TDP"),
// RSTTYPE: "SYNC" or "ASYNC"
.RSTTYPE("SYNC"),
// RST_PRIORITY_A/RST_PRIORITY_B: "CE" or "SR"
.RST_PRIORITY_A("CE"),
.RST_PRIORITY_B("CE"),
// SIM_COLLISION_CHECK: Collision check enable "ALL",
"WARNING_ONLY", "GENERATE_X_ONLY" or "NONE"
.SIM_COLLISION_CHECK("NONE"),
// SRVAL_A/SRVAL_B: Set/Reset value for RAM output
.SRVAL_A(18'h00000),
.SRVAL_B(18'h00000),
// WRITE_MODE_A/WRITE_MODE_B: "WRITE_FIRST", "READ_FIRST", or
"NO_CHANGE"
.WRITE_MODE_A("WRITE_FIRST"),
.WRITE_MODE_B("WRITE_FIRST")
)
RAMB8BWER_inst_info_fifo(
// Port A Data: 16-bit (each) output: Port A data
.DOADO(), // 16-bit output: A port data/LSB data
output
.DOPADOP(), // 2-bit output: A port parity/LSB parity
output
// Port B Data: 16-bit (each) output: Port B data
.DOBDO({length_info_16}), // 16-bit output: B port
data/MSB data output
.DOPBDOP(), // 2-bit output: B port parity/MSB parity
output
// Port A Address/Control Signals: 13-bit (each) input: Port A
address and control signals (write port
// when RAM_MODE="SDP")
.ADDRAWRADDR({7'h0, wr_info_pointer}), // 13-bit input: A port
address/Write address input
.CLKAWRCLK(clk), // 1-bit input: A port clock/Write clock
input
.ENAWREN(1'b1), // 1-bit input: A port enable/Write
enable input
.REGCEA(1'b1), // 1-bit input: A port register enable
input
.RSTA(1'b0), // 1-bit input: A port set/reset
input
.WEAWEL({1'b0,write_length_info & (~info_full) |
initialize_memories}), // 2-bit input: A port write enable
input
// Port A Data: 16-bit (each) input: Port A data
.DIADI({12'h0,len_cnt &
{4{~initialize_memories}}}), // 16-bit input: A port data/
LSB data input
.DIPADIP(), // 2-bit input: A port parity/LSB parity
input
// Port B Address/Control Signals: 13-bit (each) input: Port B
address and control signals (read port
// when RAM_MODE="SDP")
.ADDRBRDADDR({7'h0, rd_info_pointer}), // 13-bit input: B port
address/Read address input
.CLKBRDCLK(clk), // 1-bit input: B port clock/Read clock
input
.ENBRDEN(1'b1), // 1-bit input: B port enable/Read
enable input
.REGCEBREGCE(1'b1), // 1-bit input: B port register enable/
Register enable input
.RSTBRST(1'b0), // 1-bit input: B port set/reset input
.WEBWEU(2'b0), // 2-bit input: B port write enable
input
// Port B Data: 16-bit (each) input: Port B data
.DIBDI(16'h0), // 16-bit input: B port data/MSB data
input
.DIPBDIP(2'h0) // 2-bit input: B port parity/MSB parity
input
);
For my understanding I'm telling the module to use 4 bit wide data
ports. Nevertheless, DOBDO will be 16 bit wide...
Where is my mistake???