IP Core Generation Report for hdlcoderFocCurrentFixptHdl

Summary

IP core name FOC_Curre_ip
IP core version 1.0
IP core folder D:\Projects\Matlab\IPcores\test\ipcore\FOC_Curre_ip_v1_0
IP core zip file name FOC_Curre_ip_v1_0.zip
Target platform Generic Xilinx Platform
Target tool Xilinx Vivado
Target language VHDL
Model hdlcoderFocCurrentFixptHdl
Model version 1.79
HDL Coder version 3.16
IP core generated on 01-Dec-2023 13:25:43
IP core generated for FOC_Current_Control

Target Interface Configuration

You chose the following target interface configuration for hdlcoderFocCurrentFixptHdl :

Processor/FPGA synchronization mode: Free running

Target platform interface table:
Port Name Port Type Data Type Target Platform Interfaces Bit Range / Address / FPGA Pin
Current_Command Inport sfix16_En12 AXI4-Lite x"100"
Phase_Current Inport sfix16_En12 (2) AXI4-Lite x"108"
Electrical_Position Inport sfix16_En12 AXI4-Lite x"104"
paramCurrentControlI Tunable Parameter sfix16_En3 No Interface Specified
paramCurrentControlP Tunable Parameter sfix16_En8 No Interface Specified
Phase_Voltage Outport sfix16_En8 (3) AXI4-Lite x"120"

Register Address Mapping

The following AXI4-Lite bus accessible registers were generated for this IP core:

Register Name Address Offset Description
IPCore_Reset 0x0 write 0x1 to bit 0 to reset IP core
IPCore_Enable 0x4 enabled (by default) when bit 0 is 0x1
IPCore_Timestamp 0x8 contains unique IP timestamp (yymmddHHMM): 2312011325
Current_Command_Data 0x100 data register for Inport Current_Command
Electrical_Position_Data 0x104 data register for Inport Electrical_Position
Phase_Current_Data 0x108 data register for Inport Phase_Current, vector with 2 elements, address ends at 0x10C
Phase_Current_Strobe 0x110 strobe register for port Phase_Current
Phase_Voltage_Data 0x120 data register for Outport Phase_Voltage, vector with 3 elements, address ends at 0x128
Phase_Voltage_Strobe 0x130 strobe register for port Phase_Voltage

The AXI4 slave write register readback is OFF for the IP core.
The register address mapping is also in the following C header file for you to use when programming the processor:
include\FOC_Curre_ip_addr.h
The IP core name is appended to the register names to avoid name conflicts.

IP Core User Guide

Theory of Operation

This IP core is designed to be connected to an embedded processor with an AXI4-Lite interface. The processor acts as master, and the IP core acts as slave. By accessing the generated registers via the AXI4-Lite interface, the processor can control the IP core, and read and write data from and to the IP core.

For example, to reset the IP core, write 0x1 to the bit 0 of IPCore_Reset register. To enable or disable the IP core, write 0x1 or 0x0 to the IPCore_Enable register. To access the data ports of the MATLAB/Simulink algorithm, read or write to the associated data registers.



The AXI4 Slave port to pipeline register ratio selected as 35 in task 3.2 for this model. The default delay to read AXI4 register is one clock cycle. Depending on the selected ratio and IO connected to AXI4 interface, register pipelining is introduced in the read logic of AXI4 registers. For your model AXI4 pipeline register ratio setting 35 is larger than all the readable AXI4 slave registers. Total readable AXI4 slave registers are 4, so no pipelining is added to the AXI4 register read back logic.

Processor/FPGA Synchronization

The Free running mode means there is no explicit synchronization between embedded processor software execution (SW) and the IP core (HW). SW and HW runs independently. The data written from the processor to IP core takes effect immediately, and the data read from the IP core is the latest data available on the IP core output ports.



Vector Data Read/Write with Strobe Synchronization

