blob: cd9993936fe183607b53de051da9367516f61c77 (
plain)
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
|
// Workaround BRAM implementation for fifo buffer
// 2020 <hackfin@section5.ch>
module bram_2psync #(
parameter DATA = 8,
parameter ADDR = 6
) (
// Port A
input wire clk,
input wire a_we,
input wire [ADDR-1:0] a_addr,
input wire [DATA-1:0] a_write,
output reg [DATA-1:0] a_read,
// Port B
input wire b_we,
input wire [ADDR-1:0] b_addr,
input wire [DATA-1:0] b_write,
output reg [DATA-1:0] b_read
);
// Shared memory
reg [DATA-1:0] mem [(2**ADDR)-1:0];
reg [ADDR-1:0] addr_b;
reg [ADDR-1:0] addr_a;
assign a_read = mem[addr_a];
// assign b_read = mem[addr_b];
always @(posedge clk) begin: DUAL_RAW_PORT_A_PROC
addr_a <= a_addr;
end
always @(posedge clk) begin: DUAL_RAW_PORT_B_PROC
addr_b <= b_addr;
if (b_we) begin
mem[b_addr] <= b_write;
end
end
endmodule
|