<?xml-stylesheet type="text/xsl" href="https://community.element14.com/cfs-file/__key/system/syndication/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Lattice iCE40UP5K-EVB Evaluation Board - Part 2: Using the DSP Multiplier</title><link>/technologies/fpga-group/b/blog/posts/lattice-ice40up5k-evb-evaluation-board---part-2-using-the-dsp-multiplier</link><description>Introduction
This is a follow-on from this blog and will make more sense if you read that one first. The hardware is exactly the same as in that previous blog, all I&amp;#39;m going to do with this one is adapt (hack might be a better word) the VHDL to perfo</description><dc:language>en-US</dc:language><generator>Telligent Community 12</generator><item><title>RE: Lattice iCE40UP5K-EVB Evaluation Board - Part 2: Using the DSP Multiplier</title><link>https://community.element14.com/technologies/fpga-group/b/blog/posts/lattice-ice40up5k-evb-evaluation-board---part-2-using-the-dsp-multiplier</link><pubDate>Sun, 19 Apr 2026 14:22:46 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:945974a6-316c-47b3-b406-1c55ba707e6b</guid><dc:creator>jc2048</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;I mentioned in the blog that what I was generating with my simple, single multiply of two signed quantities wasn&amp;#39;t straight amplitude modulation, but rather double-sideband, suppressed-carrier. Here I&amp;#39;ve reworked the VHDL to give some actual AM. This multiplies the envelope by 0.3, adds 0.5 to make it purely positive, and then multiplies it with the carrier.&lt;/p&gt;
&lt;p&gt;&lt;img alt=" " src="/resized-image/__size/1280x720/__key/commentfiles/f7d226abd59f475c9d224a79e3f0ec07-945974a6-316c-47b3-b406-1c55ba707e6b/TEK00038.PNG" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt=" " src="/resized-image/__size/1280x720/__key/commentfiles/f7d226abd59f475c9d224a79e3f0ec07-945974a6-316c-47b3-b406-1c55ba707e6b/TEK00039.PNG" /&gt;&lt;br /&gt;You can see now, from the FFT, that there&amp;#39;s a carrier (7kHz) and two sidebands, each spaced 440Hz away from the carrier.&lt;/p&gt;
&lt;p&gt;Here&amp;#39;s the VHDL&lt;/p&gt;
&lt;p&gt;[embed:dc8ab71f-3b98-42d9-b0f6-e21e02a0f8e2:e3e1f98d-2832-4b43-ae64-c4db32993e89:type=text&amp;text=----------------------------------------------------------------------%0D%0A--%20%20%20%20%20%20%20%20%20%20%20%20%20%20%2A%2A%2A%2A%2A%20ice40up5k_evn_test_mult.vhd%20%2A%2A%2A%2A%2A%20%20%20%20%20%20%20%20%20%20%20%20%20--%0D%0A--%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20--%0D%0A--%20Lattice%20ICE40UP5K%20evaluation%20board%20multiplier%20test.%20%20%20%20%20%20%20%20%20%20%20%20%20%20--%0D%0A--%20Generates%20fixed%20pair%20of%20CORDIC%2016-bit%20sine%20waves%2C%20multiplies%20them--%20%0D%0A--%20and%20formats%20result%20for%20an%20S%2FPDIF%20serial%20optical%20link.%20%20%20%20%20%20%20%20%20%20%20%20--%0D%0A--%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20--%0D%0A----------------------------------------------------------------------%0D%0A--%20%28C%292026%20Jon%20Clift%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20--%0D%0A--%20Free%20to%20use%20however%20you%20want.%20No%20warranty%20as%20to%20correctness.%20%20%20%20%20--%0D%0A--%20No%20guarantee%20of%20fitness%20for%20any%20purpose.%20No%20obligation%20to%20support--%0D%0A----------------------------------------------------------------------%0D%0A--%20Rev%20%20%20%20Date%20%20%20%20%20%20%20%20%20Comments%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20--%0D%0A--%2001%20%20%20%20%2025-Mar-2026%20%20based%20on%20ice40up5k_evn_test.vhd%20%20%20%20%20%20%20%20%20%20%20%20%20%20--%0D%0A--%2002%20%20%20%20%2012-Apr-2026%20%20hacked%20to%20give%20amplitude%20modulation%20%20%20%20%20%20%20%20%20%20--%0D%0A----------------------------------------------------------------------%0D%0A%0D%0Alibrary%20ieee%3B%20%0D%0Ause%20ieee.std_logic_1164.all%3B%0D%0Ause%20ieee.numeric_std.all%3B%0D%0Ause%20ieee.math_real.all%3B%0D%0A%0D%0Aentity%20ice40up5k_evn_test%20is%20port%28%0D%0A%20%20%20%20clk_12%3A%20%20%20%20%20%20%20%20%20%20%20%20in%20STD_LOGIC%3B%20%20%20%20%20%20%20%20%20%20---%20system%20clock%20in%20%28from%2012MHz%20oscillator%29%0D%0A%20%20%20%20clk_12_288%3A%20%20%20%20%20%20%20%20in%20STD_LOGIC%3B%20%20%20%20%20%20%20%20%20%20---%20clock%20in%20%28from%20my%2012.288MHz%20oscillator%29%0D%0A%20%20%20%20tp1%3A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20out%20STD_LOGIC%3B%20%20%20%20%20%20%20%20---%20scope%20trigger%20at%20start%20of%20frame%0D%0A%20%20%20%20spdif_out%3A%20%20%20%20%20%20%20%20%20out%20STD_LOGIC%29%3B%20%20%20%20%20%20%20%20---%20s%2Fpdif%20data%20stream%20%28to%20optical%20tx%29%0D%0Aend%20ice40up5k_evn_test%3B%0D%0A%0D%0Aarchitecture%20arch_ice40up5k_evn_test%20of%20ice40up5k_evn_test%20is%0D%0A%0D%0Aconstant%20sig_resol%3A%20POSITIVE%20%3A%3D%2016%3B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20---%20signal%20resolution%20%28bits%29%0D%0Aconstant%20pha_resol%3A%20POSITIVE%20%3A%3D%2032%3B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20---%20phase%20resolution%20%28bits%29%0D%0Asignal%20theta%3A%20SIGNED%28pha_resol-1%20downto%200%29%3B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20---%20phase%20accumulator%0D%0Asignal%20theta_left%3A%20SIGNED%28pha_resol-1%20downto%200%29%3B%20%20%20%20%20%20%20%20%20%20%20---%20left%20phase%20accumulator%0D%0Asignal%20theta_right%3A%20SIGNED%28pha_resol-1%20downto%200%29%3B%20%20%20%20%20%20%20%20%20%20---%20right%20phase%20accumulator%0D%0Asignal%20phase_increment_left%3A%20SIGNED%28pha_resol-1%20downto%200%29%3B%20---%20left%20phase%20increment%0D%0Asignal%20phase_increment_right%3A%20SIGNED%28pha_resol-1%20downto%200%29%3B%20---%20right%20phase%20increment%0D%0Asignal%20sine%3A%20SIGNED%28sig_resol-1%20downto%200%29%3B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20---%20CORDIC%20generated%20sine%0D%0Asignal%20cosine%3A%20SIGNED%28sig_resol-1%20downto%200%29%3B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20---%20CORDIC%20generaated%20cosine%0D%0Asignal%20sample_left%3A%20SIGNED%2815%20downto%200%29%3B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20---%20left%20sample%0D%0Asignal%20sample_right%3A%20SIGNED%2815%20downto%200%29%3B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20---%20right%20sample%0D%0Asignal%20sample_2%3A%20SIGNED%2815%20downto%200%29%3B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20---%20right%20sample%0D%0Asignal%20temp%3A%20SIGNED%2831%20downto%200%29%3B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20---%20%0D%0Asignal%20temp2%3A%20SIGNED%2831%20downto%200%29%3B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20---%20%0D%0Asignal%20mult_result%3A%20SIGNED%2831%20downto%200%29%3B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20---%20%0D%0Asignal%20sample_temp%3A%20SIGNED%2815%20downto%200%29%3B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20---%20%0D%0Asignal%20delay_i%3A%20STD_LOGIC%3B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20---%0D%0Asignal%20delay_o%3A%20STD_LOGIC%3B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20---%20%0D%0Asignal%20delay_o_1%3A%20STD_LOGIC%3B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20---%20%0D%0Asignal%20delay_o_2%3A%20STD_LOGIC%3B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20---%20%0D%0Asignal%20delay_o_3%3A%20STD_LOGIC%3B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20---%20%0D%0Asignal%20spdif_clk_en%3A%20STD_LOGIC%3B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20---%20%0D%0Asignal%20spdif_sample_en%3A%20STD_LOGIC%3B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20---%20%0D%0Asignal%20sample_en_del1%3A%20STD_LOGIC%3B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20---%20%0D%0Asignal%20sample_en_del2%3A%20STD_LOGIC%3B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20---%20%0D%0Asignal%20prescale_count%3A%20UNSIGNED%281%20downto%200%29%3B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20---%20%0D%0A%0D%0A---%20declare%20the%20s%2Fpdif%20output%20component%0D%0A%0D%0Acomponent%20spdif_out_component%20is%0D%0A%20%20%20%20generic%28%0D%0A%20%20%20%20%20%20%20%20in_res%3A%20POSITIVE%29%3B%20%20%20%20%20%20%20%20%20%20%20---%20audio%20sample%20resolution%0D%0A%20%20%20%20port%20%28%0D%0A%20%20%20%20%20%20%20%20clk_in%3A%20in%20STD_LOGIC%3B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20---%20clock%0D%0A%20%20%20%20%20%20%20%20clk_en%3A%20in%20STD_LOGIC%3B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20---%20clock%20enable%0D%0A%20%20%20%20%20%20%20%20l_data%3A%20in%20SIGNED%28in_res-1%20downto%200%29%3B%20%20%20%20%20%20%20%20%20%20%20---%20left%20audio%20data%20in%0D%0A%20%20%20%20%20%20%20%20r_data%3A%20in%20SIGNED%28in_res-1%20downto%200%29%3B%20%20%20%20%20%20%20%20%20%20%20---%20right%20audio%20data%20in%0D%0A%20%20%20%20%20%20%20%20next_sample_en%3A%20out%20STD_LOGIC%3B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20---%20trigger%20sample%20update%0D%0A%20%20%20%20%20%20%20%20spdif_data_out%3A%20out%20STD_LOGIC%29%3B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20---%20output%20bitstream%0D%0Aend%20component%3B%0D%0A%0D%0A---%20declare%20the%20CORDIC%20component%0D%0A%0D%0Acomponent%20cordic%20is%0D%0A%20%20%20%20generic%28%0D%0A%20%20%20%20%20%20%20%20input_resol%3A%20POSITIVE%3B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20---%20input%20resolution%0D%0A%20%20%20%20%20%20%20%20output_resol%3A%20POSITIVE%29%3B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20---%20output%20resolution%0D%0A%20%20%20%20port%28%0D%0A%20%20%20%20%20%20%20%20clk_in%3A%20in%20STD_LOGIC%3B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20---%20clock%20in%0D%0A%20%20%20%20%20%20%20%20delay_in%3A%20in%20STD_LOGIC%3B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20---%20delay%20in%0D%0A%20%20%20%20%20%20%20%20delay_out%3A%20out%20STD_LOGIC%3B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20---%20delay%20out%0D%0A%20%20%20%20%20%20%20%20theta%3A%20in%20SIGNED%28pha_resol-1%20downto%200%29%3B%20%20%20%20---%20phase%20in%0D%0A%20%20%20%20%20%20%20%20sine%3A%20out%20SIGNED%28sig_resol-1%20downto%200%29%3B%20%20%20%20---%20sine%20out%0D%0A%20%20%20%20%20%20%20%20cosine%3A%20out%20SIGNED%28sig_resol-1%20downto%200%29%29%3B%20---%20cosine%20out%0D%0Aend%20component%3B%0D%0A%0D%0Abegin%0D%0A%0D%0A%20%20%20%20---%20main%20process%0D%0A%20%20%20%20---%20runs%20two%20phase%20accumulators%20%28440Hz%20envelope%20and%207kHz%20carrier%29%0D%0A%20%20%20%20---%20CORDIC%20component%20calculates%20sine%20of%20each%0D%0A%09---%20first%20multiplier%20used%20to%20scale%20envelope%20%28to%20give%20lesss%20than%20100%25%20mod%29%2C%20and%20offset%20then%20added%20so%20that%20it%27s%20only%20positive%0D%0A%09---%20second%20multiplier%20then%20multiplies%20new%20envelope%20and%20carrier%20to%20generate%20amplitude%20modulation%0D%0A%20%20%20%20---%20result%20and%20envelope%20handed%20to%20spdif%20component%20for%20output%20formatting%0D%0A%09---%20%28putting%20envelope%20on%20other%20channel%20gives%20scope%20something%20sensible%20to%20trigger%20on%29%0D%0A%0D%0A%20%20%20%20evb_test_stuff%3A%20process%20%28clk_12_288%29%20is%0D%0A%20%20%20%20begin%0D%0A%0D%0A%20%20%20%20%20%20%20%20if%20%28clk_12_288%27event%20and%20clk_12_288%20%3D%20%271%27%29%20then%0D%0A%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20---%20divide%20clock%20by%202%20to%20run%20SPDIF%20at%206.144MHz%20for%2048ksps%0D%0A%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20if%28spdif_clk_en%20%3D%20%270%27%29%20then%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20spdif_clk_en%20%3C%3D%20%271%27%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20else%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20spdif_clk_en%20%3C%3D%20%270%27%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20end%20if%3B%0D%0A%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20%28spdif_sample_en%20%3D%20%271%27%29%20then%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20theta_left%20%3C%3D%20theta_left%20%2B%20phase_increment_left%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20theta_right%20%3C%3D%20theta_right%20%2B%20phase_increment_right%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20end%20if%3B%0D%0A%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20sample_en_del1%20%3C%3D%20spdif_sample_en%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20sample_en_del2%20%3C%3D%20sample_en_del1%3B%0D%0A%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20%28spdif_sample_en%20%3D%20%271%27%29%20then%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20delay_i%20%3C%3D%20%271%27%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20elsif%28sample_en_del2%20%3D%20%271%27%29%20then%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20delay_i%20%3C%3D%20%270%27%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20end%20if%3B%0D%0A%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20%28sample_en_del1%20%3D%20%271%27%29%20then%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20theta%20%3C%3D%20theta_right%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20else%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20theta%20%3C%3D%20theta_left%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20end%20if%3B%0D%0A%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20delay_o_1%20%3C%3D%20delay_o%3B%0D%0A%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20%28delay_o%20%3D%20%271%27%20and%20delay_o_1%20%3D%20%270%27%29%20then%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20sample_left%20%3C%3D%20sine%3B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20---%20put%20the%20envelope%20sine%20on%20one%20output%20for%20the%20scope%20to%20trigger%20on%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20temp%20%3C%3D%20sine%20%2A%20to_signed%289830%2C16%29%3B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20---%20x%200.3%20the%20envelope%20to%20reduce%20mod%20depth%0D%0A%09%09%09%09sample_temp%20%3C%3D%20temp%2831%20downto%2016%29%3B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20---%20because%20output%20of%20multiplier%20was%2032%20bits%20and%20we%20want%20the%20higher%2016%20bits%0D%0A%09%09%09%09delay_o_2%20%3C%3D%20%271%27%3B%0D%0A%09%09%09else%0D%0A%09%09%09%09delay_o_2%20%3C%3D%20%270%27%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20end%20if%3B%0D%0A%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20%28delay_o_2%20%3D%20%271%27%29%20then%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20sample_2%20%3C%3D%20sine%3B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20---%20pick%20up%20the%20carrier%20sine%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20sample_temp%20%3C%3D%20sample_temp%20%2B%20to_signed%2816384%2C16%29%3B%20%20%20---%20lift%20envelope%20by%20adding%20%2B0.5%20offset%2C%20so%20envelope%20is%20now%20all%20positive%0D%0A%09%09%09%09delay_o_3%20%3C%3D%20%271%27%3B%0D%0A%09%09%09else%0D%0A%09%09%09%09delay_o_3%20%3C%3D%20%270%27%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20end%20if%3B%0D%0A%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20%28delay_o_3%20%3D%20%271%27%29%20then%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20temp2%20%3C%3D%20sample_temp%20%2A%20sample_2%3B%20%20%20%20%20%20%20%20%20%20---%20multiply%20by%20the%20carrier%20to%20give%20the%20AM%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20sample_right%20%3C%3D%20temp2%2831%20downto%2016%29%3B%20%20%20%20%20%20%20---%20again%2C%20adjust%20multiplier%20output%20back%20to%2016%20bits%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20end%20if%3B%0D%0A%0D%0A%20%20%20%20%20%20%20%20end%20if%3B%0D%0A%0D%0A%20%20%20%20%20%20%20%20phase_increment_left%2831%20downto%200%29%20%3C%3D%20b%220000_0010_0101_1000_1011_1111_0010_0110%22%3B%20%20%20%20---%20440Hz%20%0D%0A%20%20%20%20%20%20%20%20phase_increment_right%2831%20downto%200%29%20%3C%3D%20b%220010_0101_1000_1100_0001_0001_0100_1100%22%3B%20%20%20---%207040.1Hz%0D%0A%0D%0A%0D%0A%20%20%20%20end%20process%20evb_test_stuff%3B%0D%0A%0D%0A%20%20%20%20---%20instantiate%20and%20connect%20the%20spdif%20output%20component%0D%0A%09%09%0D%0A%20%20%20%20spdif_1%3A%20component%20spdif_out_component%0D%0A%20%20%20%20%20%20%20%20generic%20map%28%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20in_res%20%3D%3E%20sig_resol%29%20%20---%20audio%20sample%20resolution%0D%0A%20%20%20%20%20%20%20%20port%20map%28%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20clk_in%20%3D%3E%20clk_12_288%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20clk_en%20%3D%3E%20spdif_clk_en%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20l_data%20%3D%3E%20sample_left%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20r_data%20%3D%3E%20sample_right%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20next_sample_en%20%3D%3E%20spdif_sample_en%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20spdif_data_out%20%3D%3E%20spdif_out%29%3B%0D%0A%0D%0A%20%20%20%20---%20instantiate%20and%20connect%20the%20CORDIC%20component%0D%0A%0D%0A%20%20%20%20cordic_1%3A%20component%20cordic%0D%0A%20%20%20%20%20%20%20%20generic%20map%28%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20input_resol%20%3D%3E%20pha_resol%2C%20%20---%20input%20resolution%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20output_resol%20%3D%3E%20sig_resol%29%20---%20output%20resolution%0D%0A%20%20%20%20%20%20%20%20port%20map%28%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20clk_in%20%3D%3E%20clk_12_288%2C%20%20%20%20%20%20---%20clock%20in%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20delay_in%20%3D%3E%20delay_i%2C%20%20%20%20%20%20%20---%20delay%20in%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20delay_out%20%3D%3E%20delay_o%2C%20%20%20%20%20%20---%20delay%20out%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20theta%20%3D%3E%20theta%2C%20%20%20%20%20%20%20%20%20%20%20%20---%20phase%20in%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20sine%20%3D%3E%20sine%2C%20%20%20%20%20%20%20%20%20%20%20%20%20%20---%20sine%20out%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20cosine%20%3D%3E%20cosine%29%3B%20%20%20%20%20%20%20%20%20---%20cosine%20out%0D%0A%09%09%09%0D%0A%20%20%20%20tp1%20%3C%3D%20spdif_sample_en%3B%20%0D%0A%0D%0Aend%20arch_ice40up5k_evn_test%3B%20%0D%0A]&lt;/p&gt;&lt;img src="https://community.element14.com/aggbug?PostID=29632&amp;AppID=19&amp;AppType=Weblog&amp;ContentType=0" width="1" height="1"&gt;</description></item><item><title>RE: Lattice iCE40UP5K-EVB Evaluation Board - Part 2: Using the DSP Multiplier</title><link>https://community.element14.com/technologies/fpga-group/b/blog/posts/lattice-ice40up5k-evb-evaluation-board---part-2-using-the-dsp-multiplier</link><pubDate>Mon, 30 Mar 2026 12:13:38 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:945974a6-316c-47b3-b406-1c55ba707e6b</guid><dc:creator>shabaz</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;Nice work! And that looks like a great dev board for experimenting/learning.&lt;/p&gt;&lt;img src="https://community.element14.com/aggbug?PostID=29632&amp;AppID=19&amp;AppType=Weblog&amp;ContentType=0" width="1" height="1"&gt;</description></item><item><title>RE: Lattice iCE40UP5K-EVB Evaluation Board - Part 2: Using the DSP Multiplier</title><link>https://community.element14.com/technologies/fpga-group/b/blog/posts/lattice-ice40up5k-evb-evaluation-board---part-2-using-the-dsp-multiplier</link><pubDate>Mon, 30 Mar 2026 11:40:24 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:945974a6-316c-47b3-b406-1c55ba707e6b</guid><dc:creator>Jan Cumps</dc:creator><slash:comments>1</slash:comments><description>&lt;p&gt;Where do you define that it uses the DSP IP block?&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;note to self: It&amp;#39;s been too long since I last used VHDL, and I&amp;#39;m losing the knowledge fast.&lt;/em&gt;&lt;/p&gt;&lt;img src="https://community.element14.com/aggbug?PostID=29632&amp;AppID=19&amp;AppType=Weblog&amp;ContentType=0" width="1" height="1"&gt;</description></item></channel></rss>