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 +}