Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лабораторные работы ВТиИТ

.pdf
Скачиваний:
38
Добавлен:
15.03.2015
Размер:
334.41 Кб
Скачать

Лабораторная работа № 1. Исследование дешифратора.

Цель работы: получение основных навыков проектирования схем в редакторе пакета Quartus. Изучение функционирования простейшего КЦУ.

Задание на работу в лаборатории.

1. Зайдя в свою директорию, на рабочем столе правой клавишей мыши создать кнопку запуска. В открывшемся окне возле кнопки Имя записать Quartus , а возле кнопки Команда активировать Просмотреть и указать путь (файловая система/afs/dcti.sut.ru/soft/quartus). Затем нажать ОК, на рабочем столе появится ярлык Quartus. Пользуясь созданной кнопкой запустить пакет Quartus 7.1.

2.Открыть проект. Для этого в окне File верхнего меню выбрать New project wizard, указать путь к проекту

/afs/dcti.sut.ru/homes/students/m8.../m8.n…/xx, объявить его имя, нажать

Next. Окно добавления внешних файлов пока проигнорировать, Next. Выбрать тип кристалла: Cyclone – верхнее окно меню, EP1C6T144C8 – нижнее окно меню. Нажать FINISH.

3. Открыть файл VHDLредактора. Для этого проделать следующий путь: File – New – VHDL File. При таком выборе откроется окно редактора. На открывшемся поле записать программу функционирования дешифратора на

3 входа. Обратите внимание на то, что в программе имя устройства –dec.

Замените его в соответствии с именем вашего проекта или файла верхнего уровня.

library ieee;

use ieee.std_logic_1164.all; entity dec is

port(

adr_i: in bit_vector(2 downto 0); data_out: out bit_vector(7 downto 0) );

end dec;

architecture BBB of dec is begin

p0: process (adr_i) begin

case adr_i is

when "000"=>data_out<="00000001"; when "001"=>data_out<="00000010"; when "010"=>data_out<="00000100"; when "011"=>data_out<="00001000"; when "100"=>data_out<="00010000"; when "101"=>data_out<="00100000"; when "110"=>data_out<="01000000"; when "111"=>data_out<="10000000"; end case;

end process; end ;

5.Сохранить и откомпилировать полученный файл. Путь к компилятору: Processing – Start Compilation, или соответствующий значок верхнего меню редактора. Если компилятор указывает на ошибки, обратиться к преподавателю или лаборанту.

6. Построить временные диаграммы работы устройства. Для этого открыть файл временных диаграмм File – New – Others Files – Vector Waveform File. C помощью двух кликов мышью с левой стороны от вертикальной оси открыть окно Insert Node or Bus, выбрать в нем кнопку Node Finder. В разделе Filter выбрать Pins all, затем нажать List и проверить наличие списка выводов схемы в левом окне. Перенести список в правую часть с помощью кнопки >>, нажать OK. Временные интервалы – клик на обозначении вывода, обращение к опции C бокового меню, выбор в открывшемся окне пути Timing, установка временного интервала в ns. (20ns, 40ns, 80ns). Сохранить файл и обратиться к симулятору: Processing – Start Simulation или соответствующий значок верхнего меню редактора. При получении сообщения об ошибках обратиться к преподавателю или лаборанту. Если симуляция прошла без ошибок, проанализировать полученные диаграммы.

Отчет должен содержать программу устройства и диаграммы его работы.

В качестве проверки полученных знаний попробуйте самостоятельно составить программу работы шифратора на 4 входа и проанализировать временные диаграммы этого устройства. Внимание! При записи программы по образцу, указанному выше необходимо запись bit_vector заменить на std_logic_vector и, т.к. оператор требует записи всех комбинаций, последняя строка описания поведения устройства имеет следующий вид:

when others=>adr_out<=”ZZ”

Лабораторная работа № 2. Исследование работы демультиплексора.

Цель работы: изучение принципов работы демультиплексора. Написание простейшей программы на VHDL.

Постановка задачи. На примере демультиплексора на 3 адресных входа рассмотреть принцип функционирования данного типа КЦУ. Выходы устройства соединить со светодиодной панелью макета , адресные входы и информацию подключить к тумблерам. Имена адресных входов: Аdr_i[2..0], информационного входа - D, выходов Y[7..0], Рекомендуемые интервалы для временных диаграмм:

Аdr_i[0] –40нс, Аdr_i[1] –80нс, Аdr_i[2] –160нс, D – 15нс.

Порядок выполнения работы.

1.Запустить Quartus 7.1. (/afs/dcti.sut.ru/soft/quartus).

2.Открыть новый проект, прописав его в свою директорию

/afs/dcti.sut.ru/homes/students/m8.../m8...n.../xx

3.Создать файл VHDL File и записать в него программу для демультиплексора на 3 адресных входа по образцу, записанному в

Прогр. 2.1.

4.Сохранить и откомпилировать файл.

5.Открыть редактор временных диаграмм. Построить диаграммы работы устройства, следуя записанным рекомендациям. Выводы записывать в файл временных диаграмм списком. Для получения списка выводов шины кликнуть на знак + возле ее обозначения.

6.Продемонстрировать временные диаграммы преподавателю.

7.Вызвать планировщик (Pin Planer) и произвести разводку выводов схемы, руководствуясь схемой панели макета. В нижней части полученного окна будет представлен список выводов, в верхней – внешний вид кристалла. Против наименования каждого элемента списка в позиции Location двумя кликами мышью вызвать список выводов кристалла. Затем выбрать один для соединения с выводом устройства в соответствии с выданной схемой макета. (Или левой клавишей мыши отметить название вывода и, не отпуская клавиши, переместить его на ножку кристалла). Например: Аdr_i[0], Аdr_i[1],

Аdr_i[2] соединяем с выводами 42, 40 и 38, D – с выводом 48, а выходы Y[7..0] – c выводами 57, 53, 51, 49, 47, 41, 39 и 37.

Скомпилировать файл.

Результат разводки продемонстрировать преподавателю!

8.Вызвать программатор (Tools - Programmer). С помощью клавиши– Hardware Setup выбрать адаптер – Byteblaster MV. В строке с именем загружаемого файла поставить галочку на пункте Program/Configure.

Убедится в том, что макет подключен и запустить программатор (клавиша Start).

Результат работы продемонстрировать преподавателю. Отчет по данной работе должен содержать схему устройства, программу и графики работы.

Прогр. 2.1.

library ieee;

use ieee.std_logic_1164.all;

entity dms is port(

adr_i: in bit_vector(2 downto 0); d: in bit;

data_out: out bit_vector(7 downto 0) );

end dms;

architecture BBB of dms is begin

process (adr_i) begin

data_out(0)<=(not(adr_i(0)))and(not(adr_i(1)))and (not(adr_i(2)))and(d); data_out(1)<=(adr_i(0))and(not(adr_i(1)))and (not(adr_i(2)))and(d); data_out(2)<=(not(adr_i(0)))and(adr_i(1))and (not(adr_i(2)))and(d); data_out(3)<=(adr_i(0))and(adr_i(1))and(not(adr_i(2)))and(d ); data_out(4)<=(not(adr_i(0)))and(not(adr_i(1)))and(adr_i(2)) and(d); data_out(5)<=(adr_i(0))and(not(adr_i(1)))and(adr_i(2))and(d ); data_out(6)<=(not(adr_i(0)))and(adr_i(1))and(adr_i(2))and(d ); data_out(7)<=(adr_i(0))and(adr_i(1))and(adr_i(2))and(d); end process;

end ;

Лабораторная работа № 3

Проектирование 4-разрядного сумматора.

Цель работы: Получение навыков работы в пакете Quartus; построение многоуровнего проекта, изучение функционирования простейшего КЦУ. Задание на работу в лаборатории. Построить схему четырехразрядного сумматора, взяв за основу схемы полусумматора и полного одноразрядного сумматора. В редакторе временных диаграмм задать форму входных сигналов и получить диаграммы выходов.

Порядок выполнения работы.

1.Через ярлык на рабочем столе произвести загрузку пакета Quartus.

2.Создать новый проект в своей папке xx, назвав его summ.

3.Открыть VHDL файл и записать в него прогр. 1. Сохранить файл под именем add1 и установить его старшим в иерархии проекта. Для этого проделать путь от верхнего меню View –> Utility Windows –> Project Navigator. В левой верхней части экрана откроется окно навигатора. Список файлов открывается средней клавишей (Files). VHDL – файлы относятся файлам, образующим проект. Чтобы установить файл старшим в иерархии, необходимо выбрать его и кликом правой клавишей мыши выбрать Set a Top-Level Entity.

4.Откомпилировать файл. Во время компиляции обращайте внимание на сообщения компилятора, где указывается имя проекта и компилируемого файла. Эта информация всегда поможет вам избежать ошибок.

5.Пользуясь методикой работы 1, открыть файл временных диаграмм и построить диаграммы полусумматора, взяв интервал для a1 - 20ns, а для b1 – 30ns. Сохранить файл. Для симуляции временного файла надо воспользоваться строчкой Simulator Tool меню Processing. Через поиск найти название последнего временного файла и нажать Start. Просмотреть результат, нажав в том же окне справа Simulator Report. Проанализируйте полученный результат, запишите задержку.

