Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ВМТ_Методичка.doc
Скачиваний:
21
Добавлен:
15.03.2015
Размер:
107.01 Кб
Скачать

Проектирование 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 и производите поиск согласно пути к своему проекту, указанному в верхней строке экрана. Для записанного файла создайте библиотечный модуль. Аналогичные действия проделайте для файла decoder.

  12. Открыть файл графического редактора FileNewBlock 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. Продемонстрировать преподавателю работу устройства на макете.

Программа. 3.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;

Программа. 3.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.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;

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