[an error occurred while processing this directive]
nrzi кодирование
(«Телесистемы»: Конференция «Языки описания аппаратуры (VHDL и др.))

миниатюрный аудио-видеорекордер mAVR

Отправлено Sinensis 13 марта 2004 г. 13:30

Помогите сделать nrzi (Non Return to Zero Invert) кодирование: если на входе была '1', то уровень на выходе не меняется, если '0' - инвертируется.
Сделал вот что:

LIBRARY ieee;
USE ieee.std_logic_1164.all;

ENTITY NRZI_Coder IS
PORT(clock, start, data: IN STD_LOGIC;
nrzi: OUT STD_LOGIC);
END ENTITY NRZI_Coder;

ARCHITECTURE Behavior OF NRZI_Coder IS
BEGIN
PROCESS (clock, data, start)
variable dataout: STD_LOGIC;
BEGIN
IF (start = '0') THEN
dataout := '1';
nrzi <= dataout;
ELSIF (clock'EVENT AND clock = '1') THEN
IF (data = '1') THEN
nrzi <= dataout;
ELSE
dataout := not dataout;
nrzi <= dataout;
END IF;
END IF;
END PROCESS;
END Behavior;

но это работает не правильно.
Как есть:
clock: __|~~|__|~~__|~~|__|~~
start: __|~~~~~~~~~~~~~~~~~~~
data: ~~~~~~~~|____|~~~~~~~~
out: ~~~~~~~~~~~~~|________

Должно:
clock: __|~~|__|~~__|~~|__|~~
start: __|~~~~~~~~~~~~~~~~~~~
data: ~~~~~~~~|____|~~~~~~~~
out: ~~~~~~~~|_____________

Как это исправить?
Работаю в Max+

Составить ответ  |||  Конференция  |||  Архив

Ответы


Отправка ответа

Имя (обязательно): 
Пароль: 
E-mail: 

Тема (обязательно):
Сообщение:

Ссылка на URL: 
Название ссылки: 

URL изображения: 


Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru