Line 5... |
Line 5... |
// Synthesizer : QuartusII 10.1 sp1
|
// Synthesizer : QuartusII 10.1 sp1
|
// Place and Route : QuartusII 10.1 sp1
|
// Place and Route : QuartusII 10.1 sp1
|
// Targets device : Cyclone III
|
// Targets device : Cyclone III
|
// Author : Bibo Yang (ash_riple@hotmail.com)
|
// Author : Bibo Yang (ash_riple@hotmail.com)
|
// Organization : www.opencores.org
|
// Organization : www.opencores.org
|
// Revision : 2.0
|
// Revision : 2.1
|
// Date : 2012/03/12
|
// Date : 2012/03/15
|
// Description : addr mask input from debug host via
|
// Description : addr mask input from debug host via
|
// Virtual JTAG.
|
// Virtual JTAG.
|
//**************************************************************
|
//**************************************************************
|
|
|
`timescale 1ns/1ns
|
`timescale 1ns/1ns
|
Line 19... |
Line 19... |
mask_out4 ,mask_out5 ,mask_out6 ,mask_out7 ,
|
mask_out4 ,mask_out5 ,mask_out6 ,mask_out7 ,
|
mask_out8 ,mask_out9 ,mask_out10,mask_out11,
|
mask_out8 ,mask_out9 ,mask_out10,mask_out11,
|
mask_out12,mask_out13,mask_out14,mask_out15
|
mask_out12,mask_out13,mask_out14,mask_out15
|
);
|
);
|
|
|
parameter addr_width = 32,
|
parameter mask_index = 4, //2**mask_index=mask_num
|
mask_index = 4, //2**mask_index=mask_num
|
mask_enabl = 4,
|
mask_num = 16;
|
addr_width = 32;
|
|
|
output [addr_width-1:0] mask_out0;
|
output [mask_enabl+addr_width-1:0] mask_out0;
|
output [addr_width-1:0] mask_out1;
|
output [mask_enabl+addr_width-1:0] mask_out1;
|
output [addr_width-1:0] mask_out2;
|
output [mask_enabl+addr_width-1:0] mask_out2;
|
output [addr_width-1:0] mask_out3;
|
output [mask_enabl+addr_width-1:0] mask_out3;
|
output [addr_width-1:0] mask_out4;
|
output [mask_enabl+addr_width-1:0] mask_out4;
|
output [addr_width-1:0] mask_out5;
|
output [mask_enabl+addr_width-1:0] mask_out5;
|
output [addr_width-1:0] mask_out6;
|
output [mask_enabl+addr_width-1:0] mask_out6;
|
output [addr_width-1:0] mask_out7;
|
output [mask_enabl+addr_width-1:0] mask_out7;
|
output [addr_width-1:0] mask_out8;
|
output [mask_enabl+addr_width-1:0] mask_out8;
|
output [addr_width-1:0] mask_out9;
|
output [mask_enabl+addr_width-1:0] mask_out9;
|
output [addr_width-1:0] mask_out10;
|
output [mask_enabl+addr_width-1:0] mask_out10;
|
output [addr_width-1:0] mask_out11;
|
output [mask_enabl+addr_width-1:0] mask_out11;
|
output [addr_width-1:0] mask_out12;
|
output [mask_enabl+addr_width-1:0] mask_out12;
|
output [addr_width-1:0] mask_out13;
|
output [mask_enabl+addr_width-1:0] mask_out13;
|
output [addr_width-1:0] mask_out14;
|
output [mask_enabl+addr_width-1:0] mask_out14;
|
output [addr_width-1:0] mask_out15;
|
output [mask_enabl+addr_width-1:0] mask_out15;
|
|
|
reg [addr_width-1:0] mask_out0;
|
reg [mask_enabl+addr_width-1:0] mask_out0;
|
reg [addr_width-1:0] mask_out1;
|
reg [mask_enabl+addr_width-1:0] mask_out1;
|
reg [addr_width-1:0] mask_out2;
|
reg [mask_enabl+addr_width-1:0] mask_out2;
|
reg [addr_width-1:0] mask_out3;
|
reg [mask_enabl+addr_width-1:0] mask_out3;
|
reg [addr_width-1:0] mask_out4;
|
reg [mask_enabl+addr_width-1:0] mask_out4;
|
reg [addr_width-1:0] mask_out5;
|
reg [mask_enabl+addr_width-1:0] mask_out5;
|
reg [addr_width-1:0] mask_out6;
|
reg [mask_enabl+addr_width-1:0] mask_out6;
|
reg [addr_width-1:0] mask_out7;
|
reg [mask_enabl+addr_width-1:0] mask_out7;
|
reg [addr_width-1:0] mask_out8;
|
reg [mask_enabl+addr_width-1:0] mask_out8;
|
reg [addr_width-1:0] mask_out9;
|
reg [mask_enabl+addr_width-1:0] mask_out9;
|
reg [addr_width-1:0] mask_out10;
|
reg [mask_enabl+addr_width-1:0] mask_out10;
|
reg [addr_width-1:0] mask_out11;
|
reg [mask_enabl+addr_width-1:0] mask_out11;
|
reg [addr_width-1:0] mask_out12;
|
reg [mask_enabl+addr_width-1:0] mask_out12;
|
reg [addr_width-1:0] mask_out13;
|
reg [mask_enabl+addr_width-1:0] mask_out13;
|
reg [addr_width-1:0] mask_out14;
|
reg [mask_enabl+addr_width-1:0] mask_out14;
|
reg [addr_width-1:0] mask_out15;
|
reg [mask_enabl+addr_width-1:0] mask_out15;
|
|
|
wire tdi, tck, cdr, cir, e1dr, e2dr, pdr, sdr, udr, uir;
|
wire tdi, tck, cdr, cir, e1dr, e2dr, pdr, sdr, udr, uir;
|
reg tdo;
|
reg tdo;
|
reg [mask_index+addr_width-1:0] mask_instr_reg;
|
reg [mask_index+mask_enabl+addr_width-1:0] mask_instr_reg;
|
reg bypass_reg;
|
reg bypass_reg;
|
|
|
wire [1:0] ir_in;
|
wire [1:0] ir_in;
|
wire mask_instr = ~ir_in[1] & ir_in[0]; // 1
|
wire mask_instr = ~ir_in[1] & ir_in[0]; // 1
|
|
|
wire [mask_index-1:0] mask_id = mask_instr_reg[(mask_index+addr_width-1):addr_width];
|
wire [mask_index-1 :0] mask_id = mask_instr_reg[(mask_index+mask_enabl+addr_width-1):(mask_enabl+addr_width)];
|
wire [addr_width-1:0] mask_is = mask_instr_reg[(addr_width-1):0];
|
wire [mask_enabl+addr_width-1:0] mask_is = mask_instr_reg[ (mask_enabl+addr_width-1):0];
|
|
|
always @(posedge tck)
|
always @(posedge tck)
|
begin
|
begin
|
if (mask_instr && e1dr)
|
if (mask_instr && e1dr)
|
case (mask_id)
|
case (mask_id)
|
Line 112... |
Line 112... |
/* mask_instr Instruction Handler */
|
/* mask_instr Instruction Handler */
|
always @ (posedge tck)
|
always @ (posedge tck)
|
if ( mask_instr && cdr )
|
if ( mask_instr && cdr )
|
mask_instr_reg <= mask_instr_reg;
|
mask_instr_reg <= mask_instr_reg;
|
else if ( mask_instr && sdr )
|
else if ( mask_instr && sdr )
|
mask_instr_reg <= {tdi, mask_instr_reg[mask_index+addr_width-1:1]};
|
mask_instr_reg <= {tdi, mask_instr_reg[mask_index+mask_enabl+addr_width-1:1]};
|
|
|
/* Bypass register */
|
/* Bypass register */
|
always @ (posedge tck)
|
always @ (posedge tck)
|
bypass_reg = tdi;
|
bypass_reg = tdi;
|
|
|