Часть I
Часть II
Часть III
Это полная версия предыдущей статьи.
Спроектируем Little Man Computer на языке Verilog.
Статья про LMC была на Хабре.
Online симулятор этого компьютера здесь.
Напишем модуль оперативной памяти (ОЗУ), состоящий из четырех (ADDR_WIDTH=2) четырёхбитных (DATA_WIDTH=4) слов. Данные загружаются в ОЗУ из data_in по адресу adr при поступлении тактового сигнала clk.
module R0 #(parameter ADDR_WIDTH = 2, DATA_WIDTH = 4)
(
input clk, //тактовый сигнал
input [ADDR_WIDTH-1:0] adr, //адрес
input [DATA_WIDTH-1:0] data_in, //порт ввода данных
output [DATA_WIDTH-1:0] RAM_out //порт вывода данных
);
reg [DATA_WIDTH-1:0] mem [2**ADDR_WIDTH-1:0]; //объявляем массив mem
always @(posedge clk) //при поступлении тактового сигнала clk
mem [adr] <= data_in; //загружаем данные в ОЗУ из data_in
assign RAM_out = mem[adr]; //назначаем RAM_out портом вывода данных
endmodule
Читать полностью »