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

Subversion Repositories bustap-jtag

[/] [bustap-jtag/] [trunk/] [rtl/] [altera/] [virtual_jtag_adda_trig.v] - Blame information for rev 15

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 5 ash_riple
//**************************************************************
2
// Module             : virtual_jtag_adda_trig.v
3
// Platform           : Windows xp sp2
4
// Simulator          : Modelsim 6.5b
5
// Synthesizer        : QuartusII 10.1 sp1
6
// Place and Route    : QuartusII 10.1 sp1
7
// Targets device     : Cyclone III
8
// Author             : Bibo Yang  (ash_riple@hotmail.com)
9
// Organization       : www.opencores.org
10 15 ash_riple
// Revision           : 2.2 
11
// Date               : 2012/03/28
12 5 ash_riple
// Description        : addr/data trigger input from debug host
13
//                      via Virtual JTAG.
14
//**************************************************************
15
 
16 10 ash_riple
`include "jtag_sim_define.h"
17 5 ash_riple
`timescale 1ns/1ns
18
 
19 11 ash_riple
module virtual_jtag_adda_trig(trig_out, pnum_out);
20 2 ash_riple
 
21
parameter trig_width  = 32;
22 11 ash_riple
parameter pnum_width  = 10;
23 2 ash_riple
 
24
output [trig_width-1:0] trig_out;
25 11 ash_riple
output [pnum_width-1:0] pnum_out;
26 2 ash_riple
 
27
reg [trig_width-1:0] trig_out;
28 11 ash_riple
reg [pnum_width-1:0] pnum_out;
29 2 ash_riple
 
30
wire tdi, tck, cdr, cir, e1dr, e2dr, pdr, sdr, udr, uir;
31
reg  tdo;
32
reg  [trig_width-1:0] trig_instr_reg;
33 11 ash_riple
reg  [pnum_width-1:0] pnum_instr_reg;
34 2 ash_riple
reg  bypass_reg;
35
 
36
wire [1:0] ir_in;
37
wire trig_instr = ~ir_in[1] &  ir_in[0]; // 1
38 11 ash_riple
wire pnum_instr =  ir_in[1] & ~ir_in[0]; // 2
39 2 ash_riple
 
40
always @(posedge tck)
41
begin
42
  if (trig_instr && e1dr)
43
    trig_out <= trig_instr_reg;
44
end
45
 
46 11 ash_riple
always @(posedge tck)
47
begin
48
  if (pnum_instr && e1dr)
49
    pnum_out <= pnum_instr_reg;
50
end
51
 
52 2 ash_riple
/* trig_instr Instruction Handler */
53
always @ (posedge tck)
54
  if ( trig_instr && cdr )
55
    trig_instr_reg <= trig_instr_reg;
56
  else if ( trig_instr && sdr )
57
    trig_instr_reg <= {tdi, trig_instr_reg[trig_width-1:1]};
58
 
59 11 ash_riple
/* pnum_instr Instruction Handler */
60
always @ (posedge tck)
61
  if ( pnum_instr && cdr )
62
    pnum_instr_reg <= pnum_instr_reg;
63
  else if ( pnum_instr && sdr )
64
    pnum_instr_reg <= {tdi, pnum_instr_reg[pnum_width-1:1]};
65
 
66 2 ash_riple
/* Bypass register */
67
always @ (posedge tck)
68
  bypass_reg <= tdi;
69
 
70
/* Node TDO Output */
71 11 ash_riple
always @ ( trig_instr, trig_instr_reg, pnum_instr, pnum_instr_reg, bypass_reg )
72 2 ash_riple
begin
73 11 ash_riple
  if      (trig_instr)
74 2 ash_riple
    tdo <= trig_instr_reg[0];
75 11 ash_riple
  else if (pnum_instr)
76
    tdo <= pnum_instr_reg[0];
77 2 ash_riple
  else
78
    tdo <= bypass_reg;// Used to maintain the continuity of the scan chain.
79
end
80
 
81
sld_virtual_jtag        sld_virtual_jtag_component (
82
                                .ir_in (ir_in),
83
                                .ir_out (2'b0),
84
                                .tdo (tdo),
85
                                .tdi (tdi),
86
                                .tms (),
87
                                .tck (tck),
88
                                .virtual_state_cir (cir),
89
                                .virtual_state_pdr (pdr),
90
                                .virtual_state_uir (uir),
91
                                .virtual_state_sdr (sdr),
92
                                .virtual_state_cdr (cdr),
93
                                .virtual_state_udr (udr),
94
                                .virtual_state_e1dr (e1dr),
95
                                .virtual_state_e2dr (e2dr),
96
                                .jtag_state_rti (),
97
                                .jtag_state_e1dr (),
98
                                .jtag_state_e2dr (),
99
                                .jtag_state_pir (),
100
                                .jtag_state_tlr (),
101
                                .jtag_state_sir (),
102
                                .jtag_state_cir (),
103
                                .jtag_state_uir (),
104
                                .jtag_state_pdr (),
105
                                .jtag_state_sdrs (),
106
                                .jtag_state_sdr (),
107
                                .jtag_state_cdr (),
108
                                .jtag_state_udr (),
109
                                .jtag_state_sirs (),
110
                                .jtag_state_e1ir (),
111
                                .jtag_state_e2ir ());
112
        defparam
113
                sld_virtual_jtag_component.sld_auto_instance_index = "NO",
114
                sld_virtual_jtag_component.sld_instance_index = 2,
115
                sld_virtual_jtag_component.sld_ir_width = 2,
116 10 ash_riple
                `ifdef USE_SIM_STIMULUS
117 9 ash_riple
                sld_virtual_jtag_component.sld_sim_action       = `TRIG_SLD_SIM_ACTION,
118
                sld_virtual_jtag_component.sld_sim_n_scan       = `TRIG_SLD_SIM_N_SCAN,
119
                sld_virtual_jtag_component.sld_sim_total_length = `TRIG_SLD_SIM_T_LENG;
120 10 ash_riple
                `else
121
                sld_virtual_jtag_component.sld_sim_action       = "((1,1,1,2))",
122
                sld_virtual_jtag_component.sld_sim_n_scan       = 1,
123
                sld_virtual_jtag_component.sld_sim_total_length = 2;
124
                `endif
125 2 ash_riple
 
126
endmodule

powered by: WebSVN 2.1.0

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