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

Subversion Repositories bustap-jtag

[/] [bustap-jtag/] [trunk/] [rtl/] [up_monitor_wrapper.v] - Blame information for rev 6

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

Line No. Rev Author Line
1 5 ash_riple
//**************************************************************
2
// Module             : up_monitor_wrapper.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 6 ash_riple
// Revision           : 2.1 
11
// Date               : 2012/03/15
12 5 ash_riple
// Description        : Common CPU interface to pipelined access
13
//                      interface converter.
14 6 ash_riple
//                      @Note: Implementation dependent.
15 5 ash_riple
//**************************************************************
16
 
17
`timescale 1ns/1ns
18
 
19
module up_monitor_wrapper (up_clk,up_wbe,up_csn,up_addr,up_data_io);
20
 
21
// common CPU bus interface
22
input        up_clk;
23 6 ash_riple
input        up_wbe,up_csn;  // negative logic
24 5 ash_riple
input [15:2] up_addr;
25
input [31:0] up_data_io;
26
 
27 6 ash_riple
// filter out glitches on the line with extra 4 clocks
28
reg up_wbe_d1, up_wbe_d2, up_wbe_d3, up_wbe_d4;
29
reg up_csn_d1, up_csn_d2, up_csn_d3, up_csn_d4;
30 5 ash_riple
always @(posedge up_clk) begin
31 6 ash_riple
        up_wbe_d1 <= up_wbe;
32
        up_wbe_d2 <= up_wbe_d1;
33
        up_wbe_d3 <= up_wbe_d2;
34
        up_wbe_d4 <= up_wbe_d3;
35
        up_csn_d1 <= up_csn;
36
        up_csn_d2 <= up_csn_d1;
37
        up_csn_d3 <= up_csn_d2;
38
        up_csn_d4 <= up_csn_d3;
39 5 ash_riple
end
40 6 ash_riple
reg wr_en_filtered, wr_en_filtered_d1;
41 5 ash_riple
always @(posedge up_clk) begin
42 6 ash_riple
        // negative logic changed to positive logic, with filter
43
        wr_en_filtered    <= (!up_wbe_d2 & !up_wbe_d3 & !up_wbe_d4) & (!up_csn_d2 & !up_csn_d3 & !up_csn_d4);
44
        wr_en_filtered_d1 <= wr_en_filtered;
45 5 ash_riple
end
46 6 ash_riple
reg rd_en_filtered, rd_en_filtered_d1;
47
always @(posedge up_clk) begin
48
        // negative logic changed to positive logic, with filter
49
        rd_en_filtered    <= (up_wbe_d2 & up_wbe_d3 & up_wbe_d4) & (!up_csn_d2 & !up_csn_d3 & !up_csn_d4);
50
        rd_en_filtered_d1 <= rd_en_filtered;
51
end
52 5 ash_riple
 
53 6 ash_riple
// latch the data at rising edge of up_csn(negative logic)
54
reg [15:2] up_addr_latch;
55
reg [31:0] up_data_latch;
56
always @(posedge up_csn) begin
57
        up_addr_latch <= up_addr;
58
        up_data_latch <= up_data_io;
59
end
60
 
61 5 ash_riple
// map to pipelined access interface
62
wire        clk     = up_clk;
63 6 ash_riple
wire        wr_en   = !wr_en_filtered & wr_en_filtered_d1;  // falling edge of write_enable(positive logic)
64
wire        rd_en   = !rd_en_filtered & rd_en_filtered_d1;  // falling edge of read_enable(positive logic)
65
wire [15:2] addr_in = up_addr_latch;
66
wire [31:0] data_in = up_data_latch;
67 5 ash_riple
 
68
up_monitor inst (
69
        .clk(clk),
70
        .wr_en(wr_en),
71
        .rd_en(rd_en),
72
        .addr_in(addr_in),
73
        .data_in(data_in)
74
);
75
 
76
endmodule

powered by: WebSVN 2.1.0

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