All the elements of vector data are treated as synchronous to the IP core algorithm logic. Additional strobe registers added for each vector input and output port maintain this synchronization across multiple sequential AXI4 reads/writes. For input ports, the strobe register controls the enables on a set of shadow registers, allowing the IP core logic to see all the updated vector elements simultaneously. For output ports, the strobe register controls the synchronous capturing of vector data to be read.

To read a vector data port, first write the strobe address with 0x1, then read each desired data element from corresponding address range. To write a vector data port, first write each desired data element, then write 0x1 to the strobe address to complete the transaction.





Xilinx Vivado Environment Integration

This IP Core is generated for the Xilinx Vivado environment. The following steps are an example showing how to integrate the generated IP core into Xilinx Vivado environment:

1. The generated IP core is a zip package file under the IP core folder. Please check the Summary section of this report for the IP zip file name and folder.
2. In the Vivado project, go to Project Settings -> IP -> Repository Manager, add the folder containing the IP zip file as IP Repository.
3. In Repository Manger, click the "Add IP" button to add IP zip file to the IP repository. This step adds the generated IP into the Vivado IP Catalog.
4. In the Vivado project, find the generated IP core in the IP Catalog under category "HDL Coder Generated IP". In you have a Vivado block design open, you can add the generated IP into your block design.
5. Connect the AXI4_Lite port of the IP core to the embedded processor's AXI master port.
6. Connect the clock and reset ports of the IP core to the global clock and reset signals.
7. Assign an Offset Address for the IP core in the Address Editor.
8. Connect external ports and add FPGA pin assignment constraints to constraint file.
9. Generate FPGA bitstream and download the bitstream to target device.

If you are targeting Xilinx Zynq hardwares supported by HDL Coder Support Package for Xilinx Zynq Platform, you can select the board you are using in the Target platform option in the Set Target > Set Target Device and Synthesis Tool task. You can then use Embedded System Integration tasks in HDL Workflow Advisor to help you integrate the generated IP core into Xilinx Vivado environment.

IP Core File List

The IP core folder is located at:
D:\Projects\Matlab\IPcores\test\ipcore\FOC_Curre_ip_v1_0
Following files are generated under this folder:

IP core zip file
FOC_Curre_ip_v1_0.zip

IP core report
doc\hdlcoderFocCurrentFixptHdl_ip_core_report.html

IP core HDL source files
hdl\vhdl\FOC_Curre_ip_src_FOC_Current_Control_pkg.vhd
hdl\vhdl\FOC_Curre_ip_src_Clarke_Transform.vhd
hdl\vhdl\FOC_Curre_ip_src_Saturate_Output.vhd
hdl\vhdl\FOC_Curre_ip_src_D_Current_Control.vhd
hdl\vhdl\FOC_Curre_ip_src_DQ_Current_Control.vhd
hdl\vhdl\FOC_Curre_ip_src_Inverse_Clarke_Transform.vhd
hdl\vhdl\FOC_Curre_ip_src_Inverse_Park_Transform.vhd
hdl\vhdl\FOC_Curre_ip_src_Park_Transform.vhd
hdl\vhdl\FOC_Curre_ip_src_Sine_Cosine_LUT.vhd
hdl\vhdl\FOC_Curre_ip_src_Sine_Cosine.vhd
hdl\vhdl\FOC_Curre_ip_src_Max.vhd
hdl\vhdl\FOC_Curre_ip_src_Min.vhd
hdl\vhdl\FOC_Curre_ip_src_Space_Vector_Modulation.vhd
hdl\vhdl\FOC_Curre_ip_src_FOC_Current_Control.vhd
hdl\vhdl\FOC_Curre_ip_pkg.vhd
hdl\vhdl\FOC_Curre_ip_reset_sync.vhd
hdl\vhdl\FOC_Curre_ip_dut.vhd
hdl\vhdl\FOC_Curre_ip_addr_decoder.vhd
hdl\vhdl\FOC_Curre_ip_axi_lite_module.vhd
hdl\vhdl\FOC_Curre_ip_axi_lite.vhd
hdl\vhdl\FOC_Curre_ip.vhd

IP core C header file
include\FOC_Curre_ip_addr.h