Friday, 23 August 2013
Saturday, 10 August 2013
Thursday, 8 August 2013
VHDL Programming
1.What is HDL ?
2. Why HDL?
3.What is FPGA ?
4.Why FPGA ?
5.How to program FPGA ?
1.What is HDL ( Hardware Description Language) ?
In electronics, a hardware description language or HDL is a language which describes the functions in actual hardware connected blocks. This language is used for modeling languages for formal description and design of electronic circuits, and most-commonly, digital logic. It can describe the circuit's operation, its design and organisation, and tests to verify its operation by means of simulation.
HDLs are standard text-based expressions of the spatial and temporal structure and behaviour of electronic systems. Like concurrent programming languages, HDL syntax and semantics includes explicit notations for expressing concurrency. However, in contrast to most software programming languages,
HDLs also include an explicit notion of time, which is a primary
attribute of hardware. Languages whose only characteristic is to express
circuit connectivity between a hierarchy of blocks are properly
classified as netlist languages used on electric computer-aided design.
HDLs
are used to write executable specifications of some piece of hardware.
A simulation program, designed to implement the underlying semantics
of the language statements, coupled with simulating the progress of
time, provides the hardware designer with the ability to model a piece
of hardware before it is created physically. It is this executability
that gives HDLs the illusion of being programming languages, when they
are more-precisely classed as modelling languages. Simulators capable
of supporting discrete-event (digital) and continuous-time (analog)
modeling exist, and HDLs targeted for each are available.
It is certainly possible to represent hardware semantics using traditional programming languages such as C++,
although to function such programs must be augmented with extensive
and unwieldy class libraries. Primarily, however, software programming
languages do not include any capability for explicitly expressing time,
and this is why they do not function as a hardware description
language. Before the recent introduction of SystemVerilog, integration with a logic simulator
was one of the few ways to use OOP in hardware verification.
SystemVerilog is the first major HDL to offer object orientation and
garbage collection.
Using
the proper subset of virtually any (hardware description or software
programming) language, a software program called a synthesizer ( tool)
can infer hardware logic operations from the language statements and
produce an equivalent netlist of generic hardware primitives to
implement the specified behaviour. Synthesizers generally ignore the
expression of any timing constructs in the text. Digital logic
synthesizers, for example, generally use clock edges as the way to time
the circuit, ignoring any timing constructs. The ability to have a
synthesizable subset of the language does not itself make a hardware
description language.
The HDL Language has two varieties
a.VHDL
b. Verilog
The
abbreviation for VHSIC is very high speed integrated circuit. VHDL
enables hardware modelling from the gate to system level.Which also
provides a mechanism for digital design and reusable design
documentation.
INTRODUCTION TO VHDL
VHDL
is acronym for “Very-high-speed-integrated-circuit Hardware Description
Language”. VHDL was introduced as a means to provide a detailed design
specification of a digital circuit, with little thought given to how a
circuit might be implemented based on that specification (the assumption
was the requirements in the source file would be captured as a
schematic by a skilled engineer). At the time, the creation of a design
specification, although involved, was almost trivial in comparison to
the amount of work required to translate the specification to a
schematic-based structural description needed to fabricate a device.
Over several years, it became clear that a computer program could be
written to automatically translate a VHDL behavioral specification to a
structural circuit, and a new class of computer programs called
synthesizers began appearing. A synthesizer produces a low-level,
structural description of a circuit based on its HDL description. This
automated behavioral-to-structural translation of a circuit definition
greatly reduced the amount of human effort required to produce a
circuit, and the VHDL language matured from a specification language to a
design language.
The
use of HDLs and synthesizers has revolutionized the way in which
digital engineers work, and it is important to keep in mind how rapidly
this change has come about. In 1990, very few new designs were started
using HDLs (the vast majority were schematic based). By the mid 1990’s,
roughly half of all new designs were using HDLs, and today, all but the
most trivial designs use HDL methods. Such rapid change demonstrates
that engineers overwhelmingly recognize the advantages of using HDLs.
But such rapid change also means that tools, methods, and technologies
are still evolving, and that CAD tools are continuing to be developed
and improved.
Digital
design CAD tools can be placed in two major categories – the
“front-end” tools that allow a design to be captured and simulated, and
“back-end” tools that synthesize a design, map it to a particular
technology, and analyze its performance (thus, front-end tools work
mostly with virtual circuits, and back-end tools work mostly with
physical circuits). Several companies produce CAD tools, with some
focusing on front-end tools, some on back-end tools, and some on both.
Two major HDLs have emerged – one developed by and for private industry
(called Verilog), and the other fueled by the government and specified
by the IEEE (VHDL). Both are similar in appearance and application, and
both have their relative advantages. We will use VHDL, because a greater
number of educational resources have been developed for VHDL than for
Verilog. It should be noted that after learning one of the two
languages, the other could be adopted quickly.
HDLs
have allowed design engineers to increase their productivity many fold
in just a few years. It is fair to say that a well-equipped engineer
today is as productive as a small team of engineers just a few years
ago. Further, hardware specification is now within the reach of a wider
range of engineers; no longer is it the domain of only a few with highly
specialized training and experience. But to support this increased
level of productivity, engineers must master a new set of design skills:
they must be able to craft behavioral circuit definitions that provably
meet design requirements; they must understand synthesis and other CAD
tool processes so that results can be critically examined and
interpreted; and they must be able to model external interfaces to the
design so that it can be rigorously tested and verified. The extra
degree of abstraction that HDL allows brings many new sources of
potential errors, and designers must be able to recognize and address
such errors when they occur.
b. Verilog Verilog, standardized as IEEE 1364, is a hardware description language (HDL) used to model electronic systems. It is most commonly used in the design and verification of digital circuits at the register-transfer level of abstraction. It is also used in the verification of analog circuits and mixed-signal circuits.
Hardware
description languages such as Verilog differ from software Programming
language because they include ways of describing the propagation of
time and signal dependencies (sensitivity). There are two assignment
operators, a blocking assignment (=), and a non-blocking (<=)
assignment. The non-blocking assignment allows designers to describe a
state-machine update without needing to declare and use temporary
storage variables. Since these concepts are part of Verilog's language
semantics, designers could quickly write descriptions of large circuits
in a relatively compact and concise form. At the time of Verilog's
introduction (1984), Verilog represented a tremendous productivity
improvement for circuit designers who were already using graphical Shematic capture software and specially written software programs to document and simulate electronic circuit.
2. Why HDL ?
- VHDL is an international IEEE standard specification language (IEEE 1076-1993) for describing digital hardware used by industry worldwide VHDL is an acronym for VHSIC (Very High Speed Integrated Circuit) Hardware Description Language
- VHDL enables hardware modelling from the gate to system level
- VHDL provides a mechanism for digital design and reusable design documentation
- Formal Specification (not ambiguous) of system’s requirements: formal model to communicate
- Modelling : documentation
- Testing & Validation using simulation Formal verification of correctness of a design: require mathematical statement of the required functions of the system
- Performance prediction
- Automatic synthesis
3. what is FPGA ?
Field Programmable Gate Array
FPGAs
are programmable semiconductor devices that are based around a matrix
of Configurable Logic Blocks (CLBs) connected through programmable
interconnects. As opposed to Application Specific Integrated Circuits (ASICs),
where the device is custom built for the particular design, FPGAs can
be programmed to the desired application or functionality requirements.
Although One-Time Programmable (OTP) FPGAs are available, the dominant
type are SRAM-based which can be reprogrammed as the design evolves.
FPGAs
allow designers to change their designs very late in the design cycle–
even after the end product has been manufactured and deployed in the
field. In addition, Xilinx FPGAs allow for field upgrades to be
completed remotely, eliminating the costs associated with re-designing
or manually updating electronic systems.
4.Why FPGA?
Unlike
processors, FPGAs use dedicated hardware for processing logic and do
not have an operating system. Because the processing paths are
parallel, different operations do not have to compete for the same
processing resources. That means speeds can be very fast, and multiple
control loops can run on a single FPGA device at different rates.
5.Steps to Program Xilinx FPGA
FPGA Design methodology
The generalized implementation flow diagram of the project is as follows.
FIGURE 1 : General Implementation Flow Diagram
Initially
the market research should be carried out which covers the previous
version of the design and the current requirements on the design. Based
on this survey, the specification and the architecture must be
identified. Then the RTL modeling can be carried out in Verilog or VHDL
or Schematic with respect to the identified architecture. Once the RTL
modeling is done, it should be simulated and verified for all the cases.
The functional verification should meet the intended architecture and
should pass all the test cases. Once the functional verification is
clear, the RTL model will be taken to the synthesis process. Three
operations will be carried out in the synthesis process such as
- Translate
- Map
- Place and Route
The
developed RTL model will be translated to the mathematical equation
format which will be in the understandable format of the tool. These
translated equations will be then mapped to the library that is, mapped
to the hardware. Once the mapping is done, the gates are placed and
routed. Before these processes, the constraints can be given in order to
optimize the design. Finally the BIT MAP file will be generated that
has the design information in the binary format which will be dumped in
the FPGA board.
Schematic Design Entry
The
Xilinx Integrated Software Environment (ISE) allows users to design
circuits for Xilinx FPGA’s and CPLD’s. It involves the use of Project
Navigator, a user interface that helps user to manage the entire design
process including design entry, simulation, synthesis, implementation
and finally downloading the design onto FPGA or CPLD.
1. Start ISE from the Start menu by selecting Start -> Programs -> Xilinx ISE 9.2 -> Project Navigator. The ISE Project Navigator opens. The Project Navigator manages the sources and processes in ISE project.
2. The next step is to create a new ISE project. To create a new project for this tutorial:
- Select File -> New Project. The New Project Wizard appears as shown in Figure 2
- First, enter a location (directory path) for the new project.
- Type fadd (for example) in the Project Name field. After typing fadd in the Project Name field, a counter subdirectory is created automatically in the directory path selected.
- Select Schematic in the Top-Level Source Type list, indicating that the top-level file in project will be a schematic rather than HDL, EDIF or NGC/NGO. Click Next to go to the Device Properties window.
FIGURE 2 : Creating a new project
3. In the Device Properties window, select Target device, Simulator tool, Synthesis tool and Hardware language which is used to design code.
4. Click Next three times and reach the Project Summary window. This window gives an overview of project created so far. Click on Finish and the project is created. Verify that the project name is fadd.ise (shown
as the last component in the title bar of the Project Navigator). You
can also verify by going to the location where you created the project
and double-clicking on the folder named fadd.
5. Create a top level schematic for your design. In the Sources window, right click on
Xc3s400-4pq208 and select New Source. A New Source Wizard window appears as shown in Figure 3. Select Schematic and enter fadd under file name. Make sure the “Add to project” checkbox is checked.
FIGURE 3: Creation of a schematic source file
6. Click Next two times followed by Finish to create the fadd.sch file
under the project folder. Figure 4 shows the final layout of the
project after the source file is created. If the schematic is not
visible, click on the “fadd.sch” tab at the bottom of the main design
window to see the schematic.
- Select the required components from symbols by specifying proper category in source window.
- Drag and drop the component symbols.
- Assign ports and complete the circuit using wire.
- Check errors and warnings. Clearing those errors is must.
- Follow the standard procedure for simulation, synthesis and implementation
FIGURE 4: Project Navigator showing top-level schematic
Floorplanning
Floorplanning is the process of:
- Choosing the best grouping and connectivity of logic in a design, and
- Manually placing blocks of logic in an FPGA device.
The goals of floorplanning are to:
- Increase density, routability, or performance.
- Reduce route delays for selected logic by suggesting a better placement.
Floorplanning
has become necessary as designers create ever-more complex designs for
ever-larger FPGA devices. Implementation software has improved to meet
these complexities. On some designs, you can guide the implementation
software by means of a floorplan to:
- Higher system clock frequency
- Shorter implementation run times
- Greater consistency in timing
- In some cases, all of these benefits together
Benefits of Floorplanning
A good floorplan can:
- Improve performance.
- Enable a placed and routed design to meet timing.
Xilinx recommends floorplanning when a design:
- Does not meet timing consistently, or
- Has never met timing.
When to Floorplan
When to floorplan varies greatly among design teams. Design teams may floorplan:
- Before the first iteration through place and route.
- When a problem is identified before floorplanning.
- When a design does not consistently meet the setup timing constraint.
Floorplanning Considerations
- Floorplanning is often an iterative process. The first pass at a floorplan may address issues in one section of the design, only to reveal that a different section is failing.
- Floorplanning can hurt timing as well as improve it.
This is especially true when it is not clear what needs to be floor planned, and where the design needs to be placed.
- Multiple trials and notes about the design can help you create a working floorplan.
Floorplanner
The
Floorplanner is a graphical placement tool that gives you control over
placing a design into a target FPGA using a “drag and drop” paradigm
with the mouse pointer.
The
Floorplanner displays a hierarchical representation of the design in
the Design Hierarchy window using hierarchy structure lines and colors
to distinguish the different hierarchical levels. The Floorplan window
displays the floorplan of the target device into which you place logic
from the hierarchy. The following figure shows the windows on the PC
version.
FIGURE 5: Floorplanner Window
Floorplanning Prerequisites
The
Floorplanner is specifically intended to assist those users who require
some degree of handcrafting for their designs. You must understand both
the details of the device architectures and how floorplanning can be
used to refine a design. Successful floorplanning is very much an
iterative process and it can take time to develop a floorplan that
outperforms an "automatically" processed design. Because of the nature
of the Floor planner’s interaction with the automatic MAP and PAR tools,
several prerequisites are necessary in order to floorplan your design
successfully.
Detailed knowledge of the specifics of the target architecture and part
- Detailed knowledge of the specifics of the design being implemented
- A design that lends itself to floorplanning
- A willingness to iterate a floorplan to achieve the desired results
Features of the Floorplanner
The Floorplanner provides an easy-to-use graphical interface that offers the following features.
- Interacts at a high level of the design hierarchy, as well as with low-level elements such as I/Os, function generators, tristate buffers, flip-flops, and RAM/ROM
- Captures and imposes complex patterns, which is useful for repetitive logic structures such as interleaved buses
- Automatically distributes logic into columns or rows
- Uses dynamic rubber banding to show the rats nest connections
- Finds logic or nets by name or connectivity
- Permits design hierarchy rearrangement to simplify floorplanning
- Groups logic by connectivity or function
- Identifies placement problems in the Floorplan window
- Provides online help
Monday, 5 August 2013
Friday, 2 August 2013
Subscribe to:
Posts (Atom)