Visible to Intel only — GUID: nwa1470058502121
Ixiasoft
Visible to Intel only — GUID: nwa1470058502121
Ixiasoft
9.7.1.1. DC-DC Control Block
The DC-DC control block consists of
- Fault latches block
- PI controller block
- Two independent current control loops
- Voltage control loop
- PWM block
The DC-DC control block has the portion of the simulation for which you generate VHDL code. The ChannelIn and ChannelOut blocks are the port interface for the VHDL code. The MATLAB Simulink* inport and output signals define the VHDL signal names, and the VHDL data formats are the signal formats that you typically set with the Convert block.
The Convert DSP block sets the data format. This model uses signed-fractional data format for the feedback signals and the control math inside the DC-DC Control block.
For instance, the voltage feedback signal voltage_fdbk comes into the DC-DC Control block with data format sfix13 and scaling “2^0” (“13bits . 0bits”, where 13bits includes sign bit), which matches the 12 bit ADC twos-complement format. DSP Builder for Intel FPGAs also uses twos-complement maths to perform any calculations.
After the signal voltage_fdbk is inside the DC-DC control block the resolution is increased with another convert block to “sfix(27)” with output scaling “2^-12” (“15bits . 12bits").
In the PWM block, the design generates a triangular wave bounded within [-1.1] using a SR latch and counter counting at the frequency of the system clock of 20 MHz. After every 10000/freq_khz steps, the counter changes the direction of up-down counting. The design compares the triangular signal with thresholds representing the PWM duty cycle commands bounded within [-0.9, 0.9] to produce pulses for driving gates for each phase. The design inserts dead-time of ten samples time duration (for clk=20 MHz) at every transition of gate driving signals. You can extend the dead time by increasing the number of sample delays.
If the design asserts the fault input to the DC-DC converter, the enable bit in the DC-DC converter’s control register is cleared and the DC-DC converter turns off. The enable bit remains cleared, and writing to the control register cannot set it again until the system negates the fault input.
The port map for the DSP Builder for Intel FPGAs-generated VHDL entity is:
entity lvdcdc_adsp_vhdl_DC_DC_Control is
port (
in1 : in std_logic_vector(0 downto 0); -- ufix1
in2 : in std_logic_vector(7 downto 0); -- ufix8
CMD_DC_in : in std_logic_vector(13 downto 0); -- ufix14
voltage_fdbk : in std_logic_vector(12 downto 0); -- sfix13
current_fdbk_a : in std_logic_vector(12 downto 0); -- sfix13
current_fdbk_b : in std_logic_vector(12 downto 0); -- sfix13
freq_khz : in std_logic_vector(13 downto 0); -- ufix14
enable : in std_logic_vector(0 downto 0); -- ufix1
open_0_close_1 : in std_logic_vector(0 downto 0); -- ufix1
duty_0_100 : in std_logic_vector(13 downto 0); -- ufix14
pwm_sync_n : in std_logic_vector(0 downto 0); -- ufix1
pgain_voltage : in std_logic_vector(13 downto 0); -- ufix14
igain_voltage : in std_logic_vector(13 downto 0); -- ufix14
pgain_current : in std_logic_vector(13 downto 0); -- ufix14
igain_current : in std_logic_vector(13 downto 0); -- ufix14
bidir_en : in std_logic_vector(0 downto 0); -- ufix1
out1 : out std_logic_vector(0 downto 0); -- ufix1
out2 : out std_logic_vector(7 downto 0); -- ufix8
gate_a_l : out std_logic_vector(0 downto 0); -- ufix1
gate_a_h : out std_logic_vector(0 downto 0); -- ufix1
gate_b_l : out std_logic_vector(0 downto 0); -- ufix1
gate_b_h : out std_logic_vector(0 downto 0); -- ufix1
OV : out std_logic_vector(0 downto 0); -- ufix1
OC : out std_logic_vector(0 downto 0); -- ufix1
clk : in std_logic;
areset : in std_logic
);
end lvdcdc_adsp_vhdl_DC_DC_Control;