Vivado中URAM通过XPM例化

Xilinx Ultrascale系列FPGA包含URAM资源,在Vivado IP Catalog中无法通过GUI方式对URAM进行例化,下面是通过XPM例化一个真双口URAM,PortA和PortB使用同一时钟,地址位宽12bit,数据位宽256bit,深度为3072,内存容量为1048576bit,字节写使能为32bit。

   xpm_memory_tdpram 
   #(
      .ADDR_WIDTH_A(12),             
      .ADDR_WIDTH_B(12),             
      .AUTO_SLEEP_TIME(0),           
      .BYTE_WRITE_WIDTH_A(8),        
      .BYTE_WRITE_WIDTH_B(8),        
      .CASCADE_HEIGHT(0),            
      .CLOCKING_MODE("common_clock"),
      .ECC_MODE("no_ecc"),           
      .MEMORY_INIT_FILE("none"),     
      .MEMORY_INIT_PARAM("0"),       
      .MEMORY_OPTIMIZATION("true"),  
      .MEMORY_PRIMITIVE("ultra"),    
      .MEMORY_SIZE(1048576),         
      .MESSAGE_CONTROL(0),           
      .READ_DATA_WIDTH_A(256),       
      .READ_DATA_WIDTH_B(256),       
      .READ_LATENCY_A(1),            
      .READ_LATENCY_B(1),            
      .READ_RESET_VALUE_A("0"),      
      .READ_RESET_VALUE_B("0"),      
      .RST_MODE_A("SYNC"),           
      .RST_MODE_B("SYNC"),           
      .SIM_ASSERT_CHK(0),            
      .USE_EMBEDDED_CONSTRAINT(0),   
      .USE_MEM_INIT(1),              
      .WAKEUP_TIME("disable_sleep"), 
      .WRITE_DATA_WIDTH_A(256),      
      .WRITE_DATA_WIDTH_B(256),      
      .WRITE_MODE_A("no_change"),    
      .WRITE_MODE_B("no_change")     
   )
   
   xpm_memory_tdpram_inst 
   (
      .dbiterra(),            
      .dbiterrb(),                                        
      .douta(porta_rd_data),  
      .doutb(portb_rd_data),  
      .sbiterra(),                                      
      .sbiterrb(),                                       
      .addra(porta_addr[11:0]),      
      .addrb(portb_addr[11:0]),      
      .clka(user_clk),                                                  
      .clkb(user_clk),                                                  
      .dina(porta_wr_data),          
      .dinb(portb_wr_data),          
      .ena(1'b1),                    
      .enb(1'b1),                    
      .injectdbiterra(), 
      .injectdbiterrb(), 
      .injectsbiterra(), 
      .injectsbiterrb(), 
      .regcea(1'b0),                         
      .regceb(1'b0),                          
      .rsta(~reset_n),   
      .rstb(~reset_n),                     
      .sleep(1'b0),      
      .wea(porta_wea),   
      .web(portb_wea)    
   );  

// 1个URAM容量 = 72bit X 4096 = 288Kbit = 36KB
// 由于上述RAM接口位宽是256bit,所以需要消耗4个URAM资源
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值