- •Панов, В.А.
- •2.1.2. Лексические элементы языка
- •2.1.2.1. Используемые символы
- •2.1.2.2. Идентификаторы
- •2.1.2.З. Комментарий
- •2.1.2.4. Литералы
- •2.1.3. Модели данных
- •2.1.З.1. Скалярные типы
- •2.1.З.2. Целый тип
- •2.1.З.З. Тип с плавающей точкой
- •2.1.З.4. Перечислительные типы
- •2.1.З.5. Физические типы
- •2.1.4. Операции
- •2.1.5. Операторы управления
- •2.1.6. Пакеты
- •3.2.2. Верификация
- •3.3.2. Стратегии проектирования
- •4.2.1.5. Декодер Меггита для укороченного кода
- •4.2.2. Групповые систематические коды (ГСК)
- •4.2.2.1. Построение кодеров ГСК
- •6.2.1. Декодер помехоустойчивого кода (канальный декодер)
- •6.2.2. Оборудование группообразования приемника
- •6.2.3. Тестирование приемника
- •6.3. Модель цифрового канала связи с помехой
- •7.1.7. Тестирование КПД
- •7.2.1. Расчет основных параметров
- •7.2.2. Проектирование передатчика
- •7.2.4. Формирователь КИ
- •7.2.5. Шифратор единичного кода в двоичный
- •7.2.6. Мультиплексор
- •7.2.9. Проектирование приемника
- •7.2.10. Тестирование приемника
- •7.2.12. Тестирование КПД
- •8. ВАРИАНТЫ ЗАДАНИЙ ДЛЯ КУРСОВОГО ПРОЕКТИРОВАНИЯ
- •9. СОДЕРЖАНИЕ ОТЧЕТА
- •СПИСОК ЛИТЕРАТУРЫ
- •2. Проектирование графического проекта на основе созданных на VHDL устройств
- •2. Описание на языке VHDL счетчика импульсов (до 19) передатчика
- •1. Описание на языке VHDL шифратора единичного кода в двоичный (длина единичного кода = 7)
- •2. Описание на языке VHDL шифратора единичного кода в двоичный (длина единичного кода = 10)
- •Описание на языке VHDL дешифратора двоичного кода в единичный
- •2. Описание на языке VHDL мультиплексора 10x1
- •2. Описание на языке VHDL последовательной реализации кодера ГСК (11,7,3)
- •Описание на языке VHDL устройства управления кодером ЦСК по g(x)
- •Описание на языке VHDL кодера ЦСК по h{x)
- •2. Описание на языке VHDL последовательной реализации декодера ГСК (11,7,3)
- •Описание на языке VHDL устройств управления декодером неукороченного кода ЦСК
- •Описание на языке VHDL устройств управления декодером укороченного кода ЦСК
- •2. Описание на языке VHDL демультиплексора 1x10
- •Описание на языке VHDL устройства, моделирующего ЦКС с помехой
- •1. Временная диаграмма моделирования работы КПД (код ЦСК)
- •2. Временная диаграмма моделирования работы КПД (код ГСК)
- •Оглавление
2. Описание на языке VHDL последовательной реализации кодера ГСК (11,7,3)
LIBRARY ieee;
USE ieee.std_logic_1164.all;
ENTITY coder_ll_7_3 IS
PORT (
u:IN STD_LOGIC;
v:OUT STD_LOGIC; clr: IN STD_LOGIC; elk: IN STD_LOGIC
);
END coder_ll_7_3;
ARCHITECTURE beh OF coder_ll_7_3 IS |
|
|
|
|
|
|
|
|
|
|
||||
BEGIN |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
PROCESS(elk) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
VARIABLE ent: INTEGER RANGE 0 TO IN |
|
|
|
|
|
|
|
|
|
|||||
VARIABLE d: STD_LOGIC_VECTOR(0 TO 19); |
|
|
|
|
|
|
|
|
||||||
BEGIN |
(clr=’O') THEN |
ent:=0; |
|
|
|
|
|
|
|
|
|
|
||
IF |
|
|
|
|
|
|
|
|
|
|
||||
ELSIF falling_edge(elk) THEN |
|
|
|
|
|
|
|
|
|
|
||||
|
ent:=cnt+l; |
cnt<=7) THEN d(cnt):=u; |
|
|
|
|
|
|
||||||
|
IF (ent>—1 AND |
|
|
|
|
|
|
|||||||
|
— операторы кодирования: |
xor |
d (3) |
xor |
d(4) |
xor |
||||||||
|
ELSIF |
(cnt=8) THEN |
d(8):=d(l) |
|||||||||||
|
d (5) ; |
THEN |
d(9):=d(l) |
xor |
d(2) |
xor |
d (4) |
xor |
||||||
|
ELSIF |
(cnt=9) |
||||||||||||
|
d (5) |
xor d (7); |
THEN |
d(10):=d(l) |
xor |
d(2) |
xor |
d (3) |
xor |
|||||
|
ELSIF |
(cnt=10) |
||||||||||||
|
d (5) |
xor d (6); |
THEN |
d (11):= d (1) |
xor |
d(2) |
xor |
d (3) |
xor |
|||||
|
ELSIF |
(cnt—11) |
||||||||||||
|
d (4) |
xor d(6) |
xor d(7); |
|
|
|
|
|
|
|
|
|
|
|
|
END IF; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
v<=d(ent); |
|
|
|
|
|
|
|
|
|
|
|
|
|
END |
if cnt=19 then cnt:=0; end if; |
|
|
|
|
|
|
|
|
|
|
|||
IF; |
|
|
|
|
|
|
|
|
|
|
|
|
|
END PROCESS;
END beh;
Описание на языке VHDL устройства управления кодером ЦСК по g(x)
1.Неукороченный код:
library |
ieee; |
|
use ieee.std_logic_1164.all; |
||
entity coder_control is |
||
port ( |
|
такта: |
--номер |
||
d: |
in |
integer range 0 to 2*15-1; |
— сигнал |
управления: |
q:out std_logic
) ;
end coder_control;
architecture behaviour of coder_control is begin
q <= '1' when d<10 else 'O'; end behaviour;
2.Укороченный код:
library ieee;
use ieee.std_logic_1164.all;
entity coder_control is port (
d:in integer range 0 to 2*13-1;
q:out std_logic
) ;
end coder_control;
architecture behaviour of coder_control is begin
q <= '1' when d<8 else 'O'; end behaviour;
Описание на языке VHDL кодера ЦСК по h{x)
LIBRARY ieee;
USE ieee.std_logic_1164.all
ENTITY coder_h IS |
|
|
PORT ( |
IN |
STD_LOGIC; |
elk, u: |
||
control, reset: |
IN |
STD_LOGIC; |
v: |
OUT |
STD LOGIC); |
END coder_h; |
|
|
ARCHITECTURE behaviour OF coder_h IS
signal d: std_logic_vector(9 downto 0); signal s: std_logic;
begin
— |
вынесенные |
сумматоры: |
|
s |
<= u when control=,0' else |
||
|
d(0) |
xor |
d (2) xor d (5) xor d(6) xor |
|
d (8) |
xor |
d (9); |
v<= d (0) ;
—сдвиговый регистр: process (elk,reset) begin
if reset='0' then
d <= "0000000000";
elsif falling_edge(elk) then d (9) <= s;
for j in 8 downto 0 loop d(j) <= d(j+l);
end loop; end if;
end process; end behaviour;
LIBRARY ieee;
USE ieee.std_logic_1164.all;
ENTITY decoder IS |
|
|
|
||||
PORT ( |
vi: |
|
|
|
|
IN STD_LOGIC; |
|
elk, |
|
|
|
|
|||
controll,control2,reset: IN STD_LOGIC; |
|||||||
vo, |
delete: |
|
|
|
OUT STD_LOGIC); |
||
END decoder; |
|
|
|
|
|
|
|
ARCHITECTURE behaviour OF decoder IS |
|||||||
signal |
kl,s,del: |
|
std_logic; |
||||
— триггеры делителя: |
|
||||||
signal |
d: |
|
std_logic_vector(0 to 4); |
||||
— ячейки |
регистра: |
|
|
||||
signal |
r: |
|
std_logic_vector(0 to 14); |
||||
begin |
|
|
|
селектора: |
|||
— настройка |
|||||||
kl <= '1• when (controll=‘1') and (d="00001") |
|||||||
|
else |
'O'; |
|
|
|
||
— сигнал |
стирания: |
|
|
||||
del |
<= |
'1' when |
(control2='1 *) and not(d="00000") |
||||
|
else |
’О 1; |
|
|
|
||
delete |
<= |
del; |
|
and not(kl); |
|||
s <= |
(vi |
xor d (4)) |
|||||
process |
|
(elk,reset) |
|||||
begin |
асинхронный |
сброс: |
|||||
|
— |
||||||
|
if |
reset='0' |
then |
||||
|
|
|
d |
<= |
"00000"; |
||
|
|
|
vo |
<= |
'O'; |
|
|
|
|
|
r <= |
"000000000000000"; |
|||
|
elsif rising_edge(elk) then |
||||||
|
|
|
— сброс по окончании декодирования: |
||||
|
|
|
if |
del='1' |
then |
||
|
|
|
|
d <= |
"00000"; |
||
|
|
|
|
vo |
<= |
'O'; |
|
|
|
|
|
r <= |
"000000000000000"; |
else
—регистр сдвига:
г(0) <= vi;
for j in 1 to 14 loop r(j) <= r(j-1);
end loop;
— делитель на базе РЛЛОС: d (0) <= s;