
Лекция 6
Описание на VHDL защелки
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
entity RS is
Port ( D,clk : in STD_LOGIC;
Q : out STD_LOGIC;
nQ : out STD_LOGIC);
end RS;
architecture Beh of RS is
begin
process (D,clk)
begin
if clk='1' then
--if clk' event and clk='1' then
Q<=D;
nQ<=not D;
end if;
end process;
end Beh;
Описание на VHDL триггера
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
entity RS is
Port ( D,clk : in STD_LOGIC;
Q : inout STD_LOGIC;
nQ : out STD_LOGIC);
end RS;
architecture Beh of RS is
begin
process (clk)
begin
if clk' event and clk='1' then
Q<=D;
end if;
end process;
nQ<=not Q;
end Beh;
Описание на Verilog триггера
module m1(
input clk,
input D,
output reg Q,
output wire nQ
);
always @(posedge clk)
begin
Q=D;
end
assign nQ=~Q;
endmodule
Временная диаграмма для защелки
Временная диаграмма для триггера
Если требуется чтобы переключение триггера выполнялось не по фронту, а по спаду сигнала то условие перепишется в виде
На VHDL:
if clk' event and clk='0' then
на Verilog:
always @(negedge clk)
Регистр сдвига
Регистр сдвига позволят преобразовывать сигналы поступающие последовательно в параллельные. Регистр сдвига образуется из цепочки триггеров, при этом выход первого триггера соединен со входом последующего. С приходом тактового импульса данные смещаются на одни разряд.
Схема регистра сдвига на 4 разряда:
Описание регистра сдвига на 4 разряда на VHDL:
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
entity ShiftReg is
Port ( clk : in STD_LOGIC;
D : in STD_LOGIC;
Reset:in std_logic;
Q : inout STD_LOGIC_VECTOR (3 downto 0));
end ShiftReg;
architecture Behavioral of ShiftReg is
begin
process (clk)
begin
if Reset='1' then
Q<="0000";
elsif(clk'event and clk='1') then
Q(0)<=D;
Q(1)<=Q(0);
Q(2)<=Q(1);
Q(3)<=Q(2);
end if;
end process;
end Behavioral;
№ Схема модуля памяти
Если объединить синхронизирующие входы у восьми триггеров, а на каждый информационный вход триггера подавать соответствующий разряд данных, то получим устройство именуемое регистром. Такой регистр сможет хранить одни байт информации.
Если требуется хранение большого объема данных то используют организацию памяти как показано на рисунке ниже:
Данная схема может хранить 4 слова по 3 байта в каждом (всего 12 байт).
Имеется 8 входов:
А1 А0 – задают адрес слова, к которому происходит обращение.
I1, I2, I3 – служат для ввода данных
CS (Chip Select) – сигнал управления, выбор микросхемы.
RD (ReaD) - определяет чтение или запись.
OE (Output Enable) – разрешение выдачи выходных сигналов.
На схеме есть 3 выхода:
O0, O1, O2 - выходы данных.
Работа схемы.
Четыре вентиля И соединенные с адресными линиями образуют дешифратор. Подача нужного адреса позволяет выбрать одно из 4-х слов.
Вывод CS нужен для совместной работы нескольких микросхем памяти. Для работы микросхемы следует на этот выход подать лог. 1 CS=1. (При CS=0 ни читать, ни записывать нельзя).
Запись производиться по спаду сигнала RD. Предварительно установленные данные с информационных входов поступают на D-вход триггеров, при этом записывается одно слово, выбранное дешифратором.
При чтении данных на вход RD подают логическую 1. RD=1. CS=1. Входы синхронизации триггеров блокируются и их состояние измениться не может.
Выход каждого триггера соединен с вентилем И. Сигнал на адресной шине открывает 3 вентиля, соответствующих выбранному слову.
Для экономии числа выводов информационные и выходные выводы данных объединяют (на схеме I1,I2,I3, O1,O2,O3). Чтобы выполнить согласование этих линий применяют буферный элемент без инверсии.
Этот
элемент позволяет перевести вывод в
третье высокоимпедасное состояние
(разорвать цепь).
При подаче 1 на управляющий вход цепь замыкается.
При подаче 0 цепь размыкается или, иначе говоря, переводиться в высокоимпедасное состояние. Это также позволяет объединить на одной шине данных несколько микросхем памяти.
Следовательно, данные на выходе представленной схемы появляются только когда все три линии управления =1 (CS=1, RD=1, OE=1).