Aprendizaje de bus ZYNQ AXI4 (AXI-completo) (dos) simulación de establecimiento

1. Breve descripción

Utilice vivado para personalizar el paquete axi-full master IP, y también empaquetar una IP esclava para facilitar la simulación de la señal.

2. IP del paquete

1) Abra vivado y realice las siguientes operaciones
Inserte la descripción de la imagen aquí
2) Seleccione la opción axi
Inserte la descripción de la imagen aquí
3) Cambie el nombre
Inserte la descripción de la imagen aquí
4) Seleccione el tipo completo, seleccione Master y haga clic en siguiente
Inserte la descripción de la imagen aquí
5) Finalmente, la opción predeterminada es agregar la IP a la biblioteca de IP, y no es necesario editarlo ahora. Inserte la descripción de la imagen aquí
6) El esclavo tiene el mismo proceso que el anterior, recuerde cambiar el nombre y finalmente establecer el predeterminado como se muestra en la figura.
Inserte la descripción de la imagen aquí

3. Cree un proyecto bd

No hablaré del proceso, todos deberían saberlo.
Inserte la descripción de la imagen aquí

4. Incentivos de simulación

Recuerde generar el contenedor y luego crear una instancia del puerto del contenedor en el incentivo.

`timescale 1ns / 1ps
//
// Company: 
// Engineer: 
// 
// Create Date: 2020/03/01 18:28:32
// Design Name: 
// Module Name: tb_sim
// Project Name: 
// Target Devices: 
// Tool Versions: 
// Description: 
// 
// Dependencies: 
// 
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
// 
//


module tb_sim();
    
 
 reg axi_ACLK;     // AXI 总线时钟
 reg axi_ARESETn; // 系统复位信号,低电平有效
 reg r_in_key;   // 模拟按键,正脉冲
 wire w_err;     // 状态指示,异常   
 wire axi_txn_done;
 
AXI_TEST_wrapper        AXI_TEST_wrapper_inst(
    .axi_error              (w_err          ),
    .axi_init_axi_txn       (r_in_key       ),
    .axi_txn_done           (axi_txn_done   ),
    .clk_100M               (axi_ACLK       ),
    .rst_n                  (axi_ARESETn    )

 );

parameter PERIOD = 2;
      
        always begin 
          #(PERIOD/2); 
          axi_ACLK = ~axi_ACLK;  
        end 
        
       initial
           begin
                axi_ACLK = 1'b0;
                axi_ARESETn = 1'b1;
                r_in_key = 1'b0;    
                
                 #(10*PERIOD);
                 axi_ARESETn = 1'b0;     
                 #(2*PERIOD);
                 axi_ARESETn = 1'b1;    
                 
                 #(4*PERIOD);
                 r_in_key = 1'b1;
                 #(2*PERIOD);
                 r_in_key  = 1'b0;            
           end  
endmodule

5. Inicie la simulación

Utilizo la co-simulación de modelsim y vivado. Miramos directamente la forma de onda de simulación.
1) Se puede ver directamente que el lado maestro escribe directamente los datos primero y luego lee los datos.
Inserte la descripción de la imagen aquí
2) Como se muestra en la figura, el valor predeterminado de IP es 16 ráfagas, así que escriba la dirección primero y luego escriba 16 datos.
Inserte la descripción de la imagen aquí
3) Observe la lectura. Igual que escribir, primero escriba la dirección y luego lea 16 ráfagas de datos, pero estos datos no son continuos y hay un intervalo de ciclo de reloj.
Inserte la descripción de la imagen aquí

6. Resumen

Axi-full está aquí, está muy claro, el siguiente paso es transformar.

Bienvenido a seguir mi cuenta pública: Core Kingdom, hay más intercambio de tecnología FPGA e IC digital, ¡y también puede obtener proyectos FPGA de código abierto!

Inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/weixin_40377195/article/details/104660683
Recomendado
Clasificación