Разработка устройства на ПЛИС
Предпосылки к развитию ПЛИС. Сравнительный анализ ПЛИС, СБИС и микроконтроллеров. Обзор аналогов: компараторы 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