Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Автоматизация проектирования радиоэлектронных устройств связи..pdf
Скачиваний:
12
Добавлен:
15.11.2022
Размер:
5.53 Mб
Скачать

Временная диаграмма работы устройства представлена на рис. П1.17.

Рис. П1.17. Временная диаграмма функционирования счетчика

Как видно, спроектированное устройство работает правильно: счет­ чик считает от 0 до 18(19 тактов), затем сбрасывается в ноль.

1.16. Спроектировать и протестировать (временная симуляция) ана­ логичным образом формирователь временных интервалов TS_FORMER, формирующий необходимое число интервалов, шифратор единичного кода

в двоичный SFIFR, мультиплексор MX, кодер CODER_l 1__7_3 (исходные тексты на VHDL всех устройств приведены в приложениях). Назначение этих устройств и принцип работы передатчика рассмотрен в гл. 6.

2. Проектирование графического проекта на основе созданных на VHDL устройств

2.1. На данном этапе у нас спроектированы и откомпилированы уст­ ройства: счетчик импульсов, формирователь временных интервалов, шиф­ ратор, мультиплексор, кодер. Совместим их для примера в одном устрой­ стве - передатчик системы (в данном примере рассмотрен КПД с кодом ГСК).

Создать новый графический проект MAX+PLUS II\Graphic Editor, сохранить проект как c:\_lab\elements\tx\tx.gdf.

2.2.FileVProject\Set Project to Current File (см. рис. П1.4).

2.3.Теперь необходимо добавить пользовательскую библиотеку:

2.3.1.Создать каталог c:\_lab\lib.

2.3.2.Скопировать туда файлы, получившиеся при компиляции от­ дельных устройств с расширением *.vhd и *.sym (например, файлы *.vhd и *.sym из c:\_lab\elements\counter в c:\_lab\lib, аналогично - остальные эле­ менты).

2.3.3.Добавить пользовательскую библиотеку: Options\User Librar-

ies\Add.

В библиотеке примитивов (стандартная библиотека, рис. П1.19) можно выбрать вход (input) и выход (output). В библиотеке (рис. П1.20) те­ перь лежат все необходимые элементы для создания передатчика.

2.4. Поставить элементы и установить связи между ними, собирать передатчик.

fj

I

Рис. П1.21. Передатчик КПД

При работе в редакторе необходимо учитывать, что шины (обозначе­ ны жирной линией) обозначаются так, out_cnt[4..0] - обозначает шину раз­ рядностью 5 с выхода счетчика. Чтобы использовать один разряд с шины на вход CLK у TS_FORMER, просто пишем над этим входом out_cnt4 - для подключения четвертой линии шины. Также можно не устанавливать графически все связи, достаточно написать над входом устройства имя существующего пина, так например, сделаны входы у кодера: RESET и CLK - те же самые входы, что и у счетчика COUNTER. У TSJFORMER вход RESET сделан аналогично. А на управляющий вход мультиплексора также подаем выход с шифратора, написав на входе out_shifr[3..0]. Подпи­ сать вход можно установив курсор над ним (кликнуть один раз в нужное место) и введя текст с клавиатуры. Двойной щелчок по элементу откроет нам исходный код элемента на VHDL.

2.5.Указать серию FLEX 8000 и тип ПЛИС EPF8282ALC84-4 (Assign\Device), сняв предварительно галочку Show Only Fastest Speed Grades (см. рис. П1.5). Если не будет компилироваться, тогда указать устройство AUTO.

2.6.Сохранить и откомпилировать проект: File\Project\Save & com­ pile (ctrl+L) (см. рис. П1.6).

2.7.Указать Functional SNF Extractor вменю Processing и нажать старт (рис. П1.7). После перекомпиляции нужно снять галочку и закрыть компилятор.

2.8.Создать графический символ передатчика: File\Create Default.

Symbol. Это необходимо делать каждый раз, если были убраны или добавле­ ны какие-либо входы или выходы и перекомпилирован проект. При повтор­ ном создании символа появится предупреждение о перезаписи, нажать ОК.

2.9. Временное моделирование выполняется аналогично пп. 1.10-1.15. После компиляции проводится симуляция. Временная диаграмма

функ-ционирования передатчика КПД представлена на рис. П1.22.

Name:_______ Viluai_______6.5Bu«

13.16и»

19.74т

2Б.32и»

3 2 9 т

39 48ui

46 Оби» S2 64ui

S9 22m

BS8u«

reset

о

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

 

 

 

аь*- сМс

иЯЛЛЛЛЛЛЛЛ1ШЛЛПЛЛЛЛШЛЛЛШШШШШ1ШШ1Л[ШШЛШ1ШииШ

 

0

•'

 

 

 

 

П

—1

1

П 1

1

 

 

J* -T X 1

0

1

 

1

1

 

 

 

 

 

D C

о

Ln

_

 

 

 

 

 

 

 

 

о

 

 

 

 

 

Г1.

—1

1

 

r

i n

 

-и*. out_mi

i _ n

_

1

1

L

i

 

-£5> OUt_V

0

u n

J

U

П

—1

II—

n

jпn_ л _

S jir ouljs[9..0|

 

Й _____

 

 

0000000001

 

i

 

0000000010

X

0000000100

J

Рис. ГТ1.22. Временная диаграмма функционирования передатчика

После тестирования передатчика можно убрать «лишние» выходы, out_shifr, out_ts, out_mx, необходимые только для тестирования передатчи­ ка, перекомпилировать проект и пересоздать символ.

2.10.Скопировать файлы tx.gdf и tx.sym из каталога c:\_lab\elements\tx\ в каталог c:\_lab\lib, таким образом, добавить в пользо­ вательскую библиотеку передатчик.

2.11.Аналогичным образом собирается и проверяется приемник, также добавляется в библиотеку.

il

(см. рис. П1.5). Если не будет компилироваться, тогда указать устройство AUTO.

3.5.Сохранить и откомпилировать проект: File\Project\Save & com­ pile (ctrl+L) (см. рис. П1.6).

3.6.Указать Functional SNF Extractor вменю Processing и нажать старт (см. рис. П1.7). После перекомпиляции нужно снять галочку и за­ крыть компилятор.

3.7.Построить временные диаграммы, все делается аналогично

пп.1.10-1.15.

library ieee;

use ieee.std_logic_1164.all; use ieee.std_logic_arith.all;

entity counter is

 

 

 

port (

 

in

std__logic;

 

elk, reset:

 

— число

тактов 2*n=26:

range 0 to 2*13-1

 

q:

 

out

integer

end

) ;

 

 

 

 

counter;

 

 

 

 

architecture behaviour of counter is

begin

(elk,reset)

 

 

process

 

 

variable

i:

integer;

 

begin

 

 

 

 

 

--сброс счетчика в начальное положение

 

if

reset='0'

then

 

 

 

q <= 2*13-1;

 

 

 

i := 2*13-1;

then

 

elsif rising_edge(elk)

 

 

— переполнение:

 

 

 

if i=2*13-l then

 

 

 

else

:=0;

 

 

 

i := i +l ;

 

 

 

end

 

 

 

if;

 

 

 

end

q <=

i;

 

 

 

if;

 

 

 

end

end process;

 

 

 

behaviour;