<?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>Blog - All Comments</title><link>/technologies/fpga-group/b/blog</link><description /><dc:language>en-US</dc:language><generator>Telligent Community 12</generator><item><title>RE: Fast VHDL CORDIC Sine and Cosine Component on Lattice XP2 Device Using Diamond 3.12 Part 2</title><link>https://community.element14.com/technologies/fpga-group/b/blog/posts/fast-vhdl-cordic-sine-and-cosine-component-on-lattice-xp2-device-using-diamond-3-12-part-2</link><pubDate>Sun, 07 Jun 2026 14:46:24 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:9a8d0b3f-5d30-44fa-a128-53cc8958eeea</guid><dc:creator>jc2048</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;Here is the sine and cosine in more detail&lt;/p&gt;
&lt;p&gt;&lt;img alt=" " src="/resized-image/__size/1280x720/__key/commentfiles/f7d226abd59f475c9d224a79e3f0ec07-9a8d0b3f-5d30-44fa-a128-53cc8958eeea/Screenshot_5F00_2026_2D00_06_2D00_07_5F00_10_2D00_03_2D00_14.png" /&gt;&lt;/p&gt;
&lt;p&gt;and here&amp;#39;s the spectrum view&lt;/p&gt;
&lt;p&gt;&lt;img alt=" " src="/resized-image/__size/1280x720/__key/commentfiles/f7d226abd59f475c9d224a79e3f0ec07-9a8d0b3f-5d30-44fa-a128-53cc8958eeea/Screenshot_5F00_2026_2D00_06_2D00_07_5F00_09_2D00_56_2D00_06.png" /&gt;&lt;/p&gt;
&lt;p&gt;with, and this surprised me, a THD figure of 0.005% (if you look closely, there isn&amp;#39;t anything much at the actual harmonics). So the CORDIC calculation of the sine must be fairly accurate. Presumably the other lines, clustered around the fundamental, are intermodulation products (but what would be the source of the interference?).&lt;/p&gt;&lt;img src="https://community.element14.com/aggbug?PostID=29528&amp;AppID=19&amp;AppType=Weblog&amp;ContentType=0" width="1" height="1"&gt;</description></item><item><title>RE: Lattice iCEstick EVB Generating Three-Phase Sinewaves with Sigma-Delta DACs Using iCEcube2 and 

VHDL</title><link>https://community.element14.com/technologies/fpga-group/b/blog/posts/lattice-icestick-evb-generating-three-phase-sinewaves-with-sigma-delta-dacs-using-icecube2-and-vhdl</link><pubDate>Sun, 07 Jun 2026 14:42:51 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:83968635-734c-4822-b591-e9de68b44683</guid><dc:creator>jc2048</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;Here are two of the output waveforms in higher resolution than my 8-bit Tek scope can manage.&lt;/p&gt;
&lt;p&gt;&lt;img alt=" " src="/resized-image/__size/1280x720/__key/commentfiles/f7d226abd59f475c9d224a79e3f0ec07-83968635-734c-4822-b591-e9de68b44683/Screenshot_5F00_2026_2D00_06_2D00_07_5F00_09_2D00_37_2D00_58.png" /&gt;&lt;/p&gt;
&lt;p&gt;Quite nice looking sine waves, though if we look at it in the spectrum view there are enough harmonics present for a THD figure of about 0.6%.&lt;/p&gt;
&lt;p&gt;&lt;img alt=" " src="/resized-image/__size/1280x720/__key/commentfiles/f7d226abd59f475c9d224a79e3f0ec07-83968635-734c-4822-b591-e9de68b44683/Screenshot_5F00_2026_2D00_06_2D00_07_5F00_09_2D00_40_2D00_46.png" /&gt;&lt;/p&gt;
&lt;p&gt;The resolution of the PicoScope is good enough to show me some intriguing, regular sidebands around the fundamental at 50Hz.&lt;/p&gt;
&lt;p&gt;This next spectrum view, over a wider span, is also interesting because it shows some output aliasing at multiples of my sample rate (12kbps). Although they&amp;#39;re fairly well down, the simple RC filter hasn&amp;#39;t totally wiped them out.&lt;/p&gt;
&lt;p&gt;&lt;img alt=" " src="/resized-image/__size/1280x720/__key/commentfiles/f7d226abd59f475c9d224a79e3f0ec07-83968635-734c-4822-b591-e9de68b44683/Screenshot_5F00_2026_2D00_06_2D00_07_5F00_09_2D00_42_2D00_22.png" /&gt;&lt;/p&gt;&lt;img src="https://community.element14.com/aggbug?PostID=28984&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>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: The Art of FPGA Design Season 2 Post 21</title><link>https://community.element14.com/technologies/fpga-group/b/blog/posts/the-art-of-fpga-design-season-2-post-21</link><pubDate>Sun, 19 Apr 2026 13:31:53 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:2d5eb677-aff9-421d-a574-6bd0209ae0d3</guid><dc:creator>fpgaguru</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;An errata for the stability condition for the second order all pass section with transfer function H(z)=(c2+c1*z^-1+z^-2)/(1+c1*z^-1+c2*z^-2), the two conditions are abs(c2)&amp;lt;1 and abs(c1)&amp;lt;1+c2, not abs(c1)&amp;lt;1 as stated in the post.&amp;nbsp;&lt;/p&gt;&lt;img src="https://community.element14.com/aggbug?PostID=29098&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><item><title>RE: Lattice iCE40UP5K-EVB Evaluation Board Outputing Audio Sine Waves Over an Optical S/PDIF Interface</title><link>https://community.element14.com/technologies/fpga-group/b/blog/posts/lattice-ice40up5k-evb-evaluation-board-outputing-audio-sine-waves-over-an-optical-s-pdif-interface</link><pubDate>Sun, 22 Mar 2026 23:31:03 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:5106f1ec-c028-4e57-8089-cef080f64d4b</guid><dc:creator>kmikemoo</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;Very cool.&amp;nbsp; Glad that you got to use your Lattice Eval Board.&amp;nbsp; It&amp;#39;s always good to finally get to those things that have been on the Project List for a while.&lt;/p&gt;&lt;img src="https://community.element14.com/aggbug?PostID=29598&amp;AppID=19&amp;AppType=Weblog&amp;ContentType=0" width="1" height="1"&gt;</description></item><item><title>RE: Lattice iCE40UP5K-EVB Evaluation Board Outputing Audio Sine Waves Over an Optical S/PDIF Interface</title><link>https://community.element14.com/technologies/fpga-group/b/blog/posts/lattice-ice40up5k-evb-evaluation-board-outputing-audio-sine-waves-over-an-optical-s-pdif-interface</link><pubDate>Sat, 21 Mar 2026 20:33:59 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:5106f1ec-c028-4e57-8089-cef080f64d4b</guid><dc:creator>DAB</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;Nice post.&lt;/p&gt;&lt;img src="https://community.element14.com/aggbug?PostID=29598&amp;AppID=19&amp;AppType=Weblog&amp;ContentType=0" width="1" height="1"&gt;</description></item><item><title>RE: Fast VHDL CORDIC Sine and Cosine Component on Lattice XP2 Device Using Diamond 3.12 Part 2</title><link>https://community.element14.com/technologies/fpga-group/b/blog/posts/fast-vhdl-cordic-sine-and-cosine-component-on-lattice-xp2-device-using-diamond-3-12-part-2</link><pubDate>Wed, 18 Feb 2026 16:04:42 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:9a8d0b3f-5d30-44fa-a128-53cc8958eeea</guid><dc:creator>scottiebabe</dc:creator><slash:comments>1</slash:comments><description>&lt;p&gt;Very neat, I am experimenting with running an sdr on a pico and eventually will have to pick a fast atan2 approximation&lt;/p&gt;&lt;img src="https://community.element14.com/aggbug?PostID=29528&amp;AppID=19&amp;AppType=Weblog&amp;ContentType=0" width="1" height="1"&gt;</description></item><item><title>RE: Fast VHDL CORDIC Sine and Cosine Component on Lattice XP2 Device Using Diamond 3.12 Part 2</title><link>https://community.element14.com/technologies/fpga-group/b/blog/posts/fast-vhdl-cordic-sine-and-cosine-component-on-lattice-xp2-device-using-diamond-3-12-part-2</link><pubDate>Tue, 17 Feb 2026 20:32:17 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:9a8d0b3f-5d30-44fa-a128-53cc8958eeea</guid><dc:creator>DAB</dc:creator><slash:comments>1</slash:comments><description>&lt;p&gt;Nice update.&lt;/p&gt;&lt;img src="https://community.element14.com/aggbug?PostID=29528&amp;AppID=19&amp;AppType=Weblog&amp;ContentType=0" width="1" height="1"&gt;</description></item><item><title>RE: Fast VHDL CORDIC Sine and Cosine Component on Lattice XP2 Device Using Diamond 3.12 Part 2</title><link>https://community.element14.com/technologies/fpga-group/b/blog/posts/fast-vhdl-cordic-sine-and-cosine-component-on-lattice-xp2-device-using-diamond-3-12-part-2</link><pubDate>Tue, 17 Feb 2026 10:23:13 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:9a8d0b3f-5d30-44fa-a128-53cc8958eeea</guid><dc:creator>michaelkellett</dc:creator><slash:comments>1</slash:comments><description>&lt;p&gt;Nice to see an FPGA project at the register level in VHDL.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Good luck with the iCE40 - its a useful part&amp;nbsp; - (I just did a customer design on one recently) but pretty weedy by modern FPGA standards.&lt;/p&gt;
&lt;p&gt;On the other hand they are cheap, available in 48 pin QFN packages and use almost no power.&lt;/p&gt;
&lt;p&gt;MK&lt;/p&gt;&lt;img src="https://community.element14.com/aggbug?PostID=29528&amp;AppID=19&amp;AppType=Weblog&amp;ContentType=0" width="1" height="1"&gt;</description></item><item><title>RE: FPGA and DSP ep. 4: Polyphase Filters</title><link>https://community.element14.com/technologies/fpga-group/b/blog/posts/fpga-and-dsp-ep-4-polyphase-filters</link><pubDate>Sat, 08 Nov 2025 23:51:00 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:9119dc86-66c9-4ccb-a297-58ba10ccd53a</guid><dc:creator>Stuart_S</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;There&amp;#39;s a link to a nice VHDL resource in the tubes.&lt;/p&gt;&lt;img src="https://community.element14.com/aggbug?PostID=25946&amp;AppID=19&amp;AppType=Weblog&amp;ContentType=0" width="1" height="1"&gt;</description></item><item><title>RE: Booting ZUB1CG with AES-ACC-DPEMMC-G</title><link>https://community.element14.com/technologies/fpga-group/b/blog/posts/zub1cg_5f00_emmc_5f00_display_5f00_port</link><pubDate>Sun, 31 Aug 2025 19:59:54 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:9ca2754b-4ece-4774-8665-b4c43c692f6f</guid><dc:creator>tjaekel</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;Please, have you tried in a similar way with flashing and booting PYNQ (not just a PetaLinux) from it?&lt;/p&gt;
&lt;p&gt;It works a bit for me with PYNQ, but still not all features working in a Python script (e.g. using AXI Intc with a syncing and interrupt signal).&lt;/p&gt;
&lt;p&gt;How to boot and run PYNQ from eMMC?&lt;/p&gt;&lt;img src="https://community.element14.com/aggbug?PostID=27970&amp;AppID=19&amp;AppType=Weblog&amp;ContentType=0" width="1" height="1"&gt;</description></item><item><title>RE: The Art of FPGA Design Season 2 Post 29</title><link>https://community.element14.com/technologies/fpga-group/b/blog/posts/the-art-of-fpga-design-season-2-post-29</link><pubDate>Thu, 28 Aug 2025 20:40:19 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:363a1083-b7f6-4af2-8d7f-faa90df64abd</guid><dc:creator>DAB</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;Very good post on DSP implementation.&lt;/p&gt;&lt;img src="https://community.element14.com/aggbug?PostID=29165&amp;AppID=19&amp;AppType=Weblog&amp;ContentType=0" width="1" height="1"&gt;</description></item><item><title>RE: The Art of FPGA Design Season 2 Post 28</title><link>https://community.element14.com/technologies/fpga-group/b/blog/posts/the-art-of-fpga-design-season-2-post-28</link><pubDate>Wed, 27 Aug 2025 17:37:39 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:a605e75e-837d-4c62-a42d-0588d87919bd</guid><dc:creator>flyingbean</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;It is enjoyable to read your blogs after a busy day.&lt;/p&gt;&lt;img src="https://community.element14.com/aggbug?PostID=29149&amp;AppID=19&amp;AppType=Weblog&amp;ContentType=0" width="1" height="1"&gt;</description></item></channel></rss>