/**********************************************************************************
|
/**********************************************************************************
|
* *
|
* *
|
* This verilog file is a part of the Boundary Scan Implementation and comes in *
|
* This verilog file is a part of the Boundary Scan Implementation and comes in *
|
* a pack with several other files. It is fully IEEE 1149.1 compliant. *
|
* a pack with several other files. It is fully IEEE 1149.1 compliant. *
|
* For details check www.opencores.org (pdf files, bsdl file, etc.) *
|
* For details check www.opencores.org (pdf files, bsdl file, etc.) *
|
* *
|
* *
|
* Copyright (C) 2000 Igor Mohor (igorm@opencores.org) and OPENCORES.ORG *
|
* Copyright (C) 2000 Igor Mohor (igorm@opencores.org) and OPENCORES.ORG *
|
* *
|
* *
|
* This program is free software; you can redistribute it and/or modify *
|
* This program is free software; you can redistribute it and/or modify *
|
* it under the terms of the GNU General Public License as published by *
|
* it under the terms of the GNU General Public License as published by *
|
* the Free Software Foundation; either version 2 of the License, or *
|
* the Free Software Foundation; either version 2 of the License, or *
|
* (at your option) any later version. *
|
* (at your option) any later version. *
|
* *
|
* *
|
* See the file COPYING for the full details of the license. *
|
* See the file COPYING for the full details of the license. *
|
* *
|
* *
|
* OPENCORES.ORG is looking for new open source IP cores and developers that *
|
* OPENCORES.ORG is looking for new open source IP cores and developers that *
|
* would like to help in our mission. *
|
* would like to help in our mission. *
|
* *
|
* *
|
**********************************************************************************/
|
**********************************************************************************/
|
|
|
|
|
|
|
/**********************************************************************************
|
/**********************************************************************************
|
* *
|
* *
|
* Input Cell: *
|
* Input Cell: *
|
* *
|
* *
|
* InputPin: Value that comes from on-chip logic and goes to pin *
|
* InputPin: Value that comes from on-chip logic and goes to pin *
|
* FromPreviousBSCell: Value from previous boundary scan cell *
|
* FromPreviousBSCell: Value from previous boundary scan cell *
|
* ToNextBSCell: Value for next boundary scan cell *
|
* ToNextBSCell: Value for next boundary scan cell *
|
* CaptureDR, ShiftDR: TAP states *
|
* CaptureDR, ShiftDR: TAP states *
|
* TCK: Test Clock *
|
* TCK: Test Clock *
|
* *
|
* *
|
**********************************************************************************/
|
**********************************************************************************/
|
|
|
// This is not a top module
|
// This is not a top module
|
module InputCell( InputPin, FromPreviousBSCell, CaptureDR, ShiftDR, TCK, ToNextBSCell);
|
module InputCell( InputPin, FromPreviousBSCell, CaptureDR, ShiftDR, TCK, ToNextBSCell);
|
input InputPin;
|
input InputPin;
|
input FromPreviousBSCell;
|
input FromPreviousBSCell;
|
input CaptureDR;
|
input CaptureDR;
|
input ShiftDR;
|
input ShiftDR;
|
input TCK;
|
input TCK;
|
|
|
reg Latch;
|
reg Latch;
|
|
|
output ToNextBSCell;
|
output ToNextBSCell;
|
reg ToNextBSCell;
|
reg ToNextBSCell;
|
|
|
wire SelectedInput = CaptureDR? InputPin : FromPreviousBSCell;
|
wire SelectedInput = CaptureDR? InputPin : FromPreviousBSCell;
|
|
|
always @ (posedge TCK)
|
always @ (posedge TCK)
|
begin
|
begin
|
if(CaptureDR | ShiftDR)
|
if(CaptureDR | ShiftDR)
|
Latch<=SelectedInput;
|
Latch<=SelectedInput;
|
end
|
end
|
|
|
always @ (negedge TCK)
|
always @ (negedge TCK)
|
begin
|
begin
|
ToNextBSCell<=Latch;
|
ToNextBSCell<=Latch;
|
end
|
end
|
|
|
|
|
|
|