Проектирование 4-разрядного сумматора.
Стр 1 из 2Следующая ⇒ Лабораторная работа № 1. Исследование дешифратора. Цель работы: получение основных навыков проектирования схем в редакторе пакета Quartus. Изучение функционирования простейшего КЦУ.
Задание на работу в лаборатории. 1. Зайдя в свою директорию, на рабочем столе правой клавишей мыши создать кнопку запуска. В открывшемся окне возле кнопки Имя записать Quartus, а возле кнопки Команда активировать Просмотреть и указать путь (файловая система/afs/dcti.sut.ru/soft/quartus). Затемнажать ОК, на рабочем столе появится ярлык Quartus. Пользуясь созданной кнопкой запустить пакет Quartus 7.1.
2.Открыть проект. Для этого в окне File верхнего меню выбрать New project wizard, проверить путь к проекту до папки пользователя, создать в ней папку для работы в лаборатории в течении семестра, например …/homes/students/m0./m0.n../xx, объявить имя проекта и файла верхнего уровня, нажать Next. Окно добавления внешних файлов пока проигнорировать, Next. Выбрать тип кристалла: Cyclone – верхнее окно меню, EP1C6T144C8 – нижнее окно меню. Нажать FINISH.
3. Открыть файл VHDL- редактора. Для этого проделать следующий путь: File – New – VHDL File. При таком выборе откроется окно редактора. На открывшемся поле записать программу функционирования дешифратора на 3 входа. Обратите внимание на то, что в программе имя устройства –dec. Замените его в соответствии с именем вашего проекта или файла верхнего уровня.
Программа 1
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, adr_i на y_i и data_out на adr_out и, т.к. оператор требует записи всех комбинаций, последняя строка описания поведения устройства имеет следующий вид: 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нс.
Порядок выполнения работы. Запустить Quartus 7.1. (/afs/dcti.sut.ru/soft/quartus). Открыть новый проект, прописав его в свою директорию ../homes/students/m0.../m0...n.../xx Создать файл VHDL File и записать в него программу для демультиплексора на 3 адресных входа по образцу, записанному в Прогр.1. Сохранить и откомпилировать файл. Открыть редактор временных диаграмм. Построить диаграммы работы устройства, следуя записанным рекомендациям. Выводы записывать в файл временных диаграмм списком. Для получения списка выводов шины кликнуть на знак + возле ее обозначения. Продемонстрировать временные диаграммы преподавателю. Вызвать планировщик (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. Скомпилировать файл. Результат разводки продемонстрировать преподавателю!
Вызвать программатор (Tools - Programmer). С помощью клавиши– Hardware Setup выбрать адаптер – Byteblaster MV. В строке с именем загружаемого файла поставить галочку на пункте Program/Configure. Убедится в том, что макет подключен и запустить программатор (клавиша Start). Результат работы продемонстрировать преподавателю. Отчет по данной работе должен содержать схему устройства, программу и графики работы.
Программа. 2.
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; построение многоуровнего проекта, изучение функционирования простейшего КЦУ. Задание на работу в лаборатории. Построить схему четырехразрядного сумматора, взяв за основу схемы полусумматора и полного одноразрядного сумматора. В редакторе временных диаграмм задать форму входных сигналов и получить диаграммы выходов.
Порядок выполнения работы. 4. Через ярлык на рабочем столе произвести загрузку пакета Quartus. 5. Создать новый проект в своей папке xx, назвав его summ. 6. Открыть VHDL файл и записать в него прогр. 1. Сохранить файл под именем add1 и установить его старшим в иерархии проекта. Для этого проделать путь от верхнего меню View –> Utility Windows –> Project Navigator. В левой верхней части экрана откроется окно навигатора. Список файлов открывается средней клавишей (Files). VHDL – файлы относятся файлам, образующим проект. Чтобы установить файл старшим в иерархии, необходимо выбрать его и кликом правой клавишей мыши выбрать Set a Top-Level Entity. 7. Откомпилировать файл. Во время компиляции обращайте внимание на сообщения компилятора, где указывается имя проекта и компилируемого файла. Эта информация всегда поможет вам избежать ошибок. 8. Пользуясь методикой работы 1, открыть файл временных диаграмм и построить диаграммы полусумматора, взяв интервал для a1 - 20ns, а для b1 – 30ns. Сохранить файл. Для симуляции временного файла надо воспользоваться строчкой Simulator Tool меню Processing. Через поиск найти название последнего временного файла и нажать Start. Просмотреть результат, нажав в том же окне справа Simulator Report. Проанализируйте полученный результат, запишите задержку.
9. Открыть новый VHDL файл и записать в него прогр. 2. Сохранить файл под именем add11 и установить его старшим в иерархии проекта. Откомпилировать файл. 10. Построить временные диаграммы одноразрядного сумматора, взяв интервалы для a1 - 20ns, для b1 – 30ns, для c1 – 50ns. Проанализировать результат симуляции. 11. Открыть новый VHDL файл и записать в него прогр. 3. Сохранить файл под именем add4 и установить его старшим в иерархии проекта. Откомпилировать файл. 12. Построить временные диаграммы четырехразрядного сумматора. При построении воспользуйтесь клавишей бокового меню, позволяющей изображать произвольные временные интервалы, на ней изображены два фронта со стрелкой в две стороны. Число a установить равным 10 на интервале 30ns и, затем, на интервале 50ns равным 3. Число b установить равным 7 на интервале 50ns и, затем на интервале 50ns равным 13. Для появления всех разрядов шины на диаграмме кликнуть на + возле имени шины. Проанализируйте результат симуляции. 13. Создать библиотечный модуль 4-разрядного сумматора. Для этого открыть VHDL-файл с прогр. 3, в меню File выберите последовательно Create/Update и Create Symbol Files for Current File. 14. Далее вам необходимо включить в свой проект два файла периферийных устройств. Имена файлов multiplexor, decoder. Все файлы лежат в папке материалы. Ваши действия: File – Open производите поиск afs – dcti.sut.ru – matherials – sk -3kurs – далее до списка файлов. Выбираете multiplexor, записываете в проект – File – Save As и производите поиск согласно пути к своему проекту, указанному в верхней строке экрана. Для записанного файла создайте библиотечный модуль. Аналогичные действия проделайте для файла decoder. 15. Открыть файл графического редактора 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] – для обозначения выходов.
16. Созданный файл графического редактора сохранить под именем проекта summ, установить старшим в иерархии и откомпилировать. 17. Открыть 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). Откомпилировать файл планировщика. 18. Подключить макет. Вызвать программатор и, убедившись что загружен нужный файл, подключен требуемый тип кристалла и 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;
Отчет должен содержать программы работы устройств с их названиями и временными диаграммами их работы.
Лабораторная работа № 4. Исследование работы триггера.
Цель работы: изучение принципов функционирования простейшего конечного автомата. Постановка задачи. На примере простейшей ячейки асинхронного RS-триггера и двух синхронных триггеров, D-триггера и JK-триггера, изучить назначение входов и принципы функционирования устройства. Для этого в пакете Quartus записать программы функционирования устройств на языке VHDL, а затем построить временные диаграммы. Рекомендуемые интервалы времени:
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|