Разработка устройства на ПЛИС

Предпосылки к развитию ПЛИС. Сравнительный анализ ПЛИС, СБИС и микроконтроллеров. Обзор аналогов: компараторы LM311 и LM339, на операционных усилителях, Р300Х, сравнительные устройства. Создание схемы устройства. Сравнение мировых производителей ПЛИС.

Рубрика Коммуникации, связь, цифровые приборы и радиоэлектроника
Вид курсовая работа
Язык русский
Дата добавления 11.07.2011
Размер файла 2,0 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Создание блок-схемы програмы.

Для начала, создадим «костяк» - алгоритм, по которому будет работать программа, а потом будем наращивать на него остальные части. Полученный результат можно увидеть на рисунке 4.3.

Рисунок 4.3 - Алгоритм работы программы

Написание кода программы

После разработки алгоритма, наращиваем программу, в точности следуя созданному плану:

1. Начало создания программы:

Заходим в Quartus, создаем новый проект, создаем в проекте VHDL-файл.

2. Подключение библиотек:

library ieee;

use ieee.std_logic_1164.all;

3. Назначение входов и выходов компаратора с отказоустойчивостью:

entity comparator is

generic (bits: natural:=4);

port (X: in bit_vector (bits-1 downto 0);

Y: in bit_vector (bits-1 downto 0);

K: in bit_vector (0 to 0);

output: out bit;

N: out bit;

notN: out bit); end comparator;

«X» и «Y» - четырехбитные входы сравнений, «K» - однобитный ('да' или 'нет') вход включения проверки компаратора, «output» - выход (равен единице, если сравниваемые значения равны и нулю, если они не равны), «N» - выход «норма» ('0' или '1'), «notN» - выход «ненорма» ('0' или '1').

4. Создание функции по переводу битовых значений в числовые:

function bin_to_int (signal rand: bit_vector (0 to bits-1))

return integer is

variable sum: integer:=0;

begin for i in 0 to bits-1 loop

if (rand(i)='1') then sum:=sum+2**(bits-1-i);

else null; end if; end loop; return sum; end bin_to_int;

Эта функция нужна нам для того, чтобы мы могли сравнить друг с другом многобитные сигналы (для четырех бит задача еще может быть решена другим способом, без использования этой функции, но если потребуется, скажем, сравнить друг с другом 32-битные или 64-битные сигналы, то это будет самый простой метод).

5. Назначение сигналов, которые курсируют в архитектуре устройства:

signal A:integer;

signal B:integer;

signal Z: bit_vector (bits-1 downto 0);

signal P: bit_vector (bits-1 downto 0);

Сигналы «A» и «B» заданы в числовом формате, ведь именно через них мы будем сравнивать значения, поступающие из различных источников. Это будут конкретно входы компаратора. Сигналы «Z» и «P» будут сигналами, благодаря которым выполняется функция контроля работоспособности устройства, поэтому их размерность аналогична размерности поступающих извне сигналов «X» и «Y».

6. Проверка на то, пришел ли сигнал на вход включения режима тестирования:

if (K(0)<'1') or (K(0)>'1') then

7. Если предыдущее условие выполняется, то есть режим тестирования не включен, то нам нужно выполнить преобразование значений входов в числовой формат:

A<=bin_to_int(X); B<=bin_to_int(Y);

и сравнить их:

if (A<B) then output <= '0'; notN<='0'; N<='0';

elsif (A>B) then output <='0'; notN<='0'; N<='0';

else output <= '1'; notN<='0'; N<='0';

end if;

Здесь же выводятся и значения выходов устройства (№8 в блок-схеме).

9. Если же режим тестирования включен:

elsif (K(0)='1')

то производится перебор всевозможных значений наших входов:

for i in 1 to 16 loop

if i=1 then z<= «0000»; end if; if i=2 then z<= «0001»; end if;

if i=3 then z<= «0010»; end if; if i=4 then z<= «0011»; end if;

if i=5 then z<= «0100»; end if; if i=6 then z<= «0101»; end if;

if i=7 then z<= «0110»; end if; if i=8 then z<= «0111»; end if;

if i=9 then z<= «1000»; end if; if i=10 then z<= «1001»; end if;

if i=10 then z<= «1010»; end if; if i=11 then z<= «1011»; end if;

if i=12 then z<= «1100»; end if; if i=13 then z<= «1101»; end if;

if i=14 then z<= «1110»; end if; if i=15 then z<= «1111»; end if;

А затем присваивание тех же значений другой переменной:

p<=z;

10, 11, 12, 13, 14. Сравниваем два значения через те же переменные «А» и «В»:

A<=bin_to_int(P); B<=bin_to_int(Z);

if (A<B) then output <= '0'; notN<='1'; N<='0'; findi:=i;

elsif (A>B) then output <='0'; notN<='1'; N<='0'; findi:=i;

else output <= '0'; notN<='0'; N<='1';

Закрываем весь цикл, если нашли ошибку в компараторе (выдается значение, при котором возникла эта ошибка), либо если перебор значений закончен:

exit loop when (findi>0) or (i=16);

15. Завершаем написание программы, закрывая все скобки:

end if;

end loop;

end if;

end process;

end diplom;

Проверка правильности функционирования программы

Для того, чтобы проверить правильность работы программы, создаем в Квартусе векторный файл («Vector Waveform file»), настраиваем параметры симуляции и задаем значения входных сигналов. После проведения симуляции, на выходе мы имеем именно то, что хотели (см. рисунок 4.4).

Рисунок 4.4 - Симулирование работы программы

