Партнерка на США и Канаду по недвижимости, выплаты в крипто

  • 30% recurring commission
  • Выплаты в USDT
  • Вывод каждую неделю
  • Комиссия до 5 лет за каждого referral

Таблица 1.6 – Назначение входов и выходов УУ

Сигнал

Тип

Назначение

1

2

RESET

Входной

Сигнал сброса микро-ЭВМ

CLK

Входной

Синхросигнал

IRQ_IN

Входной

Вход, информирующий о возникновении прерывания

IRQ_ADDR[9..0]

Входной

Адрес обработчика прерывания

DMA_ACK

Входной

Вход, информирующий о требовании передать управление КПДП

DMA_END_OF_CYCLE

Входной

Вход, информирующий о завершении цикла КПДП

ADDR[9..0]

Входной

Адресные выходы

CMD_DATA[7..0]

Входной

Входы шины команд

DATA[7..0]

Входной

Входы шины данных

ROM_OE

Входной

Сигнал о разрешении чтения из ПЗУ

CMD_RAM_CS

Входной

Сигнал о разрешении работы ОЗУ команд

CMD_RAM _WE

Входной

Сигнал о разрешении записи в ОЗУ команд

CMD_RAM _OE

Входной

Сигнал о разрешении чтения из ОЗУ команд

DATA_RAM_CS

Входной

Сигнал о разрешении работы ОЗУ данных

DATA _RAM _WE

Входной

Сигнал о разрешении записи в ОЗУ данных

DATA _RAM _OE

Входной

Сигнал о разрешении чтения из ОЗУ данных

REGS_CS

Входной

Сигнал о разрешении работы блока регистров

Продолжение таблицы 1.6.

1

2

3

REGS _WE

Входной

Сигнал о разрешении записи в регистры

REGS _OE

Входной

Сигнал о разрешении чтения из регистров

REGS _ADDR[9..0]

Входной

Адрес данных регистра

ALD_CS

Входной

Сигнал о разрешении работы блока АЛУ

ALD_CMP

Входной

Сигнал выбора операции сравнения блока АЛУ

ALD_AND

Входной

Сигнал выбора операции И блока АЛУ

ALD_A[9..0]

Входной

Первый операнд для АЛУ

ALD_B[9..0]

Входной

Второй операнд для АЛУ

IRQ_CLI

Входной

Сигнал о запрете прерываний

IRQ_STI

Входной

Сигнал о разрешении прерываний

IRQ_NUM[4..0]

Входной

Номер разрешаемого/запрещаемого прерывания

DMA_READY

Входной

Освобождение шин устройством управления

2 РАЗРАБОТКА ОСНОВНЫХ УСТРОЙСТ МИКРОЭВМ

НЕ нашли? Не то? Что вы ищете?

2.1 Функциональный состав и работы ПЗУ

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

1. постоянное запоминающее устройства, где храниться программа.

2. оперативное запоминающее устройство.

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

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

По условию задания, ПЗУ в проекте работает в асинхронном режиме. Временная диаграмма устройства может быть представлена только циклом чтения, так как этот тип памяти является энергонезависимым и служит для постоянного хранения программы (команд и микроопераций), поэтому данные в ПЗУ записываются обычно один раз.

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

ПЗУ память проверена путём чтения данных из MIF-файла по соответствующим адресам.

Листинг 2.1 реализация MIF-файла.

WIDTH=8;

DEPTH=1024;

ADDRESS_RADIX=UNS;

DATA_RADIX=UNS;

CONTENT BEGIN

0 : 1;

1 : 3;

2 : 5;

3 : 7;

4 : 9;

5 : 7;

6 : 5;

7 : 3;

[8..1023] : 0;

END;

2.1.2 Функциональный состав и временные диаграммы работы ОЗУ

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

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

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

Для проверки были поданы из порта DAT произвольные данные и записаны в ОЗУ, а после считаны.

Листинг 2.2 реализация VHDL-кода ОЗУ.

USE ieee. std_logic_1164.all;

LIBRARY altera_mf;

USE altera_mf. all;

ENTITY lpm_rom0 IS

PORT

(

address : IN STD_LOGIC_VECTOR (9 DOWNTO 0);

clock : IN STD_LOGIC := '1';

q : OUT STD_LOGIC_VECTOR (7 DOWNTO 0)

);

END lpm_rom0;

ARCHITECTURE SYN OF lpm_rom0 IS

SIGNAL sub_wire0 : STD_LOGIC_VECTOR (7 DOWNTO 0);

COMPONENT altsyncram

GENERIC (

clock_enable_input_a : STRING;

clock_enable_output_a : STRING;

init_file : STRING;

intended_device_family : STRING;

lpm_hint : STRING;

lpm_type : STRING;

numwords_a : NATURAL;

operation_mode : STRING;

outdata_aclr_a : STRING;

outdata_reg_a : STRING;

widthad_a : NATURAL;

width_a : NATURAL;

width_byteena_a : NATURAL

);

PORT (

clock0 : IN STD_LOGIC ;

address_a : IN STD_LOGIC_VECTOR (9 DOWNTO 0);

q_a : OUT STD_LOGIC_VECTOR (7 DOWNTO 0)

);

END COMPONENT;

BEGIN

q <= sub_wire0(7 DOWNTO 0);

altsyncram_component : altsyncram

GENERIC MAP (

clock_enable_input_a => "BYPASS",

clock_enable_output_a => "BYPASS",

init_file => "rom. mif",

intended_device_family => "Stratix II",

lpm_hint => "ENABLE_RUNTIME_MOD=NO",

lpm_type => "altsyncram",

numwords_a => 1024,

operation_mode => "ROM",

outdata_aclr_a => "NONE",

outdata_reg_a => "CLOCK0",

widthad_a => 10,

width_a => 8,

width_byteena_a => 1

)

