Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Разработка микро-ЭВМ на ПЛИС_10ВС.docx
Скачиваний:
6
Добавлен:
01.07.2025
Размер:
744 Кб
Скачать
☆
  1. Разработка основных устройств микро-эвм

    1. Запоминающие устройства. Функциональный состав и временные диаграммы.

В курсовом проекте должны быть реализованы запоминающие устройства двух типов:

  • постоянное запоминающее устройства (ПЗУ);

  • оперативное запоминающее устройство (ОЗУ).

По условию курсового проекта разрядность шины адреса составляет 10 бит, а разрядность шины данных составляет 10 бит.

Исходя из разрядности шины адреса, определим максимально возможный адрес, он равен 210, т.е. 1024. При этом по каждому адресу может храниться слово, размером 10 бит. Таким образом, ёмкость памяти будет равна M=k*m, где M=10240 – информационная емкость в битах; k=1024 – число хранимых слов; m=10 – разрядность хранимых слов.

      1. Постоянное запоминающее устройство (пзу)

Рассмотрим работу ПЗУ и временные диаграммы его работы. Условно-графическое обозначение ПЗУ приведено на рисунке 2.1.

Рисунок 2.1 – Условно-графическое обозначение ПЗУ.

Файл прошивки ПЗУ rom.mif приведен в листинге 2.1.

Листинг 2.1 Файл прошивки ПЗУ

WIDTH=10;

DEPTH=1024;

ADDRESS_RADIX=UNS;

DATA_RADIX=UNS;

CONTENT BEGIN

0 : 16;

1 : 32;

2 : 48;

3 : 64;

4 : 80;

5 : 96;

6 : 112;

[7..1023] : 0;

END;

Листинг VHD файла для ПЗУ приведен в листинге 2.2.

Листинг 2.2 VHD файл ПЗУ

LIBRARY ieee;

USE ieee.std_logic_1164.all;

LIBRARY lpm;

USE lpm.all;

ENTITY lpm_rom0 IS

PORT

(

address : IN STD_LOGIC_VECTOR (9 DOWNTO 0);

outclock : IN STD_LOGIC ;

q : OUT STD_LOGIC_VECTOR (9 DOWNTO 0)

);

END lpm_rom0;

ARCHITECTURE SYN OF lpm_rom0 IS

SIGNAL sub_wire0 : STD_LOGIC_VECTOR (9 DOWNTO 0);

COMPONENT lpm_rom

GENERIC (

intended_device_family : STRING;

lpm_address_control : STRING;

lpm_file : STRING;

lpm_outdata : STRING;

lpm_type : STRING;

lpm_width : NATURAL;

lpm_widthad : NATURAL

);

PORT (

outclock : IN STD_LOGIC ;

address : IN STD_LOGIC_VECTOR (9 DOWNTO 0);

q : OUT STD_LOGIC_VECTOR (9 DOWNTO 0)

);

END COMPONENT;

BEGIN

q <= sub_wire0(9 DOWNTO 0);

lpm_rom_component : lpm_rom

GENERIC MAP (

intended_device_family => "FLEX10K",

lpm_address_control => "UNREGISTERED",

lpm_file => "rom.mif",

lpm_outdata => "REGISTERED",

lpm_type => "LPM_ROM",

lpm_width => 10,

lpm_widthad => 10

)

PORT MAP (

outclock => outclock,

address => address,

q => sub_wire0

);

END SYN;

Временная диаграмма работы ПЗУ изображена на рисунке 2.2.

Рисунок 2.2 – Временная диаграмма работы ПЗУ.

По временной диаграмме работы ПЗУ видно, что если на адресный вход address[9..0] подавать какой-либо адрес, то на выходе q[9..0] будут появляться данные, расположенные по этому адресу (при наличии на входе синхросигнала clk).

На рисунке 2.3 изображена функциональная схема ПЗУ.

Рисунок 2.3 – Функциональная схема ПЗУ.

      1. Оперативное запоминающее устройство (озу)

