Questions tagged [hdl]

HDL is a Hardware Description Language, a language used to design chips. The two major ones are Verilog and VHDL.

Taken from G.J. Lipovsky, "Hardware Description Languages: Voices from the Tower of Babel", Computer, Vol. 10, No. 6, June 1977, pp. 14-17. Paper available here.

A hardware description language can be used to describe the logic gates, the sequential machines, and the functional modules, along with their interconnection and their control, in a digital system. In a general sense, Boolean equations, logic diagrams, programrning languages, and Petri nets are hardware description languages: they can be used to describe some aspect of hardware and they have definable syntax and semantics. Specifically, what is more commonly referred to as a hardware description language is a variation of a programming language tuned to the overall needs of describing hardware.

Adapted from Hardware Description Language tutorial with very few modifications:

Hardware description language (HDL) is a specialized computer language used to program electronic and digital logic circuits. The structure, operation and design of the circuits are programmable using HDL. HDL includes a textual description consisting of operators, expressions, statements, inputs and outputs. Instead of generating a computer executable file, the HDL compilers provide a gate map. The gate map obtained is then downloaded to the programming device to check the operations of the desired circuit. The language helps to describe any digital circuit in the form of structural, behavioral and gate level and it is found to be an excellent programming language for FPGAs, CPLDs and ASICs.

The three common HDLs are Verilog, VHDL, and SystemC. Of these, SystemC is the newest. The HDLs will allow fast design and better verification. In most of the industries, Verilog and VHDL are common. Verilog, one of the main Hardware Description Language standardized as IEEE 1364 is used for designing all types of circuits. It consists of modules and the language allows Behavioral, Dataflow and Structural Description. VHDL (Very High Speed Integrated Circuit Hardware Description Language) is standardized by IEEE 1164. The design is composed of entities consisting of multiple architectures. SystemC is a language that consist a set of C++ classes and macros. It allows electronic system level and transaction modeling.

Need for HDLs

The Moore’s Law in the year 1970 has brought a drastic change in the field of IC technology. This change has made the developers to bring out complex digital and electronic circuits. But the problem was the absence of a better programming language allowing hardware and software codesign. Complex digital circuit designs require more time for development, synthesis, simulation and debugging. The arrival of HDLs has helped to solve this problem by allowing each module to be worked by a separate team.

All the goals like power, throughput, latency (delay), test coverage, functionality and area consumption required for a design can be known by using HDL. As a result, the designer can make the necessary engineering tradeoffs and can develop the design in a better and efficient way. Simple syntax, expressions, statements, concurrent and sequential programming is also necessary while describing the electronics circuits. All these features can be obtained by using a hardware description language. Now while comparing HDL and C languages, the major difference is that HDL provides the timing information of a design.

Benefits of HDL

The major benefit of the language is fast design and better verification. The Top-down design and hierarchical design method allows the design time; design cost and design errors to be reduced. Another major advantage is related to complex designs, which can be managed and verified easily. HDL provides the timing information and allows the design to be described in gate level and register transfer level. Reusability of resources is one of the other advantage.

See also:

906 questions
0
votes
1 answer

Shifting a Concatenate Register

Ive been doing verilog HDL in quartus II for 2 month now and have not synthesized any of my codes yet. I am struggling to code a fractional division circuit. Of course theres a lot of problems... I would like to know how do I concatenate two…
ihvapor
  • 3
  • 1
  • 2
0
votes
1 answer

compiling Verilog code in Quartus

I'm new to verilog HDL and my first project is to implement a simple stopwatch counter using a set of registers. I'm using Altera Quartus. When I tried compiling the code below, I keep getting an error for each and everyone of the registers. one…
user2707696
  • 3
  • 1
  • 2
0
votes
3 answers

Any benefits from implementing CSA versus just using multiplication symbol when synthesizing?

I am synthesizing some multiplication units in verilog and I was wondering if you generally get better results in terms of area/power savings if you implement your own CSA using booth encoding when multplying or if you just use the * symbol and let…
Veridian
  • 3,531
  • 12
  • 46
  • 80
0
votes
2 answers

Weird VHDL Behavior

In the following VHDL code when i use logical or the code stops working the HD44780LCD crashes but when i remove the logical or and remove one of the holders the code starts to work again. I'm using Xilinx Spartan 3E starter board. In other words…
gv260ea
  • 21
  • 1
  • 5
0
votes
2 answers

How to display a 14 bit output onto a 2 digit display?

I have a analogue to digital converter that after conversion stores its results in two 14 bit registers. I have to display this value onto a 2 digit 7 segment display. Here is the simulation showing the 14 bit result: As can be seen the values are…
ipunished
  • 684
  • 2
  • 6
  • 22
0
votes
2 answers

vhdl multipliers

library IEEE; use IEEE.STD_LOGIC_1164.ALL; entity Lab3_Adder1 is Port ( cin : in STD_LOGIC; a : in STD_LOGIC_VECTOR (3 downto 0); b : in STD_LOGIC_VECTOR (3 downto 0); s : out STD_LOGIC_VECTOR (3 downto 0); …
0
votes
2 answers

How to determine the number of Logic cells and MLUTS

So from looking at this diagram, I am trying to figure out how these answers came to be? Could someone explain to me? A) Register R0 to R2 require 32 logic cells total, each cell implement a 3 stage shift reg using 1 MLUT operating in Shift Reg.…
PhoonOne
  • 2,678
  • 12
  • 48
  • 76
0
votes
3 answers

How to debug after implementation? My code that works perfectly in simulation shows strange behaviour in hardware

My code for a reaction tester works perfectly and as it should in simulation. But when I move it to my FPGA device it just stalls as soon as I press the start button and I cannot figure out what goes wrong as it is working perfectly in…
ipunished
  • 684
  • 2
  • 6
  • 22
0
votes
2 answers

verilog parameter as input - nios II

I am looking out for a way so that I can send an input value from nios as a parameter to a verilog module. or Any other ways of assigning verilog parameter from input.
vlsi2013
  • 169
  • 1
  • 2
  • 5
0
votes
3 answers

Bluespec $display within function

Bluespec complains when I try to use $display within a function definition. It is only allowed within a rule definition. Is there a way that I can get to display variable names within a function? I think it might be using the ActionValue# but I…
Saher Ahwal
  • 9,015
  • 32
  • 84
  • 152
0
votes
1 answer

verilog : defining parameter values in case statement?

I need to define parameter values which are dependent on some other input . I tried the following way but it doen't work . any other alternative methods ? module (...) ... input sel ; .. case (sel) 0: parameter data1 =5; 1: parameter data1…
vlsi2013
  • 169
  • 1
  • 2
  • 5
0
votes
2 answers

Illegal reference Error

I am writing a ripple counter using D-Flip Flops. However the following code is giving me Illegal reference error inside initial block for q2,q3,q4variables. Why is that? module RCounter; reg d,d2,d3,d4,clk; wire q,q2,q3,q4; DFlipFlop…
James Aflred
  • 87
  • 2
  • 5
  • 12
0
votes
2 answers

VHDL bit rotation function syntax error?

I am doing this for my school work where I'm making my own rolling/shifting function. Below is the code I wrote, but when i try to compile it i get syntax error on rownum<=rol(rowcount,1); library ieee; use ieee.std_logic_1164.all; use…
0
votes
2 answers

Why are the outputs of this pseudo random number generator (LFSR) so predictable?

Recently I asked here, how to generate random numbers in hardware and was told to use an LFSR. It will be random but will start repeating after a certain value. The problem is that the random numbers generated are so predictable that the next value…
ipunished
  • 684
  • 2
  • 6
  • 22
0
votes
1 answer

How to create an executable PrimeTime script?

When creating scripts for Synopsys PrimeTime, the tutorials I have found execute the scripts by loading the tool (pt_shell) then sourcing the script. To run script: pt_shell source power.scr Example Script: #power.scr set power_enable_analysis…
Morgan
  • 19,934
  • 8
  • 58
  • 84