Na początku przygotujemy jedne z głównych bloków nowego projektu, czyli dwuportową pamięć RAM. Tego typu blok nosi po angielsku nazwę simple dual-port. Oznacza to, że możliwy jest równoczesny zapis i odczyt. Nie można jednak wykonać dwóch zapisów albo dwóch odczytów. Pamięć o takich możliwościach nazywa się true dual-port. Moduły pamięci M9K, w które wyposażony jest nasz układ FPGA są właśnie tego drugiego typu, jednak nam obecnie nie jest potrzebna jego pełna funkcjonalność.
10 module ram #(
11 parameter N = 32,
12 parameter LOG_N = $clog2(N),
13 parameter K = 9
14 ) (
15 input wire clk,
16 input wire wr,
17 input wire [LOG_N-1:0]addr_wr,
18 input wire [K-1:0]data_wr,
19 input wire [LOG_N-1:0]addr_rd,
20 output logic [K-1:0]data_rd
21 );
22 logic wr_r;
23 logic [LOG_N-1:0]addr_wr_r;
24 logic [K-1:0]data_wr_r;
25 logic [LOG_N-1:0]addr_rd_r;
26 logic [K-1:0]data[N-1:0];
27
28