Технические дисциплины - ПППСМ

5. МИКРОСХЕМЫ СИНХРОННОЙ СТАТИСТИЧЕСКОЙ ПАМЯТИ «IDT»

Основные характеристики:

  • 256Кх36, 512Кх18 и др.;
  • Поддержки частоты 150 МГц (3,5 нс Clock-to-Data Access);
  • Нет «мертвых» циклов между циклами записи и чтения;
  • Внутренняя синхронизация выходного буфера;
  • Единая ножка R/W (чтение/запись);
  • Фиксация адреса, данных  и контрольных сигналов в регистрах осуществляется по нарастанию тактового сигнала; поддержка конвейерных операций;
  • Разделительный контроль по доступу к байтам;
  • Питание 3,3 В;
  • Уровень логических сигналов 3,3 В.

 

Микросхемы IDT71V65603/5803 являются высокоскоростными (9 Мегабитными) микросхемами синхронной памяти. Они разработаны для сокращения «мертвых» циклов между операциями чтения и записи, или записи и чтения. Поэтому они получили название ZBTTM, или ZeroBusTumaround.

Адрес и сигналы контроля воздействуют на память в течение одного такта, а после 2-тактной задержки осуществляется операция чтения или записи. Т.е. при записи через 2 такта необходимо установить на шину данных данные для записи, а при чтении – снять прочитанные.

Микросхема имеет регистры для данных, адреса и сигналов управления. Сигнал Output_enable является асинхронным и может быть использован для закрытия выходов микросхемы в любое время.

 

 

Рис. 5.1. Функциональная схема памяти

Таблица 5.1. Таблица описания сигналов памяти

 

Таблица 5.2. Таблица истинности синхронной памяти

 

 

 

 

 

Рис. 5.2. Временная диаграмма (функциональная) памяти

 

 

Рис. 5.3. Временные диаграммы режима чтения

 

 

 

Рис. 5.4. Временные диаграммы режима записи

 

 

 

 

Рис. 5.5. Временные диаграммы комбинированного режима чтения и записи

 

 

 

6. МИКРОСХЕМА ПРИЕМО-ПЕРЕДАТЧИКА ПО СТАНДАРТУ RS – 232.

 

Микросхема MAX212 приемо – передатчика по стандарту RS – 232 предназначена для обмена данными (сопряжения) по протоколу V.28/V.24. Она содержит три передатчика и пять приемников. Диапазон напряжений на входах передатчика, выходах приемника и управляющих ножках – 3.0  - 3.6В.

Микросхема имеет энергосберегающий режим (shutdown) (потребление 1 мА), позволяющий сократить потребление энергии в портативных системах и продлить срок эксплуатации аккумуляторов.

Гарантированная скорость передачи – 120 кбит/с. Обеспечена совместимость со всем программным обеспечением при обмене данными с персональным компьютером.

Рис. 6.1. Схема включения микросхемы.

Параметры для входных и выходных сигналов:

а) Напряжение питания:

VCC                    -0.3V ÷ 4.6V

V+                       (VCC – 0.3V) ÷ 7.4V

V-                        -7.4V ÷ 2.0V

LN                       -0.3V ÷ (V+ +1.0V)

LP                        (V- - 1/0V) ÷ (V+ +0.3V)

б) Входные напряжения:

T_IN,,EN        -0.3V ÷ (V+ +0.3V)

R_IN                    ±25V

в) Выходные напряжения:

T_OUT                ±15V

R_OUT                -0.3V ÷ (V+ +0.3V)

Потребления:

а) для корпуса Wide SO – 941mW

б) для корпуса SSOP – 640 mW.

Цепь включения микросхемы можно разделить на три секции: поддержка питания, передатчики, приемники.

Секция питания преобразует питание 3.0V в напряжение ±6.5 В, необходимое для поддержки управления уровнями стандарта RS2323.

Секция питания использует индуктивность, 2 диода и 2 конденсатора. В качестве С1 и С2  - используют керамические конденсаторы.

Все 5 передатчиков идентичны и поддерживают стандарты EIA/TIA -232E и EIA/TIA – 562 входных сигналов. Когда EN=’1’ приемники активны и управляются сигналом . Когда  EN=’0’ выходы передатчиков устанавливаются в высокоимпедансное состояние.

 

