My background is probably similar to yours. I don't know VHDL. I started with Verilog because of its C-like syntax. If you know C but also understand how clocks work with flip-flips, getting started with Verilog is quite easy, and its module concept works well. I think it is also less verbose than VHDL. But I find things not to like about Verilog. One is that it is not strongly typed. This can lead to errors. Another is that the "wire" vs "reg" definition is pretty weak from a language design point of view. But I think I will stick with Verilog out of inertia. Verilog on a cheap FPGA board can be fun for software folks (like us) who have worked close to the hardware. Cheers.
Verilog puts you on the pipeline to SystemVerilog and SystemC so definitely go verilog. I first learned VHDL and let me tell you, it is awful and has a strict syntax and design in the worst ways. The type system is awful.
@@mattymerr701 When I worked in the defence industry it VHDL was the standard to use. However as an embedded C programmer, I'll take the verilog recommendations, thanks both!
Rust gains traction as it fails compile time, which is better - I see vhdl as the more safe variant. I did however start with verilog, but now i just use whatever is used already :-)
Unless you're doing DSP and math heavy twos compliment /signed and unsigned arithmetic, there's no advantage to VHDL versus Verilog these days. It is more verbose and while 'safe' it looks similar to ADA syntax wise. If you're already comfortable with C , then Verilog will make a bit more sense.
I saw the tang 4K also comes with an M3 coprocessor, would that be ideal for offloading 'non-critical' general compute tasks to, while the FPGA handles the critical functions of a program?
Having a hard core on an FPGA would certainly be interesting. But the 4K is a fairly small FPGA. A Tang Nano 9K with a PicoRV32 soft core likely will have as many resources left over after including the soft core as the 4K has in the first place. But the m3 will likely be faster. The Tang Nano 20K is also nice. After including a PicoRV32 soft core, it will have more resources left over than even the 9K. I think if you are just learning about FPGAs without a specific project in mind (in particular one that needs a core), then the 9K and 20K are good choices. The prices don't appear to be that different. My Tang 20K was $25 from Amazon. That was a good deal. If I could buy a 4K for, say $10, I'd probably get one just to see exactly how the m3 is integrated, though. Basically, they are all good choices in one way or another. By the way, in case you didn't see them, I have several videos that show the use of the PicoRV32 soft core. I like using the version straight from github rather than using the encrypted IP block available directly in the Gowin IDE.
With the Nano 20K, have you experienced the issue of not being able to program it again? I programmed a design earlier and unlike other FPGA boards, the design is persisted after powering off. I cannot program my 20K anymore no matter what I try. Initially it wouldn't program until I dropped the frequency from 2.5 to 2MHz.. but neither is helping now. I've tried powering up with the S2 button held down but I still can't get anything to load.
Sorry, I do not see that. My Tang Nano 20K programs reliably. I use default frequencies and do not have to press a button. I can load the design to SRAM (which is not permanent) or to flash (which is). I can program it using the latest Gowin educational tools on Windows (but not Linux). On Windows, the only problem is that sometimes I need to select Edit/Cable Setting/USB Cable Setting and let the tool find the device. On Linux Ubuntu 22.04 openfpgaloader works very reliably. See my video on getting started with the Tang Nano 9K for more on openfpgaloader. Best wishes
@@electronics.tinker It was my mistake. I thought multiple files could be programmed at once, but they all need to be loaded individually.. So I just had to hold down S2 while powering up and ensure that only one file was checked in the Gowin programmer. The errors the programmer gives back tend to be a bit misleading. ..and yeah, I'm using Windows.
Thank you for the video. Can this Tang Nano 20k generate sine waves at HF (20 meter) frequencies ? Just in case I want to build a well filtered beacon...just in case.
The FPGA on the Tang Nano 20K (and the 9K) is a digital only device so its output pins are either high or low-- so it can produce square waves but not (directly) sine waves. If all you want is a square wave clock generator, check out a part called si5351. John Hawkes made a youtube video about using one of these as an LO sine wave generator by filtering its output. The video is called "SI5351 Clock Gen as Radio Local Oscillator in Old Radios".
@@electronics.tinker Thank you for your reply. I check out Hawkes video. I put a low pass filter into the output from the Si5351a and that knocked everything down a bit. However, the signal was knocked down below 0 db. So now I think I have to amplify and filter the results of the amplifier as well. ... So it goes.
Great how explain things. I'm just starting with the 20k & watching your videos helps alot. Please keep it up.
Thank you, again for the content provided.
I am happy that you find it useful. Thanks!
Thx for sharing!
For someone beginning with FPGA's, would you recommend VHDL or verilog. I'm an embedded 'C' engineer, if that helps the choice :)
My background is probably similar to yours. I don't know VHDL. I started with Verilog because of its C-like syntax. If you know C but also understand how clocks work with flip-flips, getting started with Verilog is quite easy, and its module concept works well. I think it is also less verbose than VHDL. But I find things not to like about Verilog. One is that it is not strongly typed. This can lead to errors. Another is that the "wire" vs "reg" definition is pretty weak from a language design point of view. But I think I will stick with Verilog out of inertia.
Verilog on a cheap FPGA board can be fun for software folks (like us) who have worked close to the hardware. Cheers.
Verilog puts you on the pipeline to SystemVerilog and SystemC so definitely go verilog.
I first learned VHDL and let me tell you, it is awful and has a strict syntax and design in the worst ways. The type system is awful.
@@mattymerr701 When I worked in the defence industry it VHDL was the standard to use. However as an embedded C programmer, I'll take the verilog recommendations, thanks both!
Rust gains traction as it fails compile time, which is better - I see vhdl as the more safe variant. I did however start with verilog, but now i just use whatever is used already :-)
Unless you're doing DSP and math heavy twos compliment /signed and unsigned arithmetic, there's no advantage to VHDL versus Verilog these days.
It is more verbose and while 'safe' it looks similar to ADA syntax wise.
If you're already comfortable with C , then Verilog will make a bit more sense.
I saw the tang 4K also comes with an M3 coprocessor, would that be ideal for offloading 'non-critical' general compute tasks to, while the FPGA handles the critical functions of a program?
Having a hard core on an FPGA would certainly be interesting. But the 4K is a fairly small FPGA. A Tang Nano 9K with a PicoRV32 soft core likely will have as many resources left over after including the soft core as the 4K has in the first place. But the m3 will likely be faster. The Tang Nano 20K is also nice. After including a PicoRV32 soft core, it will have more resources left over than even the 9K. I think if you are just learning about FPGAs without a specific project in mind (in particular one that needs a core), then the 9K and 20K are good choices. The prices don't appear to be that different. My Tang 20K was $25 from Amazon. That was a good deal. If I could buy a 4K for, say $10, I'd probably get one just to see exactly how the m3 is integrated, though. Basically, they are all good choices in one way or another.
By the way, in case you didn't see them, I have several videos that show the use of the PicoRV32 soft core. I like using the version straight from github rather than using the encrypted IP block available directly in the Gowin IDE.
With the Nano 20K, have you experienced the issue of not being able to program it again? I programmed a design earlier and unlike other FPGA boards, the design is persisted after powering off. I cannot program my 20K anymore no matter what I try. Initially it wouldn't program until I dropped the frequency from 2.5 to 2MHz.. but neither is helping now. I've tried powering up with the S2 button held down but I still can't get anything to load.
Sorry, I do not see that. My Tang Nano 20K programs reliably. I use default frequencies and do not have to press a button.
I can load the design to SRAM (which is not permanent) or to flash (which is). I can program it using the latest Gowin educational tools on Windows (but not Linux). On Windows, the only problem is that sometimes I need to select Edit/Cable Setting/USB Cable Setting and let the tool find the device.
On Linux Ubuntu 22.04 openfpgaloader works very reliably. See my video on getting started with the Tang Nano 9K for more on openfpgaloader.
Best wishes
@@electronics.tinker It was my mistake. I thought multiple files could be programmed at once, but they all need to be loaded individually.. So I just had to hold down S2 while powering up and ensure that only one file was checked in the Gowin programmer. The errors the programmer gives back tend to be a bit misleading.
..and yeah, I'm using Windows.
Thank you for the video. Can this Tang Nano 20k generate sine waves at HF (20 meter) frequencies ? Just in case I want to build a well filtered beacon...just in case.
The FPGA on the Tang Nano 20K (and the 9K) is a digital only device so its output pins are either high or low-- so it can produce square waves but not (directly) sine waves. If all you want is a square wave clock generator, check out a part called si5351. John Hawkes made a youtube video about using one of these as an LO sine wave generator by filtering its output. The video is called "SI5351 Clock Gen as Radio Local Oscillator in Old Radios".
@@electronics.tinker Thank you for your reply. I check out Hawkes video. I put a low pass filter into the output from the Si5351a and that knocked everything down a bit. However, the signal was knocked down below 0 db. So now I think I have to
amplify and filter the results of the amplifier as well. ... So it goes.
Thanks a lot for sharing!