OpenCores
URL https://opencores.org/ocsvn/versatile_fifo/versatile_fifo/trunk

Subversion Repositories versatile_fifo

[/] [versatile_fifo/] [trunk/] [rtl/] [verilog/] [async_fifo_dw_simplex_top.v] - Blame information for rev 30

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

Line No. Rev Author Line
1 27 unneback
module async_fifo_dw_simplex_top (
2
        // a side
3
    a_d, a_wr, a_fifo_full,
4
    a_q, a_rd, a_fifo_empty,
5
        a_clk, a_rst,
6
        // b side
7
    b_d, b_wr, b_fifo_full,
8
    b_q, b_rd, b_fifo_empty,
9
        b_clk, b_rst
10
    );
11
 
12
parameter data_width = 18;
13
parameter addr_width = 4;
14
 
15
// a side
16
input  [data_width-1:0] a_d;
17
input                   a_wr;
18
output                  a_fifo_full;
19
output [data_width-1:0] a_q;
20
input                   a_rd;
21
output                  a_fifo_empty;
22
input                   a_clk;
23
input                   a_rst;
24
 
25
// b side
26
input  [data_width-1:0] b_d;
27
input                   b_wr;
28
output                  b_fifo_full;
29
output [data_width-1:0] b_q;
30
input                   b_rd;
31
output                  b_fifo_empty;
32
input                   b_clk;
33
input                   b_rst;
34
 
35
// adr_gen
36
wire [addr_width:1] a_wadr, a_wadr_bin, a_radr, a_radr_bin;
37
wire [addr_width:1] b_wadr, b_wadr_bin, b_radr, b_radr_bin;
38
// dpram
39 28 unneback
wire [addr_width:0] a_dpram_adr, b_dpram_adr;
40 27 unneback
 
41
adr_gen
42
    # ( .length(addr_width))
43
    fifo_a_wr_adr( .cke(a_wr), .q(a_wadr), .q_bin(a_wadr_bin), .rst(a_rst), .clk(a_clk));
44
 
45
adr_gen
46
    # (.length(addr_width))
47 30 unneback
    fifo_a_rd_adr( .cke(a_rd), .q(a_radr), .q_bin(a_radr_bin), .rst(a_rst), .clk(a_clk));
48 27 unneback
 
49
adr_gen
50
    # ( .length(addr_width))
51
    fifo_b_wr_adr( .cke(b_wr), .q(b_wadr), .q_bin(b_wadr_bin), .rst(b_rst), .clk(b_clk));
52
 
53
adr_gen
54
    # (.length(addr_width))
55 30 unneback
    fifo_b_rd_adr( .cke(b_rd), .q(b_radr), .q_bin(b_radr_bin), .rst(b_rst), .clk(b_clkt));
56 27 unneback
 
57
// mux read or write adr to DPRAM
58 28 unneback
assign a_dpram_adr = (a_wr) ? {1'b0,a_wadr_bin} : {1'b1,a_radr_bin};
59
assign b_dpram_adr = (b_wr) ? {1'b1,b_wadr_bin} : {1'b0,b_radr_bin};
60 27 unneback
 
61
vfifo_dual_port_ram_dc_dw
62 28 unneback
    # (.DATA_WIDTH(data_width), .ADDR_WIDTH(addr_width+1))
63 27 unneback
    dpram ( .d_a(a_d), .q_a(a_q), .adr_a(a_dpram_adr), .we_a(a_wr), .clk_a(a_clk),
64
            .d_b(b_d), .q_b(b_q), .adr_b(b_dpram_adr), .we_b(b_wr), .clk_b(b_clk));
65
 
66
versatile_fifo_async_cmp
67
    # (.ADDR_WIDTH(addr_width))
68
    cmp1 ( .wptr(a_wadr), .rptr(b_radr), .fifo_empty(b_fifo_empty), .fifo_full(a_fifo_full), .wclk(a_clk), .rclk(b_clk), .rst(a_rst) );
69
 
70
versatile_fifo_async_cmp
71
    # (.ADDR_WIDTH(addr_width))
72
    cmp2 ( .wptr(b_wadr), .rptr(a_radr), .fifo_empty(a_fifo_empty), .fifo_full(b_fifo_full), .wclk(b_clk), .rclk(a_clk), .rst(b_rst) );
73
 
74
endmodule

powered by: WebSVN 2.1.0

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