Таблица 6.1.   Режимы работы.

 

EN

Выходы

приемника

Выхода управления

Преобразователь

DC - DC

Потребление питания

L

L

High – Z

High – Z

Выкл

Минимум

L

H

Enabled

High – Z

Выкл

Минимум

H

L

High – Z

Enabled

Выкл

Нормальное

H

H

Enabled

Enabled

Выкл

Нормальное

L – нижний уровень

H – высокий уровень

High – Z – высокий «ноль».

 

 

Рис. 6.2. Внешний вид микросхемы MAX212

 

RS232 – последовательный интерфейс, в котором данные передаются побитно. Каждый байт передается вместе со служебными битами.

 

Рис. 6.3.  Формат передачи

 

Существует несколько режимов четности:

  1. четность (parity)

parity=D0 xor D1 xor D2… xor D7

Di – бит данных

  1. нечетность

parity=D0 xnor D1 xnor D2… xnor D7.

  1. Программное задание четности.

Во время отсутствия передачи в линию передается стоп – бит.

Стоп – бит кореруется единицей, старт – бит  - нулем.

 

Рис. 6.4. Временные диаграммы передачи байта с одним старт – битом и одним битом чтения.

Т – время передачи одного бита.

 

 

Рис.  6.5  Передача кода 0*55.

 

 

Рис. 6.6.  Передача многобайтной последовательности.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

rs485_rc(1).vhd

--------------------------------------------------------------------------------

-- Company:

-- Engineer:

--

-- Create Date:    14:42:59 07/13/06

-- Design Name:

-- Module Name:    rs485_rc - Behavioral

-- Project Name:

-- Target Device:

-- Tool versions:

-- Description:

--

-- Dependencies:

--

-- Revision:

-- Revision 0.01 - File Created

-- Additional Comments:

--

--------------------------------------------------------------------------------

library IEEE;                                             --Подключаемые библиотеки

use IEEE.STD_LOGIC_1164.ALL;

use IEEE.STD_LOGIC_ARITH.ALL;

use IEEE.STD_LOGIC_UNSIGNED.ALL;

 

---- Uncomment the following library declaration if instantiating

---- any Xilinx primitives in this code.

library UNISIM;

use UNISIM.VComponents.all;

 

entity rs485_rc is                             --Описание входов/выходов схемы

Port ( CLK          : IN STD_LOGIC;        --Тактовая частота

RX           : IN STD_LOGIC;  --Вход приемника

RESET        : IN STD_LOGIC;       --Сброс

PAR_EN       : IN STD_LOGIC_VECTOR(2 DOWNTO 0);--Вид четности

BIT_COUNT    : IN STD_LOGIC_VECTOR(15 DOWNTO 0);--Счетчик

--бит

POP          : IN STD_LOGIC;       --Команда извлечение данных из FIFO

DATA         : OUT STD_LOGIC_VECTOR(8 DOWNTO 0);  --Принятые

-- данные

BYTE_RDY     : OUT STD_LOGIC;                 --Признак приема байта

DISPARITY_O  : OUT STD_LOGIC;--Признак не совпадения четности

PACK_RDY     : OUT STD_LOGIC;                  --Признак приема пакета

EMPTY        : OUT STD_LOGIC;             --Признак пустоты FIFO

FULL         : OUT STD_LOGIC;              --Признак переполнение FIFO

DATA2TMS     : OUT STD_LOGIC_VECTOR(8 DOWNTO 0);--Принятые

-- данные, читаемые из FIFO

INT          : OUT STD_LOGIC                          --Прерывание процессору

);

 

 

end rs485_rc;

 

architecture Behavioral of rs485_rc is

--Сигналы автомата – приемника - байтов

SIGNAL S0                   : STD_LOGIC;  --Состояние автомата

SIGNAL S1                   : STD_LOGIC;

SIGNAL S2                   : STD_LOGIC;

SIGNAL S3                   : STD_LOGIC;

SIGNAL S4                   : STD_LOGIC;

SIGNAL S5                   : STD_LOGIC;

SIGNAL S6                   : STD_LOGIC;

SIGNAL S7                   : STD_LOGIC;

SIGNAL S8                   : STD_LOGIC;

SIGNAL S9                             : STD_LOGIC;

