AFPGA Assignments - Complete
AFPGA Assignments - Complete
[2:0]con;
//Control Pins
input
i0,i1,i2,i3,i4,i5,i6,i7;
//Input Pins
output
out;
//Output Pin
assign
endmodule
Mux8_TB.v
initial begin
// Initialize Inputs
i0 = 0;
i1 = 0;
i2 = 0;
i3 = 0;
i4 = 0;
i5 = 0;
i6 = 0;
i7 = 0;
con = 0;
#100 i0 = 1;i1 = 0;i2 = 0;i3 = 0;i4 = 0;i5 = 0;i6 = 0;i7 = 0;con = 000;
#100 i0 = 0;i1 = 1;i2 = 0;i3 = 0;i4 = 0;i5 = 0;i6 = 0;i7 = 0;con = 001;
IQBAL KHAN
AFPGA Assignments
#100 i0 = 0;i1 = 0;i2 = 1;i3 = 0;i4 = 0;i5 = 0;i6 = 0;i7 = 0;con = 010;
#100 i0 = 0;i1 = 0;i2 = 0;i3 = 1;i4 = 0;i5 = 0;i6 = 0;i7 = 0;con = 011;
#100 i0 = 0;i1 = 0;i2 = 0;i3 = 0;i4 = 1;i5 = 0;i6 = 0;i7 = 0;con = 100;
#100 i0 = 0;i1 = 0;i2 = 0;i3 = 0;i4 = 0;i5 = 1;i6 = 0;i7 = 0;con = 101;
#100 i0 = 0;i1 = 0;i2 = 0;i3 = 0;i4 = 0;i5 = 0;i6 = 1;i7 = 0;con = 110;
#100 i0 = 0;i1 = 0;i2 = 0;i3 = 0;i4 = 0;i5 = 0;i6 = 0;i7 = 1;con = 111;
// Wait 100 ns for global reset to finish
#100;
IQBAL KHAN
AFPGA Assignments
G = 1;
else
G = 0;
if (A < B)
I = 1;
else
I = 0;
end
endmodule
Compare_1TB.v
initial begin
// Initialize Inputs
A = 00000000;
B = 11111111;
A = 11111111; B = 00000000;
#100;
A = 00000000; B = 00000000;
#100;
A = 11111111; B = 11111111;
IQBAL KHAN
AFPGA Assignments
3 Structure
Struct.v
module Ful_Adr
(A,B,CI,S,CO);
input
A,B,CI;
output
S,CO;
wire
N1,N2,N3;
half_adder HA1
(A,B,N1,N2),
HA2
(N1,CI,S,N3);
or P1
(CO,N3,N2);
endmodule
module half_adder(X,Y,S,C);
input X,Y;
output S,C;
xor (S,X,Y);
and (C,X,Y);
endmodule
Struct_TB.v
initial begin
// Initialize Inputs
A = 0;
B = 0;
CI = 0;
// Wait 100 ns for global reset to finish
#100 A = 0; B = 0; CI = 1;
// Add stimulus here
#100 A = 0; B = 1; CI = 0;
#100 A = 0; B = 1; CI = 1;
#100 A = 1; B = 0; CI = 0;
#100 A = 1; B = 0; CI = 1;
#100 A = 1; B = 1; CI = 0;
IQBAL KHAN
AFPGA Assignments
#100 A = 1; B = 1; CI = 1;
end
input
clk, rst, c ;
input
[15:0] din;
output
[15:0] dout;
reg
[15:0] dout;
({rst, c})
: dout = 15'b0;
2'b10
: dout = din;
2'b11
: dout = dout + 1;
2'b01
: dout = dout - 1;
default
: dout = 15'bx;
endcase
endmodule
IQBAL KHAN
AFPGA Assignments
Counter_TB.v
initial begin
// Initialize Inputs
clk = 0;
rst = 0;
c = 0;
din = 0;
// Wait 100 ns for global reset to finish
#100;
din[0] = 1; din[2] = 1;
#100;
#100;
clk = 0;
#100;
#100;
clk = 0;
#100;
#100;
clk = 0;
#100;
// Increment 1 Time
// Increment 1 Time
// Decrement 1 Time
IQBAL KHAN
AFPGA Assignments
5 Use while loop to design a circuit which divides a 16-bit input din
by 3. The 15-bit output result holds the result of the division and 2
bit output Reminder. (Error)
While.v
`timescale 1ns / 1ps
//////////////////////////////////////////////////////////////////////////
////////
// Company:
// Engineer:
//
// Create Date:
01:40:50 04/17/2015
// Design Name:
// Module Name:
while
//////////////////////////////////////////////////////////////////////////
////////
module zerocount (din, result, reminder, clk, count);
input
clk;
input
[15:0] din;
output
[15:0] result;
output
[1:0] reminder;
output
[4:0] count;
reg
[1:0] reminder;
reg
[4:0] count;
reg
[15:0] result;
reg
[15:0] din_reg;
//assign
result [15:0] = 0;
AFPGA Assignments
while (count < 3) begin
count = count+1;
if (din_reg[0]== 1) begin
reminder = reminder + 1;
end // if
din_reg = din_reg >> 1;
result = din_reg;
end // while
end // always
endmodule
While_TB.v
`timescale 1ns / 1ps
//////////////////////////////////////////////////////////////////////////
//////
// Company:
// Engineer:
//
// Create Date:
03:28:44 04/17/2015
// Design Name:
zerocount
// Module Name:
// Project Name:
While
module While_TB;
// Inputs
reg [15:0] din;
reg clk;
IQBAL KHAN
AFPGA Assignments
// Outputs
wire [15:0] result;
wire [1:0] reminder;
wire [4:0] count;
initial begin
// Initialize Inputs
din = 0;
clk = 0;
end
endmodule
IQBAL KHAN
AFPGA Assignments
18:53:13 04/12/2015
// Design Name:
// Module Name:
Comb_chk
// Project Name:
// Target Devices:
// Tool versions:
// Description:
//
// Dependencies:
//
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
//
//////////////////////////////////////////////////////////////////////////
////////
module Comb_chk(din, count, clk, para_chk);
input
clk;
input
[31:0] din;
output
[3:0] count;
output
[2:0] para_chk;
IQBAL KHAN
10
AFPGA Assignments
reg
[31:0] a;
reg
[3:0] count, b, c;
reg
[2:0] d, para_chk;
//assign
d[2:0] = 0;
endmodule
Comb_chk_TB.v
`timescale 1ns / 1ps
// Company:
// Engineer:
//
// Create Date:
08:13:32 04/19/2015
// Design Name:
Comb_chk
//
Module
Name:
C:/Users/Iqbal
Projects/combination_check/Comb_chk_TB.v
// Project Name:
Uddin
Khan/ISE
combination_check
// Target Device:
IQBAL KHAN
11
AFPGA Assignments
// Tool versions:
// Description:
//
// Verilog Test Fixture created by ISE for module: Comb_chk
//
// Dependencies:
//
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
//
module Comb_chk_TB;
// Inputs
reg [31:0] din;
reg clk;
// Outputs
wire [3:0] count;
wire [2:0] para_chk;
initial begin
IQBAL KHAN
12
AFPGA Assignments
// Initialize Inputs
din = 0;
clk = 0;
end
endmodule
IQBAL KHAN
13
AFPGA Assignments
IQBAL KHAN
14
AFPGA Assignments
Memory_TB.v
`timescale 1ns / 1ps
//////////////////////////////////////////////////////////////////////////
// Company:
// Engineer:
//
// Create Date:
22:24:43 05/16/2015
// Design Name:
memory
// Module Name: C:/Users/Iqbal Uddin Khan/ISE - Projects/Memory/memory_TB.v
// Project Name: Memory
// Target Device:
// Tool versions:
// Description:
// Verilog Test Fixture created by ISE for module: memory
IQBAL KHAN
15
AFPGA Assignments
// Dependencies:
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
//////////////////////////////////////////////////////////////////////////
module memory_TB();
integer
i;
reg
clk, reset, enable, read;
reg
[7:0] data_in;
reg
[3:0] wr_addr, rd_addr;
wire
[7:0] data_out;
parameter cycle=20;
memory DUT (clk, reset, enable, read, wr_addr, rd_addr, data_in, data_out );
task initialize ();
begin
enable = 0;
read = 0;
data_in = 0;
end
endtask
initial
begin
clk = 1'b0;
forever
#(cycle/2) clk=~clk;
end
task rst_dut();
begin
reset = 1'b1;
@ (posedge clk);
reset = 1'b0;
end
endtask
task stimulus (input [3:0] n, input [7:0]j);
begin
wr_addr = n;
data_in = j;
@ (negedge clk);
rd_addr = i;
end
endtask
IQBAL KHAN
16
AFPGA Assignments
task write();
begin
enable = 1'b1;
end
endtask
task reading();
begin
read = 1'b1;
end
endtask
initial
begin
rst_dut;
write;
reading;
@ (negedge clk);
for (i=0; 1<16; i=i+1)
begin
stimulus (i,($random));
end
#100 $finish;
end
endmodule
IQBAL KHAN
17
AFPGA Assignments
2. In pop up window Memories and Storage Elements RAMs and ROMs Block Memory
Generator NEXT Finish
3. Next In Memory Type Select SIMPLE DUAL PORT RAM Next
4. Select Write Width 08 (depends on your need) Next
5. Check Load Init File (For Initial Values if required) Brows Path of Init File or (.COE File)
6. Next Next Generate
);
DCM_RAM_1.v
`timescale 1ns / 1ps
//////////////////////////////////////////////////////////////////////////
// Company:
// Engineer:
//
IQBAL KHAN
18
AFPGA Assignments
// Create Date:
23:34:04 05/30/2015
// Design Name:
// Module Name:
DCM_RAM_1
// Project Name:
// Target Devices:
// Tool versions:
// Description:
//
// Dependencies:
//
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
//
//////////////////////////////////////////////////////////////////////////
module DCM_RAM_1(
input CLKIN_IN,
input [0 : 0] wea,
input [3 : 0] addra,
input [7 : 0] dina,
input [3 : 0] addrb,
output [7 : 0] doutb
);
// Calling DCM
DCM_1 CALL_DCM (
.CLKIN_IN(CLKIN_IN),
.CLK0_OUT(clka),
.CLK2X_OUT(clkb)
);
// Calling RAM -> your_instance_name
RAM_1 CALL_RAM (
.clka(clka), // input clka
.wea(wea), // input [0 : 0] wea
.addra(addra), // input [3 : 0] addra
.dina(dina), // input [7 : 0] dina
.clkb(clkb), // input clkb
.addrb(addrb), // input [3 : 0] addrb
.doutb(doutb) // output [7 : 0] doutb
);
endmodule
IQBAL KHAN
19
AFPGA Assignments
DCM_RAM_TB.v
`timescale 1ns / 1ps
//////////////////////////////////////////////////////////////////////////
// Company:
// Engineer:
//
// Create Date:
23:38:35 05/30/2015
// Design Name:
DCM_RAM_1
// Module Name:
/home/iqbal/ISE/RAM/DCM_RAM_1/DCM_RAM_TB.v
// Project Name: DCM_RAM_1
// Target Device:
// Tool versions:
// Description:
//
// Verilog Test Fixture created by ISE for module: DCM_RAM_1
//
// Dependencies:
//
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
//
//////////////////////////////////////////////////////////////////////////
module DCM_RAM_TB;
// Inputs
reg CLKIN_IN;
reg [0:0] wea;
reg [3:0] addra;
reg [7:0] dina;
reg [3:0] addrb;
// Outputs
wire [7:0] doutb;
// Instantiate the Unit Under Test (UUT)
DCM_RAM_1 uut (
.CLKIN_IN(CLKIN_IN),
.wea(wea),
.addra(addra),
.dina(dina),
.addrb(addrb),
.doutb(doutb)
);
initial begin
IQBAL KHAN
20
AFPGA Assignments
// Initialize Inputs
CLKIN_IN = 0;
wea = 0;
addra = 0;
dina = 0;
addrb = 0;
/*
// Reading only
#100;
for data sync
#100;
#100;
for data sync
#100;
#100;
for data sync
#100;
#100;
#100;
#100;
#100;
#100;
#100;
#100;
#100;
#100;
#100;
#100;
#100;
#100;
#100;
#100;
#100;
#100;
#100;
#100;
#100;
#100;
IQBAL KHAN
CLKIN_IN = 1;
// CLK a1
CLKIN_IN = 0;
CLKIN_IN = 1;
// CLK a2
CLKIN_IN = 0;
CLKIN_IN = 1;
// CLK a3
CLKIN_IN = 0;
CLKIN_IN = 1;
CLKIN_IN = 0;
CLKIN_IN = 1;
CLKIN_IN = 0;
CLKIN_IN = 1;
CLKIN_IN = 0;
CLKIN_IN = 1;
CLKIN_IN = 0;
CLKIN_IN = 1; addrb = 1;
wea = 1; addra = 8;
CLKIN_IN = 0;
CLKIN_IN = 1; addrb = 2;
addra = 9;
dina =
CLKIN_IN = 0;
CLKIN_IN = 1; addrb = 3;
addra = 10;
dina =
CLKIN_IN = 0;
CLKIN_IN = 1; addrb = 4;
addra = 11;
dina =
CLKIN_IN = 0;
CLKIN_IN = 1; addrb = 5;
addra = 12;
dina =
CLKIN_IN = 0;
CLKIN_IN = 1; addrb = 6;
addra = 13;
dina =
CLKIN_IN = 0;
CLKIN_IN = 1; addrb = 7;
addra = 14;
dina =
// CLK 1
// CLK 2
// CLK 3
// CLK 4
// CLK 5
dina = 33;
// CLK 6
35;
// CLK 7
57;
// CLK 8
44;
// CLK 9
41;
// CLK 10
55;
// CLK 11
17;
21
AFPGA Assignments
#100;
#100;
#100;
#100;
#100;
#100;
#100;
#100;
#100;
#100;
#100;
#100;
#100;
#100;
#100;
CLKIN_IN
CLKIN_IN
CLKIN_IN
CLKIN_IN
CLKIN_IN
CLKIN_IN
CLKIN_IN
CLKIN_IN
CLKIN_IN
CLKIN_IN
CLKIN_IN
CLKIN_IN
CLKIN_IN
CLKIN_IN
CLKIN_IN
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
0;
1;
0;
1;
0;
1;
0;
1;
0;
1;
0;
1;
0;
1;
0;
wea = 0;
addrb = 9;
// CLK 12
addrb = 10;
// CLK 13
addrb = 11;
// CLK 14
addrb = 12;
// CLK 15
addrb = 13;
// CLK 16
addrb = 14;
// CLK 17
addrb = 15;
// CLK 18
IQBAL KHAN
22
AFPGA Assignments
IQBAL KHAN
23
AFPGA Assignments
IQBAL KHAN
24
AFPGA Assignments
IQBAL KHAN
25