Date post: | 04-Jun-2018 |
Category: |
Documents |
Upload: | ravikiran-b-a |
View: | 247 times |
Download: | 3 times |
of 64
8/13/2019 HDL Lab Manual for VTU Syllabus (10ECL48)
1/64
K. S. SCHOOL OF ENGINEERING & MANAGEMENT
# 15, Mallasandra, Off Kanakapura Road,
Bangalore-560062, Karnataka, India.
DEPARTMENT OF ELECTRONICS & COMMUNICATION
ENGINEERING
HDL Lab Manual
Sub Code: 10ECL48
Sem : IV
Prepared By
Mr. Manu D. K., Asst. Professor
Mrs. Shalini Shravan, Asst. Professor
Mr. Ravikiran B. A., Asst. ProfessorMs. Devika N., Asst. Professor
8/13/2019 HDL Lab Manual for VTU Syllabus (10ECL48)
2/64
CONTENTS
PART A:
PROGRAMMING (using VHDL and Veri log)
1. Write HDL code to realize all the logic gates ....................................................................................... 12. Write a HDL program for the following combinational designs .....................................................
................................................................................................................................... 3
b. 8 to 3 (encoder without priority & with priority) .........................................................................9
d. 4 bit binary to gray converter ........................................................................................................ 11e. De-multiplexer, comparator
.................
................................................................................................
...............................................................................................
.................................................................................................
4. Write a model for 32 bit ALU using the schematic diagramshown below A (31:0) B (31:0) .........................................................................................................
ALU should use combinational logic to calculate an output based on the four-bitop-code input.
ALU should pass the result to the out bus when enable line in high, and tri-state the out bus whenthe enable line is low.
ALU should decode the 4 bit op-code according to the given in example below:
OPCODE ALU OPERATION
1. A + B
2. AB
3. A Complement
4. A AND B
5. A OR B
6. A NAND B
7. A XOR B
5 Develop the HDL code for the following flip-flops SR JK D T
OPCODE
ENABLE
ALU
OPERATION
24
26
.....3
a. 2 to 4 decoder..5
c. 8 to 1 multiplexer ............................................................................................................................
..................................................................................................... 14
3. Write a HDL code to describe the functions of a Full Adder Using 3 modeling styles ....18a. Full Adder Data Flow Description 18
b. Full Adder Behavioral Description 19c. Full Adder Structural Description 21
8/13/2019 HDL Lab Manual for VTU Syllabus (10ECL48)
3/64
a. SR Flip Flop ..................................................................................................................................
....................................................................................................................................
6. Design 4 bit binary, BCD counters (Synchronous reset and Asynchronous reset)and any sequence counters ..........................................................................................................
.......................................................................................
PART B:
.........................................
......................................................................................................................................
.................................................................................................................................
...............................................................................................................................
...............................................................................................................................
26
b. JK Flip Flop .................................................................................................................................. 28c. D Flip Flop 30d. T Flip Flop .................................................................................................................................... 32
.....34
a. Binary Synchronous Reset 4bit Counter 34b. Binary Asynchronous Reset 4bit Counter .....................................................................................35c. BCD Synchronous Reset 4bit Counter .........................................................................................37d. BCD Asynchronous Reset 4bit Counter .......................................................................................39e. Binary Any Sequence up down 4bit Counter ...............................................................................41
....43
a. Stepper Motor ............................................................................................................................... 43b. DC Motor
50
.....................................................................................................................................
.....52
a. Sine Wave 52b. Square Wave 56c. Triangle Wave 58d. Positive Ramp 60
I NTERFACING (at least four of the fol lowing must be covered using VHDL /Veri log)
1. Write HDL code to control speed, direction of DC and Stepper motor
46
2. Write HDL code to control external lights using relays. .....................................................................3. Write a HDL code to generate different waveforms (Sine, Square, Triangle,
Ramp etc.,). Using DAC, change the frequency and amplitude ...................................................
8/13/2019 HDL Lab Manual for VTU Syllabus (10ECL48)
4/64
HDL Laboratory (10ECL48) 4t Sem KSSEM, Bangalore
f C | 1
EXPERIMENT 1
ALL LOGIC GATES
a_in
not_op
and_op
nand_op
or_op
nor_op
xor_op
xnor_op
b_in
Logic Diagram of All Gates
Inputs Outputs
a_in b_innot_op
(a_in)and_op nand_op or_op nor_op xor_op xnor_op
0 0 1 0 1 0 1 0 1
0 1 1 0 1 1 0 1 0
1 0 0 0 1 1 0 1 0
1 1 0 1 0 1 0 0 1
Truth Table 1: All Logic Gates
VHDL File Name:AlllogicGates.vhd
-- All Logic Gates - DataFlow
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
ALL
LOGIC
GATES
a_in
b_in
not_op
and_op
nand_op
or_opnor_opxor_opxnor_op
Figure 1: Block Diagram of All Logic Gates
inputs outputs
8/13/2019 HDL Lab Manual for VTU Syllabus (10ECL48)
5/64
HDL Laboratory (10ECL48) 4t Sem KSSEM, Bangalore
f C | 2
entity AllLogicGates is
port ( a_in : in STD_LOGIC;
b_in : in STD_LOGIC;
not_op : out STD_LOGIC;
and_op : out STD_LOGIC;nand_op : out STD_LOGIC;
or_op : out STD_LOGIC;
nor_op : out STD_LOGIC;
xor_op : out STD_LOGIC;
xnor_op : out STD_LOGIC);
end AllLogicGates;
architecture DataFlow of AllLogicGates is
begin
not_op
8/13/2019 HDL Lab Manual for VTU Syllabus (10ECL48)
6/64
HDL Laboratory (10ECL48) 4t Sem KSSEM, Bangalore
f C | 3
EXPERIMENT 2
COMBINATORIAL DESIGNS
A.
2-to-4 Decoder
Decoder 2 to 4
d_in
en
d_op
Figure 2: Block Diagram of Decoder 2 to 4
inputs
outputs
2
4
Inputs Outputs
en d_in(1) d_in(0) d_op(3) d_op(2) d_op(1) d_op(0)
1 X X Z Z Z Z
0 0 0 0 0 0 1
0 0 1 0 0 1 0
0 1 0 0 1 0 0
0 1 1 1 0 0 0
Truth Table 2 : 2-to-4 Decoder
VHDL File Name:decoder2to4.vhd
-- decoder2to4 - Behavioral
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity decoder2to4 is
Port ( d_in : in STD_LOGIC_VECTOR (1 downto 0);en : in STD_LOGIC;
d_op : out STD_LOGIC_VECTOR (3 downto 0));
end decoder2to4;
architecture Behavioral of decoder2to4 is
begin
process(en,d_in)
begin
if(en/='0')then -- Active Low Enabled
d_op
8/13/2019 HDL Lab Manual for VTU Syllabus (10ECL48)
7/64
HDL Laboratory (10ECL48) 4t Sem KSSEM, Bangalore
f C | 4
when "00" => d_op d_op d_op d_op d_op
8/13/2019 HDL Lab Manual for VTU Syllabus (10ECL48)
8/64
HDL Laboratory (10ECL48) 4t Sem KSSEM, Bangalore
f C |
B. 8-to-3 Encoder (Without Priority)
EncoderWithout Priority
a_in
en
y_op
Figure 3: Block Diagram of Encoder Without Priority
inputs
outputs
8
3
Inputs Outputs
en a_in(7) a_in(6) a_in(5) a_in(4) a_in(3) a_in(2) a_in(1) a_in(0) y_op(2) y_op(1) y_op(0)
1 X X X X X X X X Z Z Z
0 0 0 0 0 0 0 0 1 0 0 0
0 0 0 0 0 0 0 1 0 0 0 1
0 0 0 0 0 0 1 0 0 0 1 0
0 0 0 0 0 1 0 0 0 0 1 1
0 0 0 0 1 0 0 0 0 1 0 0
0 0 0 1 0 0 0 0 0 1 0 1
0 0 1 0 0 0 0 0 0 1 1 0
0 1 0 0 0 0 0 0 0 1 1 1
Truth Table 3: Encoder Without Priority
VHDL File Name:encd_wo_prior.vhd
-- encoder without priority - Behavioral
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity encd_wo_prior is
Port ( en : in STD_LOGIC;a_in : in STD_LOGIC_VECTOR (7 downto 0);
8/13/2019 HDL Lab Manual for VTU Syllabus (10ECL48)
9/64
HDL Laboratory (10ECL48) 4t Sem KSSEM, Bangalore
f C | 6
y_op : out STD_LOGIC_VECTOR (2 downto 0));
end encd_wo_prior;
architecture Behavioral of encd_wo_prior is
begin
process (en,a_in)
begin
if(en /= '0') then -- Active Low Enabled
y_op y_op y_op y_op y_op y_op y_op y_op y_op y_op
8/13/2019 HDL Lab Manual for VTU Syllabus (10ECL48)
10/64
HDL Laboratory (10ECL48) 4t Sem KSSEM, Bangalore
f C |
8'b00010000 : y_op = 3'b100;
8'b00100000 : y_op = 3'b101;
8'b01000000 : y_op = 3'b110;
8'b10000000 : y_op = 3'b111;
default : y_op = 3'bZZZ;endcase
end
end
endmodule
8-to-3 Encoder (With Priority)
Encoder
With Priority
a_in
en
y_op
Figure 4: Block Diagram of Encoder With Priority
inputs
outputs
8
3
Inputs Outputs
ena_in(7
)
a_in(6
)
a_in(5
)
a_in(4
)
a_in(3
)a_in(2)
a_in(1
)
a_in
(0)
y_op
(2)
y_op
(1)
y_o
p
(0)
1 X X X X X X X X Z Z Z
0 1 X X X X X X X 1 1 1
0 0 1 X X X X X X 1 1 0
0 0 0 1 X X X X X 1 0 1
0 0 0 0 1 X X X X 1 0 0
0 0 0 0 0 1 X X X 0 1 1
0 0 0 0 0 0 1 X X 0 1 0
0 0 0 0 0 0 0 1 X 0 0 1
0 0 0 0 0 0 0 0 1 0 0 0
Truth Table 4: Encoder With Priority
8/13/2019 HDL Lab Manual for VTU Syllabus (10ECL48)
11/64
HDL Laboratory (10ECL48) 4t Sem KSSEM, Bangalore
f C | 8
VHDL File Name:encd_w_prior.vhd
-- encd_w_prior - Dataflow
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity encd_w_prior is
Port ( en : in STD_LOGIC;
a_in : in STD_LOGIC_VECTOR (7 downto 0);
y_op : out STD_LOGIC_VECTOR (2 downto 0));
end encd_w_prior;
architecture Dataflow of encd_w_prior is
beginy_op
8/13/2019 HDL Lab Manual for VTU Syllabus (10ECL48)
12/64
HDL Laboratory (10ECL48) 4t Sem KSSEM, Bangalore
f C | 9
else if(a_in[4] == 1'b1) y_op = 3'b100;
else if(a_in[3] == 1'b1) y_op = 3'b011;
else if(a_in[2] == 1'b1) y_op = 3'b010;
else if(a_in[1] == 1'b1) y_op = 3'b001;
else if(a_in[0] == 1'b1) y_op = 3'b000;else y_op = 3'bZZZ;
end
end
endmodule
C. Multiplexer 8 to 1
Multiplexer 8 to 1
i_in
en
y_out
Figure 5: Block Diagram of Multiplexer 8 to 1
inputs
output
8
sel3
Inputs Output
ensel
(2)
sel
(1)
sel
(0)
i_in
(7)
i_in
(6)
i_in
(5)
i_in
(4)
i_in
(3)
i_in
(2)
i_in
(1)
i_in
(0)y_out
1 X X X X X X X X X X X Z
0 0 0 0 0 0 0 0 0 0 0 1 1
0 0 0 1 0 0 0 0 0 0 1 0 1
0 0 1 0 0 0 0 0 0 1 0 0 1
0 0 1 1 0 0 0 0 1 0 0 0 1
0 1 0 0 0 0 0 1 0 0 0 0 1
0 1 0 1 0 0 1 0 0 0 0 0 1
0 1 1 0 0 1 0 0 0 0 0 0 1
0 1 1 1 1 0 0 0 0 0 0 0 1
Truth Table 5: Mux 8 to 1
8/13/2019 HDL Lab Manual for VTU Syllabus (10ECL48)
13/64
HDL Laboratory (10ECL48) 4t Sem KSSEM, Bangalore
f C | 10
VHDL File Name:mux8to1.vhd
--mux8to1 - Behavioral
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity mux8to1 is
Port ( en : in STD_LOGIC;
sel : in STD_LOGIC_VECTOR (2 downto 0);
i_in : in STD_LOGIC_VECTOR (7 downto 0);
y_out : out STD_LOGIC);
end mux8to1;
architecture Behavioral of mux8to1 is
beginprocess(en,sel,i_in)
begin
if( en /= '0') then -- Active Low Enabled
y_out y_out y_out y_out y_out y_out y_out y_out y_out y_out
8/13/2019 HDL Lab Manual for VTU Syllabus (10ECL48)
14/64
HDL Laboratory (10ECL48) 4t Sem KSSEM, Bangalore
f C | 11
reg y_out;
always@(en,sel,i_in)
begin
if(en != 0) // Active Low Enabledy_out = 1'bZ;
else
begin
case(sel)
3'b000: y_out = i_in[0];
3'b001: y_out = i_in[1];
3'b010: y_out = i_in[2];
3'b011: y_out = i_in[3];
3'b100: y_out = i_in[4];
3'b101: y_out = i_in[5];
3'b110: y_out = i_in[6];3'b111: y_out = i_in[7];
default: y_out = 1'bZ;
endcase
end
end
endmodule
D. 4-Bit Binary to Gray Converter
Binary
to
Gray
Converterb_in
g_op
Figure 6: Block Diagram of Binary to Gray Converter
inputs
outputs4
4
Logic Diagram of 4bits Binary to Gray
Converter
b_in(0)g_op(0)
b_in(1)
b_in(2)
b_in(3)
g_op(1)
g_op(2)
g_op(3)
8/13/2019 HDL Lab Manual for VTU Syllabus (10ECL48)
15/64
HDL Laboratory (10ECL48) 4t Sem KSSEM, Bangalore
f C | 12
Boolean Expressions
g_op(3) = b_in(3)
g_op(2) = b_in(3)b_in(2)
g_op(1) = b_in(2)b_in(1)
g_op(0) = b_in(1)b_in(0)
Inputs Outputs
DecimalBinary Gray
b_in(3) b_in(2) b_in(1) b_in(0) g_op(3) g_op(2) g_op(1) g_op(0)
0 0 0 0 0 0 0 0 0
1 0 0 0 1 0 0 0 1
2 0 0 1 0 0 0 1 1
3 0 0 1 1 0 0 1 0
4 0 1 0 0 0 1 1 0
5 0 1 0 1 0 1 1 1
6 0 1 1 0 0 1 0 1
7 0 1 1 1 0 1 0 0
8 1 0 0 0 1 1 0 0
9 1 0 0 1 1 1 0 1
10 1 0 1 0 1 1 1 1
11 1 0 1 1 1 1 1 0
12 1 1 0 0 1 0 1 0
13 1 1 0 1 1 0 1 1
14 1 1 1 0 1 0 0 1
15 1 1 1 1 1 0 0 0
Truth Table 6: Binary to Gray
8/13/2019 HDL Lab Manual for VTU Syllabus (10ECL48)
16/64
HDL Laboratory (10ECL48) 4t Sem KSSEM, Bangalore
f C | 13
VHDL File Name:bin_to_gray_4bit.vhd
-- Binary to Gray 4 bit converter - Dataflow
library IEEE;use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity bin_to_gray_4bit is
Port ( b_in : in STD_LOGIC_VECTOR (3 downto 0);
g_op : out STD_LOGIC_VECTOR (3 downto 0));
end bin_to_gray_4bit;
architecture Dataflow of bin_to_gray_4bit is
beging_op(3)
8/13/2019 HDL Lab Manual for VTU Syllabus (10ECL48)
17/64
HDL Laboratory (10ECL48) 4t Sem KSSEM, Bangalore
f C | 14
E. Demultiplexer 1 to 4
Demultiplexer 1 to 4sel
en
Figure 7: Block Diagram of Demultiplexer 1 to 4
inputs2 y_out
outputs
4
a_in
Inputs Outputs
en sel (1) sel (0) a_in y_out (3) y_out (2) y_out (1) y_out (0)
1 X X X Z Z Z Z0 0 0 1 0 0 0 1
0 0 1 1 0 0 1 0
0 1 0 1 0 1 0 0
0 1 1 1 1 0 0 0
Truth Table 7: Demux 1 to 4
VHDL File Name:demux1to4.vhd
-- Demux1to4 - Behavioral
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity demux1to4 is
Port ( en : in STD_LOGIC;
sel : in STD_LOGIC_VECTOR(1 downto 0);
a_in : in STD_LOGIC;
y_out : out STD_LOGIC_VECTOR (3 downto 0));end demux1to4;
architecture Behavioral of demux1to4 is
begin
process(en,sel,a_in)
begin
if(en /= '0') then -- Active Low Enabled
y_out
8/13/2019 HDL Lab Manual for VTU Syllabus (10ECL48)
18/64
HDL Laboratory (10ECL48) 4t Sem KSSEM, Bangalore
f C | 1
when "01" => y_out(1) y_out(2) y_out(3) y_out
8/13/2019 HDL Lab Manual for VTU Syllabus (10ECL48)
19/64
HDL Laboratory (10ECL48) 4t Sem KSSEM, Bangalore
f C | 16
F. 4-Bit Comparator
Comparator 4bit
b_in
g_op
Figure 8: Block Diagram of Comparator 4bit
inputs
outputs
4
a_in4
L_op
e_op
InputsOutputs
a_in > b_in a_in = b_in a_in < b_in
a_in b_in g_op e_op L_op
---- ---- Z Z Z
1100 0011 1 0 0
0110 0110 0 1 0
1000 1110 0 0 1
Truth Table 8: Comparator 4Bits
VHDL File Name:comparator4bit.vhd
--Comparator4bit - Behavioral
library IEEE;use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity comparator4bit is
Port ( a_in : in STD_LOGIC_VECTOR (3 downto 0);
b_in : in STD_LOGIC_VECTOR (3 downto 0);
g_op : out STD_LOGIC;
e_op : out STD_LOGIC;
L_op : out STD_LOGIC);
end comparator4bit;
architecture Behavioral of comparator4bit is
begin
process(a_in,b_in)
begin
if( a_in > b_in) then
g_op
8/13/2019 HDL Lab Manual for VTU Syllabus (10ECL48)
20/64
HDL Laboratory (10ECL48) 4t Sem KSSEM, Bangalore
f C | 1
e_op
8/13/2019 HDL Lab Manual for VTU Syllabus (10ECL48)
21/64
HDL Laboratory (10ECL48) 4t Sem KSSEM, Bangalore
f C | 18
EXPERIMENT 3
FULL ADDER
Full Adder
sum
Figure 9: Block Diagram of Full Adder
inputsoutputs
carry
a_in
b_in
c_in
Logic Diagram of Full Adder
a_in
b_in sum
c_in
carry
x1x2
a2
a1o1
S1
S2
S3
Inputs Outputs
a_in b_in c_in sum carry
0 0 0 0 0
0 0 1 1 0
0 1 0 1 0
0 1 1 0 1
1 0 0 1 0
1 0 1 0 1
1 1 0 0 1
1 1 1 1 1
Truth Table 9: Full Adder
8/13/2019 HDL Lab Manual for VTU Syllabus (10ECL48)
22/64
HDL Laboratory (10ECL48) 4t Sem KSSEM, Bangalore
f C | 19
A. Full Adder Data Flow DescriptionVHDL File Name:FullAdder_DF.vhd
-- FullAdder_DF - Data_Flowlibrary IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity FullAdder_DF is
Port ( a_in, b_in, c_in : in STD_LOGIC;
sum, carry : out STD_LOGIC);
end FullAdder_DF;
architecture Data_Flow of FullAdder_DF isbegin
sum
8/13/2019 HDL Lab Manual for VTU Syllabus (10ECL48)
23/64
HDL Laboratory (10ECL48) 4t Sem KSSEM, Bangalore
f C | 20
end FullAdder_Behav;
architecture Behavioral of FullAdder_Behav is
begin
process ( a_in, b_in, c_in)begin
if(a_in='0' and b_in='0' and c_in = '0') then
sum
8/13/2019 HDL Lab Manual for VTU Syllabus (10ECL48)
24/64
HDL Laboratory (10ECL48) 4t Sem KSSEM, Bangalore
f C | 21
else if (( a_in==0 & b_in==1 & c_in == 1)
| (a_in==1 & b_in==0 & c_in == 1)
| (a_in==1 & b_in==1 & c_in == 0))
begin
sum = 0;carry = 1;
end
else if(a_in==1 & b_in==1 & c_in == 1)
begin
sum = 1;
carry = 1;
end
end
endmodule
C. Full Adder Structural DescriptionVHDL File Name:full_adder_struct.vhd
-- Full Adder - Structural
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity full_adder is
port ( a_in, b_in, c_in : in STD_LOGIC;
sum,carry : out STD_LOGIC);
end full_adder;
architecture structural of full_adder is
component xor2_1
port( a, b : in STD_LOGIC;
y : out STD_LOGIC);
end component;
component and2_1port( a, b : in STD_LOGIC;
y : out STD_LOGIC);
end component;
component or2_1
port( a, b : in STD_LOGIC;
y : out STD_LOGIC);
end component;
signal s1,s2,s3: STD_LOGIC;
begin
x1: xor2_1 port map (a_in, b_in, s1);
a1: and2_1 port map (a_in, b_in, s2);
8/13/2019 HDL Lab Manual for VTU Syllabus (10ECL48)
25/64
HDL Laboratory (10ECL48) 4t Sem KSSEM, Bangalore
f C | 22
x2: xor2_1 port map (s1, c_in, sum);
a2: and2_1 port map (s1, c_in, s3);
o1: or2_1 port map (s2, s3, carry);
end structural;
VHDL File Name:xor2_1.vhd
-- xor2_1 - DataFlow
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity xor2_1 is
Port ( a,b : in STD_LOGIC;
y : out STD_LOGIC);end xor2_1;
architecture data_flow of xor2_1 is
begin
y
8/13/2019 HDL Lab Manual for VTU Syllabus (10ECL48)
26/64
HDL Laboratory (10ECL48) 4t Sem KSSEM, Bangalore
f C | 23
entity or2_1 is
Port ( a,b : in STD_LOGIC;
y : out STD_LOGIC);
end or2_1;
architecture data_flow of or2_1 is
begin
y
8/13/2019 HDL Lab Manual for VTU Syllabus (10ECL48)
27/64
HDL Laboratory (10ECL48) 4t Sem KSSEM, Bangalore
f C | 24
EXPERIMENT 4
32 - BIT ALU
ALU 32bitsa_in
b_in
y_op
Figure 10: Block Diagram of ALU 32bits
inputsoutputs
opc4
32
32
32
en
Inputs OutputsActions
en opc a_in b_in y_op
0XXX
XXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
ZZZZNo Change
1 0001011000000000000001111111111111
11
0100000000000000011111111001100
1
101000000000000011111111100110
00a_in + b_in
1 0010011000000000000001111111111111
11
0100000000000000011111111001100
1
001000000000000000000000011001
10a_in - b_in
1 0011011000000000000001111111111111
11
0100000000000000011111111001100
1
100111111111111110000000000000
00not a_in
1 0100011000000000000001111111111111
11
0100000000000000011111111001100
1
010000000000000001111111100110
01a_in and
b_in
1 0101
011000000000000001111111111111
11
0100000000000000011111111001100
1
011000000000000001111111111111
11 a_in or b_in
1 0110011000000000000001111111111111
11
0100000000000000011111111001100
1
101111111111111110000000011001
10a_in nand
b_in
1 0111011000000000000001111111111111
11
0100000000000000011111111001100
1
001000000000000000000000011001
10a_in xor
b_in
Truth Table 10: ALU 32bits
VHDL File Name:alu32bit.vhd
--ALU32bitBehavioral
library IEEE;use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity alu32bit is
Port ( en : in BIT;
opc : in STD_LOGIC_VECTOR (3 downto 0);
a_in, b_in : in STD_LOGIC_VECTOR (31 downto 0);
y_op : out STD_LOGIC_VECTOR (31 downto 0));
end alu32bit;
architecture Behavioral of alu32bit is
8/13/2019 HDL Lab Manual for VTU Syllabus (10ECL48)
28/64
HDL Laboratory (10ECL48) 4t Sem KSSEM, Bangalore
f C | 2
begin
process(en, a_in, b_in, opc)
begin
if (en = '1') then -- Active High Enabled
case opc iswhen "0001" => y_op y_op y_op y_op y_op y_op y_op null;
end case;
else
y_op
8/13/2019 HDL Lab Manual for VTU Syllabus (10ECL48)
29/64
HDL Laboratory (10ECL48) 4t Sem KSSEM, Bangalore
f C | 26
EXPERIMENT 5
FLIP FLOPS
A.
SR Flip Flop
SR Flip Flop
rst
qb
Figure 11: Block Diagram of SR Flip Flop
inputs
clk
s
q
outputs
r
Inputs Outputs
rst clk s r q qb Action
1 X X q qb No Change
0 0 0 q qb No Change
0 0 1 0 1 Reset0 1 0 1 0 Set
0 1 1 - - Illegal
Truth Table 11: S R Flip Flop
VHDL File Name:sr_ff.vhd
-- S R Flip Flop
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity sr_ff is
Port ( s,r,rst,clk : in STD_LOGIC;
q,qb : out STD_LOGIC);
end sr_ff;
architecture Behavioral of sr_ff is
signal temp : std_logic := '0';
begin
8/13/2019 HDL Lab Manual for VTU Syllabus (10ECL48)
30/64
HDL Laboratory (10ECL48) 4t Sem KSSEM, Bangalore
f C | 2
process(clk,rst)
begin
if(rst = '1') then
temp
8/13/2019 HDL Lab Manual for VTU Syllabus (10ECL48)
31/64
HDL Laboratory (10ECL48) 4t Sem KSSEM, Bangalore
f C | 28
B. J K Flip Flop
JK Flip Flop
rst
qb
Figure 12: Block Diagram of JK Flip Flop
inputs
clk
j
q
outputsk
Inputs Outputs
rst clk j k q qb Action
1 X X q qb No Change
0 0 0 q qb No Change
0 0 1 0 1 Reset
0 1 0 1 0 Set
0 1 1 q' q' Toggle
Truth Table 12: J K Flip Flop
VHDL File Name:jk_ff.vhd
--JK Flip Flop
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity jk_ff is
Port ( j,k,rst,clk : in STD_LOGIC;
q,qb : out STD_LOGIC);
end jk_ff;
architecture Behavioral of jk_ff is
signal temp : std_logic := '0';begin
process(clk,rst)
begin
if(rst = '1') then
temp
8/13/2019 HDL Lab Manual for VTU Syllabus (10ECL48)
32/64
HDL Laboratory (10ECL48) 4t Sem KSSEM, Bangalore
f C | 29
temp
8/13/2019 HDL Lab Manual for VTU Syllabus (10ECL48)
33/64
HDL Laboratory (10ECL48) 4t Sem KSSEM, Bangalore
f C | 30
C. D Flip Flop
D Flip Flop
rst
qb
Figure 13: Block Diagram of D Flip Flop
inputs
clk
d q
outputs
Inputs Outputs
rst clk d q qb Action
1 X q qb No Change
0 0 0 1 Reset
0 1 1 0 Set
Truth Table 13: D Flip Flop
VHDL File Name:d_ff.vhd
-- D Flip Flop
library IEEE;use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity d_ff is
Port ( d,clk,rst : in STD_LOGIC;
q,qb : out STD_LOGIC);
end d_ff;
architecture Behavioral of d_ff is
signal temp : std_logic := '0';
beginprocess(clk,rst)
begin
if(rst = '1') then
temp
8/13/2019 HDL Lab Manual for VTU Syllabus (10ECL48)
34/64
HDL Laboratory (10ECL48) 4t Sem KSSEM, Bangalore
f C | 31
Verilog File Name:d_ff.v
//Async D Flip Flop
module d_ff( d , clk , reset , q ,qb );
input d, clk, reset ;output q,qb;
reg q,qb;
always @ ( posedge clk or posedge reset)
if (reset)
begin
q = 1'b0;
qb=~q;
end
else
beginq = d;
qb=~q;
end
endmodule
8/13/2019 HDL Lab Manual for VTU Syllabus (10ECL48)
35/64
HDL Laboratory (10ECL48) 4t Sem KSSEM, Bangalore
f C | 32
D. T Flip Flop
T Flip Flop
rst
qb
Figure 14: Block Diagram of T Flip Flop
inputs
clk
t q
outputs
Inputs Outputs
rst clk t q qb Action
1 X q qb No Change
0 0 q qb No Change
0 1 q' q' Toggle
Truth Table 14: T Flip Flop
VHDL File Name:t_ff.vhd
--T Flip Flop
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity t_ff is
Port ( t,clk,rst : in STD_LOGIC;
q,qb : out STD_LOGIC);
end t_ff;
architecture Behavioral of t_ff is
signal temp : std_logic := '0';
beginprocess(clk,rst)
begin
if(rst = '1') then
temp
8/13/2019 HDL Lab Manual for VTU Syllabus (10ECL48)
36/64
HDL Laboratory (10ECL48) 4t Sem KSSEM, Bangalore
f C | 33
Verilog File Name:t_ff.v
//Async T Flip Flop
module t_ff( t, clk, reset, q, qb );
input t, clk, reset ;output q,qb;
reg q,qb;
always @ ( posedge clk or posedge reset)
if (reset)
begin
q = 1'b0;
qb=~q;
end
else
if (t)begin
q = ~q;
qb = ~q;
end
endmodule
8/13/2019 HDL Lab Manual for VTU Syllabus (10ECL48)
37/64
HDL Laboratory (10ECL48) 4t Sem KSSEM, Bangalore
f C | 34
EXPERIMENT 6
4- BIT COUNTERS
A.
Binary Synchronous Reset 4-bit Counter
Binary Synchronous Reset
4bit Counterrst
Figure 15: Block Diagram of Binary Synchronous Reset 4bit Counter
inputs
clk
bin_outoutputs
4
VHDL File Name:bin_counter_sync_4bit.vhd
-- Binary Synchronous reset 4bit counter
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity bin_counter_sync_4bit is
Port ( clk,rst : in STD_LOGIC;
bin_out : out STD_LOGIC_VECTOR (3 downto 0));end bin_counter_sync_4bit;
architecture Behavioral of bin_counter_sync_4bit is
signal temp: std_logic_vector(3 downto 0);
begin
process(clk)
begin
if ( clk'event and clk='1') then
if(rst = '1') then
temp
8/13/2019 HDL Lab Manual for VTU Syllabus (10ECL48)
38/64
HDL Laboratory (10ECL48) 4t Sem KSSEM, Bangalore
f C | 3
output [3:0] count;
reg [3:0] count;
initial
begin
count = 4'b0000;end
always @(posedge clk)
if(rst)
count = 4'b0000;
else
count = count + 4'b0001;
endmodule
B. Binary Asynchronous Reset 4-bit Counter
Binary Asynchronous Reset
4bit Counterrst
Figure 16: Block Diagram of Binary Asynchronous Reset 4bit Counter
inputs
clk
bin_out
outputs
4
VHDL File Name:bin_counter_async_4bit.vhd
--Binary Asynchronous reset 4bit counter
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity bin_counter_async_4bit is
Port ( clk,rst : in STD_LOGIC;
bin_out : out STD_LOGIC_VECTOR (3 downto 0));
end bin_counter_async_4bit;
architecture Behavioral of bin_counter_async_4bit is
signal temp: std_logic_vector(3 downto 0);
begin
process(clk,rst)
beginif(rst = '1') then
8/13/2019 HDL Lab Manual for VTU Syllabus (10ECL48)
39/64
HDL Laboratory (10ECL48) 4t Sem KSSEM, Bangalore
f C | 36
temp
8/13/2019 HDL Lab Manual for VTU Syllabus (10ECL48)
40/64
HDL Laboratory (10ECL48) 4t Sem KSSEM, Bangalore
f C | 3
C. BCD Synchronous Reset 4-bit Counter
BCD Synchronous Reset
4bit Counterrst
Figure 17: Block Diagram of BCD Synchronous Reset 4bit Counter
inputs
clk
bcd_outoutputs
4
VHDL File Name:bcd_counter_sync_4bit.vhd
--BCD Synchronous reset 4bit counter
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity bcd_counter_sync is
Port ( clk,rst : in STD_LOGIC;
bcd_out : out STD_LOGIC_VECTOR (3 downto 0));
end bcd_counter_sync;
architecture Behavioral of bcd_counter_sync is
signal temp: std_logic_vector(3 downto 0);
begin
process(clk)
begin
if ( clk'event and clk='1') then
if(rst = '1' or temp = "1001") then
temp
8/13/2019 HDL Lab Manual for VTU Syllabus (10ECL48)
41/64
HDL Laboratory (10ECL48) 4t Sem KSSEM, Bangalore
f C | 38
Verilog File Name:bcd_counter_sync_4bit.v
// BCD synchronous reset 4bit countermodule bcd_sync ( rst, clk, count);
input rst,clk;
output [3:0] count;
reg [3:0] count;
initial
begin
count = 4'd0;
end
always @(posedge clk)
if(rst)
count = 4'd0;else if(count < 4'd9 )
count = count + 4'd1;
else
count = 4'd0;
endmodule
8/13/2019 HDL Lab Manual for VTU Syllabus (10ECL48)
42/64
HDL Laboratory (10ECL48) 4t Sem KSSEM, Bangalore
f C | 39
D. BCD Asynchronous Reset 4-bit Counter
BCD Asynchronous Reset4bit Counter
rst
Figure 18: Block Diagram of BCD Asynchronous Reset 4bit Counter
inputs
clk
bcd_outoutputs
4
VHDL File Name:bcd_counter_async_4bit.vhd
-- BCD asynchronous reset 4bit counter
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity bcd_counter_async is
Port ( clk,rst : in STD_LOGIC;
bcd_out : out STD_LOGIC_VECTOR (3 downto 0));
end bcd_counter_async;
architecture Behavioral of bcd_counter_async is
signal temp: std_logic_vector(3 downto 0):= "0000";
begin
process(clk,rst)
begin
if(rst = '1' or temp = "1010") then
temp
8/13/2019 HDL Lab Manual for VTU Syllabus (10ECL48)
43/64
HDL Laboratory (10ECL48) 4t Sem KSSEM, Bangalore
f C | 40
Verilog File Name:bcd_counter_async_4bit.v
// BCD asynchronous reset 4bit counter
module bcd_async ( rst, clk, count);
input rst,clk;output [3:0] count;
reg [3:0] count;
initial
begin
count = 4'd0;
end
always @(posedge clk or posedge rst)
if(rst)
count = 4'd0;
else if(count < 4'd9 )count = count + 4'd1;
else
count = 4'd0;
endmodule
8/13/2019 HDL Lab Manual for VTU Syllabus (10ECL48)
44/64
HDL Laboratory (10ECL48) 4t Sem KSSEM, Bangalore
f C | 41
E. Binary Any-Sequence Up-Down 4-bit Counter
Binary Any Sequence
4bit Counterupdown
Figure 19: Block Diagram of Binary Any Sequence 4bit Counter
inputs
clk
bin_outoutputs
4
rst
d_in
load
4
VHDL File Name:bin_counter_any_seq_4bit.vhd
-- Binary Any Sequence up down 4bit counter
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity bin_counter_any_seq is
Port ( clk,rst,load,updown : in STD_LOGIC;
d_in :in STD_LOGIC_VECTOR( 3 downto 0);
bin_out : out STD_LOGIC_VECTOR (3 downto 0));end bin_counter_any_seq;
architecture Behavioral of bin_counter_any_seq is
signal temp: std_logic_vector(3 downto 0):= "0000";
begin
process(clk, rst)
begin
if(rst = '1') then
temp
8/13/2019 HDL Lab Manual for VTU Syllabus (10ECL48)
45/64
HDL Laboratory (10ECL48) 4t Sem KSSEM, Bangalore
f C | 42
Verilog File Name:bin_counter_any_seq_4bit.v
// Binary Any Sequence Up Down Counter
module any_seq_bin ( rst,load, clk,din,updown, count);
input rst,clk,updown,load;input [3:0] din;
output [3:0] count;
reg [3:0] count;
always @(posedge clk)
if(rst)
count = 4'b0000;
else if(load)
count = din;
else if (updown)
count = count + 4'b0001;else
count = count - 4'b0001;
endmodule
8/13/2019 HDL Lab Manual for VTU Syllabus (10ECL48)
46/64
HDL Laboratory(10ECL48) 4thSem KSSEM,Bangalore
Dept of ECE Page|43
PART B
EXPERIMENT 1
STEPPER MOTOR AND DC MOTOR
1.(a) Write a VHDL code to control speed, direction of Stepper motor.
Figure 1 : Interfacing Diagram of CPLD Board and Stepper Motor Interfacing Card
Figure 2: Block Diagram of Stepper Motor
8/13/2019 HDL Lab Manual for VTU Syllabus (10ECL48)
47/64
HDL Laboratory(10ECL48) 4thSem KSSEM,Bangalore
Dept of ECE Page|44
Procedure:
1. Make the connection between FRC9 of the FPGA board to the Stepper motor connector of
the VTU card2.
2. Make the connection between FRC7 of the FPGA board to the Keyboard connector of the
VTU card2.
3. Make the connection between FRC1 of the FPGA board to the Dip switch connector of the
VTU card2.
4. Connect the downloading cable and power supply to the FPGA board.
5. Then open the Xilinx IMPACT software (refer ISE flow) select the slave serial mode and
select the respective BIT file and click program.
6. Make the reset switch on (active low).
7. Press the HEX keys and analyze the speed changes.
VHDL CODING :
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity STEPPERnew is
Port ( dout : out std_logic_vector(3 downto 0);
clk,reset: in std_logic;
row:in std_logic_vector(1 downto 0);
dir:in std_logic);
end STEPPERnew;
architecture Behavioral of STEPPERnew is
signal clk_div : std_logic_vector(25 downto 0);
signal clk_int: std_logic;
signal shift_reg : std_logic_vector(3 downto 0);
begin
process(clk)
begin
if rising_edge (clk) then
8/13/2019 HDL Lab Manual for VTU Syllabus (10ECL48)
48/64
HDL Laboratory(10ECL48) 4thSem KSSEM,Bangalore
Dept of ECE Page|45
clk_div
8/13/2019 HDL Lab Manual for VTU Syllabus (10ECL48)
49/64
HDL Laboratory(10ECL48) 4thSem KSSEM,Bangalore
Dept of ECE Page|46
1. (b) Write a VHDL code to control speed, direction of DC motor.
Figure 3 : Interfacing Diagram of CPLD Board and DC Motor Interfacing Card
Figure 4: Block Diagram of DC Motor
Procedure:
1. Make the connection between FRC9 of the FPGA board to the DC motor connector of
the VTU card2.
2. Make the connection between FRC7 of the FPGA board to the Keyboard connector of the
VTU card2.
3. Make the connection between FRC1 of the FPGA board to the Dip switch connector of the
VTU card2.
4. Connect the downloading cable and power supply to the FPGA board.
5. Then open the Xilinx iMPACT software (refer ISE flow) select the slave serial mode and
select the respective BIT file and click program.
6. Make the reset switch on (active low).
7. Press the HEX keys and analyze the speed changes.
VHDL CODING :
8/13/2019 HDL Lab Manual for VTU Syllabus (10ECL48)
50/64
HDL Laboratory(10ECL48) 4thSem KSSEM,Bangalore
Dept of ECE Page|47
Library IEEE;
use IEEE.std_logic_1164.all;
use IEEE.STD_LOGIC_UNSIGNED.all;
Library UNISIM;
use UNISIM.vcomponents.all;
entity dcmotor is
generic(bits : integer := 8 ); -- number of bits used for duty cycle.
-- Also determines pwm period.
port ( CLK: in STD_LOGIC; -- 4 MHz clock
RESET,DIR: in STD_LOGIC; -- dircntr
pwm : out std_logic_VECTOR(1 DOWNTO 0);
rly: out std_logic;
ROW: in STD_LOGIC_VECTOR(0 to 3) ); -- this are the row lines
end dcmotor;
architecture dcmotor1 of dcmotor is
signal counter : std_logic_vector(bits - 1 downto 0):="11111110";
signal DIV_REG: STD_LOGIC_VECTOR (16 downto 0); -- clock divide register
signal DCLK,DDCLK,datain,tick: STD_LOGIC; -- this has the divided clock.
signal duty_cycle: integer range 0 to 255;signal ROW1 : STD_LOGIC_VECTOR(0 to 3); -- this are the row lines
begin
-- select the appropriate lines for setting frequency
CLK_DIV: process (CLK, DIV_REG) -- clock divider
begin
if (CLK'event and CLK='1') then
DIV_REG
8/13/2019 HDL Lab Manual for VTU Syllabus (10ECL48)
51/64
HDL Laboratory(10ECL48) 4thSem KSSEM,Bangalore
Dept of ECE Page|48
process(tick)
begin
if falling_edge(tick) then
case row is
when "1110" => duty_cycle duty_cycle duty_cycle duty_cycle duty_cycle
8/13/2019 HDL Lab Manual for VTU Syllabus (10ECL48)
52/64
HDL Laboratory(10ECL48) 4thSem KSSEM,Bangalore
Dept of ECE Page|49
UCF file(User constraint File)NET "CLK" LOC = "p52" ;
NETIR49 LOC =7649;
NET "pwm" LOC = "p4" ;
NET "pwm" LOC = "p141" ;
NET "RESET" LOC = "p74" ;NET "rly" LOC = "p44" ;
NET "ROW" LOC = "p69" ;
NET "ROW" LOC = "p63" ;NET "ROW" LOC = "p59" ;
NET "ROW" LOC = "p57" ;
8/13/2019 HDL Lab Manual for VTU Syllabus (10ECL48)
53/64
HDL Laboratory(10ECL48) 4thSem KSSEM,Bangalore
Dept of ECE Page|50
EXPERIMENT 2
EXTERNAL LIGHT
2. Write a VHDL code to control external lights using relays.
Figure 5: Interfacing Diagram of CPLD Board and Relay Interface Card
Procedure:
1. Make the connection between FRC9 of the FPGA board to the External light connector of
the VTU card2.
2. Make the connection between FRC1 of the FPGA board to the Dip switch connector of the
VTU card2.
3. Connect the downloading cable and power supply to the FPGA board.
4. Then open the Xilinx iMPACT software (refer ISE flow) select the slave serial mode and
select the respective BIT file and click program.
5. Make the reset switch on (active low) and analyze the data.
8/13/2019 HDL Lab Manual for VTU Syllabus (10ECL48)
54/64
HDL Laboratory(10ECL48) 4thSem KSSEM,Bangalore
Dept of ECE Page|51
VHDL CODING :
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity extlight is
Port ( cntrl1,cntrl2 : in std_logic;
light : out std_logic);
end extlight;
architecture Behavioral of extlight is
begin
light
8/13/2019 HDL Lab Manual for VTU Syllabus (10ECL48)
55/64
HDL Laboratory(10ECL48) 4thSem KSSEM,Bangalore
Dept of ECE Page|52
EXPERIMENT 3
SIGNAL GENERATION USING DAC
3.(a) Write a VHDL code to generate Sine waveforms using DAC .
.
Figure 6: Interfacing Diagram of CPLD Board and Dac Interface Card
Figure 7: Block Diagram of Sine/Traingular/Square/Ramp Wave Generator using DAC
Procedure:
8/13/2019 HDL Lab Manual for VTU Syllabus (10ECL48)
56/64
HDL Laboratory(10ECL48) 4thSem KSSEM,Bangalore
Dept of ECE Page|53
1. Make the connection between FRC5 of the FPGA board to the DAC connector of
the VTU card2.
2. Make the connection between FRC1 of the FPGA board to the Dip switch connector of the
VTU card2.
3. Connect the downloading cable and power supply to the FPGA board.
4. Then open the Xilinx iMPACT software (refer ISE flow) select the slave serial mode and
select the respective BIT file and click program.
5. Make the reset switch on (active low) and analyze the data.
VHDL CODING :
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_ARITH.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
entity sine is
port ( clk : in std_logic;
rst : in std_logic;
dac_out : out std_logic_vector(0 to 7));
end sine;
architecture behavioral of sine is
signal c1:std_logic_vector(7 downto 0);
signal i :integer range 0 to 179;
type sine is array (0 to 179) of integer range 0 to 255;
constant VALUE:SINE:=(128,132,136,141,154,150,154,158,163,167,171,175,180,184,188,
192,195,199,203,206,210,213,216,220,223,226,228,231,234,236,
238,241,243,244,246,247,248,249,250,251,252,253,254,255,255,
255,255,255,254,254,253,252,251,249,246,244,243,241,238,236,
234,231,228,226,223,220,216,213,210,206,203,199,195,192,188,
184,180,175,171,167,163,158,154,150,145,141,136,132,128,
8/13/2019 HDL Lab Manual for VTU Syllabus (10ECL48)
57/64
HDL Laboratory(10ECL48) 4thSem KSSEM,Bangalore
Dept of ECE Page|54
123,119,114,110,105,101,97,92,88,84,80,75,71,67,64,60,56,52,
49,45,42,39,35,32,29,27,24,21,19,17,14,12,11,9,7,6,4,3,2,1,1,0,0,0,0,
0,0,0,0,1,1,2,3,4,6,7,9,11,12,14,17,19,21,24,27,29,32,35,39,42,45,49,
52,56,60,64,67,71,75,80,84,88,92,97,101,105,110,114,119,123,128);
begin
process(clk,rst)
begin
if(rst='1') then
c1'0');
elsif(clk'event and clk='1') then
c1
8/13/2019 HDL Lab Manual for VTU Syllabus (10ECL48)
58/64
HDL Laboratory(10ECL48) 4thSem KSSEM,Bangalore
Dept of ECE Page|55
UCF file(User constraint File)NET "clk" LOC = "p52" ;
NET "dac_out" LOC = "p21" ;
NET "dac_out" LOC = "p18" ;
NET "dac_out" LOC = "p17" ;NET "dac_out" LOC = "p15" ;
NET "dac_out" LOC = "p14" ;
NET "dac_out" LOC = "p13" ;NET "dac_out" LOC = "p12" ;
NET "dac_out" LOC = "p1" ;
NET "rst" LOC = "p74" ;
8/13/2019 HDL Lab Manual for VTU Syllabus (10ECL48)
59/64
HDL Laboratory(10ECL48) 4thSem KSSEM,Bangalore
Dept of ECE Page|56
3.(b) Write a VHDL code to generate Square waveforms using DAC .
Procedure:
1. Make the connection between FRC5 of the FPGA board to the DAC connector of
the VTU card2.
2. Make the connection between FRC1 of the FPGA board to the Dip switch connector of the
VTU card2.
3. Connect the downloading cable and power supply to the FPGA board.
4. Then open the Xilinx iMPACT software (refer ISE flow) select the slave serial mode and
select the respective BIT file and click program.
5. Make the reset switch on (active low) and analyze the data.
VHDL CODING
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity square_wave is
Port ( clk : in std_logic;
rst : in std_logic;
dac_out : out std_logic_vector(0 to 7));end square_wave;
architecture Behavioral of square_wave is
signal temp : std_logic_vector(3 downto 0);
signal counter : std_logic_vector(0 to 7);
signal en :std_logic;
begin
process(clk)
begin
if rising_edge(clk) then
temp
8/13/2019 HDL Lab Manual for VTU Syllabus (10ECL48)
60/64
HDL Laboratory(10ECL48) 4thSem KSSEM,Bangalore
Dept of ECE Page|57
process(temp(3))
begin
if rst='1' then
counter
8/13/2019 HDL Lab Manual for VTU Syllabus (10ECL48)
61/64
HDL Laboratory(10ECL48) 4thSem KSSEM,Bangalore
Dept of ECE Page|58
3.(c) Write a VHDL code to generate Traingular waveforms using DAC
Procedure:
1. Make the connection between FRC5 of the FPGA board to the DAC connector of the VTU
card2.
2. Make the connection between FRC1 of the FPGA board to the Dip switch connector of the
VTU card2.
3. Connect the downloading cable and power supply to the FPGA board.
4. Then open the Xilinx iMPACT software (refer ISE flow) select the slave serial mode and
select the respective BIT file and click program.
5. Make the reset switch on (active low) and analyze the data.
VHDL CODING :
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity triangular_wave is
Port ( clk : in std_logic;
rst : in std_logic;
dac_out : out std_logic_vector(0 to 7));end triangular_wave ;
architecture Behavioral of triangular_wave is
signal counter : std_logic_vector(0 to 8);
signal temp : std_logic_vector(3 downto 0);
signal en :std_logic;
begin
process(clk)
begin
if rising_edge(clk) then
temp
8/13/2019 HDL Lab Manual for VTU Syllabus (10ECL48)
62/64
HDL Laboratory(10ECL48) 4thSem KSSEM,Bangalore
Dept of ECE Page|59
process(temp(3))
begin
if rst='1' then
counter
8/13/2019 HDL Lab Manual for VTU Syllabus (10ECL48)
63/64
HDL Laboratory(10ECL48) 4thSem KSSEM,Bangalore
Dept of ECE Page|60
3.(d) Write a VHDL code to generate Ramp waveforms using DAC .
Procedure:
1. Make the connection between FRC5 of the FPGA board to the DAC connector of
the VTU card2.
2. Make the connection between FRC1 of the FPGA board to the Dip switch connector of the
VTU card2.
3. Connect the downloading cable and power supply to the FPGA board.
4. Then open the Xilinx iMPACT software (refer ISE flow) select the slave serial mode and
select the respective BIT file and click program.
5. Make the reset switch on (active low) and analyze the data.
VHDL CODING
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity ramp_wave is
Port ( clk : in std_logic;
rst : in std_logic;dac_out : out std_logic_vector(0 to 7));
end ramp_wave;
architecture Behavioral of ramp_wave is
signal temp : std_logic_vector(3 downto 0);
signal counter : std_logic_vector(0 to 7);
signal en :std_logic;
begin
process(clk)
begin
if rising_edge(clk) then
temp
8/13/2019 HDL Lab Manual for VTU Syllabus (10ECL48)
64/64
HDL Laboratory(10ECL48) 4thSem KSSEM,Bangalore
end process;
process(temp(3))
begin
if rst='1' then
counter