Professional Documents
Culture Documents
Exp.No.2
Aim: To design and implement the following combinational circuit. a. Flip-Flop using behavioral modeling b. Serial-In Serial Out, Parallel-In Parallel Out Shift register using Structural Modeling c. Serial-In Parallel Out, Parallel-In Serial Out Shift register using behavior level Modeling d. Ring Counter and Johnson counter using behavior level Modeling and structural level modeling. Software Details: For design Functional Simulation: ModelSim For design Synthesis: Quartus II For design Implementation: Quartus II Hardware Details: Family: Cyclone II Device: EP2C Package: FBGA Pincount: 484
Experiment No. 2
module ff_seq (d, reset_n, s, r, j, k, t, clk, q_d, q_s, q_r, q_j, q_k, q_t);
input d; input s; input r; input j; input k; input clk; input reset_n; input t;
Experiment No. 2
output q_d; output q_s; output q_r; output q_j; output q_k; output q_t;
reg q_d; reg q_s; reg q_r; reg q_j; reg q_k; reg q_t; initial q_t=1'b0;
//output as register.
if (reset_n==0) begin
if (reset_n==0) begin q_s<=0; q_r<=1; end else case({s,r}) 2'b00: begin q_s<=q_s; q_r<=q_r; end 2'b01: begin q_s<=0; q_r<=1; end
Experiment No. 2 2'b10: begin q_s<=1; q_r<=0; end default : begin q_s<=0; q_r<=0; end endcase
if(reset_n==0)
begin q_j<=0; q_k<=0; end else case({j,k}) 2'b00: begin q_j<=q_j; //when j=0,k=0 then memory state.
//defaut case .
if(reset_n==1&& t==1)
q_t<=~q_t;
//toggle.
Experiment No. 2 begin q<=0; q_n<=1; end else begin q<=d; q_n<=!d; end end endmodule
Experiment No. 2
TEST BENCH
`include "ff_seq.v" `timescale 1ns/100ps //including design fie. //for time axis and resolution.
module ff_seq_tb;
reg s; reg r; reg d; reg clk; reg reset_n; reg j; reg k; reg t;
wire q_d; wire q_s; wire q_r; wire q_j; wire q_k; wire q_t;
//declaration of output.
Experiment No. 2
ff_seq a1 (d, reset_n, s, r, j, k, t, clk, q_d, q_s, q_r, q_j, q_k, q_t);
#10 reset_n=1'b1; d=1'b1; s=1'b1; r=1'b0; j=1; k=0; t=1; //input at 10 ns//
//input at 30 ns//
Experiment No. 2 #20 reset_n=1'b1; d=1'b1; s=1'b0; r=1'b0; j=1; k=1; t=1; // input at 50 ns//
//input at 70 ns//
#20
$finish; $stop;
end endmodule
Experiment No. 2
RING COUNTER
always@(posedge clk or negedge reset_n) begin if (reset_n==0) out<=store; else if(load==1) out<=user; else out<=data_shift; end endmodule
Experiment No. 2
TEST BENCH
module cnt_ring_tb; reg clk; reg reset_n; reg [3:0]user; reg load;
cnt_ring a1
reset_n=0; clk=0; user=4'b1000; load=0; #10 reset_n=1; load=0; #20 reset_n=1; load=0; #20 reset_n=1; load=0; #20 reset_n=1; load=0; #20 user=3'b1010; reset_n=1; load=0; #20 reset_n=1;
#20 reset_n=1; load=0; #20 reset_n=0; load=0; #20 $stop; $finish; end endmodule
Experiment No. 2
JOHNSON COUNTER
Experiment No. 2
always@(posedge clk or negedge reset_n) begin if (reset_n==0) out<=store; else if(load==1) out<=user; else out<=data_shift; end endmodule
Experiment No. 2
TEST BENCH
module cnt_jonson_tb; reg clk; reg reset_n; reg [2:0]user; reg load;
always
#20
Experiment No. 2
Experiment No. 2
C. Serial-In Parallel Out, Parallel-In Serial Out Shift register using behavioral Modeling
module reg_sipo (data_in, load, shift, rl, reset_n, clk, data_out, data );
input data_in; input load; input shift; input rl; input reset_n; input clk;
Experiment No. 2
assign data=rl?data_out>>1:data_out<<1; always@(posedge clk or negedge reset_n) begin if(reset_n==0) begin data_out<=8'b0; end
Experiment No. 2
TESTBENCH:
`include "reg_sipo.v" `timescale 1ns/100ps module reg_sipo_tb;
reg data_in; reg load; reg shift; reg rl; reg reset_n; reg clk;
reg_sipo a1
Experiment No. 2
always #10 clk=~clk; initial begin reset_n=0; clk=0; load=0; data_in=0; rl=1; shift=0;
$stop; $finish;
end endmodule
Experiment No. 2
Experiment No. 2
Experiment No. 2
Experiment No. 2
Experiment No. 2
RTL Code for Parallel-In Serial Out Shift (PISO) register using Behavioral Modeling:
module reg_piso (data_in, load, shift, rl, reset_n, clk, data_out, data_valid, data, eoc, cnt);
input [7:0]data_in; input load; input shift; input rl; input reset_n; input clk;
output data_out;
Experiment No. 2 output data_valid; output eoc; output [7:0]data; output [3:0]cnt;
reg data_out; reg data_valid; reg eoc; reg [7:0]data; reg [3:0]cnt;
Experiment No. 2
TestBench:
reg [7:0]data_in; reg load; reg shift; reg rl; reg reset_n; reg clk;
wire data_out; wire data_valid; wire eoc; wire [7:0]data; wire [3:0]cnt;
reg_piso a1
(data_in,
initial begin
#180
Experiment No. 2