OpenCores
URL https://opencores.org/ocsvn/bustap-jtag/bustap-jtag/trunk

Subversion Repositories bustap-jtag

[/] [bustap-jtag/] [trunk/] [rtl/] [altera/] [virtual_jtag_addr_mask.v] - Blame information for rev 2

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 ash_riple
module virtual_jtag_addr_mask(mask_out0,mask_out1,mask_out2,mask_out3,
2
                                                          mask_out4,mask_out5,mask_out6,mask_out7,
3
                                                          mask_out8,mask_out9,mask_out10,mask_out11,
4
                                                          mask_out12,mask_out13,mask_out14,mask_out15
5
                                                          );
6
 
7
parameter addr_width  = 32,
8
          mask_index  = 4, //2**mask_index=mask_num
9
          mask_num    = 16;
10
 
11
output [addr_width-1:0] mask_out0;
12
output [addr_width-1:0] mask_out1;
13
output [addr_width-1:0] mask_out2;
14
output [addr_width-1:0] mask_out3;
15
output [addr_width-1:0] mask_out4;
16
output [addr_width-1:0] mask_out5;
17
output [addr_width-1:0] mask_out6;
18
output [addr_width-1:0] mask_out7;
19
output [addr_width-1:0] mask_out8;
20
output [addr_width-1:0] mask_out9;
21
output [addr_width-1:0] mask_out10;
22
output [addr_width-1:0] mask_out11;
23
output [addr_width-1:0] mask_out12;
24
output [addr_width-1:0] mask_out13;
25
output [addr_width-1:0] mask_out14;
26
output [addr_width-1:0] mask_out15;
27
 
28
reg [addr_width-1:0] mask_out0;
29
reg [addr_width-1:0] mask_out1;
30
reg [addr_width-1:0] mask_out2;
31
reg [addr_width-1:0] mask_out3;
32
reg [addr_width-1:0] mask_out4;
33
reg [addr_width-1:0] mask_out5;
34
reg [addr_width-1:0] mask_out6;
35
reg [addr_width-1:0] mask_out7;
36
reg [addr_width-1:0] mask_out8;
37
reg [addr_width-1:0] mask_out9;
38
reg [addr_width-1:0] mask_out10;
39
reg [addr_width-1:0] mask_out11;
40
reg [addr_width-1:0] mask_out12;
41
reg [addr_width-1:0] mask_out13;
42
reg [addr_width-1:0] mask_out14;
43
reg [addr_width-1:0] mask_out15;
44
 
45
wire tdi, tck, cdr, cir, e1dr, e2dr, pdr, sdr, udr, uir;
46
reg  tdo;
47
reg  [mask_index+addr_width-1:0] mask_instr_reg;
48
reg  bypass_reg;
49
 
50
wire [1:0] ir_in;
51
wire mask_instr = ~ir_in[1] &  ir_in[0]; // 1
52
 
53
wire [mask_index-1:0] mask_id = mask_instr_reg[(mask_index+addr_width-1):addr_width];
54
wire [addr_width-1:0] mask_is = mask_instr_reg[(addr_width-1):0];
55
 
56
always @(posedge tck)
57
begin
58
  if (mask_instr && e1dr)
59
        case (mask_id)
60
                4'd0 :
61
                        mask_out0 <= mask_is;
62
                4'd1 :
63
                        mask_out1 <= mask_is;
64
                4'd2 :
65
                        mask_out2 <= mask_is;
66
                4'd3 :
67
                        mask_out3 <= mask_is;
68
                4'd4 :
69
                        mask_out4 <= mask_is;
70
                4'd5 :
71
                        mask_out5 <= mask_is;
72
                4'd6 :
73
                        mask_out6 <= mask_is;
74
                4'd7 :
75
                        mask_out7 <= mask_is;
76
                4'd8 :
77
                        mask_out8 <= mask_is;
78
                4'd9 :
79
                        mask_out9 <= mask_is;
80
                4'd10 :
81
                        mask_out10 <= mask_is;
82
                4'd11 :
83
                        mask_out11 <= mask_is;
84
                4'd12 :
85
                        mask_out12 <= mask_is;
86
                4'd13 :
87
                        mask_out13 <= mask_is;
88
                4'd14 :
89
                        mask_out14 <= mask_is;
90
                4'd15 :
91
                        mask_out15 <= mask_is;
92
        endcase
93
end
94
 
95
/* mask_instr Instruction Handler */
96
always @ (posedge tck)
97
  if ( mask_instr && cdr )
98
    mask_instr_reg <= mask_instr_reg;
99
  else if ( mask_instr && sdr )
100
    mask_instr_reg <= {tdi, mask_instr_reg[mask_index+addr_width-1:1]};
101
 
102
/* Bypass register */
103
always @ (posedge tck)
104
  bypass_reg = tdi;
105
 
106
/* Node TDO Output */
107
always @ ( mask_instr, mask_instr_reg, bypass_reg )
108
begin
109
  if (mask_instr)
110
    tdo <= mask_instr_reg[0];
111
  else
112
    tdo <= bypass_reg;// Used to maintain the continuity of the scan chain.
113
end
114
 
115
sld_virtual_jtag        sld_virtual_jtag_component (
116
                                .ir_in (ir_in),
117
                                .ir_out (2'b0),
118
                                .tdo (tdo),
119
                                .tdi (tdi),
120
                                .tms (),
121
                                .tck (tck),
122
                                .virtual_state_cir (cir),
123
                                .virtual_state_pdr (pdr),
124
                                .virtual_state_uir (uir),
125
                                .virtual_state_sdr (sdr),
126
                                .virtual_state_cdr (cdr),
127
                                .virtual_state_udr (udr),
128
                                .virtual_state_e1dr (e1dr),
129
                                .virtual_state_e2dr (e2dr),
130
                                .jtag_state_rti (),
131
                                .jtag_state_e1dr (),
132
                                .jtag_state_e2dr (),
133
                                .jtag_state_pir (),
134
                                .jtag_state_tlr (),
135
                                .jtag_state_sir (),
136
                                .jtag_state_cir (),
137
                                .jtag_state_uir (),
138
                                .jtag_state_pdr (),
139
                                .jtag_state_sdrs (),
140
                                .jtag_state_sdr (),
141
                                .jtag_state_cdr (),
142
                                .jtag_state_udr (),
143
                                .jtag_state_sirs (),
144
                                .jtag_state_e1ir (),
145
                                .jtag_state_e2ir ());
146
        defparam
147
                sld_virtual_jtag_component.sld_auto_instance_index = "NO",
148
                sld_virtual_jtag_component.sld_instance_index = 1,
149
                sld_virtual_jtag_component.sld_ir_width = 2,
150
                sld_virtual_jtag_component.sld_sim_action = "((1,1,1,2))",
151
                sld_virtual_jtag_component.sld_sim_n_scan = 1,
152
                sld_virtual_jtag_component.sld_sim_total_length = 2;
153
 
154
endmodule

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.