Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
SEMESTER 2
1. LED BLINK
AIM
To design led blink using Xilinx and simulate it in a FPGA kit.
SOFTWARE USED
Xilinx
PROCEDURE
1. The verilog module source code and test bench for led blink circuit are written.
2. It is implemented in Xilinx and simulated in VLSI trainer kit.
3. The output was viewed and verified.
PROGRAM
module led(a,clk,b);
input a,clk;
output reg b;
always@(posedge clk)
if(a==1)
begin
b=1;
end
else
b=0;
endmodule
TEST BENCH
module led_test_v;
reg a;
Dept. of ECE, FISAT
SEMESTER 2
wire b;
led uut (
.a(a),
.b(b)
);
Initial
begin
a = 1'b0;
#100;
a=1'b1;
#100;
end
endmodule
RESULT
A Led blink circuit was designed and output was observed in both Xilinx and trainer kit.
SEMESTER 2
AIM
To design seven segment display using Xilinx and simulate it in a FPGA kit.
SOFTWARE USED
Xilinx
PROCEDURE
1. The verilog module source code for seven segment display is written.
2. It is implemented in Xilinx and simulated in VLSI trainer kit.
3. The output was viewed and verified.
PROGRAM
module sevenseg(clk,a,b,c);
input clk;
output reg [7:0]a,b,c;
always@(posedge clk)
begin
a=8'b01110111;
b=8'b00110000;
c=8'b01110111;
end
endmodule
RESULT
A Seven segment display was designed and output was observed in vlsi trainer kit.
SEMESTER 2
3. THERMOMETER DECODER
AIM
To design a thermometer decoder circuit using Xilinx and simulate it in a FPGA kit.
SOFTWARE USED
Xilinx
PROCEDURE
1. The verilog module source code for thermometer decoder circuit is written.
2. It is implemented in Xilinx and simulated in VLSI trainer kit.
3. The output was viewed and verified.
PROGRAM
module thermometerdecoder(a, clk, b );
input [1:0]a ;
input clk ;
output reg [3:0]b ;
always @(posedge clk)
begin
if (a==2'b11)
b=4'b1111;
else if(a==2'b10)
b=4'b0111;
else if(a==2'b01)
b=4'b0011;
else
b=4'b0001;
end
endmodule
SEMESTER 2
RESULT
A thermometer decoder circuit was designed and output was observed in vlsi trainer kit.
SEMESTER 2
4. DECODER
AIM
To design a decoder using Xilinx and simulate in FPGA kit.
SOFTWARE USED
Xilinx
PROCEDURE
1. The verilog module source code and test bench for decoder circuit are written.
2. It is implemented in Xilinx and simulated in VLSI trainer kit.
3. The output was viewed and verified.
PROGRAM
module decoder1(a,b,y0,y1,y2,y3);
input a,b;
output reg y0,y1,y2,y3;
always@(a,b)
begin
if(a==0&&b==0)
begin
y0=1;
y1=0;
y2=0;
y3=0;
end
if(a==0&&b==1)
begin
Dept. of ECE, FISAT
SEMESTER 2
y0=0;
y1=1;
y2=0;
y3=0;
end
if(a==1&&b==0)
begin
y0=0;
y1=0;
y2=1;
y3=0;
end
if(a==1&&b==1)
begin
y0=0;
y1=0;
y2=0;
y3=1;
end
end
endmodule
TEST BENCH
module decoder_test_v;
// Inputs
reg a;
reg b;
Dept. of ECE, FISAT
SEMESTER 2
// Outputs
wire y0;
wire y1;
wire y2;
wire y3;
initial begin
a = 0;
b = 0;
#100;
a = 0;
b = 1;
#100;
a = 1;
b = 0;
#100;
a = 1;
SEMESTER 2
b = 1;
#100;
end
endmodule
RESULT
A decoder circuit was designed and output was observed in both Xilinx and trainer kit.
5. CLOCK DIVIDER
Dept. of ECE, FISAT
SEMESTER 2
AIM
To design a clock divider using Xilinx and simulate it in a FPGA kit.
SOFTWARE USED
Xilinx
PROCEDURE
1. The verilog module source code for clock divider circuit is written.
2. It is implemented in Xilinx and simulated in VLSI trainer kit.
3. The output was viewed and verified.
PROGRAM
module clkdivider(clk,out);
input clk;
reg [24:0]count=25'b0;
output reg [1:0]out;
always@(posedge clk)
begin
count =count+1;
out[0]=count[24];
out[1]=count[23];
end
endmodule
RESULT
A clock divider circuit was designed and output was observed in vlsi trainer kit.
6. COUNTER
Dept. of ECE, FISAT
10
SEMESTER 2
AIM
To design a counter using Xilinx.
SOFTWARE USED
Xilinx
PROCEDURE
1. The verilog module source code for counter circuit was generated using IP core
generator ,its top module and test bench were written.
2. It is implemented in Xilinx.
3. The output was viewed and verified.
IP CORE PROGRAM
`timescale 1 ns/1 ps
module counter2ip (
clk, q
);
input clk;
output [15 : 0] q;
// synopsys translate_off
wire \BU2/U0/the_addsub/no_pipelining.the_addsub/i_simple_model.carryxortop_rt_2 ;
wire \BU2/U0/the_addsub/no_pipelining.the_addsub/i_simple_model.carrychaingen[1].carrymux_rt_3 ;
wire \BU2/U0/the_addsub/no_pipelining.the_addsub/i_simple_model.carrychaingen[2].carrymux_rt_4 ;
wire \BU2/U0/the_addsub/no_pipelining.the_addsub/i_simple_model.carrychaingen[3].carrymux_rt_5 ;
wire \BU2/U0/the_addsub/no_pipelining.the_addsub/i_simple_model.carrychaingen[4].carrymux_rt_6 ;
Dept. of ECE, FISAT
11
SEMESTER 2
wire \BU2/U0/the_addsub/no_pipelining.the_addsub/i_simple_model.carrychaingen[5].carrymux_rt_7 ;
wire \BU2/U0/the_addsub/no_pipelining.the_addsub/i_simple_model.carrychaingen[6].carrymux_rt_8 ;
wire \BU2/U0/the_addsub/no_pipelining.the_addsub/i_simple_model.carrychaingen[7].carrymux_rt_9 ;
wire \BU2/U0/the_addsub/no_pipelining.the_addsub/i_simple_model.carrychaingen[8].carrymux_rt_10;
wire \BU2/U0/the_addsub/no_pipelining.the_addsub/i_simple_model.carrychaingen[9].carrymux_rt_11;
wire \BU2/U0/the_addsub/no_pipelining.the_addsub/i_simple_model.carrychaingen[10].carrymux_rt_12;
wire \BU2/U0/the_addsub/no_pipelining.the_addsub/i_simple_model.carrychaingen[11].carrymux_rt_13;
wire \BU2/U0/the_addsub/no_pipelining.the_addsub/i_simple_model.carrychaingen[12].carrymux_rt_14;
wire \BU2/U0/the_addsub/no_pipelining.the_addsub/i_simple_model.carrychaingen[13].carrymux_rt_15;
wire \BU2/U0/the_addsub/no_pipelining.the_addsub/i_simple_model.carrychaingen[14].carrymux_rt_16;
wire \BU2/N0 ;
wire \BU2/q_thresh1 ;
wire NLW_VCC_P_UNCONNECTED;
wire NLW_GND_G_UNCONNECTED;
wire [15 : 0] NlwRenamedSig_OI_q;
wire [0 : 0] \BU2/U0/the_addsub/no_pipelining.the_addsub/halfsum ;
wire [14 : 0] \BU2/U0/the_addsub/no_pipelining.the_addsub/carry_simple ;
wire [15 : 0] \BU2/U0/q_next ;
assign
q[15] = NlwRenamedSig_OI_q[15],
q[14] = NlwRenamedSig_OI_q[14],
q[13] = NlwRenamedSig_OI_q[13],
q[12] = NlwRenamedSig_OI_q[12],
q[11] = NlwRenamedSig_OI_q[11],
q[10] = NlwRenamedSig_OI_q[10],
q[9] = NlwRenamedSig_OI_q[9],
q[8] = NlwRenamedSig_OI_q[8],
q[7] = NlwRenamedSig_OI_q[7],
12
SEMESTER 2
q[6] = NlwRenamedSig_OI_q[6],
q[5] = NlwRenamedSig_OI_q[5],
q[4] = NlwRenamedSig_OI_q[4],
q[3] = NlwRenamedSig_OI_q[3],
q[2] = NlwRenamedSig_OI_q[2],
q[1] = NlwRenamedSig_OI_q[1],
q[0] = NlwRenamedSig_OI_q[0];
VCC VCC_0 (
.P(NLW_VCC_P_UNCONNECTED)
);
GND GND_1 (
.G(NLW_GND_G_UNCONNECTED)
);
INV \BU2/U0/the_addsub/no_pipelining.the_addsub/halfsum_not00001_INV_0 (
.I(NlwRenamedSig_OI_q[0]),
.O(\BU2/U0/the_addsub/no_pipelining.the_addsub/halfsum [0])
);
defparam \BU2/U0/the_addsub/no_pipelining.the_addsub/i_simple_model.carryxortop_rt .INIT = 4'h2;
LUT1 \BU2/U0/the_addsub/no_pipelining.the_addsub/i_simple_model.carryxortop_rt (
.I0(NlwRenamedSig_OI_q[15]),
.O(\BU2/U0/the_addsub/no_pipelining.the_addsub/i_simple_model.carryxortop_rt_2 )
);
defparam \BU2/U0/the_addsub/no_pipelining.the_addsub/i_simple_model.carrychaingen[1].carrymux_rt
.INIT = 4'h2;
LUT1 \BU2/U0/the_addsub/no_pipelining.the_addsub/i_simple_model.carrychaingen[1].carrymux_rt (
.I0(NlwRenamedSig_OI_q[1]),
.O(\BU2/U0/the_addsub/no_pipelining.the_addsub/i_simple_model.carrychaingen[1].carrymux_rt_3 )
);
13
SEMESTER 2
defparam \BU2/U0/the_addsub/no_pipelining.the_addsub/i_simple_model.carrychaingen[2].carrymux_rt
.INIT = 4'h2;
LUT1 \BU2/U0/the_addsub/no_pipelining.the_addsub/i_simple_model.carrychaingen[2].carrymux_rt (
.I0(NlwRenamedSig_OI_q[2]),
.O(\BU2/U0/the_addsub/no_pipelining.the_addsub/i_simple_model.carrychaingen[2].carrymux_rt_4 )
);
defparam \BU2/U0/the_addsub/no_pipelining.the_addsub/i_simple_model.carrychaingen[3].carrymux_rt
.INIT = 4'h2;
LUT1 \BU2/U0/the_addsub/no_pipelining.the_addsub/i_simple_model.carrychaingen[3].carrymux_rt (
.I0(NlwRenamedSig_OI_q[3]),
.O(\BU2/U0/the_addsub/no_pipelining.the_addsub/i_simple_model.carrychaingen[3].carrymux_rt_5 )
);
defparam \BU2/U0/the_addsub/no_pipelining.the_addsub/i_simple_model.carrychaingen[4].carrymux_rt
.INIT = 4'h2;
LUT1 \BU2/U0/the_addsub/no_pipelining.the_addsub/i_simple_model.carrychaingen[4].carrymux_rt (
.I0(NlwRenamedSig_OI_q[4]),
.O(\BU2/U0/the_addsub/no_pipelining.the_addsub/i_simple_model.carrychaingen[4].carrymux_rt_6 )
);
defparam \BU2/U0/the_addsub/no_pipelining.the_addsub/i_simple_model.carrychaingen[5].carrymux_rt
.INIT = 4'h2;
LUT1 \BU2/U0/the_addsub/no_pipelining.the_addsub/i_simple_model.carrychaingen[5].carrymux_rt (
.I0(NlwRenamedSig_OI_q[5]),
.O(\BU2/U0/the_addsub/no_pipelining.the_addsub/i_simple_model.carrychaingen[5].carrymux_rt_7 )
);
defparam \BU2/U0/the_addsub/no_pipelining.the_addsub/i_simple_model.carrychaingen[6].carrymux_rt
.INIT = 4'h2;
LUT1 \BU2/U0/the_addsub/no_pipelining.the_addsub/i_simple_model.carrychaingen[6].carrymux_rt (
.I0(NlwRenamedSig_OI_q[6]),
.O(\BU2/U0/the_addsub/no_pipelining.the_addsub/i_simple_model.carrychaingen[6].carrymux_rt_8 )
);
Dept. of ECE, FISAT
14
SEMESTER 2
defparam \BU2/U0/the_addsub/no_pipelining.the_addsub/i_simple_model.carrychaingen[7].carrymux_rt
.INIT = 4'h2;
LUT1 \BU2/U0/the_addsub/no_pipelining.the_addsub/i_simple_model.carrychaingen[7].carrymux_rt (
.I0(NlwRenamedSig_OI_q[7]),
.O(\BU2/U0/the_addsub/no_pipelining.the_addsub/i_simple_model.carrychaingen[7].carrymux_rt_9 )
);
defparam \BU2/U0/the_addsub/no_pipelining.the_addsub/i_simple_model.carrychaingen[8].carrymux_rt
.INIT = 4'h2;
LUT1 \BU2/U0/the_addsub/no_pipelining.the_addsub/i_simple_model.carrychaingen[8].carrymux_rt (
.I0(NlwRenamedSig_OI_q[8]),
.O(\BU2/U0/the_addsub/no_pipelining.the_addsub/i_simple_model.carrychaingen[8].carrymux_rt_10 )
);
defparam \BU2/U0/the_addsub/no_pipelining.the_addsub/i_simple_model.carrychaingen[9].carrymux_rt
.INIT = 4'h2;
LUT1 \BU2/U0/the_addsub/no_pipelining.the_addsub/i_simple_model.carrychaingen[9].carrymux_rt (
.I0(NlwRenamedSig_OI_q[9]),
.O(\BU2/U0/the_addsub/no_pipelining.the_addsub/i_simple_model.carrychaingen[9].carrymux_rt_11 )
);
defparam
\BU2/U0/the_addsub/no_pipelining.the_addsub/i_simple_model.carrychaingen[10].carrymux_rt .INIT =
4'h2;
LUT1 \BU2/U0/the_addsub/no_pipelining.the_addsub/i_simple_model.carrychaingen[10].carrymux_rt (
.I0(NlwRenamedSig_OI_q[10]),
.O(\BU2/U0/the_addsub/no_pipelining.the_addsub/i_simple_model.carrychaingen[10].carrymux_rt_12 )
);
defparam
\BU2/U0/the_addsub/no_pipelining.the_addsub/i_simple_model.carrychaingen[11].carrymux_rt .INIT =
4'h2;
LUT1 \BU2/U0/the_addsub/no_pipelining.the_addsub/i_simple_model.carrychaingen[11].carrymux_rt (
.I0(NlwRenamedSig_OI_q[11]),
Dept. of ECE, FISAT
15
SEMESTER 2
.O(\BU2/U0/the_addsub/no_pipelining.the_addsub/i_simple_model.carrychaingen[11].carrymux_rt_13 )
);
defparam
\BU2/U0/the_addsub/no_pipelining.the_addsub/i_simple_model.carrychaingen[12].carrymux_rt .INIT =
4'h2;
LUT1 \BU2/U0/the_addsub/no_pipelining.the_addsub/i_simple_model.carrychaingen[12].carrymux_rt (
.I0(NlwRenamedSig_OI_q[12]),
.O(\BU2/U0/the_addsub/no_pipelining.the_addsub/i_simple_model.carrychaingen[12].carrymux_rt_14 )
);
defparam
\BU2/U0/the_addsub/no_pipelining.the_addsub/i_simple_model.carrychaingen[13].carrymux_rt .INIT =
4'h2;
LUT1 \BU2/U0/the_addsub/no_pipelining.the_addsub/i_simple_model.carrychaingen[13].carrymux_rt (
.I0(NlwRenamedSig_OI_q[13]),
.O(\BU2/U0/the_addsub/no_pipelining.the_addsub/i_simple_model.carrychaingen[13].carrymux_rt_15 )
);
defparam
\BU2/U0/the_addsub/no_pipelining.the_addsub/i_simple_model.carrychaingen[14].carrymux_rt .INIT =
4'h2;
LUT1 \BU2/U0/the_addsub/no_pipelining.the_addsub/i_simple_model.carrychaingen[14].carrymux_rt (
.I0(NlwRenamedSig_OI_q[14]),
.O(\BU2/U0/the_addsub/no_pipelining.the_addsub/i_simple_model.carrychaingen[14].carrymux_rt_16 )
);
MUXCY \BU2/U0/the_addsub/no_pipelining.the_addsub/i_simple_model.carrymux0 (
.CI(\BU2/N0 ),
.DI(\BU2/q_thresh1 ),
.S(\BU2/U0/the_addsub/no_pipelining.the_addsub/halfsum [0]),
.O(\BU2/U0/the_addsub/no_pipelining.the_addsub/carry_simple [0])
Dept. of ECE, FISAT
16
SEMESTER 2
);
XORCY \BU2/U0/the_addsub/no_pipelining.the_addsub/i_simple_model.carryxor0 (
.CI(\BU2/N0 ),
.LI(\BU2/U0/the_addsub/no_pipelining.the_addsub/halfsum [0]),
.O(\BU2/U0/q_next [0])
);
XORCY \BU2/U0/the_addsub/no_pipelining.the_addsub/i_simple_model.carryxortop (
.CI(\BU2/U0/the_addsub/no_pipelining.the_addsub/carry_simple [14]),
.LI(\BU2/U0/the_addsub/no_pipelining.the_addsub/i_simple_model.carryxortop_rt_2 ),
.O(\BU2/U0/q_next [15])
);
MUXCY \BU2/U0/the_addsub/no_pipelining.the_addsub/i_simple_model.carrychaingen[1].carrymux (
.CI(\BU2/U0/the_addsub/no_pipelining.the_addsub/carry_simple [0]),
.DI(\BU2/N0 ),
.S(\BU2/U0/the_addsub/no_pipelining.the_addsub/i_simple_model.carrychaingen[1].carrymux_rt_3 ),
.O(\BU2/U0/the_addsub/no_pipelining.the_addsub/carry_simple [1])
);
XORCY \BU2/U0/the_addsub/no_pipelining.the_addsub/i_simple_model.carrychaingen[1].carryxor (
.CI(\BU2/U0/the_addsub/no_pipelining.the_addsub/carry_simple [0]),
.LI(\BU2/U0/the_addsub/no_pipelining.the_addsub/i_simple_model.carrychaingen[1].carrymux_rt_3 ),
.O(\BU2/U0/q_next [1])
);
MUXCY \BU2/U0/the_addsub/no_pipelining.the_addsub/i_simple_model.carrychaingen[2].carrymux (
.CI(\BU2/U0/the_addsub/no_pipelining.the_addsub/carry_simple [1]),
.DI(\BU2/N0 ),
.S(\BU2/U0/the_addsub/no_pipelining.the_addsub/i_simple_model.carrychaingen[2].carrymux_rt_4 ),
.O(\BU2/U0/the_addsub/no_pipelining.the_addsub/carry_simple [2])
);
17
SEMESTER 2
XORCY \BU2/U0/the_addsub/no_pipelining.the_addsub/i_simple_model.carrychaingen[2].carryxor (
.CI(\BU2/U0/the_addsub/no_pipelining.the_addsub/carry_simple [1]),
.LI(\BU2/U0/the_addsub/no_pipelining.the_addsub/i_simple_model.carrychaingen[2].carrymux_rt_4 ),
.O(\BU2/U0/q_next [2])
);
MUXCY \BU2/U0/the_addsub/no_pipelining.the_addsub/i_simple_model.carrychaingen[3].carrymux (
.CI(\BU2/U0/the_addsub/no_pipelining.the_addsub/carry_simple [2]),
.DI(\BU2/N0 ),
.S(\BU2/U0/the_addsub/no_pipelining.the_addsub/i_simple_model.carrychaingen[3].carrymux_rt_5 ),
.O(\BU2/U0/the_addsub/no_pipelining.the_addsub/carry_simple [3])
);
XORCY \BU2/U0/the_addsub/no_pipelining.the_addsub/i_simple_model.carrychaingen[3].carryxor (
.CI(\BU2/U0/the_addsub/no_pipelining.the_addsub/carry_simple [2]),
.LI(\BU2/U0/the_addsub/no_pipelining.the_addsub/i_simple_model.carrychaingen[3].carrymux_rt_5 ),
.O(\BU2/U0/q_next [3])
);
MUXCY \BU2/U0/the_addsub/no_pipelining.the_addsub/i_simple_model.carrychaingen[4].carrymux (
.CI(\BU2/U0/the_addsub/no_pipelining.the_addsub/carry_simple [3]),
.DI(\BU2/N0 ),
.S(\BU2/U0/the_addsub/no_pipelining.the_addsub/i_simple_model.carrychaingen[4].carrymux_rt_6 ),
.O(\BU2/U0/the_addsub/no_pipelining.the_addsub/carry_simple [4])
);
XORCY \BU2/U0/the_addsub/no_pipelining.the_addsub/i_simple_model.carrychaingen[4].carryxor (
.CI(\BU2/U0/the_addsub/no_pipelining.the_addsub/carry_simple [3]),
.LI(\BU2/U0/the_addsub/no_pipelining.the_addsub/i_simple_model.carrychaingen[4].carrymux_rt_6 ),
.O(\BU2/U0/q_next [4])
);
MUXCY \BU2/U0/the_addsub/no_pipelining.the_addsub/i_simple_model.carrychaingen[5].carrymux (
18
SEMESTER 2
.CI(\BU2/U0/the_addsub/no_pipelining.the_addsub/carry_simple [4]),
.DI(\BU2/N0 ),
.S(\BU2/U0/the_addsub/no_pipelining.the_addsub/i_simple_model.carrychaingen[5].carrymux_rt_7 ),
.O(\BU2/U0/the_addsub/no_pipelining.the_addsub/carry_simple [5])
);
XORCY \BU2/U0/the_addsub/no_pipelining.the_addsub/i_simple_model.carrychaingen[5].carryxor (
.CI(\BU2/U0/the_addsub/no_pipelining.the_addsub/carry_simple [4]),
.LI(\BU2/U0/the_addsub/no_pipelining.the_addsub/i_simple_model.carrychaingen[5].carrymux_rt_7 ),
.O(\BU2/U0/q_next [5])
);
MUXCY \BU2/U0/the_addsub/no_pipelining.the_addsub/i_simple_model.carrychaingen[6].carrymux (
.CI(\BU2/U0/the_addsub/no_pipelining.the_addsub/carry_simple [5]),
.DI(\BU2/N0 ),
.S(\BU2/U0/the_addsub/no_pipelining.the_addsub/i_simple_model.carrychaingen[6].carrymux_rt_8 ),
.O(\BU2/U0/the_addsub/no_pipelining.the_addsub/carry_simple [6])
);
XORCY \BU2/U0/the_addsub/no_pipelining.the_addsub/i_simple_model.carrychaingen[6].carryxor (
.CI(\BU2/U0/the_addsub/no_pipelining.the_addsub/carry_simple [5]),
.LI(\BU2/U0/the_addsub/no_pipelining.the_addsub/i_simple_model.carrychaingen[6].carrymux_rt_8 ),
.O(\BU2/U0/q_next [6])
);
MUXCY \BU2/U0/the_addsub/no_pipelining.the_addsub/i_simple_model.carrychaingen[7].carrymux (
.CI(\BU2/U0/the_addsub/no_pipelining.the_addsub/carry_simple [6]),
.DI(\BU2/N0 ),
.S(\BU2/U0/the_addsub/no_pipelining.the_addsub/i_simple_model.carrychaingen[7].carrymux_rt_9 ),
.O(\BU2/U0/the_addsub/no_pipelining.the_addsub/carry_simple [7])
);
XORCY \BU2/U0/the_addsub/no_pipelining.the_addsub/i_simple_model.carrychaingen[7].carryxor (
19
SEMESTER 2
.CI(\BU2/U0/the_addsub/no_pipelining.the_addsub/carry_simple [6]),
.LI(\BU2/U0/the_addsub/no_pipelining.the_addsub/i_simple_model.carrychaingen[7].carrymux_rt_9 ),
.O(\BU2/U0/q_next [7])
);
MUXCY \BU2/U0/the_addsub/no_pipelining.the_addsub/i_simple_model.carrychaingen[8].carrymux (
.CI(\BU2/U0/the_addsub/no_pipelining.the_addsub/carry_simple [7]),
.DI(\BU2/N0 ),
.S(\BU2/U0/the_addsub/no_pipelining.the_addsub/i_simple_model.carrychaingen[8].carrymux_rt_10 ),
.O(\BU2/U0/the_addsub/no_pipelining.the_addsub/carry_simple [8])
);
XORCY \BU2/U0/the_addsub/no_pipelining.the_addsub/i_simple_model.carrychaingen[8].carryxor (
.CI(\BU2/U0/the_addsub/no_pipelining.the_addsub/carry_simple [7]),
.LI(\BU2/U0/the_addsub/no_pipelining.the_addsub/i_simple_model.carrychaingen[8].carrymux_rt_10 ),
.O(\BU2/U0/q_next [8])
);
MUXCY \BU2/U0/the_addsub/no_pipelining.the_addsub/i_simple_model.carrychaingen[9].carrymux (
.CI(\BU2/U0/the_addsub/no_pipelining.the_addsub/carry_simple [8]),
.DI(\BU2/N0 ),
.S(\BU2/U0/the_addsub/no_pipelining.the_addsub/i_simple_model.carrychaingen[9].carrymux_rt_11 ),
.O(\BU2/U0/the_addsub/no_pipelining.the_addsub/carry_simple [9])
);
XORCY \BU2/U0/the_addsub/no_pipelining.the_addsub/i_simple_model.carrychaingen[9].carryxor (
.CI(\BU2/U0/the_addsub/no_pipelining.the_addsub/carry_simple [8]),
.LI(\BU2/U0/the_addsub/no_pipelining.the_addsub/i_simple_model.carrychaingen[9].carrymux_rt_11 ),
.O(\BU2/U0/q_next [9])
);
MUXCY \BU2/U0/the_addsub/no_pipelining.the_addsub/i_simple_model.carrychaingen[10].carrymux
(
Dept. of ECE, FISAT
20
SEMESTER 2
.CI(\BU2/U0/the_addsub/no_pipelining.the_addsub/carry_simple [9]),
.DI(\BU2/N0 ),
.S(\BU2/U0/the_addsub/no_pipelining.the_addsub/i_simple_model.carrychaingen[10].carrymux_rt_12 ),
.O(\BU2/U0/the_addsub/no_pipelining.the_addsub/carry_simple [10])
);
XORCY \BU2/U0/the_addsub/no_pipelining.the_addsub/i_simple_model.carrychaingen[10].carryxor (
.CI(\BU2/U0/the_addsub/no_pipelining.the_addsub/carry_simple [9]),
.LI(\BU2/U0/the_addsub/no_pipelining.the_addsub/i_simple_model.carrychaingen[10].carrymux_rt_12
),
.O(\BU2/U0/q_next [10])
);
MUXCY \BU2/U0/the_addsub/no_pipelining.the_addsub/i_simple_model.carrychaingen[11].carrymux (
.CI(\BU2/U0/the_addsub/no_pipelining.the_addsub/carry_simple [10]),
.DI(\BU2/N0 ),
.S(\BU2/U0/the_addsub/no_pipelining.the_addsub/i_simple_model.carrychaingen[11].carrymux_rt_13 ),
.O(\BU2/U0/the_addsub/no_pipelining.the_addsub/carry_simple [11])
);
XORCY \BU2/U0/the_addsub/no_pipelining.the_addsub/i_simple_model.carrychaingen[11].carryxor (
.CI(\BU2/U0/the_addsub/no_pipelining.the_addsub/carry_simple [10]),
.LI(\BU2/U0/the_addsub/no_pipelining.the_addsub/i_simple_model.carrychaingen[11].carrymux_rt_13
),
.O(\BU2/U0/q_next [11])
);
MUXCY \BU2/U0/the_addsub/no_pipelining.the_addsub/i_simple_model.carrychaingen[12].carrymux
(
.CI(\BU2/U0/the_addsub/no_pipelining.the_addsub/carry_simple [11]),
.DI(\BU2/N0 ),
.S(\BU2/U0/the_addsub/no_pipelining.the_addsub/i_simple_model.carrychaingen[12].carrymux_rt_14 ),
Dept. of ECE, FISAT
21
SEMESTER 2
.O(\BU2/U0/the_addsub/no_pipelining.the_addsub/carry_simple [12])
);
XORCY \BU2/U0/the_addsub/no_pipelining.the_addsub/i_simple_model.carrychaingen[12].carryxor (
.CI(\BU2/U0/the_addsub/no_pipelining.the_addsub/carry_simple [11]),
.LI(\BU2/U0/the_addsub/no_pipelining.the_addsub/i_simple_model.carrychaingen[12].carrymux_rt_14
),
.O(\BU2/U0/q_next [12])
);
MUXCY \BU2/U0/the_addsub/no_pipelining.the_addsub/i_simple_model.carrychaingen[13].carrymux
(
.CI(\BU2/U0/the_addsub/no_pipelining.the_addsub/carry_simple [12]),
.DI(\BU2/N0 ),
.S(\BU2/U0/the_addsub/no_pipelining.the_addsub/i_simple_model.carrychaingen[13].carrymux_rt_15 ),
.O(\BU2/U0/the_addsub/no_pipelining.the_addsub/carry_simple [13])
);
XORCY \BU2/U0/the_addsub/no_pipelining.the_addsub/i_simple_model.carrychaingen[13].carryxor (
.CI(\BU2/U0/the_addsub/no_pipelining.the_addsub/carry_simple [12]),
.LI(\BU2/U0/the_addsub/no_pipelining.the_addsub/i_simple_model.carrychaingen[13].carrymux_rt_15
),
.O(\BU2/U0/q_next [13])
);
MUXCY \BU2/U0/the_addsub/no_pipelining.the_addsub/i_simple_model.carrychaingen[14].carrymux
(
.CI(\BU2/U0/the_addsub/no_pipelining.the_addsub/carry_simple [13]),
.DI(\BU2/N0 ),
.S(\BU2/U0/the_addsub/no_pipelining.the_addsub/i_simple_model.carrychaingen[14].carrymux_rt_16 ),
.O(\BU2/U0/the_addsub/no_pipelining.the_addsub/carry_simple [14])
);
XORCY \BU2/U0/the_addsub/no_pipelining.the_addsub/i_simple_model.carrychaingen[14].carryxor (
Dept. of ECE, FISAT
22
SEMESTER 2
.CI(\BU2/U0/the_addsub/no_pipelining.the_addsub/carry_simple [13]),
.LI(\BU2/U0/the_addsub/no_pipelining.the_addsub/i_simple_model.carrychaingen[14].carrymux_rt_16
),
.O(\BU2/U0/q_next [14])
);
defparam \BU2/U0/q_i_0 .INIT = 1'b0;
FDE \BU2/U0/q_i_0 (
.C(clk),
.CE(\BU2/q_thresh1 ),
.D(\BU2/U0/q_next [0]),
.Q(NlwRenamedSig_OI_q[0])
);
defparam \BU2/U0/q_i_1 .INIT = 1'b0;
FDE \BU2/U0/q_i_1 (
.C(clk),
.CE(\BU2/q_thresh1 ),
.D(\BU2/U0/q_next [1]),
.Q(NlwRenamedSig_OI_q[1])
);
defparam \BU2/U0/q_i_2 .INIT = 1'b0;
FDE \BU2/U0/q_i_2 (
.C(clk),
.CE(\BU2/q_thresh1 ),
.D(\BU2/U0/q_next [2]),
.Q(NlwRenamedSig_OI_q[2])
);
defparam \BU2/U0/q_i_3 .INIT = 1'b0;
FDE \BU2/U0/q_i_3 (
.C(clk),
Dept. of ECE, FISAT
23
SEMESTER 2
.CE(\BU2/q_thresh1 ),
.D(\BU2/U0/q_next [3]),
.Q(NlwRenamedSig_OI_q[3])
);
defparam \BU2/U0/q_i_4 .INIT = 1'b0;
FDE \BU2/U0/q_i_4 (
.C(clk),
.CE(\BU2/q_thresh1 ),
.D(\BU2/U0/q_next [4]),
.Q(NlwRenamedSig_OI_q[4])
);
defparam \BU2/U0/q_i_5 .INIT = 1'b0;
FDE \BU2/U0/q_i_5 (
.C(clk),
.CE(\BU2/q_thresh1 ),
.D(\BU2/U0/q_next [5]),
.Q(NlwRenamedSig_OI_q[5])
);
defparam \BU2/U0/q_i_6 .INIT = 1'b0;
FDE \BU2/U0/q_i_6 (
.C(clk),
.CE(\BU2/q_thresh1 ),
.D(\BU2/U0/q_next [6]),
.Q(NlwRenamedSig_OI_q[6])
);
defparam \BU2/U0/q_i_7 .INIT = 1'b0;
FDE \BU2/U0/q_i_7 (
.C(clk),
24
SEMESTER 2
.CE(\BU2/q_thresh1 ),
.D(\BU2/U0/q_next [7]),
.Q(NlwRenamedSig_OI_q[7])
);
defparam \BU2/U0/q_i_8 .INIT = 1'b0;
FDE \BU2/U0/q_i_8 (
.C(clk),
.CE(\BU2/q_thresh1 ),
.D(\BU2/U0/q_next [8]),
.Q(NlwRenamedSig_OI_q[8])
);
defparam \BU2/U0/q_i_9 .INIT = 1'b0;
FDE \BU2/U0/q_i_9 (
.C(clk),
.CE(\BU2/q_thresh1 ),
.D(\BU2/U0/q_next [9]),
.Q(NlwRenamedSig_OI_q[9])
);
defparam \BU2/U0/q_i_10 .INIT = 1'b0;
FDE \BU2/U0/q_i_10 (
.C(clk),
.CE(\BU2/q_thresh1 ),
.D(\BU2/U0/q_next [10]),
.Q(NlwRenamedSig_OI_q[10])
);
defparam \BU2/U0/q_i_11 .INIT = 1'b0;
FDE \BU2/U0/q_i_11 (
.C(clk),
25
SEMESTER 2
.CE(\BU2/q_thresh1 ),
.D(\BU2/U0/q_next [11]),
.Q(NlwRenamedSig_OI_q[11])
);
defparam \BU2/U0/q_i_12 .INIT = 1'b0;
FDE \BU2/U0/q_i_12 (
.C(clk),
.CE(\BU2/q_thresh1 ),
.D(\BU2/U0/q_next [12]),
.Q(NlwRenamedSig_OI_q[12])
);
defparam \BU2/U0/q_i_13 .INIT = 1'b0;
FDE \BU2/U0/q_i_13 (
.C(clk),
.CE(\BU2/q_thresh1 ),
.D(\BU2/U0/q_next [13]),
.Q(NlwRenamedSig_OI_q[13])
);
defparam \BU2/U0/q_i_14 .INIT = 1'b0;
FDE \BU2/U0/q_i_14 (
.C(clk),
.CE(\BU2/q_thresh1 ),
.D(\BU2/U0/q_next [14]),
.Q(NlwRenamedSig_OI_q[14])
);
defparam \BU2/U0/q_i_15 .INIT = 1'b0;
FDE \BU2/U0/q_i_15 (
.C(clk),
26
SEMESTER 2
.CE(\BU2/q_thresh1 ),
.D(\BU2/U0/q_next [15]),
.Q(NlwRenamedSig_OI_q[15])
);
VCC \BU2/XST_VCC (
.P(\BU2/q_thresh1 )
);
GND \BU2/XST_GND (
.G(\BU2/N0 )
);
// synopsys translate_on
endmodule
// synopsys translate_off
`timescale 1 ps / 1 ps
wire GSR;
wire GTS;
wire PRLD;
27
SEMESTER 2
reg GSR_int;
reg GTS_int;
reg PRLD_int;
reg JTAG_CAPTURE_GLBL;
reg JTAG_RESET_GLBL;
reg JTAG_SHIFT_GLBL;
reg JTAG_UPDATE_GLBL;
reg JTAG_SEL1_GLBL = 0;
reg JTAG_SEL2_GLBL = 0 ;
reg JTAG_SEL3_GLBL = 0;
reg JTAG_SEL4_GLBL = 0;
28
SEMESTER 2
initial begin
GSR_int = 1'b1;
PRLD_int = 1'b1;
#(ROC_WIDTH)
GSR_int = 1'b0;
PRLD_int = 1'b0;
end
initial begin
GTS_int = 1'b1;
#(TOC_WIDTH)
GTS_int = 1'b0;
end
endmodule
// synopsys translate_on
TOP MODULE
module counter2iptop(clk,q);
input clk;
output wire [15:0] q;
counter2ip uut(clk,q);
endmodule
TEST BENCH
module counter2ip_test_v;
// Inputs
Dept. of ECE, FISAT
29
SEMESTER 2
reg clk;
// Outputs
wire [15:0] q;
// Instantiate the Unit Under Test (UUT)
counter2iptop uut (
.clk(clk),
.q(q));
always #10 clk=~clk;
initial begin
// Initialize Inputs
clk = 0;
end
endmodule
OUTPUT
RESULT
A counter circuit was designed and output was observed in xilinx.
7. CLOCK MULTIPLIER
30
SEMESTER 2
AIM
To design a clock multiplier using Xilinx.
SOFTWARE USED
Xilinx
PROCEDURE
1. The verilog module source code for clock multiplier circuit was generated using IP core
generator ,its top module and test bench were written.
2. It is implemented in Xilinx.
3. The output was viewed and verified.
IP CORE PROGRAM
`timescale 1ns / 1ps
module clkm_ip(CLKIN_IN,
CLKFX_OUT,
CLKFX180_OUT,
CLKIN_IBUFG_OUT);
input CLKIN_IN;
output CLKFX_OUT;
output CLKFX180_OUT;
output CLKIN_IBUFG_OUT;
wire CLKFX_BUF;
wire CLKFX180_BUF;
wire CLKIN_IBUFG;
wire GND_BIT;
Dept. of ECE, FISAT
31
SEMESTER 2
assign GND_BIT = 0;
assign CLKIN_IBUFG_OUT = CLKIN_IBUFG;
BUFG CLKFX_BUFG_INST (.I(CLKFX_BUF),
.O(CLKFX_OUT));
BUFG CLKFX180_BUFG_INST (.I(CLKFX180_BUF),
.O(CLKFX180_OUT));
IBUFG CLKIN_IBUFG_INST (.I(CLKIN_IN),
.O(CLKIN_IBUFG));
DCM_SP DCM_SP_INST (.CLKFB(GND_BIT),
.CLKIN(CLKIN_IBUFG),
.DSSEN(GND_BIT),
.PSCLK(GND_BIT),
.PSEN(GND_BIT),
.PSINCDEC(GND_BIT),
.RST(GND_BIT),
.CLKDV(),
.CLKFX(CLKFX_BUF),
.CLKFX180(CLKFX180_BUF),
.CLK0(),
.CLK2X(),
.CLK2X180(),
.CLK90(),
.CLK180(),
.CLK270(),
.LOCKED(),
.PSDONE(),
.STATUS());
32
SEMESTER 2
TOP MODULE
module clkm_top(CLKIN_IN,
CLKFX_OUT,
CLKFX180_OUT,
CLKIN_IBUFG_OUT);
input CLKIN_IN;
output CLKFX_OUT;
output CLKFX180_OUT;
output CLKIN_IBUFG_OUT;
clkm_ip dut(CLKIN_IN,
CLKFX_OUT,
CLKFX180_OUT,
Dept. of ECE, FISAT
33
SEMESTER 2
CLKIN_IBUFG_OUT);
endmodule
TEST BENCH
module clkm_test_v;
// Inputs
reg CLKIN_IN;
// Outputs
wire CLKFX_OUT;
wire CLKFX180_OUT;
wire CLKIN_IBUFG_OUT;
// Instantiate the Unit Under Test (UUT)
clkm_top uut (
.CLKIN_IN(CLKIN_IN),
.CLKFX_OUT(CLKFX_OUT),
.CLKFX180_OUT(CLKFX180_OUT),
.CLKIN_IBUFG_OUT(CLKIN_IBUFG_OUT)
);
initial begin
// Initialize Inputs
CLKIN_IN = 0;
// Wait 100 ns for global reset to finish
#100;
// Add stimulus here
end
always begin #50; CLKIN_IN=~CLKIN_IN; end
endmodule
BLACK BOX
34
SEMESTER 2
OUTPUT
RESULT
A clock multiplier circuit was designed and output was observed in xilinx.
8. CLOCK DIVIDER
Dept. of ECE, FISAT
35
SEMESTER 2
AIM
To design a clock multiplier using Xilinx.
SOFTWARE USED
Xilinx
PROCEDURE
1. The verilog module source code for clock divider circuit was generated using IP core
generator, its top module and test bench were written.
2. It is implemented in Xilinx.
3. The output was viewed and verified.
IP CORE PROGRAM
`timescale 1ns / 1ps
module clkdiv_ip(CLKIN_IN,
CLKFX_OUT,
CLKFX180_OUT,
CLKIN_IBUFG_OUT);
input CLKIN_IN;
output CLKFX_OUT;
output CLKFX180_OUT;
output CLKIN_IBUFG_OUT;
wire CLKFX_BUF;
wire CLKFX180_BUF;
wire CLKIN_IBUFG;
Dept. of ECE, FISAT
36
SEMESTER 2
wire GND_BIT;
assign GND_BIT = 0;
assign CLKIN_IBUFG_OUT = CLKIN_IBUFG;
BUFG CLKFX_BUFG_INST (.I(CLKFX_BUF),
.O(CLKFX_OUT));
BUFG CLKFX180_BUFG_INST (.I(CLKFX180_BUF),
.O(CLKFX180_OUT));
IBUFG CLKIN_IBUFG_INST (.I(CLKIN_IN),
.O(CLKIN_IBUFG));
DCM_SP DCM_SP_INST (.CLKFB(GND_BIT),
.CLKIN(CLKIN_IBUFG),
.DSSEN(GND_BIT),
.PSCLK(GND_BIT),
.PSEN(GND_BIT),
.PSINCDEC(GND_BIT),
.RST(GND_BIT),
.CLKDV(),
.CLKFX(CLKFX_BUF),
.CLKFX180(CLKFX180_BUF),
.CLK0(),
.CLK2X(),
.CLK2X180(),
.CLK90(),
.CLK180(),
.CLK270(),
.LOCKED(),
.PSDONE(),
37
SEMESTER 2
.STATUS());
defparam DCM_SP_INST.CLK_FEEDBACK = "NONE";
defparam DCM_SP_INST.CLKDV_DIVIDE = 2.0;
defparam DCM_SP_INST.CLKFX_DIVIDE = 4;
defparam DCM_SP_INST.CLKFX_MULTIPLY = 2;
defparam DCM_SP_INST.CLKIN_DIVIDE_BY_2 = "FALSE";
defparam DCM_SP_INST.CLKIN_PERIOD = 100.000;
defparam DCM_SP_INST.CLKOUT_PHASE_SHIFT = "NONE";
defparam DCM_SP_INST.DESKEW_ADJUST = "SYSTEM_SYNCHRONOUS";
defparam DCM_SP_INST.DFS_FREQUENCY_MODE = "LOW";
defparam DCM_SP_INST.DLL_FREQUENCY_MODE = "LOW";
defparam DCM_SP_INST.DUTY_CYCLE_CORRECTION = "TRUE";
defparam DCM_SP_INST.FACTORY_JF = 16'hC080;
defparam DCM_SP_INST.PHASE_SHIFT = 0;
defparam DCM_SP_INST.STARTUP_WAIT = "FALSE";
endmodule
TOP MODULE
module clkdiv_top(CLKIN_IN,
CLKFX_OUT,
CLKFX180_OUT,
CLKIN_IBUFG_OUT);
input CLKIN_IN;
output CLKFX_OUT;
output CLKFX180_OUT;
output CLKIN_IBUFG_OUT;
clkdiv_ip dut(CLKIN_IN,
CLKFX_OUT,
Dept. of ECE, FISAT
38
SEMESTER 2
CLKFX180_OUT,
CLKIN_IBUFG_OUT);
endmodule
TEST BENCH
module clkdiv_test_v;
// Inputs
reg CLKIN_IN;
// Outputs
wire CLKFX_OUT;
wire CLKFX180_OUT;
wire CLKIN_IBUFG_OUT;
// Instantiate the Unit Under Test (UUT)
clkm_top uut (
.CLKIN_IN(CLKIN_IN),
.CLKFX_OUT(CLKFX_OUT),
.CLKFX180_OUT(CLKFX180_OUT),
.CLKIN_IBUFG_OUT(CLKIN_IBUFG_OUT)
);
initial begin
// Initialize Inputs
CLKIN_IN = 0;
// Wait 100 ns for global reset to finish
#100;
// Add stimulus here
end
always begin #50; CLKIN_IN=~CLKIN_IN; end
endmodule
BLACK BOX
Dept. of ECE, FISAT
39
SEMESTER 2
OUTPUT
RESULT
A clock divider circuit was designed and output was observed in xilinx.
9. FIFO
Dept. of ECE, FISAT
40
SEMESTER 2
AIM
To design FIFO using Xilinx.
SOFTWARE USED
Xilinx
PROCEDURE
1. The verilog module source code for FIFO circuit was generated using IP core
generator, its top module and test bench were written.
2. It is implemented in Xilinx.
3. The output was viewed and verified.
IP CORE PROGRAM
`timescale 1ns/1ps
module fifog(
clk,
din,
rd_en,
rst,
wr_en,
dout,
empty,
full);
input clk;
input [15 : 0] din;
input rd_en;
input rst;
Dept. of ECE, FISAT
41
SEMESTER 2
input wr_en;
output [15 : 0] dout;
output empty;
output full;
// synthesis translate_off
FIFO_GENERATOR_V3_3 #(
.C_COMMON_CLOCK(1),
.C_COUNT_TYPE(0),
.C_DATA_COUNT_WIDTH(10),
.C_DEFAULT_VALUE("BlankString"),
.C_DIN_WIDTH(16),
.C_DOUT_RST_VAL("0"),
.C_DOUT_WIDTH(16),
.C_ENABLE_RLOCS(0),
.C_FAMILY("spartan3"),
.C_HAS_ALMOST_EMPTY(0),
.C_HAS_ALMOST_FULL(0),
.C_HAS_BACKUP(0),
.C_HAS_DATA_COUNT(0),
.C_HAS_MEMINIT_FILE(0),
.C_HAS_OVERFLOW(0),
.C_HAS_RD_DATA_COUNT(0),
.C_HAS_RD_RST(0),
.C_HAS_RST(1),
.C_HAS_SRST(0),
.C_HAS_UNDERFLOW(0),
42
SEMESTER 2
.C_HAS_VALID(0),
.C_HAS_WR_ACK(0),
.C_HAS_WR_DATA_COUNT(0),
.C_HAS_WR_RST(0),
.C_IMPLEMENTATION_TYPE(0),
.C_INIT_WR_PNTR_VAL(0),
.C_MEMORY_TYPE(1),
.C_MIF_FILE_NAME("BlankString"),
.C_OPTIMIZATION_MODE(0),
.C_OVERFLOW_LOW(0),
.C_PRELOAD_LATENCY(1),
.C_PRELOAD_REGS(0),
.C_PRIM_FIFO_TYPE("1kx18"),
.C_PROG_EMPTY_THRESH_ASSERT_VAL(2),
.C_PROG_EMPTY_THRESH_NEGATE_VAL(3),
.C_PROG_EMPTY_TYPE(0),
.C_PROG_FULL_THRESH_ASSERT_VAL(1022),
.C_PROG_FULL_THRESH_NEGATE_VAL(1021),
.C_PROG_FULL_TYPE(0),
.C_RD_DATA_COUNT_WIDTH(10),
.C_RD_DEPTH(1024),
.C_RD_FREQ(100),
.C_RD_PNTR_WIDTH(10),
.C_UNDERFLOW_LOW(0),
.C_USE_ECC(0),
.C_USE_FIFO16_FLAGS(0),
.C_VALID_LOW(0),
.C_WR_ACK_LOW(0),
43
SEMESTER 2
.C_WR_DATA_COUNT_WIDTH(10),
.C_WR_DEPTH(1024),
.C_WR_FREQ(100),
.C_WR_PNTR_WIDTH(10),
.C_WR_RESPONSE_LATENCY(1))
inst (
.CLK(clk),
.DIN(din),
.RD_EN(rd_en),
.RST(rst),
.WR_EN(wr_en),
.DOUT(dout),
.EMPTY(empty),
.FULL(full),
.BACKUP(),
.BACKUP_MARKER(),
.PROG_EMPTY_THRESH(),
.PROG_EMPTY_THRESH_ASSERT(),
.PROG_EMPTY_THRESH_NEGATE(),
.PROG_FULL_THRESH(),
.PROG_FULL_THRESH_ASSERT(),
.PROG_FULL_THRESH_NEGATE(),
.RD_CLK(),
.RD_RST(),
.SRST(),
.WR_CLK(),
.WR_RST(),
.ALMOST_EMPTY(),
44
SEMESTER 2
.ALMOST_FULL(),
.DATA_COUNT(),
.OVERFLOW(),
.PROG_EMPTY(),
.PROG_FULL(),
.VALID(),
.RD_DATA_COUNT(),
.UNDERFLOW(),
.WR_ACK(),
.WR_DATA_COUNT(),
.SBITERR(),
.DBITERR());
// synthesis translate_on
// XST black box declaration
// box_type "black_box"
// synthesis attribute box_type of fifog is "black_box"
endmodule
TOP MODULE
module fifo_top(
clk,
din,
rd_en,
rst,
wr_en,
dout,
empty,
full);
Dept. of ECE, FISAT
45
SEMESTER 2
input clk;
input [15 : 0] din;
input rd_en;
input rst;
input wr_en;
output [15 : 0] dout;
output empty;
output full;
fifog m(clk,din,rd_en,rst,wr_en,dout,empty,full);
endmodule
TEST BENCH
module fifo_test_v;
// Inputs
reg clk;
reg [15:0] din;
reg rd_en;
reg rst;
reg wr_en;
// Outputs
wire [15:0] dout;
wire empty;
wire full;
// Instantiate the Unit Under Test (UUT)
fifo_top uut (
.clk(clk),
.din(din),
.rd_en(rd_en),
.rst(rst),
Dept. of ECE, FISAT
46
SEMESTER 2
.wr_en(wr_en),
.dout(dout),
.empty(empty),
.full(full)
);
initial begin
// Initialize Inputs
clk = 0;
din = 0;
rd_en = 0;
rst = 0;
wr_en = 0;
// Wait 100 ns for global reset to finish
#100;
// Add stimulus here
wr_en =1;
din=1'b1;
#100;
din=3'b101;
#100;
din=5'b11111;
#100;
din=1'b0;
#100;
din=2'b10;
#100;
din=4'b1011;
#100;
47
SEMESTER 2
wr_en=0;
#150;
rd_en=1;
end
always begin
#50;
clk = ~clk;
end
endmodule
BLACK BOX
OUTPUT
48
SEMESTER 2
RESULT
A FIFO circuit was designed and output was observed in xilinx.
10. SRAM
Dept. of ECE, FISAT
49
SEMESTER 2
AIM
To design a SRAM using Xilinx.
SOFTWARE USED
Xilinx
PROCEDURE
1. The verilog module source code for SRAM circuit was generated using IP core
generator ,its top module and test bench were written.
2. It is implemented in Xilinx.
3. The output was viewed and verified.
IP CORE PROGRAM
`timescale 1ns/1ps
module sram_ip(addra, addrb, clka, clkb, dina, dinb, douta, doutb, wea, web);
input [3 : 0] addra;
input [3 : 0] addrb;
input clka;
input clkb;
input [15 : 0] dina;
input [15 : 0] dinb;
output [15 : 0] douta;
output [15 : 0] doutb;
input wea;
input web;
// synthesis translate_off
BLKMEMDP_V6_3 #(
.c_addra_width(4),
.c_addrb_width(4),
Dept. of ECE, FISAT
50
SEMESTER 2
.c_default_data("0"),
.c_depth_a(16),
.c_depth_b(16),
.c_enable_rlocs(0),
.c_has_default_data(1),
.c_has_dina(1),
.c_has_dinb(1),
.c_has_douta(1),
.c_has_doutb(1),
.c_has_ena(0),
.c_has_enb(0),
.c_has_limit_data_pitch(0),
.c_has_nda(0),
.c_has_ndb(0),
.c_has_rdya(0),
.c_has_rdyb(0),
.c_has_rfda(0),
.c_has_rfdb(0),
.c_has_sinita(0),
.c_has_sinitb(0),
.c_has_wea(1),
.c_has_web(1),
.c_limit_data_pitch(18),
.c_mem_init_file("mif_file_16_1"),
.c_pipe_stages_a(0),
.c_pipe_stages_b(0),
.c_reg_inputsa(0),
.c_reg_inputsb(0),
51
SEMESTER 2
.c_sim_collision_check("NONE"),
.c_sinita_value("0"),
.c_sinitb_value("0"),
.c_width_a(16),
.c_width_b(16),
.c_write_modea(0),
.c_write_modeb(0),
.c_ybottom_addr("0"),
.c_yclka_is_rising(1),
.c_yclkb_is_rising(1),
.c_yena_is_high(1),
.c_yenb_is_high(1),
.c_yhierarchy("hierarchy1"),
.c_ymake_bmm(0),
.c_yprimitive_type("16kx1"),
.c_ysinita_is_high(1),
.c_ysinitb_is_high(1),
.c_ytop_addr("1024"),
.c_yuse_single_primitive(0),
.c_ywea_is_high(1),
.c_yweb_is_high(1),
.c_yydisable_warnings(1))
inst (
.ADDRA(addra),
.ADDRB(addrb),
.CLKA(clka),
.CLKB(clkb),
.DINA(dina),
52
SEMESTER 2
.DINB(dinb),
.DOUTA(douta),
.DOUTB(doutb),
.WEA(wea),
.WEB(web),
.ENA(),
.ENB(),
.NDA(),
.NDB(),
.RFDA(),
.RFDB(),
.RDYA(),
.RDYB(),
.SINITA(),
.SINITB());
// synthesis translate_on
// XST black box declaration
// box_type "black_box"
// synthesis attribute box_type of sram_ip is "black_box"
Endmodule
TOP MODULE
module sram_top(addra, addrb, clka, clkb, dina, dinb, douta, doutb, wea, web);
input [3 : 0] addra;
input [3 : 0] addrb;
input clka;
input clkb;
input [15 : 0] dina;
input [15 : 0] dinb;
Dept. of ECE, FISAT
53
SEMESTER 2
TEST BENCH
module sram_test_v;
// Inputs
reg [3:0] addra;
reg [3:0] addrb;
reg clka;
reg clkb;
reg [15:0] dina;
reg [15:0] dinb;
reg wea;
reg web;
// Outputs
wire [15:0] douta;
wire [15:0] doutb;
// Instantiate the Unit Under Test (UUT)
sram_top uut (
.addra(addra),
.addrb(addrb),
.clka(clka),
.clkb(clkb),
.dina(dina),
.dinb(dinb),
Dept. of ECE, FISAT
54
SEMESTER 2
.douta(douta),
.doutb(doutb),
.wea(wea),
.web(web)
);
initial begin
// Initialize Inputs
addra = 0;
addrb = 0;
clka = 0;
clkb = 0;
dina = 0;
dinb = 0;
wea = 0;
web = 0;
// Wait 100 ns for global reset to finish
#100;
wea=1;
#100;
addra=4'b1001;
dina = 5'b10101;
#100;
addra=4'b1010;
dina = 5'b11111;
#100;
wea = 0;
#100;
addra=4'b1001;
55
SEMESTER 2
#100;
addra=4'b1010;
end
always begin
#50
clka=~clka;
end
endmodule
BLACK BOX
OUTPUT
Dept. of ECE, FISAT
56
SEMESTER 2
RESULT
A SRAM circuit was designed and output was observed in xilinx.
57