/
la_jtag.v
72 lines (68 loc) · 2.43 KB
/
la_jtag.v
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
/*****************************************************************************
* Function: JTAG debug interface (device)
* Copyright: Lambda Project Authors. All rights Reserved.
* License: MIT (see LICENSE file in Lambda repository)
*
* Docs:
*
****************************************************************************/
module la_jtag #(
parameter TARGET = "DEFAULT", // technology target
parameter PROP = "HOST", // block selector
parameter RW = 32, // register width
parameter DW = 128, // umi packet width
parameter AW = 64, // address width
parameter CW = 32 // command width
) ( // basic control signals
input clk, // core clock
input nreset, // active low async reset
input [RW-1:0] ctrl, // free form ctrl inputs
output [RW-1:0] status, // free form status outputs
// UMI access
input udev_req_valid,
input [CW-1:0] udev_req_cmd,
input [AW-1:0] udev_req_dstaddr,
input [AW-1:0] udev_req_srcaddr,
input [DW-1:0] udev_req_data,
output udev_req_ready,
output udev_resp_valid,
output [CW-1:0] udev_resp_cmd,
output [AW-1:0] udev_resp_dstaddr,
output [AW-1:0] udev_resp_srcaddr,
output [DW-1:0] udev_resp_data,
input udev_resp_ready,
// inputs
input jtag_tck_in,
input jtag_tms_in,
input jtag_trst_in,
input jtag_tdi_in,
input jtag_tdo_in,
// outputs
output jtag_tck_out,
output jtag_tms_out,
output jtag_trst_out,
output jtag_tdi_out,
output jtag_tdo_out,
// output enable
output jtag_tck_oe,
output jtag_tms_oe,
output jtag_trst_oe,
output jtag_tdi_oe,
output jtag_tdo_oe
);
generate
if (PROP == "HOST") begin
assign jtag_tms_oe = 1'b1;
assign jtag_trst_oe = 1'b1;
assign jtag_tdi_oe = 1'b1;
assign jtag_tck_oe = 1'b1;
assign jtag_tdo_oe = 1'b0;
end else begin
assign jtag_tms_oe = 1'b0;
assign jtag_trst_oe = 1'b0;
assign jtag_tdi_oe = 1'b0;
assign jtag_tck_oe = 1'b0;
assign jtag_tdo_oe = 1'b1;
end
endgenerate
endmodule // la_jtag