Welcome to Nandland

If you are a beginner to the wonderful world of digital design or a professional, Nandland will provide you with all of the information that you need. From a description of what is a hardware designer, to thorough designs, Nandland intends to be a one-stop-shop for all things digital design. All of the articles on this webpage have been written for people who have little to no background in Engineering. Nandland is constantly being updated with more content. If you are a beginner to the world of Digital Design, check out the lessons at FPGA-101. That will give you a solid foundation in your journey to learning FPGAs and ASIcs.

FPGA-101: Learn about how FPGAs work, for beginners and advanced designers!

VHDL For Beginners, Start Learning VHDL!

Verilog For Beginners, Start Learning Verilog!

Did You Just Receive Your Go Board?

Congratulations on your Go Board purchase! Let's get started. Go to this page for a list of tutorials and help getting started with the Go Board. Alternatively you can subscribe to my YouTube channel and follow the videos there.

The Intricacies in Shipping Kickstarter Products - 2016.03.09

When the Go Board fund raising completed, I was thrilled. With the help of nearly two hundred backers, the Go Board project raised over ten thousand dollars. This exceeded my expectations for the project. The challenge was then to figure out how to produce all of the boards and get them into the hands of the backers as quickly as possible.... continue reading

Go Board Kickstarter Survey Results - 2016.01.29

Firstly I want to thank all of my Kickstarter backers for completing the short survey that I sent out. It was very informative and interesting to me, so I though that I would publish it for everyone to see. I'm trying to be more transparent on this site with the launching of the Kickstarter, so this is the first step in that direction. I plan on adding more articles summarizing my experiences with the Kickstarter process, as well as my experience building and shipping the circuit boards. Without further ado, let's look at the survey! continue reading

The Nandland Go Board

The First FPGA Development Board You Should Buy

While there are many FPGA development boards out there on the market, the Go Board is specifically catered to beginner FPGA designers. If you've never worked with a real FPGA before, the Go Board is the easiest and most enjoyable experience possible... continue reading

VHDL vs. Verilog

Which language should you use for your FPGA and ASIC designs?

The question of whether Verilog or VHDL is better for beginners is asked all the time. Both languages can be used to create code that runs on FPGAs and ASICs. Overall there are several points of which you should be aware. continue reading

Synthesizable vs. Non-Synthesizable code

Learn how to write code that can run on an FPGA or ASIC

When you write you Verilog or VHDL code, you are writing code that will be translated into gates, registers, RAMs, etc. The program that performs this task is known as a Synthesis Tool. It is the job of the Synthesis Tool to take your Verilog or VHDL code and turn it into something that the FPGA can understand. So why would you have a language that contains code that is non-synthesizable? continue reading

Designing your own FPGA or ASIC to mine for Bitcoins

...is not a great idea

Sorry to burst your bubble in the first sentence. Maybe you think that you can use your hot Digital Design skills to program your sweet Xilinx Spartan 6 development board to make you tens of thousands of dollars. Well get that idea out of your head now, it’s not happening. Still reading? I’ll elaborate... continue reading

Std_logic_arith vs. Numeric_std

Have you ever tried to do math operations inside of an FPGA? If so, you probably have realized that you need to include a special package file to accomplish this task. If you are using std_logic_arith, you are using an unsupported package file. You should be using numeric_std. Although it might appear that std_logic_arith is an IEEE supported package file, it is not. continue reading...

How to avoid creating Latches in your FPGA

The previous article stated that latches should never be used in your FPGA design. The reason that latches should never be used is twofold:

  1. Often the user who created the latch did so unintentionally. It is highly likely that the HDL code written is not actually what the designer intended.
  2. They can be very difficult for the FPGA tools to create properly. Often they add significant routing delays and can cause your design to fail to meet timing.

So firstly, let's ask the question: How are latches created? Latches are created when you create a combinational process or conditional assignment (in VHDL) or a combinational always block (in Verilog) with an output that is not assigned under all possible input conditions. continue reading...

What is an FPGA? What is an ASIC?

FPGA stands for Field Programmable Gate Array. An FPGA is a component that can be thought of as a giant ocean of digital components (gates, look-up-tables, flip-flops) that can be connected together by wires. The code that you write makes real physical connections with wires to perform the function that you need. What makes FPGAs and ASICs special is that they are very good at performing a large number of operations in parallel (at the same time). They are used in high-speed, high-performance tasks such as image processing, telecommunications, digital signal processing, high-frequency stock market trading, and many others.

FPGAs are also fun to design with! The code that you write is at the lowest possible level; you are literally describing gates and flip-flops with your code. They are an excellent way for a student to become familiar with hardware programming techniques and apply the knowledge learned in a digital electronics course to the real world. The information on this site should help you to become a confident digital designer. continue reading...

What is a Digital Designer?

A Digital Designer is usually an engineer who writes code that targets FPGAs or ASICs, also known as Hardware. There are two main programming languages that a Digital Designer uses: VHDL and Verilog. This type of code is fundamentally different than software! The main difference is that software code targets a processor, whereas hardware code does not.

A Central Processing Unit (CPU) or just processor, is the central component that software designers need to understand. A CPU processes instructions one at a time to perform a task. For example, one instruction might be to add the contents of register A to register B, and then store the result in Register C. A software designer writes code in a language like C that gets compiled by a compiler. The job of the compiler is to take the high-level code that the software designer writes and convert it into low-level code that the processor can understand. It must be understood that in hardware design, there is no compiler! There is nothing to take your code and turn it into instructions the way that a software compiler does. This is because a Digital Designer does not have a processor to target. continue reading...