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

Subversion Repositories bustap-jtag

[/] [bustap-jtag/] [trunk/] [rtl/] [altera/] [qsys/] [bustap_jtag.v] - Blame information for rev 24

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 24 ash_riple
 
2
module bustap_jtag(
3
        gls_clk,
4
        gls_reset,
5
// slave interface signals
6
        avs_s1_chipselect,
7
        avs_s1_address,
8
        avs_s1_read,
9
        avs_s1_readdata,
10
        avs_s1_write,
11
        avs_s1_writedata,
12
        avs_s1_byteenable,
13
        avs_s1_waitrequest,
14
// master interface signals
15
        avm_m1_waitrequest,
16
        avm_m1_address,
17
        avm_m1_read,
18
        avm_m1_readdata,
19
        avm_m1_write,
20
        avm_m1_writedata,
21
        avm_m1_byteenable);
22
 
23
parameter addr_width = 32;
24
 
25
input  gls_clk,gls_reset;
26
// slave interface signals
27
input  avs_s1_chipselect;
28
output avs_s1_waitrequest;
29
input  [addr_width-1:0]avs_s1_address;
30
input  avs_s1_read,avs_s1_write;
31
output [31:0]avs_s1_readdata;
32
input  [31:0]avs_s1_writedata;
33
input  [3:0]avs_s1_byteenable;
34
// master interface signals
35
input  avm_m1_waitrequest;
36
output [addr_width-1:0]avm_m1_address;
37
output avm_m1_read,avm_m1_write;
38
input  [31:0]avm_m1_readdata;
39
output [31:0]avm_m1_writedata;
40
output [3:0]avm_m1_byteenable;
41
 
42
// bypass avalon bus signals
43
assign avs_s1_waitrequest = avm_m1_waitrequest;
44
assign avm_m1_address = avs_s1_address;
45
assign avm_m1_read  = avs_s1_read  && avs_s1_chipselect;
46
assign avm_m1_write = avs_s1_write && avs_s1_chipselect;
47
assign avs_s1_readdata = avm_m1_readdata;
48
assign avm_m1_writedata = avs_s1_writedata;
49
assign avm_m1_byteenable = avs_s1_byteenable;
50
 
51
// capture avalon bus signals
52
reg wr_en_latch, rd_en_latch;
53
reg [31:0] addr_latch;
54
reg [31:0] data_latch;
55
 
56
always @(posedge gls_clk) begin
57
    wr_en_latch <= avs_s1_chipselect && avs_s1_write && !avs_s1_waitrequest;
58
end
59
 
60
always @(posedge gls_clk) begin
61
    rd_en_latch <= avs_s1_chipselect && avs_s1_read && !avs_s1_waitrequest;
62
end
63
 
64
always @(posedge gls_clk) begin
65
    if (avs_s1_chipselect && (avs_s1_read || avs_s1_write) && !avs_s1_waitrequest)
66
        addr_latch <= {{(32-addr_width){1'b0}}, avs_s1_address};
67
end
68
 
69
always @(posedge gls_clk) begin
70
    if (avs_s1_chipselect && avs_s1_read  && !avs_s1_waitrequest)
71
        data_latch <= avs_s1_readdata;
72
    if (avs_s1_chipselect && avs_s1_write && !avs_s1_waitrequest)
73
        data_latch <= avs_s1_writedata;
74
end
75
 
76
// map to avalon access interface
77
wire        clk     = gls_clk;
78
wire        wr_en   = wr_en_latch;
79
wire        rd_en   = rd_en_latch;
80
wire [31:0] addr_in = addr_latch;
81
wire [31:0] data_in = data_latch;
82
 
83
up_monitor inst (
84
        .clk(clk),
85
        .wr_en(wr_en),
86
        .rd_en(rd_en),
87
        .addr_in(addr_in),
88
        .data_in(data_in)
89
);
90
 
91
endmodule

powered by: WebSVN 2.1.0

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