diff --git a/peripherals/spwm/README.md b/peripherals/spwm/README.md index b814a8be..352706e9 100644 --- a/peripherals/spwm/README.md +++ b/peripherals/spwm/README.md @@ -9,7 +9,15 @@ Implementação de um componente VHDL gerador de PWM senoidal a partir da compar - `reset`: sinal de reset do periférico, deve ser conectado ao barramento do `reset` do _core_. -- `sine_spwm`: Saída do pwm senoidal gerado pelo hardware +- `sel_modulation`: Seleciona qual modulação será apresentada na saída. + +- `sine_spwm1`: Saída 1 do pwm senoidal gerado pelo hardware. + +- `sine_spwm2`: Saída 2 do pwm senoidal gerado pelo hardware. + +- `sine_spwm3`: Saída 3 do pwm senoidal gerado pelo hardware. + +- `sine_spwm4`: Saída 4 do pwm senoidal gerado pelo hardware. ## Funcionamento @@ -19,14 +27,48 @@ Os valores da portadora são atualizados a partir de uma tabela de valores da se O valor da moduladora segue a lógica de uma onda triangular de acordo com o valor de contagem máxima e uma variável de fator de multiplicação para que possa ser implementada modulação de amplitude. -É feita a comparaçao entre portadora e moduladora e o sinal pwm é gerado na saída sine_spwm. Observe abaixo a lógica implementada e o exemplo simulado via PSIM. +É feita a comparaçao entre portadora e moduladora e o sinal pwm é gerado nas saídas sine_spwm. É possível selecionar qual modulação será escolhida, Bipolar ou Unipolar. + +Observe abaixo a lógica implementada e o exemplo simulado via PSIM. + +## Modulação Bipolar -- sine_spwm = 1 quando Vseno > Vtriangular -- sine_spwm = 0 quando Vseno < Vtriangular +- sine_spwm1 = 1 quando Vseno > Vtriangular +- sine_spwm1 = 0 quando Vseno < Vtriangular
+Em uma aplicação para inversores monofásicos utilizamos 4 chaves, precisamos apenas de 1 sinal comparado com a tabela e seu complementar. A disposição das chaves ficam exemplificados abaixo:
+
+
+- Chave 1 = Chave 3 = sine_spwm1 = sine_spwm3
+- Chave 2 = Chave 4 = sine_spwm2 = sine_spwm4
+
+## Modulação Unipolar
+
+O modelo de chaveamento segue da mesma forma que a modulação bipolar, porém agora com um sinal defasado.
+
+- sine_spwm1 = 1 quando Vseno > Vtriangular
+- sine_spwm1 = 0 quando Vseno < Vtriangular
+- sine_spwm2 = 1 quando Vseno_offset > Vtriangular
+- sine_spwm2 = 0 quando Vseno_offset < Vtriangular
+
+
+
+
+
+
+Em uma aplicação para inversores monofásicos utilizamos 4 chaves, precisamos de 2 sinais comparado com a tabela e seus complementares. A primeira tabela disponibilizando 1 sinal e seu complementar e a outra tabela sendo defasada 180º da primeira, tendo como resposta 1 sinal e seu complementar A disposição das chaves ficam exemplificados abaixo:
+
+
+
+
+- Chave 1 = sine_spwm1 = a partir de table_sine
+- Chave 2 = sine_spwm2 = a partir de table_sine_offset
+- Chave 3 = sine_spwm3 = complementar de sine_spwm1
+- Chave 4 = sine_spwm4 = complementar de sine_spwm2
+
## Simulação
Os valores a seguir foram gerados no Questa utilizando os arquivos de testbench e também o exemplo de software main_spwm.c encontrado nesse repositório, no caminho software/spwm/.
@@ -44,4 +86,4 @@ Foi aplicado um zoom para mostrar os valores das ondas de referência e portador
## Sugestões
- Testar lógica de modulação de amplitude
- Adequar o componente para N saídas e com a lógica de chaveamento para - aplicação. Exemplos: conversor B6, inversor monofásico
-- Gerar a tabela de valores da senoide em tempo de compilação
\ No newline at end of file
+- Gerar a tabela de valores da senoide em tempo de compilação
diff --git a/peripherals/spwm/sine_values.txt b/peripherals/spwm/sine_values.txt
index c818ef7d..c834048c 100644
--- a/peripherals/spwm/sine_values.txt
+++ b/peripherals/spwm/sine_values.txt
@@ -98,3 +98,105 @@
-6140, -5938, -5735, -5532, -5329, -5126, -4922, -4719, -4515, -4311,
-4107, -3902, -3698, -3493, -3289, -3084, -2879, -2673, -2468, -2263,
-2057, -1852, -1646, -1441, -1235, -1029, -823, -618, -412, -206]
+
+ Tabela defasada 90 graus
+ [ 0, -206, -412, -618, -823, -1029, -1235, -1441, -1646, -1852,
+ -2057, -2263, -2468, -2673, -2879, -3084, -3289, -3493, -3698, -3902,
+ -4107, -4311, -4515, -4719, -4922, -5126, -5329, -5532, -5735, -5938,
+ -6140, -6342, -6544, -6746, -6947, -7148, -7349, -7549, -7749, -7949,
+ -8149, -8348, -8547, -8746, -8944, -9142, -9339, -9536, -9733, -9930,
+ -10126,-10321,-10516,-10711,-10905,-11099,-11293,-11486,-11679,-11871,
+ -12062,-12254,-12444,-12634,-12824,-13013,-13202,-13390,-13578,-13765,
+ -13952,-14138,-14323,-14508,-14692,-14876,-15059,-15242,-15424,-15605,
+ -15786,-15966,-16145,-16324,-16502,-16680,-16857,-17033,-17208,-17383,
+ -17557,-17731,-17904,-18076,-18247,-18418,-18588,-18757,-18925,-19093,
+ -19260,-19426,-19592,-19756,-19920,-20083,-20245,-20407,-20568,-20727,
+ -20886,-21045,-21202,-21359,-21514,-21669,-21823,-21976,-22129,-22280,
+ -22431,-22580,-22729,-22877,-23024,-23170,-23315,-23459,-23602,-23745,
+ -23886,-24027,-24166,-24305,-24442,-24579,-24715,-24849,-24983,-25116,
+ -25247,-25378,-25508,-25637,-25764,-25891,-26017,-26141,-26265,-26388,
+ -26509,-26630,-26749,-26867,-26985,-27101,-27216,-27330,-27443,-27555,
+ -27666,-27776,-27885,-27992,-28099,-28204,-28308,-28411,-28513,-28614,
+ -28714,-28813,-28910,-29006,-29102,-29196,-29289,-29380,-29471,-29560,
+ -29648,-29736,-29821,-29906,-29990,-30072,-30153,-30233,-30312,-30390,
+ -30466,-30541,-30615,-30688,-30759,-30830,-30899,-30967,-31034,-31099,
+ -31163,-31226,-31288,-31349,-31408,-31466,-31523,-31578,-31633,-31686,
+ -31738,-31788,-31837,-31886,-31932,-31978,-32022,-32065,-32107,-32147,
+ -32187,-32225,-32261,-32297,-32331,-32364,-32395,-32425,-32454,-32482,
+ -32509,-32534,-32558,-32580,-32602,-32622,-32640,-32658,-32674,-32689,
+ -32702,-32715,-32726,-32735,-32744,-32751,-32757,-32761,-32764,-32766,
+ -32767,-32766,-32764,-32761,-32757,-32751,-32744,-32735,-32726,-32715,
+ -32702,-32689,-32674,-32658,-32640,-32622,-32602,-32580,-32558,-32534,
+ -32509,-32482,-32454,-32425,-32395,-32364,-32331,-32297,-32261,-32225,
+ -32187,-32147,-32107,-32065,-32022,-31978,-31932,-31886,-31837,-31788,
+ -31738,-31686,-31633,-31578,-31523,-31466,-31408,-31349,-31288,-31226,
+ -31163,-31099,-31034,-30967,-30899,-30830,-30759,-30688,-30615,-30541,
+ -30466,-30390,-30312,-30233,-30153,-30072,-29990,-29906,-29821,-29736,
+ -29648,-29560,-29471,-29380,-29289,-29196,-29102,-29006,-28910,-28813,
+ -28714,-28614,-28513,-28411,-28308,-28204,-28099,-27992,-27885,-27776,
+ -27666,-27555,-27443,-27330,-27216,-27101,-26985,-26867,-26749,-26630,
+ -26509,-26388,-26265,-26141,-26017,-25891,-25764,-25637,-25508,-25378,
+ -25247,-25116,-24983,-24849,-24715,-24579,-24442,-24305,-24166,-24027,
+ -23886,-23745,-23602,-23459,-23315,-23170,-23024,-22877,-22729,-22580,
+ -22431,-22280,-22129,-21976,-21823,-21669,-21514,-21359,-21202,-21045,
+ -20886,-20727,-20568,-20407,-20245,-20083,-19920,-19756,-19592,-19426,
+ -19260,-19093,-18925,-18757,-18588,-18418,-18247,-18076,-17904,-17731,
+ -17557,-17383,-17208,-17033,-16857,-16680,-16502,-16324,-16145,-15966,
+ -15786,-15605,-15424,-15242,-15059,-14876,-14692,-14508,-14323,-14138,
+ -13952,-13765,-13578,-13390,-13202,-13013,-12824,-12634,-12444,-12254,
+ -12062,-11871,-11679,-11486,-11293,-11099,-10905,-10711,-10516,-10321,
+ -10126, -9930, -9733, -9536, -9339, -9142, -8944, -8746, -8547, -8348,
+ -8149, -7949, -7749, -7549, -7349, -7148, -6947, -6746, -6544, -6342,
+ -6140, -5938, -5735, -5532, -5329, -5126, -4922, -4719, -4515, -4311,
+ -4107, -3902, -3698, -3493, -3289, -3084, -2879, -2673, -2468, -2263,
+ -2057, -1852, -1646, -1441, -1235, -1029, -823, -618, -412, -206,
+ 0, 206, 412, 618, 823, 1029, 1235, 1441, 1646, 1852,
+ 2057, 2263, 2468, 2673, 2879, 3084, 3289, 3493, 3698, 3902,
+ 4107, 4311, 4515, 4719, 4922, 5126, 5329, 5532, 5735, 5938,
+ 6140, 6342, 6544, 6746, 6947, 7148, 7349, 7549, 7749, 7949,
+ 8149, 8348, 8547, 8746, 8944, 9142, 9339, 9536, 9733, 9930,
+ 10126, 10321, 10516, 10711, 10905, 11099, 11293, 11486, 11679, 11871,
+ 12062, 12254, 12444, 12634, 12824, 13013, 13202, 13390, 13578, 13765,
+ 13952, 14138, 14323, 14508, 14692, 14876, 15059, 15242, 15424, 15605,
+ 15786, 15966, 16145, 16324, 16502, 16680, 16857, 17033, 17208, 17383,
+ 17557, 17731, 17904, 18076, 18247, 18418, 18588, 18757, 18925, 19093,
+ 19260, 19426, 19592, 19756, 19920, 20083, 20245, 20407, 20568, 20727,
+ 20886, 21045, 21202, 21359, 21514, 21669, 21823, 21976, 22129, 22280,
+ 22431, 22580, 22729, 22877, 23024, 23170, 23315, 23459, 23602, 23745,
+ 23886, 24027, 24166, 24305, 24442, 24579, 24715, 24849, 24983, 25116,
+ 25247, 25378, 25508, 25637, 25764, 25891, 26017, 26141, 26265, 26388,
+ 26509, 26630, 26749, 26867, 26985, 27101, 27216, 27330, 27443, 27555,
+ 27666, 27776, 27885, 27992, 28099, 28204, 28308, 28411, 28513, 28614,
+ 28714, 28813, 28910, 29006, 29102, 29196, 29289, 29380, 29471, 29560,
+ 29648, 29736, 29821, 29906, 29990, 30072, 30153, 30233, 30312, 30390,
+ 30466, 30541, 30615, 30688, 30759, 30830, 30899, 30967, 31034, 31099,
+ 31163, 31226, 31288, 31349, 31408, 31466, 31523, 31578, 31633, 31686,
+ 31738, 31788, 31837, 31886, 31932, 31978, 32022, 32065, 32107, 32147,
+ 32187, 32225, 32261, 32297, 32331, 32364, 32395, 32425, 32454, 32482,
+ 32509, 32534, 32558, 32580, 32602, 32622, 32640, 32658, 32674, 32689,
+ 32702, 32715, 32726, 32735, 32744, 32751, 32757, 32761, 32764, 32766,
+ 32767, 32766, 32764, 32761, 32757, 32751, 32744, 32735, 32726, 32715,
+ 32702, 32689, 32674, 32658, 32640, 32622, 32602, 32580, 32558, 32534,
+ 32509, 32482, 32454, 32425, 32395, 32364, 32331, 32297, 32261, 32225,
+ 32187, 32147, 32107, 32065, 32022, 31978, 31932, 31886, 31837, 31788,
+ 31738, 31686, 31633, 31578, 31523, 31466, 31408, 31349, 31288, 31226,
+ 31163, 31099, 31034, 30967, 30899, 30830, 30759, 30688, 30615, 30541,
+ 30466, 30390, 30312, 30233, 30153, 30072, 29990, 29906, 29821, 29736,
+ 29648, 29560, 29471, 29380, 29289, 29196, 29102, 29006, 28910, 28813,
+ 28714, 28614, 28513, 28411, 28308, 28204, 28099, 27992, 27885, 27776,
+ 27666, 27555, 27443, 27330, 27216, 27101, 26985, 26867, 26749, 26630,
+ 26509, 26388, 26265, 26141, 26017, 25891, 25764, 25637, 25508, 25378,
+ 25247, 25116, 24983, 24849, 24715, 24579, 24442, 24305, 24166, 24027,
+ 23886, 23745, 23602, 23459, 23315, 23170, 23024, 22877, 22729, 22580,
+ 22431, 22280, 22129, 21976, 21823, 21669, 21514, 21359, 21202, 21045,
+ 20886, 20727, 20568, 20407, 20245, 20083, 19920, 19756, 19592, 19426,
+ 19260, 19093, 18925, 18757, 18588, 18418, 18247, 18076, 17904, 17731,
+ 17557, 17383, 17208, 17033, 16857, 16680, 16502, 16324, 16145, 15966,
+ 15786, 15605, 15424, 15242, 15059, 14876, 14692, 14508, 14323, 14138,
+ 13952, 13765, 13578, 13390, 13202, 13013, 12824, 12634, 12444, 12254,
+ 12062, 11871, 11679, 11486, 11293, 11099, 10905, 10711, 10516, 10321,
+ 10126, 9930, 9733, 9536, 9339, 9142, 8944, 8746, 8547, 8348,
+ 8149, 7949, 7749, 7549, 7349, 7148, 6947, 6746, 6544, 6342,
+ 6140, 5938, 5735, 5532, 5329, 5126, 4922, 4719, 4515, 4311,
+ 4107, 3902, 3698, 3493, 3289, 3084, 2879, 2673, 2468, 2263,
+ 2057, 1852, 1646, 1441, 1235, 1029, 823, 618, 412, 206]
diff --git a/peripherals/spwm/sint/de10_lite/de10_lite.qsf b/peripherals/spwm/sint/de10_lite/de10_lite.qsf
index 423d4d5d..47805621 100644
--- a/peripherals/spwm/sint/de10_lite/de10_lite.qsf
+++ b/peripherals/spwm/sint/de10_lite/de10_lite.qsf
@@ -42,7 +42,7 @@ set_global_assignment -name DEVICE 10M50DAF484C7G
set_global_assignment -name TOP_LEVEL_ENTITY de10_lite
set_global_assignment -name ORIGINAL_QUARTUS_VERSION 15.0.0
set_global_assignment -name PROJECT_CREATION_TIME_DATE "18:49:34 JUNE 20, 2019"
-set_global_assignment -name LAST_QUARTUS_VERSION "21.1.1 Lite Edition"
+set_global_assignment -name LAST_QUARTUS_VERSION "21.1.1 Standard Edition"
set_global_assignment -name PROJECT_OUTPUT_DIRECTORY output_files
set_global_assignment -name MIN_CORE_JUNCTION_TEMP 0
set_global_assignment -name MAX_CORE_JUNCTION_TEMP 85
@@ -241,4 +241,5 @@ set_global_assignment -name VHDL_FILE de10_lite.vhd
set_global_assignment -name QIP_FILE pll.qip
set_global_assignment -name SOURCE_FILE db/de10_lite.cmp.rdb
set_global_assignment -name VHDL_FILE ../../../gpio/led_displays.vhd
+set_global_assignment -name MIF_FILE output_files/tabela_seno.mif
set_instance_assignment -name PARTITION_HIERARCHY root_partition -to | -section_id Top
\ No newline at end of file
diff --git a/peripherals/spwm/sint/de10_lite/de10_lite.vhd b/peripherals/spwm/sint/de10_lite/de10_lite.vhd
index 32da6db5..deeae1bc 100644
--- a/peripherals/spwm/sint/de10_lite/de10_lite.vhd
+++ b/peripherals/spwm/sint/de10_lite/de10_lite.vhd
@@ -123,8 +123,11 @@ architecture rtl of de10_lite is
signal ddata_r_dig_fil : std_logic_vector(31 downto 0);
signal ddata_r_stepmot : std_logic_vector(31 downto 0);
signal ddata_r_lcd : std_logic_vector(31 downto 0);
- signal ddata_r_nn_accelerator : std_logic_vector(31 downto 0);
- signal ddata_r_fir_fil : std_logic_vector(31 downto 0);
+ signal ddata_r_nn_accelerator : std_logic_vector(31 downto 0);
+ signal ddata_r_fir_fil : std_logic_vector(31 downto 0);
+ signal ddata_r_crc : std_logic_vector(31 downto 0);
+ signal ddata_r_key : std_logic_vector(31 downto 0);
+ signal ddata_r_accelerometer : std_logic_vector(31 downto 0);
-- Interrupt Signals
signal interrupts : std_logic_vector(31 downto 0);
@@ -133,8 +136,12 @@ architecture rtl of de10_lite is
-- I/O signals
signal input_in : std_logic_vector(31 downto 0);
-
signal switching_sine : std_logic;
+
+ --Timer
+ signal ifcap : std_logic ; -- capture flag
+
+ signal sel_modulation : std_logic;
begin
@@ -174,7 +181,11 @@ begin
port map(
clock => clk_50MHz,
reset => rst,
+ sel_modulation => SW(5),
sine_pwm1 => ARDUINO_IO(0),
+ sine_pwm2 => ARDUINO_IO(2),
+ sine_pwm3 => ARDUINO_IO(4),
+ sine_pwm4 => ARDUINO_IO(6),
daddress => daddress,
ddata_w => ddata_w,
ddata_r => ddata_r_spwm,
@@ -217,6 +228,7 @@ begin
-- 0x20000 -> Data memory
-- 0x40000 -> Input/Output generic address space
-- ( ... ) -> ( ... )
+
datamux: entity work.databusmux
port map(
dcsel => dcsel,
@@ -263,10 +275,14 @@ begin
ddata_r_periph => ddata_r_periph,
ddata_r_spwm => ddata_r_spwm,
ddata_r_dif_fil => ddata_r_dig_fil,
- ddata_r_stepmot => ddata_r_stepmot,
- ddata_r_lcd => ddata_r_lcd,
- ddata_r_fir_fil => ddata_r_fir_fil,
- ddata_r_nn_accelerator => ddata_r_nn_accelerator
+ ddata_r_stepmot => ddata_r_stepmot,
+ ddata_r_lcd => ddata_r_lcd,
+ ddata_r_fir_fil => ddata_r_fir_fil,
+ ddata_r_nn_accelerator => ddata_r_nn_accelerator,
+ ddata_r_crc => ddata_r_crc,
+ ddata_r_key => ddata_r_key,
+ ddata_r_accelerometer => ddata_r_accelerometer
+
);
generic_gpio: entity work.gpio
@@ -301,7 +317,8 @@ begin
d_rd => d_rd,
dcsel => dcsel,
dmask => dmask,
- timer_interrupt => timer_interrupt
+ timer_interrupt => timer_interrupt,
+ ifcap => ifcap
);
generic_displays : entity work.led_displays
diff --git a/peripherals/spwm/spwm.vhd b/peripherals/spwm/spwm.vhd
index 5f105edd..cfd8b4a1 100644
--- a/peripherals/spwm/spwm.vhd
+++ b/peripherals/spwm/spwm.vhd
@@ -13,8 +13,12 @@ entity spwm is
-- hardware input/output
clock : in std_logic;
reset : in std_logic;
+ sel_modulation : in std_logic;
sine_pwm1 : out std_logic;
-
+ sine_pwm2 : out std_logic;
+ sine_pwm3 : out std_logic;
+ sine_pwm4 : out std_logic;
+
-- Core data bus signals
daddress : in unsigned(DADDRESS_BUS_SIZE-1 downto 0);
ddata_w : in std_logic_vector(31 downto 0);
@@ -164,9 +168,121 @@ architecture RTL of spwm is
-6140, -5938, -5735, -5532, -5329, -5126, -4922, -4719, -4515, -4311,
-4107, -3902, -3698, -3493, -3289, -3084, -2879, -2673, -2468, -2263,
-2057, -1852, -1646, -1441, -1235, -1029, -823, -618, -412, -206);
+
+ constant sine_table_offset : sine_table_t := ( 0, -206, -412, -618, -823, -1029, -1235, -1441, -1646, -1852,
+ -2057, -2263, -2468, -2673, -2879, -3084, -3289, -3493, -3698, -3902,
+ -4107, -4311, -4515, -4719, -4922, -5126, -5329, -5532, -5735, -5938,
+ -6140, -6342, -6544, -6746, -6947, -7148, -7349, -7549, -7749, -7949,
+ -8149, -8348, -8547, -8746, -8944, -9142, -9339, -9536, -9733, -9930,
+ -10126,-10321,-10516,-10711,-10905,-11099,-11293,-11486,-11679,-11871,
+ -12062,-12254,-12444,-12634,-12824,-13013,-13202,-13390,-13578,-13765,
+ -13952,-14138,-14323,-14508,-14692,-14876,-15059,-15242,-15424,-15605,
+ -15786,-15966,-16145,-16324,-16502,-16680,-16857,-17033,-17208,-17383,
+ -17557,-17731,-17904,-18076,-18247,-18418,-18588,-18757,-18925,-19093,
+ -19260,-19426,-19592,-19756,-19920,-20083,-20245,-20407,-20568,-20727,
+ -20886,-21045,-21202,-21359,-21514,-21669,-21823,-21976,-22129,-22280,
+ -22431,-22580,-22729,-22877,-23024,-23170,-23315,-23459,-23602,-23745,
+ -23886,-24027,-24166,-24305,-24442,-24579,-24715,-24849,-24983,-25116,
+ -25247,-25378,-25508,-25637,-25764,-25891,-26017,-26141,-26265,-26388,
+ -26509,-26630,-26749,-26867,-26985,-27101,-27216,-27330,-27443,-27555,
+ -27666,-27776,-27885,-27992,-28099,-28204,-28308,-28411,-28513,-28614,
+ -28714,-28813,-28910,-29006,-29102,-29196,-29289,-29380,-29471,-29560,
+ -29648,-29736,-29821,-29906,-29990,-30072,-30153,-30233,-30312,-30390,
+ -30466,-30541,-30615,-30688,-30759,-30830,-30899,-30967,-31034,-31099,
+ -31163,-31226,-31288,-31349,-31408,-31466,-31523,-31578,-31633,-31686,
+ -31738,-31788,-31837,-31886,-31932,-31978,-32022,-32065,-32107,-32147,
+ -32187,-32225,-32261,-32297,-32331,-32364,-32395,-32425,-32454,-32482,
+ -32509,-32534,-32558,-32580,-32602,-32622,-32640,-32658,-32674,-32689,
+ -32702,-32715,-32726,-32735,-32744,-32751,-32757,-32761,-32764,-32766,
+ -32767,-32766,-32764,-32761,-32757,-32751,-32744,-32735,-32726,-32715,
+ -32702,-32689,-32674,-32658,-32640,-32622,-32602,-32580,-32558,-32534,
+ -32509,-32482,-32454,-32425,-32395,-32364,-32331,-32297,-32261,-32225,
+ -32187,-32147,-32107,-32065,-32022,-31978,-31932,-31886,-31837,-31788,
+ -31738,-31686,-31633,-31578,-31523,-31466,-31408,-31349,-31288,-31226,
+ -31163,-31099,-31034,-30967,-30899,-30830,-30759,-30688,-30615,-30541,
+ -30466,-30390,-30312,-30233,-30153,-30072,-29990,-29906,-29821,-29736,
+ -29648,-29560,-29471,-29380,-29289,-29196,-29102,-29006,-28910,-28813,
+ -28714,-28614,-28513,-28411,-28308,-28204,-28099,-27992,-27885,-27776,
+ -27666,-27555,-27443,-27330,-27216,-27101,-26985,-26867,-26749,-26630,
+ -26509,-26388,-26265,-26141,-26017,-25891,-25764,-25637,-25508,-25378,
+ -25247,-25116,-24983,-24849,-24715,-24579,-24442,-24305,-24166,-24027,
+ -23886,-23745,-23602,-23459,-23315,-23170,-23024,-22877,-22729,-22580,
+ -22431,-22280,-22129,-21976,-21823,-21669,-21514,-21359,-21202,-21045,
+ -20886,-20727,-20568,-20407,-20245,-20083,-19920,-19756,-19592,-19426,
+ -19260,-19093,-18925,-18757,-18588,-18418,-18247,-18076,-17904,-17731,
+ -17557,-17383,-17208,-17033,-16857,-16680,-16502,-16324,-16145,-15966,
+ -15786,-15605,-15424,-15242,-15059,-14876,-14692,-14508,-14323,-14138,
+ -13952,-13765,-13578,-13390,-13202,-13013,-12824,-12634,-12444,-12254,
+ -12062,-11871,-11679,-11486,-11293,-11099,-10905,-10711,-10516,-10321,
+ -10126, -9930, -9733, -9536, -9339, -9142, -8944, -8746, -8547, -8348,
+ -8149, -7949, -7749, -7549, -7349, -7148, -6947, -6746, -6544, -6342,
+ -6140, -5938, -5735, -5532, -5329, -5126, -4922, -4719, -4515, -4311,
+ -4107, -3902, -3698, -3493, -3289, -3084, -2879, -2673, -2468, -2263,
+ -2057, -1852, -1646, -1441, -1235, -1029, -823, -618, -412, -206,
+ 0, 206, 412, 618, 823, 1029, 1235, 1441, 1646, 1852,
+ 2057, 2263, 2468, 2673, 2879, 3084, 3289, 3493, 3698, 3902,
+ 4107, 4311, 4515, 4719, 4922, 5126, 5329, 5532, 5735, 5938,
+ 6140, 6342, 6544, 6746, 6947, 7148, 7349, 7549, 7749, 7949,
+ 8149, 8348, 8547, 8746, 8944, 9142, 9339, 9536, 9733, 9930,
+ 10126, 10321, 10516, 10711, 10905, 11099, 11293, 11486, 11679, 11871,
+ 12062, 12254, 12444, 12634, 12824, 13013, 13202, 13390, 13578, 13765,
+ 13952, 14138, 14323, 14508, 14692, 14876, 15059, 15242, 15424, 15605,
+ 15786, 15966, 16145, 16324, 16502, 16680, 16857, 17033, 17208, 17383,
+ 17557, 17731, 17904, 18076, 18247, 18418, 18588, 18757, 18925, 19093,
+ 19260, 19426, 19592, 19756, 19920, 20083, 20245, 20407, 20568, 20727,
+ 20886, 21045, 21202, 21359, 21514, 21669, 21823, 21976, 22129, 22280,
+ 22431, 22580, 22729, 22877, 23024, 23170, 23315, 23459, 23602, 23745,
+ 23886, 24027, 24166, 24305, 24442, 24579, 24715, 24849, 24983, 25116,
+ 25247, 25378, 25508, 25637, 25764, 25891, 26017, 26141, 26265, 26388,
+ 26509, 26630, 26749, 26867, 26985, 27101, 27216, 27330, 27443, 27555,
+ 27666, 27776, 27885, 27992, 28099, 28204, 28308, 28411, 28513, 28614,
+ 28714, 28813, 28910, 29006, 29102, 29196, 29289, 29380, 29471, 29560,
+ 29648, 29736, 29821, 29906, 29990, 30072, 30153, 30233, 30312, 30390,
+ 30466, 30541, 30615, 30688, 30759, 30830, 30899, 30967, 31034, 31099,
+ 31163, 31226, 31288, 31349, 31408, 31466, 31523, 31578, 31633, 31686,
+ 31738, 31788, 31837, 31886, 31932, 31978, 32022, 32065, 32107, 32147,
+ 32187, 32225, 32261, 32297, 32331, 32364, 32395, 32425, 32454, 32482,
+ 32509, 32534, 32558, 32580, 32602, 32622, 32640, 32658, 32674, 32689,
+ 32702, 32715, 32726, 32735, 32744, 32751, 32757, 32761, 32764, 32766,
+ 32767, 32766, 32764, 32761, 32757, 32751, 32744, 32735, 32726, 32715,
+ 32702, 32689, 32674, 32658, 32640, 32622, 32602, 32580, 32558, 32534,
+ 32509, 32482, 32454, 32425, 32395, 32364, 32331, 32297, 32261, 32225,
+ 32187, 32147, 32107, 32065, 32022, 31978, 31932, 31886, 31837, 31788,
+ 31738, 31686, 31633, 31578, 31523, 31466, 31408, 31349, 31288, 31226,
+ 31163, 31099, 31034, 30967, 30899, 30830, 30759, 30688, 30615, 30541,
+ 30466, 30390, 30312, 30233, 30153, 30072, 29990, 29906, 29821, 29736,
+ 29648, 29560, 29471, 29380, 29289, 29196, 29102, 29006, 28910, 28813,
+ 28714, 28614, 28513, 28411, 28308, 28204, 28099, 27992, 27885, 27776,
+ 27666, 27555, 27443, 27330, 27216, 27101, 26985, 26867, 26749, 26630,
+ 26509, 26388, 26265, 26141, 26017, 25891, 25764, 25637, 25508, 25378,
+ 25247, 25116, 24983, 24849, 24715, 24579, 24442, 24305, 24166, 24027,
+ 23886, 23745, 23602, 23459, 23315, 23170, 23024, 22877, 22729, 22580,
+ 22431, 22280, 22129, 21976, 21823, 21669, 21514, 21359, 21202, 21045,
+ 20886, 20727, 20568, 20407, 20245, 20083, 19920, 19756, 19592, 19426,
+ 19260, 19093, 18925, 18757, 18588, 18418, 18247, 18076, 17904, 17731,
+ 17557, 17383, 17208, 17033, 16857, 16680, 16502, 16324, 16145, 15966,
+ 15786, 15605, 15424, 15242, 15059, 14876, 14692, 14508, 14323, 14138,
+ 13952, 13765, 13578, 13390, 13202, 13013, 12824, 12634, 12444, 12254,
+ 12062, 11871, 11679, 11486, 11293, 11099, 10905, 10711, 10516, 10321,
+ 10126, 9930, 9733, 9536, 9339, 9142, 8944, 8746, 8547, 8348,
+ 8149, 7949, 7749, 7549, 7349, 7148, 6947, 6746, 6544, 6342,
+ 6140, 5938, 5735, 5532, 5329, 5126, 4922, 4719, 4515, 4311,
+ 4107, 3902, 3698, 3493, 3289, 3084, 2879, 2673, 2468, 2263,
+ 2057, 1852, 1646, 1441, 1235, 1029, 823, 618, 412, 206);
+ --signal sine_table : sine_table_t;
+ --signal sine_table_offset : sine_table_t;
signal sine_value : signed(15 downto 0);
+ signal sine_offset_value : signed(15 downto 0);
signal sine_index : natural := sine_resolution-1;
+ signal sine_offset_index : natural := sine_resolution-1;
+
+ -- These lines works with Quartus. MIF is a Memory Initialization file
+ --attribute init_sine_file : string;
+ --attribute init_sine_offset_file : string;
+ -- Quartus uses Project folder to look for mif file.
+ --attribute init_sine_file of sine_table : signal is "../table_sine.mif";
+ --attribute init_sine_offset_file of sine_table_offset : signal is "../table_sine_offset.mif";
begin
@@ -273,6 +389,24 @@ begin
sine_value <= count_temp;
end process;
+ -- Processo que atualiza o valor de seno defasado
+ sine_offset_process: process (clk_sine, reset)
+ variable count_temp : signed(15 downto 0);
+ begin
+ if reset = '1' then
+ count_temp := (others => '0');
+ sine_offset_index <= 0;
+ elsif (rising_edge(clk_sine)) then
+ if sine_offset_index = sine_resolution-1 then
+ sine_offset_index <= 0;
+ else
+ count_temp := to_signed(sine_table_offset(sine_offset_index),16);
+ sine_offset_index <= sine_offset_index + 1;
+ end if;
+ end if;
+ sine_offset_value <= count_temp;
+ end process;
+
-- Processo que faz a contagem da moduladora
modulator_process: process (clk_mod, reset)
variable count_temp : signed(15 downto 0);
@@ -300,18 +434,49 @@ begin
mod_count <= count_temp;
end process;
--- Processo que comparada seno e moduladora
- spwm_process: process (clk_mod, reset)
- begin
- if reset = '1' then
- sine_pwm1 <= '0';
- elsif (rising_edge(clk_mod)) then
- if(sine_value > (scaling_factor*mod_count)) then
- sine_pwm1 <= '1';
- else
- sine_pwm1 <= '0';
- end if;
- end if;
- end process;
+ -- Processo que compara seno e moduladora
+ spwm_process: process (clk_mod, reset)
+ begin
+ if reset = '1' then
+ sine_pwm1 <= '0';
+ sine_pwm2 <= '0';
+ sine_pwm3 <= '0';
+ sine_pwm4 <= '0';
+ elsif rising_edge(clk_mod) then
+ if sel_modulation = '0' then -- Modulação Bipolar
+ if sine_value > (scaling_factor * mod_count) then
+ sine_pwm1 <= '1'; -- Sinal positivo
+ sine_pwm2 <= '0';
+ sine_pwm3 <= '1'; -- Complementar
+ sine_pwm4 <= '0';
+ else
+ sine_pwm1 <= '0';
+ sine_pwm2 <= '1'; -- Complementar
+ sine_pwm3 <= '0';
+ sine_pwm4 <= '1';
+ end if;
+ elsif sel_modulation = '1' then -- Modulação Unipolar
+ -- Tabela sine_value para os primeiros sinais (sem defasagem)
+ if sine_value > (scaling_factor * mod_count) then
+ sine_pwm1 <= '1'; -- Sinal positivo
+ sine_pwm2 <= '0';
+ else
+ sine_pwm1 <= '0';
+ sine_pwm2 <= '1'; -- Complementar
+ end if;
+
+ -- Tabela sine_offset_value para os sinais defasados (180 graus)
+ if sine_offset_value > (scaling_factor * mod_count) then
+ sine_pwm3 <= '1'; -- Sinal positivo
+ sine_pwm4 <= '0';
+ else
+ sine_pwm3 <= '0';
+ sine_pwm4 <= '1'; -- Complementar
+ end if;
+ end if;
+ end if;
+ end process;
+
+
end architecture RTL;
diff --git a/peripherals/spwm/spwm_example_unipolar.png b/peripherals/spwm/spwm_example_unipolar.png
new file mode 100644
index 00000000..59085a16
Binary files /dev/null and b/peripherals/spwm/spwm_example_unipolar.png differ
diff --git a/peripherals/spwm/table_sine.mif b/peripherals/spwm/table_sine.mif
new file mode 100644
index 00000000..af2b3791
--- /dev/null
+++ b/peripherals/spwm/table_sine.mif
@@ -0,0 +1,1025 @@
+-- Copyright (C) 2022 Intel Corporation. All rights reserved.
+-- Your use of Intel Corporation's design tools, logic functions
+-- and other software and tools, and any partner logic
+-- functions, and any output files from any of the foregoing
+-- (including device programming or simulation files), and any
+-- associated documentation or information are expressly subject
+-- to the terms and conditions of the Intel Program License
+-- Subscription Agreement, the Intel Quartus Prime License Agreement,
+-- the Intel FPGA IP License Agreement, or other applicable license
+-- agreement, including, without limitation, that your use is for
+-- the sole purpose of programming logic devices manufactured by
+-- Intel and sold by Intel or its authorized distributors. Please
+-- refer to the applicable agreement for further details, at
+-- https://fpgasoftware.intel.com/eula.
+
+-- Quartus Prime generated Memory Initialization File (.mif)
+
+WIDTH=16;
+DEPTH=1000;
+
+ADDRESS_RADIX=UNS;
+DATA_RADIX=UNS;
+
+CONTENT BEGIN
+ 0 : 0000;
+ 1 : 00CE;
+ 2 : 019C;
+ 3 : 026A;
+ 4 : 0337;
+ 5 : 0405;
+ 6 : 04D3;
+ 7 : 05A1;
+ 8 : 066E;
+ 9 : 073C;
+ 10 : 0809;
+ 11 : 08D7;
+ 12 : 09A4;
+ 13 : 0A71;
+ 14 : 0B3F;
+ 15 : 0C0C;
+ 16 : 0CD9;
+ 17 : 0DA5;
+ 18 : 0E72;
+ 19 : 0F3E;
+ 20 : 100B;
+ 21 : 10D7;
+ 22 : 11A3;
+ 23 : 126F;
+ 24 : 133A;
+ 25 : 1406;
+ 26 : 14D1;
+ 27 : 159C;
+ 28 : 1667;
+ 29 : 1732;
+ 30 : 17FC;
+ 31 : 18C6;
+ 32 : 1990;
+ 33 : 1A5A;
+ 34 : 1B23;
+ 35 : 1BEC;
+ 36 : 1CB5;
+ 37 : 1D7D;
+ 38 : 1E45;
+ 39 : 1F0D;
+ 40 : 1FD5;
+ 41 : 209C;
+ 42 : 2163;
+ 43 : 222A;
+ 44 : 22F0;
+ 45 : 23B6;
+ 46 : 247B;
+ 47 : 2540;
+ 48 : 2605;
+ 49 : 26CA;
+ 50 : 278E;
+ 51 : 2851;
+ 52 : 2914;
+ 53 : 29D7;
+ 54 : 2A99;
+ 55 : 2B5B;
+ 56 : 2C1D;
+ 57 : 2CDE;
+ 58 : 2D9F;
+ 59 : 2E5F;
+ 60 : 2F1E;
+ 61 : 2FDE;
+ 62 : 309C;
+ 63 : 315A;
+ 64 : 3218;
+ 65 : 32D5;
+ 66 : 3392;
+ 67 : 344E;
+ 68 : 350A;
+ 69 : 35C5;
+ 70 : 3680;
+ 71 : 373A;
+ 72 : 37F3;
+ 73 : 38AC;
+ 74 : 3964;
+ 75 : 3A1C;
+ 76 : 3AD3;
+ 77 : 3B8A;
+ 78 : 3C40;
+ 79 : 3CF5;
+ 80 : 3DAA;
+ 81 : 3E5E;
+ 82 : 3F11;
+ 83 : 3FC4;
+ 84 : 4076;
+ 85 : 4128;
+ 86 : 41D9;
+ 87 : 4289;
+ 88 : 4338;
+ 89 : 43E7;
+ 90 : 4495;
+ 91 : 4543;
+ 92 : 45F0;
+ 93 : 469C;
+ 94 : 4747;
+ 95 : 47F2;
+ 96 : 489C;
+ 97 : 4945;
+ 98 : 49ED;
+ 99 : 4A95;
+ 100 : 4B3C;
+ 101 : 4BE2;
+ 102 : 4C88;
+ 103 : 4D2C;
+ 104 : 4DD0;
+ 105 : 4E73;
+ 106 : 4F15;
+ 107 : 4FB7;
+ 108 : 5058;
+ 109 : 50F7;
+ 110 : 5196;
+ 111 : 5235;
+ 112 : 52D2;
+ 113 : 536F;
+ 114 : 540A;
+ 115 : 54A5;
+ 116 : 553F;
+ 117 : 55D8;
+ 118 : 5671;
+ 119 : 5708;
+ 120 : 579F;
+ 121 : 5834;
+ 122 : 58C9;
+ 123 : 595D;
+ 124 : 59F0;
+ 125 : 5A82;
+ 126 : 5B13;
+ 127 : 5BA3;
+ 128 : 5C32;
+ 129 : 5CC1;
+ 130 : 5D4E;
+ 131 : 5DDB;
+ 132 : 5E66;
+ 133 : 5EF1;
+ 134 : 5F7A;
+ 135 : 6003;
+ 136 : 608B;
+ 137 : 6111;
+ 138 : 6197;
+ 139 : 621C;
+ 140 : 629F;
+ 141 : 6322;
+ 142 : 63A4;
+ 143 : 6425;
+ 144 : 64A4;
+ 145 : 6523;
+ 146 : 65A1;
+ 147 : 661D;
+ 148 : 6699;
+ 149 : 6714;
+ 150 : 678D;
+ 151 : 6806;
+ 152 : 687D;
+ 153 : 68F3;
+ 154 : 6969;
+ 155 : 69DD;
+ 156 : 6A50;
+ 157 : 6AC2;
+ 158 : 6B33;
+ 159 : 6BA3;
+ 160 : 6C12;
+ 161 : 6C80;
+ 162 : 6CED;
+ 163 : 6D58;
+ 164 : 6DC3;
+ 165 : 6E2C;
+ 166 : 6E94;
+ 167 : 6EFB;
+ 168 : 6F61;
+ 169 : 6FC6;
+ 170 : 702A;
+ 171 : 708D;
+ 172 : 70EE;
+ 173 : 714E;
+ 174 : 71AE;
+ 175 : 720C;
+ 176 : 7269;
+ 177 : 72C4;
+ 178 : 731F;
+ 179 : 7378;
+ 180 : 73D0;
+ 181 : 7428;
+ 182 : 747D;
+ 183 : 74D2;
+ 184 : 7526;
+ 185 : 7578;
+ 186 : 75C9;
+ 187 : 7619;
+ 188 : 7668;
+ 189 : 76B6;
+ 190 : 7702;
+ 191 : 774D;
+ 192 : 7797;
+ 193 : 77E0;
+ 194 : 7827;
+ 195 : 786E;
+ 196 : 78B3;
+ 197 : 78F7;
+ 198 : 793A;
+ 199 : 797B;
+ 200 : 79BB;
+ 201 : 79FA;
+ 202 : 7A38;
+ 203 : 7A75;
+ 204 : 7AB0;
+ 205 : 7AEA;
+ 206 : 7B23;
+ 207 : 7B5A;
+ 208 : 7B91;
+ 209 : 7BC6;
+ 210 : 7BFA;
+ 211 : 7C2C;
+ 212 : 7C5D;
+ 213 : 7C8E;
+ 214 : 7CBC;
+ 215 : 7CEA;
+ 216 : 7D16;
+ 217 : 7D41;
+ 218 : 7D6B;
+ 219 : 7D93;
+ 220 : 7DBB;
+ 221 : 7DE1;
+ 222 : 7E05;
+ 223 : 7E29;
+ 224 : 7E4B;
+ 225 : 7E6C;
+ 226 : 7E8B;
+ 227 : 7EA9;
+ 228 : 7EC6;
+ 229 : 7EE2;
+ 230 : 7EFD;
+ 231 : 7F16;
+ 232 : 7F2E;
+ 233 : 7F44;
+ 234 : 7F5A;
+ 235 : 7F6E;
+ 236 : 7F80;
+ 237 : 7F92;
+ 238 : 7FA2;
+ 239 : 7FB1;
+ 240 : 7FBE;
+ 241 : 7FCB;
+ 242 : 7FD6;
+ 243 : 7FDF;
+ 244 : 7FE8;
+ 245 : 7FEF;
+ 246 : 7FF5;
+ 247 : 7FF9;
+ 248 : 7FFC;
+ 249 : 7FFE;
+ 250 : 7FFF;
+ 251 : 7FFE;
+ 252 : 7FFC;
+ 253 : 7FF9;
+ 254 : 7FF5;
+ 255 : 7FEF;
+ 256 : 7FE8;
+ 257 : 7FDF;
+ 258 : 7FD6;
+ 259 : 7FCB;
+ 260 : 7FBE;
+ 261 : 7FB1;
+ 262 : 7FA2;
+ 263 : 7F92;
+ 264 : 7F80;
+ 265 : 7F6E;
+ 266 : 7F5A;
+ 267 : 7F44;
+ 268 : 7F2E;
+ 269 : 7F16;
+ 270 : 7EFD;
+ 271 : 7EE2;
+ 272 : 7EC6;
+ 273 : 7EA9;
+ 274 : 7E8B;
+ 275 : 7E6C;
+ 276 : 7E4B;
+ 277 : 7E29;
+ 278 : 7E05;
+ 279 : 7DE1;
+ 280 : 7DBB;
+ 281 : 7D93;
+ 282 : 7D6B;
+ 283 : 7D41;
+ 284 : 7D16;
+ 285 : 7CEA;
+ 286 : 7CBC;
+ 287 : 7C8E;
+ 288 : 7C5D;
+ 289 : 7C2C;
+ 290 : 7BFA;
+ 291 : 7BC6;
+ 292 : 7B91;
+ 293 : 7B5A;
+ 294 : 7B23;
+ 295 : 7AEA;
+ 296 : 7AB0;
+ 297 : 7A75;
+ 298 : 7A38;
+ 299 : 79FA;
+ 300 : 79BB;
+ 301 : 797B;
+ 302 : 793A;
+ 303 : 78F7;
+ 304 : 78B3;
+ 305 : 786E;
+ 306 : 7827;
+ 307 : 77E0;
+ 308 : 7797;
+ 309 : 774D;
+ 310 : 7702;
+ 311 : 76B6;
+ 312 : 7668;
+ 313 : 7619;
+ 314 : 75C9;
+ 315 : 7578;
+ 316 : 7526;
+ 317 : 74D2;
+ 318 : 747D;
+ 319 : 7428;
+ 320 : 73D0;
+ 321 : 7378;
+ 322 : 731F;
+ 323 : 72C4;
+ 324 : 7269;
+ 325 : 720C;
+ 326 : 71AE;
+ 327 : 714E;
+ 328 : 70EE;
+ 329 : 708D;
+ 330 : 702A;
+ 331 : 6FC6;
+ 332 : 6F61;
+ 333 : 6EFB;
+ 334 : 6E94;
+ 335 : 6E2C;
+ 336 : 6DC3;
+ 337 : 6D58;
+ 338 : 6CED;
+ 339 : 6C80;
+ 340 : 6C12;
+ 341 : 6BA3;
+ 342 : 6B33;
+ 343 : 6AC2;
+ 344 : 6A50;
+ 345 : 69DD;
+ 346 : 6969;
+ 347 : 68F3;
+ 348 : 687D;
+ 349 : 6806;
+ 350 : 678D;
+ 351 : 6714;
+ 352 : 6699;
+ 353 : 661D;
+ 354 : 65A1;
+ 355 : 6523;
+ 356 : 64A4;
+ 357 : 6425;
+ 358 : 63A4;
+ 359 : 6322;
+ 360 : 629F;
+ 361 : 621C;
+ 362 : 6197;
+ 363 : 6111;
+ 364 : 608B;
+ 365 : 6003;
+ 366 : 5F7A;
+ 367 : 5EF1;
+ 368 : 5E66;
+ 369 : 5DDB;
+ 370 : 5D4E;
+ 371 : 5CC1;
+ 372 : 5C32;
+ 373 : 5BA3;
+ 374 : 5B13;
+ 375 : 5A82;
+ 376 : 59F0;
+ 377 : 595D;
+ 378 : 58C9;
+ 379 : 5834;
+ 380 : 579F;
+ 381 : 5708;
+ 382 : 5671;
+ 383 : 55D8;
+ 384 : 553F;
+ 385 : 54A5;
+ 386 : 540A;
+ 387 : 536F;
+ 388 : 52D2;
+ 389 : 5235;
+ 390 : 5196;
+ 391 : 50F7;
+ 392 : 5058;
+ 393 : 4FB7;
+ 394 : 4F15;
+ 395 : 4E73;
+ 396 : 4DD0;
+ 397 : 4D2C;
+ 398 : 4C88;
+ 399 : 4BE2;
+ 400 : 4B3C;
+ 401 : 4A95;
+ 402 : 49ED;
+ 403 : 4945;
+ 404 : 489C;
+ 405 : 47F2;
+ 406 : 4747;
+ 407 : 469C;
+ 408 : 45F0;
+ 409 : 4543;
+ 410 : 4495;
+ 411 : 43E7;
+ 412 : 4338;
+ 413 : 4289;
+ 414 : 41D9;
+ 415 : 4128;
+ 416 : 4076;
+ 417 : 3FC4;
+ 418 : 3F11;
+ 419 : 3E5E;
+ 420 : 3DAA;
+ 421 : 3CF5;
+ 422 : 3C40;
+ 423 : 3B8A;
+ 424 : 3AD3;
+ 425 : 3A1C;
+ 426 : 3964;
+ 427 : 38AC;
+ 428 : 37F3;
+ 429 : 373A;
+ 430 : 3680;
+ 431 : 35C5;
+ 432 : 350A;
+ 433 : 344E;
+ 434 : 3392;
+ 435 : 32D5;
+ 436 : 3218;
+ 437 : 315A;
+ 438 : 309C;
+ 439 : 2FDE;
+ 440 : 2F1E;
+ 441 : 2E5F;
+ 442 : 2D9F;
+ 443 : 2CDE;
+ 444 : 2C1D;
+ 445 : 2B5B;
+ 446 : 2A99;
+ 447 : 29D7;
+ 448 : 2914;
+ 449 : 2851;
+ 450 : 278E;
+ 451 : 26CA;
+ 452 : 2605;
+ 453 : 2540;
+ 454 : 247B;
+ 455 : 23B6;
+ 456 : 22F0;
+ 457 : 222A;
+ 458 : 2163;
+ 459 : 209C;
+ 460 : 1FD5;
+ 461 : 1F0D;
+ 462 : 1E45;
+ 463 : 1D7D;
+ 464 : 1CB5;
+ 465 : 1BEC;
+ 466 : 1B23;
+ 467 : 1A5A;
+ 468 : 1990;
+ 469 : 18C6;
+ 470 : 17FC;
+ 471 : 1732;
+ 472 : 1667;
+ 473 : 159C;
+ 474 : 14D1;
+ 475 : 1406;
+ 476 : 133A;
+ 477 : 126F;
+ 478 : 11A3;
+ 479 : 10D7;
+ 480 : 100B;
+ 481 : 0F3E;
+ 482 : 0E72;
+ 483 : 0DA5;
+ 484 : 0CD9;
+ 485 : 0C0C;
+ 486 : 0B3F;
+ 487 : 0A71;
+ 488 : 09A4;
+ 489 : 08D7;
+ 490 : 0809;
+ 491 : 073C;
+ 492 : 066E;
+ 493 : 05A1;
+ 494 : 04D3;
+ 495 : 0405;
+ 496 : 0337;
+ 497 : 026A;
+ 498 : 019C;
+ 499 : 00CE;
+ 500 : 0000;
+ 501 : FF32;
+ 502 : FE64;
+ 503 : FD96;
+ 504 : FCC9;
+ 505 : FBFB;
+ 506 : FB2D;
+ 507 : FA5F;
+ 508 : F992;
+ 509 : F8C4;
+ 510 : F7F7;
+ 511 : F729;
+ 512 : F65C;
+ 513 : F58F;
+ 514 : F4C1;
+ 515 : F3F4;
+ 516 : F327;
+ 517 : F25B;
+ 518 : F18E;
+ 519 : F0C2;
+ 520 : EFF5;
+ 521 : EF29;
+ 522 : EE5D;
+ 523 : ED91;
+ 524 : ECC6;
+ 525 : EBFA;
+ 526 : EB2F;
+ 527 : EA64;
+ 528 : E999;
+ 529 : E8CE;
+ 530 : E804;
+ 531 : E73A;
+ 532 : E670;
+ 533 : E5A6;
+ 534 : E4DD;
+ 535 : E414;
+ 536 : E34B;
+ 537 : E283;
+ 538 : E1BB;
+ 539 : E0F3;
+ 540 : E02B;
+ 541 : DF64;
+ 542 : DE9D;
+ 543 : DDD6;
+ 544 : DD10;
+ 545 : DC4A;
+ 546 : DB85;
+ 547 : DAC0;
+ 548 : D9FB;
+ 549 : D936;
+ 550 : D872;
+ 551 : D7AF;
+ 552 : D6EC;
+ 553 : D629;
+ 554 : D567;
+ 555 : D4A5;
+ 556 : D3E3;
+ 557 : D322;
+ 558 : D261;
+ 559 : D1A1;
+ 560 : D0E2;
+ 561 : D022;
+ 562 : CF64;
+ 563 : CEA6;
+ 564 : CDE8;
+ 565 : CD2B;
+ 566 : CC6E;
+ 567 : CBB2;
+ 568 : CAF6;
+ 569 : CA3B;
+ 570 : C980;
+ 571 : C8C6;
+ 572 : C80D;
+ 573 : C754;
+ 574 : C69C;
+ 575 : C5E4;
+ 576 : C52D;
+ 577 : C476;
+ 578 : C3C0;
+ 579 : C30B;
+ 580 : C256;
+ 581 : C1A2;
+ 582 : C0EF;
+ 583 : C03C;
+ 584 : BF8A;
+ 585 : BED8;
+ 586 : BE27;
+ 587 : BD77;
+ 588 : BCC8;
+ 589 : BC19;
+ 590 : BB6B;
+ 591 : BABD;
+ 592 : BA10;
+ 593 : B964;
+ 594 : B8B9;
+ 595 : B80E;
+ 596 : B764;
+ 597 : B6BB;
+ 598 : B613;
+ 599 : B56B;
+ 600 : B4C4;
+ 601 : B41E;
+ 602 : B378;
+ 603 : B2D4;
+ 604 : B230;
+ 605 : B18D;
+ 606 : B0EB;
+ 607 : B049;
+ 608 : AFA8;
+ 609 : AF09;
+ 610 : AE6A;
+ 611 : ADCB;
+ 612 : AD2E;
+ 613 : AC91;
+ 614 : ABF6;
+ 615 : AB5B;
+ 616 : AAC1;
+ 617 : AA28;
+ 618 : A98F;
+ 619 : A8F8;
+ 620 : A861;
+ 621 : A7CC;
+ 622 : A737;
+ 623 : A6A3;
+ 624 : A610;
+ 625 : A57E;
+ 626 : A4ED;
+ 627 : A45D;
+ 628 : A3CE;
+ 629 : A33F;
+ 630 : A2B2;
+ 631 : A225;
+ 632 : A19A;
+ 633 : A10F;
+ 634 : A086;
+ 635 : 9FFD;
+ 636 : 9F75;
+ 637 : 9EEF;
+ 638 : 9E69;
+ 639 : 9DE4;
+ 640 : 9D61;
+ 641 : 9CDE;
+ 642 : 9C5C;
+ 643 : 9BDB;
+ 644 : 9B5C;
+ 645 : 9ADD;
+ 646 : 9A5F;
+ 647 : 99E3;
+ 648 : 9967;
+ 649 : 98EC;
+ 650 : 9873;
+ 651 : 97FA;
+ 652 : 9783;
+ 653 : 970D;
+ 654 : 9697;
+ 655 : 9623;
+ 656 : 95B0;
+ 657 : 953E;
+ 658 : 94CD;
+ 659 : 945D;
+ 660 : 93EE;
+ 661 : 9380;
+ 662 : 9313;
+ 663 : 92A8;
+ 664 : 923D;
+ 665 : 91D4;
+ 666 : 916C;
+ 667 : 9105;
+ 668 : 909F;
+ 669 : 903A;
+ 670 : 8FD6;
+ 671 : 8F73;
+ 672 : 8F12;
+ 673 : 8EB2;
+ 674 : 8E52;
+ 675 : 8DF4;
+ 676 : 8D97;
+ 677 : 8D3C;
+ 678 : 8CE1;
+ 679 : 8C88;
+ 680 : 8C30;
+ 681 : 8BD8;
+ 682 : 8B83;
+ 683 : 8B2E;
+ 684 : 8ADA;
+ 685 : 8A88;
+ 686 : 8A37;
+ 687 : 89E7;
+ 688 : 8998;
+ 689 : 894A;
+ 690 : 88FE;
+ 691 : 88B3;
+ 692 : 8869;
+ 693 : 8820;
+ 694 : 87D9;
+ 695 : 8792;
+ 696 : 874D;
+ 697 : 8709;
+ 698 : 86C6;
+ 699 : 8685;
+ 700 : 8645;
+ 701 : 8606;
+ 702 : 85C8;
+ 703 : 858B;
+ 704 : 8550;
+ 705 : 8516;
+ 706 : 84DD;
+ 707 : 84A6;
+ 708 : 846F;
+ 709 : 843A;
+ 710 : 8406;
+ 711 : 83D4;
+ 712 : 83A3;
+ 713 : 8372;
+ 714 : 8344;
+ 715 : 8316;
+ 716 : 82EA;
+ 717 : 82BF;
+ 718 : 8295;
+ 719 : 826D;
+ 720 : 8245;
+ 721 : 821F;
+ 722 : 81FB;
+ 723 : 81D7;
+ 724 : 81B5;
+ 725 : 8194;
+ 726 : 8175;
+ 727 : 8157;
+ 728 : 813A;
+ 729 : 811E;
+ 730 : 8103;
+ 731 : 80EA;
+ 732 : 80D2;
+ 733 : 80BC;
+ 734 : 80A6;
+ 735 : 8092;
+ 736 : 8080;
+ 737 : 806E;
+ 738 : 805E;
+ 739 : 804F;
+ 740 : 8042;
+ 741 : 8035;
+ 742 : 802A;
+ 743 : 8021;
+ 744 : 8018;
+ 745 : 8011;
+ 746 : 800B;
+ 747 : 8007;
+ 748 : 8004;
+ 749 : 8002;
+ 750 : 8001;
+ 751 : 8002;
+ 752 : 8004;
+ 753 : 8007;
+ 754 : 800B;
+ 755 : 8011;
+ 756 : 8018;
+ 757 : 8021;
+ 758 : 802A;
+ 759 : 8035;
+ 760 : 8042;
+ 761 : 804F;
+ 762 : 805E;
+ 763 : 806E;
+ 764 : 8080;
+ 765 : 8092;
+ 766 : 80A6;
+ 767 : 80BC;
+ 768 : 80D2;
+ 769 : 80EA;
+ 770 : 8103;
+ 771 : 811E;
+ 772 : 813A;
+ 773 : 8157;
+ 774 : 8175;
+ 775 : 8194;
+ 776 : 81B5;
+ 777 : 81D7;
+ 778 : 81FB;
+ 779 : 821F;
+ 780 : 8245;
+ 781 : 826D;
+ 782 : 8295;
+ 783 : 82BF;
+ 784 : 82EA;
+ 785 : 8316;
+ 786 : 8344;
+ 787 : 8372;
+ 788 : 83A3;
+ 789 : 83D4;
+ 790 : 8406;
+ 791 : 843A;
+ 792 : 846F;
+ 793 : 84A6;
+ 794 : 84DD;
+ 795 : 8516;
+ 796 : 8550;
+ 797 : 858B;
+ 798 : 85C8;
+ 799 : 8606;
+ 800 : 8645;
+ 801 : 8685;
+ 802 : 86C6;
+ 803 : 8709;
+ 804 : 874D;
+ 805 : 8792;
+ 806 : 87D9;
+ 807 : 8820;
+ 808 : 8869;
+ 809 : 88B3;
+ 810 : 88FE;
+ 811 : 894A;
+ 812 : 8998;
+ 813 : 89E7;
+ 814 : 8A37;
+ 815 : 8A88;
+ 816 : 8ADA;
+ 817 : 8B2E;
+ 818 : 8B83;
+ 819 : 8BD8;
+ 820 : 8C30;
+ 821 : 8C88;
+ 822 : 8CE1;
+ 823 : 8D3C;
+ 824 : 8D97;
+ 825 : 8DF4;
+ 826 : 8E52;
+ 827 : 8EB2;
+ 828 : 8F12;
+ 829 : 8F73;
+ 830 : 8FD6;
+ 831 : 903A;
+ 832 : 909F;
+ 833 : 9105;
+ 834 : 916C;
+ 835 : 91D4;
+ 836 : 923D;
+ 837 : 92A8;
+ 838 : 9313;
+ 839 : 9380;
+ 840 : 93EE;
+ 841 : 945D;
+ 842 : 94CD;
+ 843 : 953E;
+ 844 : 95B0;
+ 845 : 9623;
+ 846 : 9697;
+ 847 : 970D;
+ 848 : 9783;
+ 849 : 97FA;
+ 850 : 9873;
+ 851 : 98EC;
+ 852 : 9967;
+ 853 : 99E3;
+ 854 : 9A5F;
+ 855 : 9ADD;
+ 856 : 9B5C;
+ 857 : 9BDB;
+ 858 : 9C5C;
+ 859 : 9CDE;
+ 860 : 9D61;
+ 861 : 9DE4;
+ 862 : 9E69;
+ 863 : 9EEF;
+ 864 : 9F75;
+ 865 : 9FFD;
+ 866 : A086;
+ 867 : A10F;
+ 868 : A19A;
+ 869 : A225;
+ 870 : A2B2;
+ 871 : A33F;
+ 872 : A3CE;
+ 873 : A45D;
+ 874 : A4ED;
+ 875 : A57E;
+ 876 : A610;
+ 877 : A6A3;
+ 878 : A737;
+ 879 : A7CC;
+ 880 : A861;
+ 881 : A8F8;
+ 882 : A98F;
+ 883 : AA28;
+ 884 : AAC1;
+ 885 : AB5B;
+ 886 : ABF6;
+ 887 : AC91;
+ 888 : AD2E;
+ 889 : ADCB;
+ 890 : AE6A;
+ 891 : AF09;
+ 892 : AFA8;
+ 893 : B049;
+ 894 : B0EB;
+ 895 : B18D;
+ 896 : B230;
+ 897 : B2D4;
+ 898 : B378;
+ 899 : B41E;
+ 900 : B4C4;
+ 901 : B56B;
+ 902 : B613;
+ 903 : B6BB;
+ 904 : B764;
+ 905 : B80E;
+ 906 : B8B9;
+ 907 : B964;
+ 908 : BA10;
+ 909 : BABD;
+ 910 : BB6B;
+ 911 : BC19;
+ 912 : BCC8;
+ 913 : BD77;
+ 914 : BE27;
+ 915 : BED8;
+ 916 : BF8A;
+ 917 : C03C;
+ 918 : C0EF;
+ 919 : C1A2;
+ 920 : C256;
+ 921 : C30B;
+ 922 : C3C0;
+ 923 : C476;
+ 924 : C52D;
+ 925 : C5E4;
+ 926 : C69C;
+ 927 : C754;
+ 928 : C80D;
+ 929 : C8C6;
+ 930 : C980;
+ 931 : CA3B;
+ 932 : CAF6;
+ 933 : CBB2;
+ 934 : CC6E;
+ 935 : CD2B;
+ 936 : CDE8;
+ 937 : CEA6;
+ 938 : CF64;
+ 939 : D022;
+ 940 : D0E2;
+ 941 : D1A1;
+ 942 : D261;
+ 943 : D322;
+ 944 : D3E3;
+ 945 : D4A5;
+ 946 : D567;
+ 947 : D629;
+ 948 : D6EC;
+ 949 : D7AF;
+ 950 : D872;
+ 951 : D936;
+ 952 : D9FB;
+ 953 : DAC0;
+ 954 : DB85;
+ 955 : DC4A;
+ 956 : DD10;
+ 957 : DDD6;
+ 958 : DE9D;
+ 959 : DF64;
+ 960 : E02B;
+ 961 : E0F3;
+ 962 : E1BB;
+ 963 : E283;
+ 964 : E34B;
+ 965 : E414;
+ 966 : E4DD;
+ 967 : E5A6;
+ 968 : E670;
+ 969 : E73A;
+ 970 : E804;
+ 971 : E8CE;
+ 972 : E999;
+ 973 : EA64;
+ 974 : EB2F;
+ 975 : EBFA;
+ 976 : ECC6;
+ 977 : ED91;
+ 978 : EE5D;
+ 979 : EF29;
+ 980 : EFF5;
+ 981 : F0C2;
+ 982 : F18E;
+ 983 : F25B;
+ 984 : F327;
+ 985 : F3F4;
+ 986 : F4C1;
+ 987 : F58F;
+ 988 : F65C;
+ 989 : F729;
+ 990 : F7F7;
+ 991 : F8C4;
+ 992 : F992;
+ 993 : FA5F;
+ 994 : FB2D;
+ 995 : FBFB;
+ 996 : FCC9;
+ 997 : FD96;
+ 998 : FE64;
+ 999 : FF32;
+END;
diff --git a/peripherals/spwm/table_sine_offset.mif b/peripherals/spwm/table_sine_offset.mif
new file mode 100644
index 00000000..653b1b36
--- /dev/null
+++ b/peripherals/spwm/table_sine_offset.mif
@@ -0,0 +1,1025 @@
+-- Copyright (C) 2022 Intel Corporation. All rights reserved.
+-- Your use of Intel Corporation's design tools, logic functions
+-- and other software and tools, and any partner logic
+-- functions, and any output files from any of the foregoing
+-- (including device programming or simulation files), and any
+-- associated documentation or information are expressly subject
+-- to the terms and conditions of the Intel Program License
+-- Subscription Agreement, the Intel Quartus Prime License Agreement,
+-- the Intel FPGA IP License Agreement, or other applicable license
+-- agreement, including, without limitation, that your use is for
+-- the sole purpose of programming logic devices manufactured by
+-- Intel and sold by Intel or its authorized distributors. Please
+-- refer to the applicable agreement for further details, at
+-- https://fpgasoftware.intel.com/eula.
+
+-- Quartus Prime generated Memory Initialization File (.mif)
+
+WIDTH=16;
+DEPTH=1000;
+
+ADDRESS_RADIX=UNS;
+DATA_RADIX=UNS;
+
+CONTENT BEGIN
+ 0 : 0000;
+ 1 : FF32;
+ 2 : FE64;
+ 3 : FD96;
+ 4 : FCC9;
+ 5 : FBFB;
+ 6 : FB2D;
+ 7 : FA5F;
+ 8 : F992;
+ 9 : F8C4;
+ 10 : F7F7;
+ 11 : F729;
+ 12 : F65C;
+ 13 : F58F;
+ 14 : F4C1;
+ 15 : F3F4;
+ 16 : F327;
+ 17 : F25B;
+ 18 : F18E;
+ 19 : F0C2;
+ 20 : EFF5;
+ 21 : EF29;
+ 22 : EE5D;
+ 23 : ED91;
+ 24 : ECC6;
+ 25 : EBFA;
+ 26 : EB2F;
+ 27 : EA64;
+ 28 : E999;
+ 29 : E8CE;
+ 30 : E804;
+ 31 : E73A;
+ 32 : E670;
+ 33 : E5A6;
+ 34 : E4DD;
+ 35 : E414;
+ 36 : E34B;
+ 37 : E283;
+ 38 : E1BB;
+ 39 : E0F3;
+ 40 : E02B;
+ 41 : DF64;
+ 42 : DE9D;
+ 43 : DDD6;
+ 44 : DD10;
+ 45 : DC4A;
+ 46 : DB85;
+ 47 : DAC0;
+ 48 : D9FB;
+ 49 : D936;
+ 50 : D872;
+ 51 : D7AF;
+ 52 : D6EC;
+ 53 : D629;
+ 54 : D567;
+ 55 : D4A5;
+ 56 : D3E3;
+ 57 : D322;
+ 58 : D261;
+ 59 : D1A1;
+ 60 : D0E2;
+ 61 : D022;
+ 62 : CF64;
+ 63 : CEA6;
+ 64 : CDE8;
+ 65 : CD2B;
+ 66 : CC6E;
+ 67 : CBB2;
+ 68 : CAF6;
+ 69 : CA3B;
+ 70 : C980;
+ 71 : C8C6;
+ 72 : C80D;
+ 73 : C754;
+ 74 : C69C;
+ 75 : C5E4;
+ 76 : C52D;
+ 77 : C476;
+ 78 : C3C0;
+ 79 : C30B;
+ 80 : C256;
+ 81 : C1A2;
+ 82 : C0EF;
+ 83 : C03C;
+ 84 : BF8A;
+ 85 : BED8;
+ 86 : BE27;
+ 87 : BD77;
+ 88 : BCC8;
+ 89 : BC19;
+ 90 : BB6B;
+ 91 : BABD;
+ 92 : BA10;
+ 93 : B964;
+ 94 : B8B9;
+ 95 : B80E;
+ 96 : B764;
+ 97 : B6BB;
+ 98 : B613;
+ 99 : B56B;
+ 100 : B4C4;
+ 101 : B41E;
+ 102 : B378;
+ 103 : B2D4;
+ 104 : B230;
+ 105 : B18D;
+ 106 : B0EB;
+ 107 : B049;
+ 108 : AFA8;
+ 109 : AF09;
+ 110 : AE6A;
+ 111 : ADCB;
+ 112 : AD2E;
+ 113 : AC91;
+ 114 : ABF6;
+ 115 : AB5B;
+ 116 : AAC1;
+ 117 : AA28;
+ 118 : A98F;
+ 119 : A8F8;
+ 120 : A861;
+ 121 : A7CC;
+ 122 : A737;
+ 123 : A6A3;
+ 124 : A610;
+ 125 : A57E;
+ 126 : A4ED;
+ 127 : A45D;
+ 128 : A3CE;
+ 129 : A33F;
+ 130 : A2B2;
+ 131 : A225;
+ 132 : A19A;
+ 133 : A10F;
+ 134 : A086;
+ 135 : 9FFD;
+ 136 : 9F75;
+ 137 : 9EEF;
+ 138 : 9E69;
+ 139 : 9DE4;
+ 140 : 9D61;
+ 141 : 9CDE;
+ 142 : 9C5C;
+ 143 : 9BDB;
+ 144 : 9B5C;
+ 145 : 9ADD;
+ 146 : 9A5F;
+ 147 : 99E3;
+ 148 : 9967;
+ 149 : 98EC;
+ 150 : 9873;
+ 151 : 97FA;
+ 152 : 9783;
+ 153 : 970D;
+ 154 : 9697;
+ 155 : 9623;
+ 156 : 95B0;
+ 157 : 953E;
+ 158 : 94CD;
+ 159 : 945D;
+ 160 : 93EE;
+ 161 : 9380;
+ 162 : 9313;
+ 163 : 92A8;
+ 164 : 923D;
+ 165 : 91D4;
+ 166 : 916C;
+ 167 : 9105;
+ 168 : 909F;
+ 169 : 903A;
+ 170 : 8FD6;
+ 171 : 8F73;
+ 172 : 8F12;
+ 173 : 8EB2;
+ 174 : 8E52;
+ 175 : 8DF4;
+ 176 : 8D97;
+ 177 : 8D3C;
+ 178 : 8CE1;
+ 179 : 8C88;
+ 180 : 8C30;
+ 181 : 8BD8;
+ 182 : 8B83;
+ 183 : 8B2E;
+ 184 : 8ADA;
+ 185 : 8A88;
+ 186 : 8A37;
+ 187 : 89E7;
+ 188 : 8998;
+ 189 : 894A;
+ 190 : 88FE;
+ 191 : 88B3;
+ 192 : 8869;
+ 193 : 8820;
+ 194 : 87D9;
+ 195 : 8792;
+ 196 : 874D;
+ 197 : 8709;
+ 198 : 86C6;
+ 199 : 8685;
+ 200 : 8645;
+ 201 : 8606;
+ 202 : 85C8;
+ 203 : 858B;
+ 204 : 8550;
+ 205 : 8516;
+ 206 : 84DD;
+ 207 : 84A6;
+ 208 : 846F;
+ 209 : 843A;
+ 210 : 8406;
+ 211 : 83D4;
+ 212 : 83A3;
+ 213 : 8372;
+ 214 : 8344;
+ 215 : 8316;
+ 216 : 82EA;
+ 217 : 82BF;
+ 218 : 8295;
+ 219 : 826D;
+ 220 : 8245;
+ 221 : 821F;
+ 222 : 81FB;
+ 223 : 81D7;
+ 224 : 81B5;
+ 225 : 8194;
+ 226 : 8175;
+ 227 : 8157;
+ 228 : 813A;
+ 229 : 811E;
+ 230 : 8103;
+ 231 : 80EA;
+ 232 : 80D2;
+ 233 : 80BC;
+ 234 : 80A6;
+ 235 : 8092;
+ 236 : 8080;
+ 237 : 806E;
+ 238 : 805E;
+ 239 : 804F;
+ 240 : 8042;
+ 241 : 8035;
+ 242 : 802A;
+ 243 : 8021;
+ 244 : 8018;
+ 245 : 8011;
+ 246 : 800B;
+ 247 : 8007;
+ 248 : 8004;
+ 249 : 8002;
+ 250 : 8001;
+ 251 : 8002;
+ 252 : 8004;
+ 253 : 8007;
+ 254 : 800B;
+ 255 : 8011;
+ 256 : 8018;
+ 257 : 8021;
+ 258 : 802A;
+ 259 : 8035;
+ 260 : 8042;
+ 261 : 804F;
+ 262 : 805E;
+ 263 : 806E;
+ 264 : 8080;
+ 265 : 8092;
+ 266 : 80A6;
+ 267 : 80BC;
+ 268 : 80D2;
+ 269 : 80EA;
+ 270 : 8103;
+ 271 : 811E;
+ 272 : 813A;
+ 273 : 8157;
+ 274 : 8175;
+ 275 : 8194;
+ 276 : 81B5;
+ 277 : 81D7;
+ 278 : 81FB;
+ 279 : 821F;
+ 280 : 8245;
+ 281 : 826D;
+ 282 : 8295;
+ 283 : 82BF;
+ 284 : 82EA;
+ 285 : 8316;
+ 286 : 8344;
+ 287 : 8372;
+ 288 : 83A3;
+ 289 : 83D4;
+ 290 : 8406;
+ 291 : 843A;
+ 292 : 846F;
+ 293 : 84A6;
+ 294 : 84DD;
+ 295 : 8516;
+ 296 : 8550;
+ 297 : 858B;
+ 298 : 85C8;
+ 299 : 8606;
+ 300 : 8645;
+ 301 : 8685;
+ 302 : 86C6;
+ 303 : 8709;
+ 304 : 874D;
+ 305 : 8792;
+ 306 : 87D9;
+ 307 : 8820;
+ 308 : 8869;
+ 309 : 88B3;
+ 310 : 88FE;
+ 311 : 894A;
+ 312 : 8998;
+ 313 : 89E7;
+ 314 : 8A37;
+ 315 : 8A88;
+ 316 : 8ADA;
+ 317 : 8B2E;
+ 318 : 8B83;
+ 319 : 8BD8;
+ 320 : 8C30;
+ 321 : 8C88;
+ 322 : 8CE1;
+ 323 : 8D3C;
+ 324 : 8D97;
+ 325 : 8DF4;
+ 326 : 8E52;
+ 327 : 8EB2;
+ 328 : 8F12;
+ 329 : 8F73;
+ 330 : 8FD6;
+ 331 : 903A;
+ 332 : 909F;
+ 333 : 9105;
+ 334 : 916C;
+ 335 : 91D4;
+ 336 : 923D;
+ 337 : 92A8;
+ 338 : 9313;
+ 339 : 9380;
+ 340 : 93EE;
+ 341 : 945D;
+ 342 : 94CD;
+ 343 : 953E;
+ 344 : 95B0;
+ 345 : 9623;
+ 346 : 9697;
+ 347 : 970D;
+ 348 : 9783;
+ 349 : 97FA;
+ 350 : 9873;
+ 351 : 98EC;
+ 352 : 9967;
+ 353 : 99E3;
+ 354 : 9A5F;
+ 355 : 9ADD;
+ 356 : 9B5C;
+ 357 : 9BDB;
+ 358 : 9C5C;
+ 359 : 9CDE;
+ 360 : 9D61;
+ 361 : 9DE4;
+ 362 : 9E69;
+ 363 : 9EEF;
+ 364 : 9F75;
+ 365 : 9FFD;
+ 366 : A086;
+ 367 : A10F;
+ 368 : A19A;
+ 369 : A225;
+ 370 : A2B2;
+ 371 : A33F;
+ 372 : A3CE;
+ 373 : A45D;
+ 374 : A4ED;
+ 375 : A57E;
+ 376 : A610;
+ 377 : A6A3;
+ 378 : A737;
+ 379 : A7CC;
+ 380 : A861;
+ 381 : A8F8;
+ 382 : A98F;
+ 383 : AA28;
+ 384 : AAC1;
+ 385 : AB5B;
+ 386 : ABF6;
+ 387 : AC91;
+ 388 : AD2E;
+ 389 : ADCB;
+ 390 : AE6A;
+ 391 : AF09;
+ 392 : AFA8;
+ 393 : B049;
+ 394 : B0EB;
+ 395 : B18D;
+ 396 : B230;
+ 397 : B2D4;
+ 398 : B378;
+ 399 : B41E;
+ 400 : B4C4;
+ 401 : B56B;
+ 402 : B613;
+ 403 : B6BB;
+ 404 : B764;
+ 405 : B80E;
+ 406 : B8B9;
+ 407 : B964;
+ 408 : BA10;
+ 409 : BABD;
+ 410 : BB6B;
+ 411 : BC19;
+ 412 : BCC8;
+ 413 : BD77;
+ 414 : BE27;
+ 415 : BED8;
+ 416 : BF8A;
+ 417 : C03C;
+ 418 : C0EF;
+ 419 : C1A2;
+ 420 : C256;
+ 421 : C30B;
+ 422 : C3C0;
+ 423 : C476;
+ 424 : C52D;
+ 425 : C5E4;
+ 426 : C69C;
+ 427 : C754;
+ 428 : C80D;
+ 429 : C8C6;
+ 430 : C980;
+ 431 : CA3B;
+ 432 : CAF6;
+ 433 : CBB2;
+ 434 : CC6E;
+ 435 : CD2B;
+ 436 : CDE8;
+ 437 : CEA6;
+ 438 : CF64;
+ 439 : D022;
+ 440 : D0E2;
+ 441 : D1A1;
+ 442 : D261;
+ 443 : D322;
+ 444 : D3E3;
+ 445 : D4A5;
+ 446 : D567;
+ 447 : D629;
+ 448 : D6EC;
+ 449 : D7AF;
+ 450 : D872;
+ 451 : D936;
+ 452 : D9FB;
+ 453 : DAC0;
+ 454 : DB85;
+ 455 : DC4A;
+ 456 : DD10;
+ 457 : DDD6;
+ 458 : DE9D;
+ 459 : DF64;
+ 460 : E02B;
+ 461 : E0F3;
+ 462 : E1BB;
+ 463 : E283;
+ 464 : E34B;
+ 465 : E414;
+ 466 : E4DD;
+ 467 : E5A6;
+ 468 : E670;
+ 469 : E73A;
+ 470 : E804;
+ 471 : E8CE;
+ 472 : E999;
+ 473 : EA64;
+ 474 : EB2F;
+ 475 : EBFA;
+ 476 : ECC6;
+ 477 : ED91;
+ 478 : EE5D;
+ 479 : EF29;
+ 480 : EFF5;
+ 481 : F0C2;
+ 482 : F18E;
+ 483 : F25B;
+ 484 : F327;
+ 485 : F3F4;
+ 486 : F4C1;
+ 487 : F58F;
+ 488 : F65C;
+ 489 : F729;
+ 490 : F7F7;
+ 491 : F8C4;
+ 492 : F992;
+ 493 : FA5F;
+ 494 : FB2D;
+ 495 : FBFB;
+ 496 : FCC9;
+ 497 : FD96;
+ 498 : FE64;
+ 499 : FF32;
+ 500 : 0000;
+ 501 : 00CE;
+ 502 : 019C;
+ 503 : 026A;
+ 504 : 0337;
+ 505 : 0405;
+ 506 : 04D3;
+ 507 : 05A1;
+ 508 : 066E;
+ 509 : 073C;
+ 510 : 0809;
+ 511 : 08D7;
+ 512 : 09A4;
+ 513 : 0A71;
+ 514 : 0B3F;
+ 515 : 0C0C;
+ 516 : 0CD9;
+ 517 : 0DA5;
+ 518 : 0E72;
+ 519 : 0F3E;
+ 520 : 100B;
+ 521 : 10D7;
+ 522 : 11A3;
+ 523 : 126F;
+ 524 : 133A;
+ 525 : 1406;
+ 526 : 14D1;
+ 527 : 159C;
+ 528 : 1667;
+ 529 : 1732;
+ 530 : 17FC;
+ 531 : 18C6;
+ 532 : 1990;
+ 533 : 1A5A;
+ 534 : 1B23;
+ 535 : 1BEC;
+ 536 : 1CB5;
+ 537 : 1D7D;
+ 538 : 1E45;
+ 539 : 1F0D;
+ 540 : 1FD5;
+ 541 : 209C;
+ 542 : 2163;
+ 543 : 222A;
+ 544 : 22F0;
+ 545 : 23B6;
+ 546 : 247B;
+ 547 : 2540;
+ 548 : 2605;
+ 549 : 26CA;
+ 550 : 278E;
+ 551 : 2851;
+ 552 : 2914;
+ 553 : 29D7;
+ 554 : 2A99;
+ 555 : 2B5B;
+ 556 : 2C1D;
+ 557 : 2CDE;
+ 558 : 2D9F;
+ 559 : 2E5F;
+ 560 : 2F1E;
+ 561 : 2FDE;
+ 562 : 309C;
+ 563 : 315A;
+ 564 : 3218;
+ 565 : 32D5;
+ 566 : 3392;
+ 567 : 344E;
+ 568 : 350A;
+ 569 : 35C5;
+ 570 : 3680;
+ 571 : 373A;
+ 572 : 37F3;
+ 573 : 38AC;
+ 574 : 3964;
+ 575 : 3A1C;
+ 576 : 3AD3;
+ 577 : 3B8A;
+ 578 : 3C40;
+ 579 : 3CF5;
+ 580 : 3DAA;
+ 581 : 3E5E;
+ 582 : 3F11;
+ 583 : 3FC4;
+ 584 : 4076;
+ 585 : 4128;
+ 586 : 41D9;
+ 587 : 4289;
+ 588 : 4338;
+ 589 : 43E7;
+ 590 : 4495;
+ 591 : 4543;
+ 592 : 45F0;
+ 593 : 469C;
+ 594 : 4747;
+ 595 : 47F2;
+ 596 : 489C;
+ 597 : 4945;
+ 598 : 49ED;
+ 599 : 4A95;
+ 600 : 4B3C;
+ 601 : 4BE2;
+ 602 : 4C88;
+ 603 : 4D2C;
+ 604 : 4DD0;
+ 605 : 4E73;
+ 606 : 4F15;
+ 607 : 4FB7;
+ 608 : 5058;
+ 609 : 50F7;
+ 610 : 5196;
+ 611 : 5235;
+ 612 : 52D2;
+ 613 : 536F;
+ 614 : 540A;
+ 615 : 54A5;
+ 616 : 553F;
+ 617 : 55D8;
+ 618 : 5671;
+ 619 : 5708;
+ 620 : 579F;
+ 621 : 5834;
+ 622 : 58C9;
+ 623 : 595D;
+ 624 : 59F0;
+ 625 : 5A82;
+ 626 : 5B13;
+ 627 : 5BA3;
+ 628 : 5C32;
+ 629 : 5CC1;
+ 630 : 5D4E;
+ 631 : 5DDB;
+ 632 : 5E66;
+ 633 : 5EF1;
+ 634 : 5F7A;
+ 635 : 6003;
+ 636 : 608B;
+ 637 : 6111;
+ 638 : 6197;
+ 639 : 621C;
+ 640 : 629F;
+ 641 : 6322;
+ 642 : 63A4;
+ 643 : 6425;
+ 644 : 64A4;
+ 645 : 6523;
+ 646 : 65A1;
+ 647 : 661D;
+ 648 : 6699;
+ 649 : 6714;
+ 650 : 678D;
+ 651 : 6806;
+ 652 : 687D;
+ 653 : 68F3;
+ 654 : 6969;
+ 655 : 69DD;
+ 656 : 6A50;
+ 657 : 6AC2;
+ 658 : 6B33;
+ 659 : 6BA3;
+ 660 : 6C12;
+ 661 : 6C80;
+ 662 : 6CED;
+ 663 : 6D58;
+ 664 : 6DC3;
+ 665 : 6E2C;
+ 666 : 6E94;
+ 667 : 6EFB;
+ 668 : 6F61;
+ 669 : 6FC6;
+ 670 : 702A;
+ 671 : 708D;
+ 672 : 70EE;
+ 673 : 714E;
+ 674 : 71AE;
+ 675 : 720C;
+ 676 : 7269;
+ 677 : 72C4;
+ 678 : 731F;
+ 679 : 7378;
+ 680 : 73D0;
+ 681 : 7428;
+ 682 : 747D;
+ 683 : 74D2;
+ 684 : 7526;
+ 685 : 7578;
+ 686 : 75C9;
+ 687 : 7619;
+ 688 : 7668;
+ 689 : 76B6;
+ 690 : 7702;
+ 691 : 774D;
+ 692 : 7797;
+ 693 : 77E0;
+ 694 : 7827;
+ 695 : 786E;
+ 696 : 78B3;
+ 697 : 78F7;
+ 698 : 793A;
+ 699 : 797B;
+ 700 : 79BB;
+ 701 : 79FA;
+ 702 : 7A38;
+ 703 : 7A75;
+ 704 : 7AB0;
+ 705 : 7AEA;
+ 706 : 7B23;
+ 707 : 7B5A;
+ 708 : 7B91;
+ 709 : 7BC6;
+ 710 : 7BFA;
+ 711 : 7C2C;
+ 712 : 7C5D;
+ 713 : 7C8E;
+ 714 : 7CBC;
+ 715 : 7CEA;
+ 716 : 7D16;
+ 717 : 7D41;
+ 718 : 7D6B;
+ 719 : 7D93;
+ 720 : 7DBB;
+ 721 : 7DE1;
+ 722 : 7E05;
+ 723 : 7E29;
+ 724 : 7E4B;
+ 725 : 7E6C;
+ 726 : 7E8B;
+ 727 : 7EA9;
+ 728 : 7EC6;
+ 729 : 7EE2;
+ 730 : 7EFD;
+ 731 : 7F16;
+ 732 : 7F2E;
+ 733 : 7F44;
+ 734 : 7F5A;
+ 735 : 7F6E;
+ 736 : 7F80;
+ 737 : 7F92;
+ 738 : 7FA2;
+ 739 : 7FB1;
+ 740 : 7FBE;
+ 741 : 7FCB;
+ 742 : 7FD6;
+ 743 : 7FDF;
+ 744 : 7FE8;
+ 745 : 7FEF;
+ 746 : 7FF5;
+ 747 : 7FF9;
+ 748 : 7FFC;
+ 749 : 7FFE;
+ 750 : 7FFF;
+ 751 : 7FFE;
+ 752 : 7FFC;
+ 753 : 7FF9;
+ 754 : 7FF5;
+ 755 : 7FEF;
+ 756 : 7FE8;
+ 757 : 7FDF;
+ 758 : 7FD6;
+ 759 : 7FCB;
+ 760 : 7FBE;
+ 761 : 7FB1;
+ 762 : 7FA2;
+ 763 : 7F92;
+ 764 : 7F80;
+ 765 : 7F6E;
+ 766 : 7F5A;
+ 767 : 7F44;
+ 768 : 7F2E;
+ 769 : 7F16;
+ 770 : 7EFD;
+ 771 : 7EE2;
+ 772 : 7EC6;
+ 773 : 7EA9;
+ 774 : 7E8B;
+ 775 : 7E6C;
+ 776 : 7E4B;
+ 777 : 7E29;
+ 778 : 7E05;
+ 779 : 7DE1;
+ 780 : 7DBB;
+ 781 : 7D93;
+ 782 : 7D6B;
+ 783 : 7D41;
+ 784 : 7D16;
+ 785 : 7CEA;
+ 786 : 7CBC;
+ 787 : 7C8E;
+ 788 : 7C5D;
+ 789 : 7C2C;
+ 790 : 7BFA;
+ 791 : 7BC6;
+ 792 : 7B91;
+ 793 : 7B5A;
+ 794 : 7B23;
+ 795 : 7AEA;
+ 796 : 7AB0;
+ 797 : 7A75;
+ 798 : 7A38;
+ 799 : 79FA;
+ 800 : 79BB;
+ 801 : 797B;
+ 802 : 793A;
+ 803 : 78F7;
+ 804 : 78B3;
+ 805 : 786E;
+ 806 : 7827;
+ 807 : 77E0;
+ 808 : 7797;
+ 809 : 774D;
+ 810 : 7702;
+ 811 : 76B6;
+ 812 : 7668;
+ 813 : 7619;
+ 814 : 75C9;
+ 815 : 7578;
+ 816 : 7526;
+ 817 : 74D2;
+ 818 : 747D;
+ 819 : 7428;
+ 820 : 73D0;
+ 821 : 7378;
+ 822 : 731F;
+ 823 : 72C4;
+ 824 : 7269;
+ 825 : 720C;
+ 826 : 71AE;
+ 827 : 714E;
+ 828 : 70EE;
+ 829 : 708D;
+ 830 : 702A;
+ 831 : 6FC6;
+ 832 : 6F61;
+ 833 : 6EFB;
+ 834 : 6E94;
+ 835 : 6E2C;
+ 836 : 6DC3;
+ 837 : 6D58;
+ 838 : 6CED;
+ 839 : 6C80;
+ 840 : 6C12;
+ 841 : 6BA3;
+ 842 : 6B33;
+ 843 : 6AC2;
+ 844 : 6A50;
+ 845 : 69DD;
+ 846 : 6969;
+ 847 : 68F3;
+ 848 : 687D;
+ 849 : 6806;
+ 850 : 678D;
+ 851 : 6714;
+ 852 : 6699;
+ 853 : 661D;
+ 854 : 65A1;
+ 855 : 6523;
+ 856 : 64A4;
+ 857 : 6425;
+ 858 : 63A4;
+ 859 : 6322;
+ 860 : 629F;
+ 861 : 621C;
+ 862 : 6197;
+ 863 : 6111;
+ 864 : 608B;
+ 865 : 6003;
+ 866 : 5F7A;
+ 867 : 5EF1;
+ 868 : 5E66;
+ 869 : 5DDB;
+ 870 : 5D4E;
+ 871 : 5CC1;
+ 872 : 5C32;
+ 873 : 5BA3;
+ 874 : 5B13;
+ 875 : 5A82;
+ 876 : 59F0;
+ 877 : 595D;
+ 878 : 58C9;
+ 879 : 5834;
+ 880 : 579F;
+ 881 : 5708;
+ 882 : 5671;
+ 883 : 55D8;
+ 884 : 553F;
+ 885 : 54A5;
+ 886 : 540A;
+ 887 : 536F;
+ 888 : 52D2;
+ 889 : 5235;
+ 890 : 5196;
+ 891 : 50F7;
+ 892 : 5058;
+ 893 : 4FB7;
+ 894 : 4F15;
+ 895 : 4E73;
+ 896 : 4DD0;
+ 897 : 4D2C;
+ 898 : 4C88;
+ 899 : 4BE2;
+ 900 : 4B3C;
+ 901 : 4A95;
+ 902 : 49ED;
+ 903 : 4945;
+ 904 : 489C;
+ 905 : 47F2;
+ 906 : 4747;
+ 907 : 469C;
+ 908 : 45F0;
+ 909 : 4543;
+ 910 : 4495;
+ 911 : 43E7;
+ 912 : 4338;
+ 913 : 4289;
+ 914 : 41D9;
+ 915 : 4128;
+ 916 : 4076;
+ 917 : 3FC4;
+ 918 : 3F11;
+ 919 : 3E5E;
+ 920 : 3DAA;
+ 921 : 3CF5;
+ 922 : 3C40;
+ 923 : 3B8A;
+ 924 : 3AD3;
+ 925 : 3A1C;
+ 926 : 3964;
+ 927 : 38AC;
+ 928 : 37F3;
+ 929 : 373A;
+ 930 : 3680;
+ 931 : 35C5;
+ 932 : 350A;
+ 933 : 344E;
+ 934 : 3392;
+ 935 : 32D5;
+ 936 : 3218;
+ 937 : 315A;
+ 938 : 309C;
+ 939 : 2FDE;
+ 940 : 2F1E;
+ 941 : 2E5F;
+ 942 : 2D9F;
+ 943 : 2CDE;
+ 944 : 2C1D;
+ 945 : 2B5B;
+ 946 : 2A99;
+ 947 : 29D7;
+ 948 : 2914;
+ 949 : 2851;
+ 950 : 278E;
+ 951 : 26CA;
+ 952 : 2605;
+ 953 : 2540;
+ 954 : 247B;
+ 955 : 23B6;
+ 956 : 22F0;
+ 957 : 222A;
+ 958 : 2163;
+ 959 : 209C;
+ 960 : 1FD5;
+ 961 : 1F0D;
+ 962 : 1E45;
+ 963 : 1D7D;
+ 964 : 1CB5;
+ 965 : 1BEC;
+ 966 : 1B23;
+ 967 : 1A5A;
+ 968 : 1990;
+ 969 : 18C6;
+ 970 : 17FC;
+ 971 : 1732;
+ 972 : 1667;
+ 973 : 159C;
+ 974 : 14D1;
+ 975 : 1406;
+ 976 : 133A;
+ 977 : 126F;
+ 978 : 11A3;
+ 979 : 10D7;
+ 980 : 100B;
+ 981 : 0F3E;
+ 982 : 0E72;
+ 983 : 0DA5;
+ 984 : 0CD9;
+ 985 : 0C0C;
+ 986 : 0B3F;
+ 987 : 0A71;
+ 988 : 09A4;
+ 989 : 08D7;
+ 990 : 0809;
+ 991 : 073C;
+ 992 : 066E;
+ 993 : 05A1;
+ 994 : 04D3;
+ 995 : 0405;
+ 996 : 0337;
+ 997 : 026A;
+ 998 : 019C;
+ 999 : 00CE;
+END;
diff --git a/peripherals/spwm/tb_spwm.do b/peripherals/spwm/tb_spwm.do
index 45eab3e1..61918cf1 100644
--- a/peripherals/spwm/tb_spwm.do
+++ b/peripherals/spwm/tb_spwm.do
@@ -160,7 +160,10 @@ add wave -label sine_freq -radix unsigned /spwm/sine_freq
add wave -label sine_clkdiv_top_value -radix unsigned /spwm/sine_clkdiv_top_value
add wave -label mod_freq -radix unsigned /spwm/mod_freq
add wave -label mod_clkdiv_top_value -radix unsigned /spwm/mod_clkdiv_top_value
-add wave -label spwm -radix binary /switching_sine
+add wave -label spwm1 -radix binary /switching_sine1
+add wave -label spwm2 -radix binary /switching_sine2
+add wave -label spwm3 -radix binary /switching_sine3
+add wave -label spwm4 -radix binary /switching_sine4
add wave -label clk_sine -radix binary /spwm/clk_sine
add wave -label sine_value -radix signed /spwm/sine_value
add wave -label clk_mod -radix binary /spwm/clk_mod
diff --git a/peripherals/spwm/tb_spwm.vhd b/peripherals/spwm/tb_spwm.vhd
index 62b82866..d9e16e97 100644
--- a/peripherals/spwm/tb_spwm.vhd
+++ b/peripherals/spwm/tb_spwm.vhd
@@ -88,8 +88,18 @@ architecture RTL of coretestbench is
signal ddata_r_lcd : std_logic_vector(31 downto 0);
signal ddata_r_nn_accelerator : std_logic_vector(31 downto 0);
signal ddata_r_fir_fil : std_logic_vector(31 downto 0);
-
- signal switching_sine : std_logic;
+ signal ddata_r_crc : std_logic_vector(31 downto 0);
+ signal ddata_r_key : std_logic_vector(31 downto 0);
+ signal ddata_r_accelerometer : std_logic_vector(31 downto 0);
+
+ signal ifcap :std_logic;
+
+ signal switching_sine1 : std_logic;
+ signal switching_sine2 : std_logic;
+ signal switching_sine3 : std_logic;
+ signal switching_sine4 : std_logic;
+ signal sel_modulation : std_logic;
+
begin
@@ -104,7 +114,11 @@ begin
port map(
clock => clk_32x,
reset => rst,
- sine_pwm1 => switching_sine,
+ sel_modulation => sel_modulation,
+ sine_pwm1 => switching_sine1,
+ sine_pwm2 => switching_sine2,
+ sine_pwm3 => switching_sine3,
+ sine_pwm4 => switching_sine4,
daddress => daddress,
ddata_w => ddata_w,
ddata_r => ddata_r_spwm,
@@ -142,7 +156,8 @@ begin
end process reset;
-- Connect gpio data to output hardware
- LEDR <= gpio_output(9 downto 0);
+ LEDR <= gpio_output(9 downto 0);
+ sel_modulation <= '0';
-- Connect input hardware to gpio data
gpio_test: process
@@ -231,10 +246,13 @@ begin
ddata_r_dif_fil => ddata_r_dif_fil,
ddata_r_spwm => ddata_r_spwm,
ddata_r_stepmot => ddata_r_stepmot,
- ddata_r_lcd => ddata_r_lcd,
- ddata_r_nn_accelerator => ddata_r_nn_accelerator,
- ddata_r_fir_fil => ddata_r_fir_fil,
- ddata_r_periph => ddata_r_periph
+ ddata_r_lcd => ddata_r_lcd,
+ ddata_r_nn_accelerator => ddata_r_nn_accelerator,
+ ddata_r_fir_fil => ddata_r_fir_fil,
+ ddata_r_periph => ddata_r_periph,
+ ddata_r_crc => ddata_r_crc,
+ ddata_r_key => ddata_r_key,
+ ddata_r_accelerometer => ddata_r_accelerometer
);
-- Softcore instatiation
@@ -281,7 +299,8 @@ begin
d_rd => d_rd,
dcsel => dcsel,
dmask => dmask,
- timer_interrupt => timer_interrupt
+ timer_interrupt => timer_interrupt,
+ ifcap => ifcap
);
-- Generic GPIO module instantiation
diff --git a/software/spwm/Makefile b/software/spwm/Makefile
index 51f9ef68..4f0d8f64 100644
--- a/software/spwm/Makefile
+++ b/software/spwm/Makefile
@@ -1,7 +1,7 @@
ifndef RISCV_TOOLS_PREFIX
# RISCV_TOOLS_PREFIX = riscv-none-embed-
# Para usar no LSC
-RISCV_TOOLS_PREFIX = ~/opt/xPacks/@xpack-dev-tools/riscv-none-embed-gcc/10.2.0-1.2.1/.content/bin/riscv-none-embed-
+RISCV_TOOLS_PREFIX = /var/data/aluno/riscv-multicycle-master/compiler/gcc/bin/riscv-none-embed-
endif
QUARTUS_DIR= ~/intelFPGA/quartus21.1/21.1/quartus/bin/
diff --git a/software/spwm/main_spwm.c b/software/spwm/main_spwm.c
index a1b64848..1cb903b0 100644
--- a/software/spwm/main_spwm.c
+++ b/software/spwm/main_spwm.c
@@ -13,20 +13,18 @@
#include "../gpio/gpio.h"
#include "spwm.h"
-// SPWM Variables
-uint32_t sine_frequency = 50;
-uint32_t modulator_frequency = 1000;
-uint32_t amplitude_ratio = 100; // %
-
void example_spwm(void){
- spwm_set_sine_frequency(sine_frequency);
- spwm_set_amplitude_modulation_ratio(amplitude_ratio);
-
- spwm_set_modulator_frequency(modulator_frequency);
+ spwm_set_sine_frequency(50);
+ spwm_set_amplitude_modulation_ratio(100);
+ spwm_set_modulator_frequency(1000);
}
int main(void){
+ // SPWM Variables
+ uint32_t sine_frequency = 50;
+ uint32_t modulator_frequency = 1000;
+ uint32_t amplitude_ratio = 100; // %
example_spwm();
@@ -44,4 +42,4 @@ int main(void){
// delay_(10000);
}
return 0;
-}
\ No newline at end of file
+}