Партнерка на США и Канаду по недвижимости, выплаты в крипто
- 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 |


