万恶的Uram

1 年前 · 来自专栏 FPGA日常笔记

Uram 是一个好东西~~~~可以类比为一个特大号Ram。

在平常需要使用非常多的缓存存数据,但是又没到要用到DDR的时候,可以用这个东西~~~来使用。

正常情况下,我会用XPM来例化。

localparam          DELAY                       =   25;
localparam          WIDTH                       =   17;
localparam          MEM_SIZE                    =   131_072 * 64 ;
xpm_memory_tdpram #(
    .ADDR_WIDTH_A               ( WIDTH             ),      // DECIMAL
    .ADDR_WIDTH_B               ( WIDTH             ),      // DECIMAL
    .AUTO_SLEEP_TIME            ( 0                 ),      // DECIMAL
    .BYTE_WRITE_WIDTH_A         ( 64                ),      // DECIMAL
    .BYTE_WRITE_WIDTH_B         ( 64                ),      // DECIMAL
    .CLOCKING_MODE              ( "common_clock"    ),      // String
    .ECC_MODE                   ( "no_ecc"          ),      // String
    .MEMORY_INIT_FILE           ( "none"            ),      // String
    .MEMORY_INIT_PARAM          ( "0"               ),      // String
    .MEMORY_OPTIMIZATION        ( "true"            ),      // String
    .MEMORY_PRIMITIVE           ( "ultra"           ),      // String
    .MEMORY_SIZE                ( MEM_SIZE          ),      // DECIMAL
    .MESSAGE_CONTROL            ( 0                 ),      // DECIMAL
    .READ_DATA_WIDTH_A          ( 64                ),      // DECIMAL
    .READ_DATA_WIDTH_B          ( 64                ),      // DECIMAL
    .READ_LATENCY_A             ( DELAY             ),      // DECIMAL
    .READ_LATENCY_B             ( DELAY             ),      // DECIMAL
    .READ_RESET_VALUE_A         ( "0"               ),      // String
    .READ_RESET_VALUE_B         ( "0"               ),      // String
    .USE_EMBEDDED_CONSTRAINT    ( 0                 ),      // DECIMAL
    .USE_MEM_INIT               ( 1                 ),      // DECIMAL
    .WAKEUP_TIME                ( "disable_sleep"   ),      // String
    .WRITE_DATA_WIDTH_A         ( 64                ),      // DECIMAL
    .WRITE_DATA_WIDTH_B         ( 64                ),      // DECIMAL
    .WRITE_MODE_A               ( "no_change"       ),      // String
    .WRITE_MODE_B               ( "no_change"       )       // String
uram (
   .clka                     ( clk                              ),                     
   .addra                    ( 'h0                              ),// ADDR_WIDTH_A-bit input: Address for port A write and read operations.
   .ena                      ( 'h0                              ),                       
   .wea                      ( 'h0                              ),                       
   .dina                     ( 'h0                              ),// WRITE_DATA_WIDTH_A-bit input: Data input for port A write operations.
   .douta                    (                                  ),// READ_DATA_WIDTH_A-bit output: Data output for port A read operations.
   .clkb                     ( clk                              ),                     
   .addrb                    ( uram_addr[WIDTH-1:0]             ),// ADDR_WIDTH_B-bit input: Address for port B write and read operations.
   .enb                      ( 1'b1                             ),                       
   .web                      ( uram_we                          ), 
   .dinb                     ( uram_din                         ),// WRITE_DATA_WIDTH_B-bit input: Data input for port B write operations.
   .doutb                    ( uram_dout                        ),// READ_DATA_WIDTH_B-bit output: Data output for port B read operations.
   .injectdbiterra           ( 1'b0                             ),
   .injectdbiterrb           ( 1'b0                             ),
   .injectsbiterra           ( 1'b0                             ),
   .injectsbiterrb           ( 1'b0                             ),
   .regcea                   ( 1'b1                             ),                 
   .regceb                   ( 1'b1                             ),                 
   .rsta                     ( 1'b0                             ),                    
   .rstb                     ( 1'b0                             ),   
   .sleep                    ( 1'b0                             ), // 1-bit input: sleep signal to enable the dynamic power saving feature.