6.Открыть новый VHDL файл и записать в него прогр. 2. Сохранить файл под именем add11 и установить его старшим в иерархии проекта. Откомпилировать файл.

7.Построить временные диаграммы одноразрядного сумматора, взяв интервалы для a1 - 20ns, для b1 – 30ns, для c1 – 50ns.

Проанализировать результат симуляции.

8.Открыть новый VHDL файл и записать в него прогр. 3. Сохранить файл под именем add4 и установить его старшим в иерархии проекта. Откомпилировать файл.

9.Построить временные диаграммы четырехразрядного сумматора. При построении воспользуйтесь клавишей бокового меню, позволяющей изображать произвольные временные интервалы, на ней изображены

два фронта со стрелкой в две стороны. Число a установить равным 10 на интервале 30ns и, затем, на интервале 50ns равным 3. Число b установить равным 7 на интервале 50ns и, затем на интервале 50ns равным 13. Для появления всех разрядов шины на диаграмме кликнуть на + возле имени шины. Проанализируйте результат симуляции.

10.Создать библиотечный модуль 4-разрядного сумматора. Для этого открыть VHDL-файл с прогр. 3, в меню File выберите последовательно

Create/Update и Create Symbol Files for Current File.

11.Далее вам необходимо включить в свой проект два файла периферийных устройств. Имена файлов multiplexor, decoder. Все файлы лежат в папке материалы. Ваши действия: File – Open

производите поиск afs – dcti.sut.ru – matherials – sk -3kurs – далее до списка файлов. Выбираете multiplexor, записываете в проект – File – Save As производите поиск– afs – dcti.sut.ru – home –students и далее к своему проекту. Для записанного файла создайте библиотечный модуль. Аналогичные действия проделайте для файла decoder.

12.Открыть файл графического редактора File – New – Block Diagram/Schematic File. Двумя кликами мыши в поле листа вызвать библиотеку символов и последовательно вывести на лист редактора модули add4, multiplexor, decoder. Кроме этих символов вывести из библиотеки на лист символы gnd, input и output. Входы модуля add4 a[3..0], b[3..0] соединить с примитивами input, выходы суммы S[3..0] - со входами data0[…..] модуля multiplexor, а выход c вывести и назвать линию c[0]. К примитиву gnd подвести 3 линии, поименовав их c[1], c[2] и c[3]. Вход data1 модуля multiplexor вывести и поименовать шину c[3..0]. Вход clk модуля multiplexor вывести через input.

Выходы модуля multiplexor columns[3..0], определяющие количество используемых сегментных индикаторов, вывести и поименовать линию col[3..0], а выходы outputdata[] соединить со входами indata[3..0]

модуля decoder. В таблицу значений параметров модуля multiplexor в строке значений WIDTH заменить 15 на 4. Для обозначения количества индикаторов взять отдельный примитив output. Выходы модуля decoder соединить с примитивом output. Поименовать входы

ивыходы полученного устройства. Для этого необходимо произвести два клика на названии pin name примитива input и output. Название может не совпадать с именем выводов модулей, но должно содержать одинаковое количество переменных. Например: A[3..0], B[3..0] для обозначения входов, COL[1..0], OUT[8..0] – для обозначения выходов.

13.Созданный файл графического редактора сохранить под именем проекта summ, установить старшим в иерархии и откомпилировать.

14.Открыть Pin Planner и произвести разводку выводов. Входы A[3..0] и

B[3..0] соединить с тумблерами (38, 40, 42, 48; 50, 52, 56, 58), вход clk с

генератором тактовой частоты макета(16). Выходы COL[1..0] с питанием индикаторов (109, 110), а выходы OUT[8..0] с сегментами,

начиная с нулевого (74, 73, 72, 70, 61, 79, 75, 69, 71). Откомпилировать файл планировщика.

15. Подключить макет. Вызвать программатор и, убедившись что загружен нужный файл, подключен требуемый тип кристалла и ByteBlaster, поставить галочку в клетку Program/Configure и нажать Start. Продемонстрировать преподавателю работу устройства на макете.

Прогр. 1

library ieee;

use ieee.std_logic_1164.all;

entity add1 is

port(a1,b1:in BIT;c1,s1:out BIT); end add1;

architecture struct_1 of add1 is begin

s1<= ((a1 and (not b1)) or ((not a1) and b1)); c1<= a1 and b1;

end struct_1;

Прогр. 2

library ieee;