PORT MAP (

clock0 => clock,

address_a => address,

q_a => sub_wire0

);

END SYN;

2.1.3 Совмещенная схема работы ОЗУ и ПЗУ.

Рисунок 2.5 – Совмещенная схема ОЗУ и ПЗУ.

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

Для проверки совмещённой памяти ОЗУ записала данные из ПЗУ памяти и затем считаны из неё, по тем же адресам.

Рисунок 2.7 – УГО блока памяти.

Данное устройство представляет собой автомат с конечным числом состояний, меняющий значение на выходах в зависимости от состояния в котором он находится. Выходы устройства управления подключаются к входам всех остальных устройств микроЭВМ посредством шины управления.

УУ является центральны блоком во всей системе микроЭВМ, на нем сходятся все логические связи. Именно блок устройства управления осуществляет управление всеми составляющими микроЭВМ. Правильная работа устройства управления определяет, насколько правильно будет работать вся схема в целом.

Устройства управления делятся на:

- УУ с жесткой, или схемной логикой;

- УУ с программируемой логикой (микропрограммные УУ).

В устройствах управления первого типа для каждой команды, задаваемой кодом операции, строится набор комбинационных схем, которые в нужных тактах вырабатывают необходимые управляющие сигналы.

В микропрограммном УУ каждой команде ставится в соответствие совокупность хранимых в специальной памяти слов – микрокоманд. Каждая из микрокоманд содержит информацию о микрооперациях, подлежащих выполнению в данном такте, и указание, какое слово должно быть выбрано из памяти в следующем такте.

Функциональная схема устройства управления приведена на рисунке 2.8.

Рисунок 2.8 – Функциональная схема устройства управления.

.

АЛУ – блок микроЭВМ, предназначенный для выполнения арифметических и логических операций. Условное графическое обозначение АЛУ представлено на рисунке 2.3.1.

Блок АЛУ функционально состоит из двух частей: компаратора и блока побитовое реализующего логическое умножение. АЛУ реализовано на языке VHDL и представлено в листинге 2.9.

Рисунок 2.9 – Условно-графическое обозначение АЛУ.

На рисунке 2.10 изображены временные диаграммы работы АЛУ.

Рисунок 2.10 – Временная диаграмма работы АЛУ.

Значения операндов необходимых для обработки подаются на входы А и В. При высоком уровне сигнала CS в зависимости от выбора операции сравнения или логического умножения, входы AND_SEL и CMP_SEL соответственно, выполняется операция. В случае операции сравнения высокий уровень сигал возвращается на выход EQUAL – в случае равенства операндов, SMALLER - в случае если первый операнд меньше второго, BIGGER - в случае если первый операнд больше второго. В случае операции побитого умножения результат возвращается на выход RESULT.

Листинг 2.3 Реализации АЛУ:

library ieee;

use ieee. std_logic_1164.all;

use ieee. std_logic_unsigned. all;

use ieee. numeric_std. all;

entity ald is

GENERIC

(

DATA_WIDTH : integer :=10

);

port

(

A, B : in std_logic_vector(9 downto 0);

CMP_SEL, AND_SEL: in std_logic;

CS : in std_logic;

CLK : in std_logic;

RESULT : out std_logic_vector(9 downto 0) := (others => 'Z');

BIGGER, SMALLER, EQUAL: out std_logic

);

end entity ald;

architecture rtl of ald is

shared variable temp: std_logic_vector(9 downto 0);

begin

process(clk)

begin

if (rising_edge(clk)) then

if (cs = '1') then

if (cmp_sel='1') then

if (conv_integer(A) > conv_integer(B)) then

BIGGER <= '1';

SMALLER <= '0';

EQUAL <= '0';

temp := (others => 'Z');

elsif (conv_integer(A) < conv_integer(B)) then

BIGGER <= '0';

SMALLER <= '1';

EQUAL <= '0';

temp := (others => 'Z');

else BIGGER <= '0';

SMALLER <= '0';

EQUAL <= '1';

temp := (others => 'Z');

end if;

elsif (and_sel='1') then

temp := std_logic_vector(to_unsigned(conv_integer(A and B),temp'length));

else

temp := (others => 'Z');

end if;

result <= temp(9 downto 0);

else

result <= (others => 'Z');

end if;

end if;

end process;

end architecture rtl;

2.3.1 Блок регистров общего назначения (РОН)

Регистры общего назначения используются для временного хранения, как промежуточных данных, так и результата операции. Общее число РОН по условию курсового проекта составляет 12. В данном курсовом проекте необходимо был реализовать РОНы с регистрово-косвенной адресацией. Для этого в блок РОНов был строен дополнительный блок регистров, хранящий непосредственно адреса всех РОНов. Таким образом обращение к РОНам организовывается косвенно, через дополнительный блок регистров.

Условно-графическое обозначение РОН изображено на рисунке 2.11.

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

Реализация данного блока выполнялась программно. Код реализации РОН представлен в листинге 2.12.

Листинг 2.4 Реализация РОНов:

LIBRARY ieee;

USE ieee. std_logic_1164.ALL;

ENTITY gpr IS

PORT

(

clk : IN std_logic;

we : IN std_logic;

re : IN std_logic;

adr : IN std_logic_vector (3 DOWNTO 0);

in_data : IN std_logic_vector (9 DOWNTO 0);

Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4