Skip to main content

Registers

Universal Shift Register : 



Program Code :

`timescale 1ns / 1ps
module univsr4bit74x194(clk,clrbar,s,lin,rin,d,q); input clk,clrbar,lin,rin;
input [1:0]s;
input [3:0]d;
output reg [3:0]q;
always@(posedge clk)
begin
if(clrbar==1'b0)
q<=4'b0000;
else
begin
case (s)
2'b00: q<=q ;
2'b01: q<={rin,q[3:1]};
2'b10: q<={q[2:0],lin};
2'b11: q<=d;
default: q<=4'b0000;
endcase
end
end
endmodule

Comments

Popular posts from this blog

Full Adder Using Multiplexer

Full Adder can be implemented by using mux .... These are the possible ways to do that !

Multiplexer and Demultiplexer

Multiplexer :  74 151  `timescale 1ns / 1ps module mux_74x151(EN_L, S, D, Y); input EN_L; input [2:0]S; input [7:0]D; output reg Y; reg y1; always@* begin case(S) 3'b000: y1<=D[0]; 3'b001: y1<=D[1]; 3'b010: y1<=D[2]; 3'b011: y1<=D[3]; 3'b100: y1<=D[4]; 3'b101: y1<=D[5]; 3'b110: y1<=D[6]; 3'b111: y1<=D[7]; default: y1<=1'b0; endcase if(EN_L==1'b0) Y<=y1; else Y<=1'b0; end endmodule Demultiplexer : 74 155 `timescale 1ns / 1ps module demux_74x155(ea,eab,ebb1,ebb2,A,outa,outb); input ea,eab,ebb1,ebb2; input [1:0]A; output reg [3:0]outa,outb; reg [3:0] y1; always@* begin case(A) 2'b00: y1<=4'b0111; 2'b01: y1<=4'b1011; 2'b10: y1<=4'b1101; 2'b11: y1<=4'b1110; default: y1<=4'b1111; endcase if(ea==1'b1 & eab==1'b0) outa <=y1; else outa <=4'b1111; if(ebb1==1'b0 & ebb2==1'b0) outb <=y1; else out...

Counters

Decade Counter and 4 Bit Counters are discussed in this post ... `timescale 1ns / 1ps module dec_counter_74x90( input CLK, input [1:0] R0, input [1:0] R9, output reg [3:0] q); always@(negedge CLK) begin if(R0==2'b11) q <=4'b0000 ; else if(R9==2'b11) q<=4'b1001; else if(q!=4'b1001) q <= q+1'b1; else q <= 4'b0000; end endmodule 4 Bit Counter : `timescale 1ns / 1ps module counter_74x93( input CLK, input [1:0] R0, output reg [3:0] q ); always@(negedge CLK) begin if(R0==2'b11) q<=4'b0000; else q <= q+1'b1; end endmodule