SIGNAL NEW_S0          : STD_LOGIC;--Функции возбуждения для автомата

SIGNAL NEW_S1          : STD_LOGIC;

SIGNAL NEW_S2          : STD_LOGIC;

SIGNAL NEW_S3          : STD_LOGIC;

SIGNAL NEW_S4          : STD_LOGIC;

SIGNAL NEW_S5          : STD_LOGIC;

SIGNAL NEW_S6          : STD_LOGIC;

SIGNAL NEW_S7          : STD_LOGIC;

SIGNAL NEW_S8          : STD_LOGIC;

SIGNAL NEW_S9          : STD_LOGIC;

SIGNAL TIMER             : STD_LOGIC_VECTOR(15 DOWNTO 0);--Таймер

SIGNAL DO                    : STD_LOGIC_VECTOR(8 DOWNTO 0);

SIGNAL TIMER_EQ_0  : STD_LOGIC;                                      --Таймер=0

SIGNAL I                         : STD_LOGIC_VECTOR(3 DOWNTO 0);

SIGNAL PARITY_IN      : STD_LOGIC;                                   --Принятая четность

SIGNAL PARITY_OUT  : STD_LOGIC;         --Подсчитанная четность

SIGNAL PARITY_OK    : STD_LOGIC;          --Признак совпадения четности

SIGNAL I_EQ_8              : STD_LOGIC;

SIGNAL RX_T                 : STD_LOGIC;  --Сигнал с приемника, задержка на

-- такт

SIGNAL RX_2T               : STD_LOGIC; --Сигнал с приемника, задержка на 2

-- такта

SIGNAL RX_3T               : STD_LOGIC; -- Сигнал с приемника, задержка на 3

-- такт

SIGNAL DISPARITY       : STD_LOGIC;         --Признак несоответствия четности

--Сигналы для автомата сборщика пакетов

SIGNAL TIMER2             : STD_LOGIC_VECTOR(15 DOWNTO 0);--Таймер

SIGNAL TIMER2_EQ_0  : STD_LOGIC;

SIGNAL ST0                   : STD_LOGIC;                   --Состояние автомата

SIGNAL ST1                   : STD_LOGIC;

SIGNAL ST2                   : STD_LOGIC;

SIGNAL ST3                   : STD_LOGIC;

SIGNAL ST4                   : STD_LOGIC;

SIGNAL NEW_ST0                  : STD_LOGIC;          --Функция возбуждения автомата

SIGNAL NEW_ST1          : STD_LOGIC;

SIGNAL NEW_ST2          : STD_LOGIC;

SIGNAL NEW_ST3          : STD_LOGIC;

SIGNAL NEW_ST4          : STD_LOGIC;

 

SIGNAL ADDR_WR        : STD_LOGIC_VECTOR(5 DOWNTO 0);--Адрес

--записи в буфер

SIGNAL ADDR_RD         : STD_LOGIC_VECTOR(5 DOWNTO 0);--Адрес

--чтения из буфера

SIGNAL ADDR_RD_T     : STD_LOGIC_VECTOR(5 DOWNTO 0);--Адрес

--чтения из буфера, задержка на 1 такт

 

Begin                                       --Секция описания схемы

 

DATA                <= DO;

DISPARITY_O  <= DISPARITY;

BYTE_RDY       <= S5;

--Секция описания функции возбуждения автомата – приемника - байтов

NEW_S0 <= S5 OR (S0 AND (NOT ((NOT RX_T) AND (NOT RX_2T) AND RX_3T)));

NEW_S1 <= (S0 AND (NOT RX_T) AND (NOT RX_2T) AND RX_3T) OR (S3 AND (NOT

I_EQ_8))

OR

(S1 AND (NOT TIMER_EQ_0));

NEW_S2 <= S1 AND TIMER_EQ_0;

NEW_S3 <= S2;

NEW_S4 <= (S3 AND I_EQ_8) OR (S4 AND (NOT TIMER_EQ_0));

NEW_S5 <= (S4 AND TIMER_EQ_0 AND (NOT PAR_EN(0)) AND (NOT PAR_EN(1))

AND (NOT PAR_EN(2))) OR (S7 AND TIMER_EQ_0) OR S9;

NEW_S6 <= S4 AND TIMER_EQ_0 AND (PAR_EN(0) OR PAR_EN(1) OR PAR_EN(2));

NEW_S7 <= (S6 AND PARITY_OK AND PAR_EN(0)) OR (S6 AND (NOT PARITY_OK)

AND PAR_EN(1)) OR (S6 AND PAR_EN(2)) OR (S7 AND (NOT TIMER_EQ_0));

NEW_S8 <= (S6 AND (NOT PARITY_OK) AND PAR_EN(0)) OR (S6 AND PARITY_OK

AND PAR_EN(1)) OR (S8 AND (NOT TIMER_EQ_0));

NEW_S9 <= S8 AND TIMER_EQ_0;

 

PROCESS(CLK)                             --Секция описания триггеров автомата

BEGIN

IF (CLK = '1' AND CLK'EVENT) THEN

IF (RESET = '1')

THEN S0 <= '1';

S1 <= '0';

S2 <= '0';

S3 <= '0';

S4 <= '0';

S5 <= '0';

S6 <= '0';

S7 <= '0';

S8 <= '0';

S9 <= '0';

ELSE  S0 <= NEW_S0;

S1 <= NEW_S1;

S2 <= NEW_S2;

S3 <= NEW_S3;

S4 <= NEW_S4;

S5 <= NEW_S5;

S6 <= NEW_S6;

S7 <= NEW_S7;

S8 <= NEW_S8;

S9 <= NEW_S9;

END IF;

END IF;

END PROCESS;

 

PROCESS(CLK)

BEGIN

IF (CLK = '1' AND CLK'EVENT) THEN

IF ((RESET = '1') OR (S1 = '1'))

THEN DISPARITY <= '0';

ELSE IF (S9 = '1')

THEN DISPARITY <= '1';

ELSE DISPARITY <= DISPARITY;

END IF;

END IF;

END IF;

END PROCESS;

 

PROCESS(CLK)                                       --Секция описания триггеров схемы

BEGIN

IF (CLK = '1' AND CLK'EVENT) THEN

IF (RESET = '1')

THEN RX_T  <= '1';

RX_2T <= '0';

RX_3T <= '0';

ELSE  RX_T  <= RX;

RX_2T <= RX_T;

RX_3T <= RX_2T;

END IF;

END IF;

END PROCESS;

 

PROCESS(CLK)                                                --Секция описания таймера

BEGIN

IF (CLK = '1' AND CLK'EVENT) THEN

IF (RESET = '1')

THEN TIMER <= "0000000000000000";

ELSE IF (((S6 = '1') AND (NEW_S7 = '1'))

OR ((S6 = '1') AND (NEW_S8 = '1')))

THEN TIMER <= BIT_COUNT - 1;

ELSE IF (((S3 = '1') AND (NEW_S4 = '1')) OR ((S3 = '1') AND (NEW_S1 = '1')))

THEN TIMER <= BIT_COUNT - 3;--3

ELSE IF ((S0 = '1') AND (NEW_S1 = '1'))

THEN TIMER <= BIT_COUNT + 19;

ELSE IF ((S1 = '1') OR (S4 = '1')   OR (S7 = '1') OR (S8 = '1'))

THEN TIMER <= TIMER - 1;

ELSE TIMER <= TIMER;

END IF;

END IF;

END IF;

END IF;

END IF;

END IF;

END PROCESS;

 

PROCESS(TIMER)

BEGIN

IF (TIMER = "0000000000000000")

THEN TIMER_EQ_0 <= '1';

ELSE TIMER_EQ_0 <= '0';

END IF;

END PROCESS;

 

PROCESS(I)

BEGIN

IF (I = "1000")

THEN I_EQ_8 <= '1';

ELSE I_EQ_8 <= '0';

END IF;

END PROCESS;

 

PROCESS(CLK)                    --Секция описания счетчика принятых битов

BEGIN

IF (CLK = '1' AND CLK'EVENT) THEN

IF ((S0 = '1') AND (NEW_S1 = '1'))

THEN I <= "0000";

ELSE IF ((S2 = '1') AND (NEW_S3 = '1'))

THEN I <= I + 1;

ELSE I <= I;

END IF;

END IF;

END IF;

END PROCESS;



 

Добавить комментарий


Защитный код
Обновить