Сначала все три выходных сигнала (они выведены наверх) были равны нулю, ведь на вход тестирования «К» значение не подавалось, а порты «Х» и «Y» были неравны ('1010' и '0001' соответственно). Затем значения входов стали одинаковыми ('0010'), и на выход пошла единица. Потом включили вход тестирования, и он показал «норму». В целом, как можно пронаблюдать, программа выполняет свои функции безошибочно. Задержка выхода от входа сосавляет около 9 наносекунд - точно так же, как и у программы, созданной схемотехнически. Также можно взглянуть на электрическую принципиальную схему созданной программы в просмотрщике Register Transfer Level:

Рисунок 4.5 - Схема созданной программы в RTL Viewer

Как можно заметить по данному рисунку, схема, созданная по программе, значительно компактнее, чем разработанная (впрочем, некоторые элементы в ней довольно громоздкие). Это позволяет судить об эффективности программы и ее качестве. То, что созданный проект довольно хорош, подтверждает хотя бы тот факт, что если заменить несколько строчек на, казалось бы, совершенно аналогичные выражения, а именно:

if (z= «1111») then z<= «0000»; end if; if (z= «1110») then z<= «1111»; end if;

if (z= «1101») then z<= «1110»; end if; if (z= «1100») then z<= «1101»; end if;

if (z= «1011») then z<= «1100»; end if; if (z= «1010») then z<= «1011»; end if;

if (z= «1001») then z<= «1010»; end if; if (z= «1000») then z<= «1001»; end if;

if (z= «0111») then z<= «1000»; end if; if (z= «0110») then z<= «0111»; end if;

if (z= «0101») then z<= «0110»; end if; if (z= «0100») then z<= «0101»; end if;

if (z= «0011») then z<= «0100»; end if; if (z= «0010») then z<= «0011»; end if;

if (z= «0001») then z<= «0010»; end if; if (z= «0000») then z<= «0001»; end if;

либо переменную «Z» вместо bit_vecor'а сделать обычным сигналом и изменять его по функции (for i in 1 to 16 loop z:=z+1;), то в результате в RTL Viewer наша схема из простой и компактной превращается в крайне громоздкую - более 23 страниц в RTL (см. рисунки 4.6 и 4.7).

Рисунок 4.6 - Первая страница электросхемы программы

Рисунок 4.7 - Последняя страница электросхемы программы

К таким последствиям приводит не только эта, но и многие другие, казалось бы, равнозначные, замены в теле цикла. Следовательно, можно сказать, что программа является достаточно компактной (хотя это и не было приоритетным направлением при ее разработке).

Размещено на Allbest.ru


Подобные документы

  • Анализ комбинационной схемы, минимизация логической схемы и синтез комбинационного устройства в заданных базисах логических элементов И-НЕ, ИЛИ-НЕ. Разработка и применение модуля для ПЛИС Spartan6, реализующего функционирование соответствующих схем.

    курсовая работа [1,5 M], добавлен 12.02.2022

  • Положения теории сигнальных микропроцессоров и КИХ-фильтров. Программируемая логическая интегральная схема (ПЛИС) и языки описания аппаратуры. Классификация ПЛИС, цифровая фильтрация. Цифровые процессоры обработки сигналов. Методы реализации КИХ-фильтров.

    дипломная работа [2,2 M], добавлен 07.04.2017

  • Модернизация более ранней разработки устройства на базе микроконтроллера MCS-48, предназначенного для увлажнения дыхательной смеси. Проектная процедура ПЛИС типа SOPC, реализованная на базе микроконтроллера MCS-48. Проектирование структурной схемы.

    курсовая работа [523,2 K], добавлен 03.05.2015

  • Структурная схема и модель устройства передачи данных. Моделирование датчика температуры, АЦП И ЦАП в Matlab и OrCAD. Модель кода с удвоением. Расчет кодовых комбинаций и пример исправления ошибки. Программирование ПЛИС для циклического кодирования.

    курсовая работа [690,4 K], добавлен 28.10.2011

  • Сравнительные характеристики беспроводного соединения Wi-Fi и WiMAX, принцип работы данных систем. Целесообразность использования WiMAX как технологии доступа, отличия фиксированного и мобильного вариантов. Пользовательское оборудование и кодирование.

    дипломная работа [11,5 M], добавлен 27.06.2012

  • Анализ вариантов реализации комбинационной схемы для различных типов программируемых логических интегральных схем (ПЛИС). Возможности программных пакетов Decomposer и WebPACK ISE. Описание сумматора на языке VHDL, его синтез при помощи пакета Decomposer.

    курсовая работа [3,0 M], добавлен 03.10.2010

  • Особенности проектирования микропроцессорного устройства "Цифровой осциллограф". Выбор микроконтроллера, описание периферийных устройств. Разработка принципиальной схемы устройства и программы для микроконтроллера, осуществляющей все функции устройства.

    курсовая работа [923,5 K], добавлен 24.12.2012

  • Основные схемы включения операционного усилителя и его характерные свойства. Исследование неинвертирующего и инвертирующего включения данных устройств, усилители переменного тока на их основе. Выпрямители и детекторы сигналов на операционных усилителях.

    курсовая работа [825,0 K], добавлен 19.03.2011

  • Обзор системы остаточных классов и основные теоретические сведения. Выбор оптимальных оснований СОК. Общая структура цифровых устройств. Разработка модулярного сумматора и умножителя, алгоритм работы и структурная схема, работа в Altera Quartus II v10.1.

    дипломная работа [4,5 M], добавлен 24.05.2013

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

    курсовая работа [752,7 K], добавлен 28.01.2021

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.