Рассмотрим работу ОЗУ и временные диаграммы его работы. Условно-графическое обозначение ОЗУ приведено на рисунке 2.4, а временная диаграмма работы – на рисунке 2.5.

Рисунок 2.4 – Условно-графическое обозначение ОЗУ.

Листинг VHD файла для ОЗУ приведен в листинге 2.3.

Листинг 2.3 VHD файл ОЗУ

LIBRARY ieee;

USE ieee.std_logic_1164.all;

LIBRARY lpm;

USE lpm.all;

ENTITY lpm_ram_dq0 IS

PORT

(

address : IN STD_LOGIC_VECTOR (9 DOWNTO 0);

data : IN STD_LOGIC_VECTOR (9 DOWNTO 0);

inclock : IN STD_LOGIC ;

we : IN STD_LOGIC := '1';

q : OUT STD_LOGIC_VECTOR (9 DOWNTO 0)

);

END lpm_ram_dq0;

ARCHITECTURE SYN OF lpm_ram_dq0 IS

SIGNAL sub_wire0 : STD_LOGIC_VECTOR (9 DOWNTO 0);

COMPONENT lpm_ram_dq

GENERIC (

intended_device_family : STRING;

lpm_address_control : STRING;

lpm_indata : STRING;

lpm_outdata : STRING;

lpm_type : STRING;

lpm_width : NATURAL;

lpm_widthad : NATURAL

);

PORT (

address : IN STD_LOGIC_VECTOR (9 DOWNTO 0);

inclock : IN STD_LOGIC ;

q : OUT STD_LOGIC_VECTOR (9 DOWNTO 0);

data : IN STD_LOGIC_VECTOR (9 DOWNTO 0);

we : IN STD_LOGIC

);

END COMPONENT;

BEGIN

q <= sub_wire0(9 DOWNTO 0);

lpm_ram_dq_component : lpm_ram_dq

GENERIC MAP (

intended_device_family => "FLEX10K",

lpm_address_control => "REGISTERED",

lpm_indata => "REGISTERED",

lpm_outdata => "UNREGISTERED",

lpm_type => "LPM_RAM_DQ",

lpm_width => 10,

lpm_widthad => 10

)

PORT MAP (

address => address,

inclock => inclock,

data => data,

we => we,

q => sub_wire0

);

END SYN;

Рисунок 2.5 – Временная диаграмма работы ОЗУ.

Из ОЗУ можно считывать данные и записывать их туда. Выбор операции чтения или записи осуществляется входным сигналом we – если он равен «0», то происходит чтение из ОЗУ, если равен «1», то запись в ОЗУ. Если микросхема находится в режиме чтения, то на выходной шине q[9..0] появляются значения, считанные по адресу, поданному на входную шину address[9..0]. Если микросхема находится в режиме записи, то в память по адресу, установленному на входной шине address[9..0], производится запись данных, которые установлены на входной шине data[9..0].

На рисунке 2.6 изображена функциональная схема ПЗУ.

Рисунок 2.6 – Функциональная схема ПЗУ.

      1. Схема совместной работы ОЗУ и ПЗУ

Рассмотрим совместную работу ОЗУ и ПЗУ, а так же временные диаграммы его работы. Условно-графическое обозначение схемы совместной работы ОЗУ и ПЗУ приведено на рисунке 2.5, а временная диаграмма работы – на рисунке 2.6.

Рисунок 2.5 – Условно-графическое обозначение совместной работы ОЗУ и ПЗУ.

Рисунок 2.6 – Временная диаграмма совместной работы ОЗУ и ПЗУ.

Из ПЗУ можно считывать данные и заносить их в ОЗУ если сигнал we равен «1». Если микросхема находится в режиме чтения, то на выходной шине q[9..0] появляются значения, считанные по адресу, поданному на входную шину address[9..0]. Сигнал inclk отвечает за чтение или запись данных в ОЗУ в определенный момент времени. Если микросхема находится в режиме записи, то в память по адресу, установленному на входной шине address[9..0], производится запись данных, которые установлены на входной шине data[9..0].