use ieee.std_logic_1164.all;

entity add11 is

port(a2,b2,c1:in BIT;c2,s2:out BIT); end add11;

architecture struct_1 of add11 is begin

s2<=(a2 xor b2) xor c1;

c2<= (a2 and b2) or ((a2 xor b2)and c1); end struct_1;

Прогр.3

library ieee;

use ieee.std_logic_1164.all;

entity add4 is

port(a,b:in bit_vector(3 downto 0); s:out bit_vector(3 downto 0);

c : out bit); end add4;

architecture structural of add4 is component add1

port(a1,b1:in BIT;c1,s1:out BIT); end component;

component add11

port (c1,a2,b2:in BIT; c2,s2:out BIT);

end component;

signal c_in: bit_vector(2 downto 0); begin

p0: add1

port map(a1=>a(0),b1=>b(0),c1=>c_in(0),s1=>s(0)); p1: add11

port map(c1=>c_in(0),a2=>a(1),b2=>b(1),c2=>c_in(1),s2=>s(1)); p2: add11

port map(c1=>c_in(1),a2=>a(2),b2=>b(2),c2=>c_in(2),s2=>s(2)); p3: add11

port map(c1=>c_in(2),a2=>a(3),b2=>b(3),c2=>c,s2=>s(3)); end structural;

Отчет должен содержать программы работы устройств с их названиями и временными диаграммами их работы.

Лабораторная работа № 4. Исследование работы триггера.

Цель работы: изучение принципов функционирования простейшего конечного автомата.

Постановка задачи. На примере простейшей ячейки асинхронного RSтриггера и двух синхронных триггеров, D-триггера и JK-триггера, изучить назначение входов и принципы функционирования устройства. Для этого в пакете Quartus записать программы функционирования устройств на языке VHDL, а затем построить временные диаграммы. Рекомендуемые

интервалы времени:

RS-триггер: s – 80 нс с начальным уровнем 1, r – 50нс с начальным уровнем 0.

D – триггер: для сигналов синхронизации – 20нс, информационного D-входа – 90нс с начальным уровнем 1, для s – входа при базовом уровне 1 короткий 0 от 110 до 130 нс, для r – входа при базовом уровне 1 короткий 0 от 270 до 290 нс.

JK – триггер: для сигналов синхронизации – 20нс, информационных JKвходов J– 110нс с начальным уровнем 1 и K - 70 нс с начальным уровнем 0, , для s – входа при базовом уровне 1 короткий 0 от 150 до 170

нс, для r – входа при базовом уровне 1 короткий 0 от 30 до 50 нс.

.

Порядок выполнения работы.

1.Загрузить Quartus, создать проект.

2. Открыть VHDL файл, записать программу 4.1, отражающую работу асинхронного RSтриггера.

3.Сохранить файл, установить его старшим в иерархии и откомпилировать.

4.Открыть редактор временных диаграмм. Построить диаграммы работы. Интервалы выбрать из списка рекомендованных. Зарисовать диаграммы в отчет.

5.Открыть новый VHDL файл, записать программу 4.2, отражающую работу

D – триггера.

6.Сохранить файл под другим именем, установить его старшим в иерархии и откомпилировать.

7.Открыть редактор временных диаграмм. Построить диаграммы работы . Интервалы выбрать из списка рекомендованных. Зарисовать диаграммы в отчет.

8.Открыть новый VHDL файл, записать программу 4.3, отражающую работу

JK – триггера.

9.Дать имя файлу и сохранить его, установить старшим в иерархии и откомпилировать.

10. . Открыть редактор временных диаграмм. Построить диаграммы работы . Интервалы выбрать из списка рекомендованных. Зарисовать диаграммы в отчет.

При получении временных диаграмм для каждого типа триггера результаты демонстрировать преподавателю.

Отчет должен содержать программы работы устройств , подкрепленные проверкой на временной диаграмме.

Программа 4.1

library ieee;

use ieee.std_logic_1164.all;

entity trs is

generic (delay:time:=2 ns); port(

r,s: in std_logic; q,nq: out std_logic );

end trs;

architecture arch of trs is signal p,np: std_logic; begin

process (r,s) begin

if r='0' and s='0' then p<='1' after delay;

np<='1' after delay; elsif r='0' and s='1' then p<='0' after 2*delay;

np<='1' after delay;

elsif r='1' and s='0' then p<='1' after delay;

np<='0' after 2*delay;

elsif r='1' and s='1'then p<='X'; np<='X'; end if;

end process; q<=p; nq<=np; end arch;

Программа 4.2

library ieee;

use ieee.std_logic_1164.all;

entity tr is