UNIT-7-Mixed-Language-Description - KIT
Download
Report
Transcript UNIT-7-Mixed-Language-Description - KIT
UNIT 7: Mixed-Language Description
9.1 Highlights of Mixed-Language Description
Simulator that we use with the HDL package should be able to handle mixedlanguage environment.
Both VHDL and Verilog module files are made visible to the simulator.
In mixed-language environment both VHDL and Verilog Libraries are made
visible to the simulator.
At present time, mixed language environment has many limitations. VHDL
module can only invoke the entire Verilog module; and a Verilog module can only
invoke a VHDL entity. We can not invoke a VHDL procedure from a Verilog
module.
Mixed-Language description can combine advantages of both languages in one
module.
HDL Programming Fundamentals
9.2.1 How to Invoke a VHDL entity from Verilog Module
Listing 9.1 Invoking VHDL entity from Verilog Module
//This is the Verilog module
module mixed (a, b, c, d);
input a,b;
output c,d;
...........
VHD_enty V1 ( a,b,c,d);
/*The above module VHD_enty is the VHDL entity to be
invoked in this module*/
...........
endmodule
--This is the VHDL entity
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
entity VHD_enty is
port (x, y : in std_logic; O1, O2: out std_logic);
end VHD_enty ;
architecture VHD_enty of VHD_enty is
begin
...........
end VHD_enty ;
HDL Programming Fundamentals
Only VHDL entities can
Be invoked from Verilog
module
9.2.2 How to Invoke a Verilog Module from VHDL Module
Listing 9.2 Invoking a Verilog Module from VHDL Module
-- This is the VHDL Project
library IEEE;
Declare a VHDL component
use IEEE.STD_LOGIC_1164.ALL;
entity Ver_VHD is
with the Same name as the
port ( a, b : in std_logic; c: out std_logic);
Verilog Module.
end Ver_VHD;
architecture Ver_VHD of Ver_VHD is
component V_modl
port (x,y: in std_logic; z : out std_logic);
-- The name of the Component V_modl should be identical to the name of the
--Verilog module; also the ports should identical in name and mode
--with the inputs and outputs of the Verilog module
end component;
.......
end Ver_VHD;
//This is the Verilog module
module V_modl (x, y, z);
input x,y;
output z;
..........
endmodule
HDL Programming Fundamentals
9.3.1 Invoking VHDL entity from Verilog Module-Examples
Example 9.1 Mixed-Language Description of a Full Adder
Listing 9.3
x
sum
y
cin
Half adder
Half adder
carry
A VHDL half-adder is written.
A Verilog module uses the
VHDL half adder to describe
A full adder
HDL Programming Fundamentals
Example 9.2 Mixed-Language Description of a 9-bit Adder
Listing 9.4
b6-8
a6-8
b3-5
a3-5
b0-2
a0-2
3
3
3
3
3
3
A3
3-bit
carryLook
ahead
3
Carry_out
Sum_total6-8
cr1
A2
3-bit
carryLook
ahead
3
Sum_total3-5
cr0
A1
3-bit
carryLook
ahead
c0
3
Sum_total0-2
A VHDL description of a 3-bit
Carry-lookahead adder is used
To write a Verilog description of
9-bit adder
HDL Programming Fundamentals
Example 9.3 Mixed-Language Description of 3-bit Adder with zero Flag
Listing 9.5
sum
X
Y
cin
cout
1-bit full adder description
is written in VHDL. A
Verilog module uses the
VHDL description to
describe a 3-bit full adder
with zero flag.
HDL Programming Fundamentals
Example 9.4 Mixed-Language Description of a Master-Slave D Flip-Flop
Listing 9.6
D_in
Q0
d
d
Q
D-Latch
C
clkb
Q
Q_out
D-Latch
C
Qb
Qb_out
Qb
clk2
clk
A VHDL description of a Dlatch is written. A Verilog
module implements the VHDL
description to describe a
Master-Slave D Flip-Flop.
HDL Programming Fundamentals
Example 9.5 Mixed-Language Description of a 4x4 Comparator
Y2
X2
Y1
X1
Y0
X0
Listing 9.7
Full
adder
Full
adder
Full
adder
carry2
carry1
carry0
sum2
xgty
xlty
sum1
0
sum0
A 1-bit full adder is
written in VHDL. A
Verilog module
implements the VHDL
Only three bits code to describe a 4x4
are shown
comparator.
xeqy
HDL Programming Fundamentals
9.3.2 Invoking Verilog module from VHDL Module
Example 9.6 Instantiating an AND gate From VHDL Module
Listing 9.8
VHDL component and2 is
declared in the VHDL
module. A Verilog module
with the same name and2
describes and2. The Verilog
description is implemented
in the VHDL module..
HDL Programming Fundamentals
Example 9.7 Mixed-Language Description of a JK Flip Flop with a Clear
Listing 9.9
A VHDL component jk_verilog
is declared in a VHDL module.
A Verilog module jk_verilog
describes the flip-flop. The
VHDL implements the Verilog
description.
HDL Programming Fundamentals
Example 9.8 Mixed-Language Description of 3-bit Synchronous Counter
with Clear
Listing 9.10
clr
Q
J
Q
JK2
Q
J
Q
JK1
K
Q
J
clrb1
JK0
K
Q
K
1
clrbar
Several VHDL
components JK_FF, inv,
and2, or2 have been
declared in the VHDL
module. Verilog is
implemented to describe
these components.
VHDL uses the escription
to describe the counter.
HDL Programming Fundamentals
Example 9.9 Mixed-Language Description of N-bit Asynchronous Counter
Listing 9.11
rco
Q(n-1)
Q
Q
Q1
J
Q
1
K
Q0
…………...
Q
J
1
K
Q
J
Q
K
1
Two Verilog modules
(jkff and andgate) are
implemented in a VHDL
module to describe N-bit
Asynchronous counter
clk
HDL Programming Fundamentals
Example 9.10 Mixed-Language Description of a Switch-Level Multiplexer
Listing 9.12
A VHDL description appears to
have primitives nmos and
pmos by linking it to a Verilog
module where these primitives
are built-in.
HDL Programming Fundamentals
Example Instantiating CASEX in VHDL.
Listing9.11
Table 9.2 Truth Table for 4-bit Encoder
Input
Output
a
b
xxx1
1
xx10
2
x100
4
1000
8
Others
0
CaseX is a Verilog built-in
function. By writing mixed
language, the VHDL appears as if
it has this built-in function.
HDL Programming Fundamentals
Example 9.12 Mixed-Language Description of a Low Pass RC Filter
Listing 9.14
R
Vi
C
Vo
Verilog can easily handle real
(floating) arithmetic
operations; VHDL can easily
handle File operations. By
writing mixed language, we
utilize the advantages of both
languages.
HDL Programming Fundamentals
9.4 Limitations of Mixed-Language Description
Mixed language description is limited at present time. The limitations can be
summarized as follows
• Not all VHDL data types are supported in mixed language description.
Only bit, bit_vector, std_logic, std_ulogic, std_logic_vector, and
std_ulogic_vector are supported.
•VHDL Port type Buffer is not supported in many of the current simulators.
•Only VHDL component construct can invoke a Verilog module. We can not
invoke Verilog module from any other construct in the VHDL module.
•Verilog module can only invoke a VHDL entity. It can not invoke any other
construct in the VHDL module such as procedures or functions.
HDL Programming Fundamentals
Summary
To invoke a VHDL entity from a Verilog module, we write a module statement in
Verilog. The name of the module should be identical to the name of the entity;
the type of the parameters of the module should match the type of the ports of
the entity. For example the module statement:
HA H1 (y, cin, s0,c0);
written in a Verilog module invokes a VHDL entity by the name of HA. In the
Verilog module, no other module should have the same name HA.
Invoking a Verilog module from VHDL module is done by declaring a component
in the VHDL module with the same name as the Verilog module. The ports of the
component should be the same name and match in type with the ports of the
Verilog module. For example, the VHDL component:
component V_modl
port (x,y: in std_logic; z : out std_logic);
end component;
invokes a Verilog module V_modl.
HDL Programming Fundamentals