Digital_Design_Lab_Manual

Форк
0
29 строк · 647.0 Байт
1
module ram_reg #(
2
	parameter DATA_WIDTH = 8,
3
	parameter ADDR_WIDTH = 16
4
) (
5
	input                   clk,
6
	input                   we,
7
	input  [DATA_WIDTH-1:0] data_in,
8
	input  [ADDR_WIDTH-1:0] addr_in,
9
	output [DATA_WIDTH-1:0] data_out,
10
	output [ADDR_WIDTH-1:0] addr_out
11
);
12

13
reg [DATA_WIDTH-1:0] ram [0:2**ADDR_WIDTH-1];
14
reg [ADDR_WIDTH-1:0] addr_reg;
15
reg [DATA_WIDTH-1:0] data_in_reg;
16
reg [DATA_WIDTH-1:0] data_out_reg
17

18
always @(posedge clk) begin
19
	if (we)
20
		ram[addr_in] <= data_in_reg;
21
		data_in_reg <= data_in;
22
		data_out_reg <= ram[addr_in];
23
		addr_reg <= addr_in;
24
end
25

26
assign data_out = data_out_reg;
27
assign addr_out = addr_reg;
28

29
endmodule
30

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.