Your IP : 216.73.216.213
module tap_controller (tms,
tck,
trst,
sel,
enable,
test_logic_reset,
idle,
resetn,
shift_ir,
update_ir,
clock_ir,
shift_dr,
capture_dr,
clock_dr,
update_dr);
input tms;
input tck;
input trst;
output sel;
output enable;
output test_logic_reset;
output idle;
output resetn;
output shift_ir;
output update_ir;
output clock_ir;
output shift_dr;
output capture_dr;
output clock_dr;
output update_dr;
wire sel;
reg enable;
wire test_logic_reset;
wire idle;
reg resetn;
reg shift_ir;
wire update_ir;
wire clock_ir;
reg shift_dr;
wire capture_dr;
wire clock_dr;
wire update_dr;
reg D;
reg C;
reg B;
reg A;
wire NA;
wire NB;
wire NC;
wire ND;
wire GRST;
wire GENB;
wire GSIR;
wire GSDR;
wire tckd;
wire trsthi;
wire tmsbuf;
wire trstnbuf;
initial
begin
A = 'b 1;
end
initial
begin
B = 'b 1;
end
initial
begin
C = 'b 1;
end
initial
begin
D = 'b 1;
end
always @(posedge trsthi or posedge tckd)
begin
if (trsthi == 'b 1)
resetn <= 'b 0; else if (tckd== 'b 1 ) resetn <=GRST;
end
always @(posedge trsthi or posedge tckd) begin
if (trsthi== 'b 1) enable <='b 0;
else if (tckd == 'b 1 ) enable <=GENB; end
always @(posedge trsthi or posedge tckd) begin
if (trsthi== 'b 1) shift_ir <='b 1;
else if (tckd == 'b 1 ) shift_ir <=GSIR; end
always @(posedge trsthi or posedge tckd) begin
if (trsthi== 'b 1) shift_dr <='b 1;
else if (tckd == 'b 1 ) shift_dr <=GSDR; end
always @(posedge trsthi or posedge tck) begin
if (trsthi== 'b 1) D <='b 1;
else if (tck == 'b 1 ) D <=ND; end
always @(posedge trsthi or posedge tck) begin
if (trsthi== 'b 1) C <='b 1;
else if (tck == 'b 1 ) C <=NC; end
always @(posedge trsthi or posedge tck) begin
if (trsthi== 'b 1) B <='b 1;
else if (tck == 'b 1 ) B <=NB; end
always @(posedge trsthi or posedge tck) begin
if (trsthi== 'b 1) A <='b 1;
else if (tck == 'b 1 ) A <=NA; end
assign trsthi=~trstnbuf; assign sel=D; assign tckd=~tck;
assign clock_ir=~(~A & B & D & tckd); assign update_ir=A & ~B & C & D & tckd;
assign clock_dr=~(~A & B & ~D & tckd); assign test_logic_reset=A & B & C & D;
assign idle=~A & ~B & C & D;
assign update_dr=A & ~B & C & ~D & tckd;
assign capture_dr=~A & B & C & ~D;
assign tmsbuf=tms; assign trstnbuf=trst;
assign NA=~(~(~tmsbuf & ~C & A) & ~(tmsbuf & ~B) & ~(tmsbuf & ~A) & ~(tmsbuf & C & D));
assign NB=~(~(~tmsbuf & B & ~A) & ~(~tmsbuf & ~C) & ~(~tmsbuf & ~D & B)
& ~(~tmsbuf & ~D & ~A) & ~(tmsbuf & C & ~B) & ~(tmsbuf & D & C & A));
assign NC=~(~(C & ~B) & ~(C & A) & ~(tmsbuf & ~B));
assign ND=~(~(D & ~C) & ~(D & B) & ~(~tmsbuf & C & ~B) & ~(~D & C & ~B & ~A));
assign GRST=~(A & B & C & D); assign GSIR=~A & B & ~C & D;
assign GSDR=~A & B & ~C & ~D; assign GENB=GSIR | GSDR;
endmodule // module tap_controller