# Лабораторная работа No2-4 по дисциплине "Схемотехника ЭВМ" ## Вариант 5. «Разработка контроллера FLASH памяти M25P16» ### Цель работы Изучить основные принципы разработки и подключения периферийных устройств к микропроцессорной системе на базе процессорного ядра MIPS32. ### Задание Разработать контроллер FLASH памяти M25P16, входящей в состав отладочной платы Spartan-3AN. Контроллер должен являться ведомым устройством на шине WISHBONE. Контроллер следует подключить вместо контроллера портов ввода/вывода Со стороны шины WISHBONE должны быть доступны следующие регистры: * `WADDR` -- регистр адреса для записи данных. Регистр хранит значение адреса, по которому будет записано содержимое буфера записи WRITE BUFFER . При обновлении значения регистра происходит очищение буфера записи. Разрядность р егистра - 4 байта. * `WDATA` -- регистр данных для записи. При записи значения в данный регистр они попадают в буфер записи. Разрядность регистра - 4 байта. * `WLEN` -- регистр данных, хранящий количество данных, которые будут перемещены в память из буфера записи. О бновление регистра интерпретируется контроллером как команда начала записи данных в память. Разрядность регистра - 4 байта. * `RADDR` -- регистр адреса для чтения данных. Регистр хранит значение адреса, по которому будет производится считывание данных из памяти в буфер чтения READ BUFFER . При обновлении регистра происходит очищение буфера чтения . Разрядность регистра 4 байта. * `RDATA` -- регистр данных для чтения. Предоставляет доступ к содержимому буфера чтения. При чтении данных из регистра происходит чтение данных и вершины очереди буфера чтения. Разрядность регистра 4 байта. * `RLEN` -- регистр данных, хранящий количество байтов, которые необходимо считать из памяти с адреса RADDR . Обновление регистра интерпретируется как команда на чтения данных из памяти в бу фер READ BUFFER . Разрядность регистра 4 байта. * `SEC_ADDR_ERASE` -- регистр данных, используемый для осуществления операции стирания сектора. В регистр записывается адрес сектора. Обновление регистра интерпретируется как команда стирания сектора. Разрядность регистра 4 байта. * `BULK_ERASE` -- регистр данных, который используется для осуществления полного стирания FLASH памяти. Запись любого значения в данный регистр интерпретируется как команда стирания памяти. Разрядность регистра 1 байт. * `STATUS` -- регистр статуса. При записи данных в регистр производится запись данных в регистр статуса FLASH памяти. При чтении данных производится чтение данных из регистра статуса FLASH памяти. Разрядность регистра 1 байт. Контроллер имеет два блока памяти: буфер чтения и записи. Размер буферов 256 байт 1 страница. Буферная память реализуется как очередь. Буфер записи очищается при записи регистра адреса WADDR. Буфер чтения очищается при записи регистра адреса RADDR.