Схема Минимум
Реализация схемы минимума матрицы в среде САПР- Active HDL (Aldec) и разработка VERILOG-кода схемы. Описание модуля и числовые примеры работы схемы. Разработка и описание фрагментов кода. Разработка временных диаграмм и рассмотрение их примеров.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 11.11.2021 |
Размер файла | 291,4 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
МИНОБРНАУКИ РОССИИ
Санкт-Петербургский государственный электротехнический университет «ЛЭТИ» им. В.И. Ульянова (Ленина)
Кафедра САПР
Курсовая РАБОТА
по дисциплине «Схемотехника»
Тема: Схема Минимум
Студентка гр. 8363 Павкина А.А.
Преподаватель Фахми С.Ш.
Санкт-Петербург 2020
Задание на курсовую работу
Студентка Павкина А. А.
Группа 8363
Тема работы: Схема Минимум
Исходные данные:
В качестве входных данных в разрабатываемый модуль передаётся матица размером 8ґ8 (64 элементов) целых чисел v О{0, ЧЧЧ, 255}.
Содержание пояснительной записки: введение, теоретическая часть, основные определения, результаты работы программы, заключение, список используемых источников, приложение А -исходный код.
Предполагаемый объем пояснительной записки:
Не менее 15 страниц.
Дата выдачи задания: 18.03.2020
Дата сдачи реферата: 30.03.2020
Дата защиты реферата: 30.03.2020
Студентка Павкина А. А.
Преподаватель Фахми Ш.С.
Аннотация
Содержание курсовой работы состоит в реализации схемы минимума матрицы в среде САПР- Active HDL (Aldec), так же был разработан VERILOG-код схемы. С помощью разработанной программы можно найти минимальный элемент матрицы. Программный код, читается с легкостью и прост в понимании.
Summary
The content of the course project consists in the implementation of the application, the minimum matrix scheme was designed in the CAD environment- Active HDL (Aldec), as well as the VERILOG code of the scheme was developed. Using the developed program, you can find the minimum element of the matrix and get the output matrix of the same size, but each element of this matrix is equal to the minimum of the original matrix. The program code is easy to read and easy to understand.
Содержание
Введение
1. Теоретическая часть
1.1 Основные понятия
1.2 Описание модуля и числовые примеры работы схемы
1.3 Описание фрагментов Verilog или VERILOG кода
2. Практическая часть
2.1 Разработка и описание фрагментов кода
3. Временные диаграммы
3.1 Разработка временных диаграмм (ВД) и примеры ВД
Заключение
Список использованных источников
Приложение А Код программы схемы
Введение
матрица схема код диаграмма
Одним из важнейших назначений VERILOG является описание проектов дискретных устройств для автоматизированного проектирования микросхем. В основе технологии разработки микросхем (заказных СБИС или ПЛИС) лежит автоматическая трансляция VERILOG-описания дискретного устройства в схему на логическом уровне, которая выполняется с помощью компилятора-синтезатора. Здесь под синтезом понимается получение аппаратной модели, которая исполняет исходную VERILOG-программу и преобразование её в логическую схему. Причем подбор структуры модели, её логическая оптимизация по критериям минимума аппаратуры и максимума быстродействия с учетом элементного базиса целевой микросхемы выполняются автоматически. В качестве входных данных в разрабатываемый модуль передаётся матица размером 88 (64 элементов) целых чисел v {0, , 255}. Матрица передается по входной 8-и разрядной шине данных в разрабатываемый модуль и на выходе тоже получаем матрицу того размера 88.
1. Теоретическая часть
1.1 Основные понятия
VERILOG является составной аббревиатурой для VHSIC (высокоскоростная интегральная схема) HDL (язык описания оборудования). В качестве языка описания аппаратных средств он в основном используется для описания или моделирования схем. VERILOG - идеальный язык для описания схем, поскольку он предлагает языковые конструкции, которые легко описывают как параллельное, так и последовательное поведение, а также модель исполнения, которая устраняет неоднозначность, возникающую при моделировании параллельного поведения.
VERILOG обычно интерпретируется в двух разных контекстах: для моделирования и синтеза. При интерпретации для синтеза код преобразуется (синтезируется) в эквивалентные аппаратные элементы, которые моделируются. Только подмножество VERILOG обычно доступно для использования во время синтеза, а поддерживаемые языковые конструкции не стандартизированы; это функция используемого механизма синтеза и целевого аппаратного устройства. Когда VERILOG интерпретируется для моделирования, все языковые конструкции доступны для моделирования поведения аппаратного обеспечения.
1.2 Описание модуля и числовые примеры работы схемы
Рис. 1 Пример входной и выходной матриц
1.3 Алгоритм требуемого модуля
1) Считываем с входной шины исходную матрицу
2) Пусть максимальный элемент равен 255
3) Cравниваем данный элемент матрицы с взятым максимальным. Если максимальный элемент больше, чем элемент матрицы, заменяем его на элемент матрицы.
4) Составляем выходную матрицу, все элементы которой равны последнему минимальному значению.
5) Подаем выходную матрицу на выходную шину
1.4 Описание фрагментов VERILOG кода
В ходе написания кода мне понадобились знания по следующим разделам:
Типы данных в языке Verilog
Данные в языке Verilog предназначены для сохранения состояний (регистры) и для передачи состояний между моделируемыми объектами (цепи).
Возможные состояния линий связи
В языке Verilog данные могут принимать одно из четырех возможных состояний:
1 - представляет логическую 1 или значение «истинно» (true)
0 - представляет логический 0 или значение «ложно» (false)
Почти все типы данных в Verilog принимают одно из этих состояний за небольшим исключением: такой тип данных как event вообще не удерживает состояний, а тип trireg может принимать z-состояние только в начальный момент времени, до первой инициализации - в дальнейшем в это состояние он больше не переходит.
Регистры и цепи
Регистры и цепи являются двумя наиболее важными группами данных. Эти группы различаются по способу назначения данных и их удержания. Также они представляют собой различные логические структуры.
Цепи
Цепи представляют типы данных предназначенных для соединения между собой структурных объектов, например, логических вентилей. Цепи не удерживают своего состояния (за исключением типа trireg) их состояние дожно непрерывно удерживаться (continious assignment) выходом с логического вентиля или комбинационной схемы. Если к цепи не подключен источник (driver) то цепь переходит в состояние высокого импеданса. Исключение составляет цепь типа trireg которая удерживает предыдущее состояние.
Регистры
Регистры представляют собой элементы хранения данных. Ключевое слово для данных этого типа - reg. Регистры сохраняют свое состояние от одного назначения до другого. Операция назначения состояния действует как триггер который изменяет состояние элемента хранения данных. По умолчанию регистровые данные принимают неизвестное состояние (х).
Объявление цепей и регистров
Цепи объявляются по следующим синтаксическим правилам:
Элементы объявления заключенные в квадратные скобки являются необязательными.
nettype - тип цепи, может принимать значения wire, wand, wor, tri и т.д. drive_strength - определяет «мощность» источника (драйвера).
expand_range - определяет разрядность цепи, по умолчанию цепь одно-разрядная.
delay - определяет задержку распостранения по цепи в установленных временных единицах или иначе указывает задержку от момента назначения состояния цепи до его фактического установления.
list_of_variables - список объявляемых переменных, разделяемых запятой.
Есть отличия при объявлении переменной типа trireg:
trireg [charge_strength] [expand_range] [delay] < list_of _variables>;
trireg - ключевое слово. charge_strength - определяет «емкость» источника.
Регистры определяются иначе:
reg [range] <list_of _reg_variables>;
reg - ключевое слово.
range - определяет разрядность регистровой переменной, по умолчанию регистр одноразрядный.
list_of_reg_variables - список объявляемых регистровых переменных, разделяемых запятой.
Ключевые слова определяющие тип цепи приведены ниже:
«Мощность» определяется одним из следующих выражений: drive_strength: (<strength1>, <strength0>) или (<strength0>, <strength1>), где strength1 и strength0 опрределяют «мощность» источника в состояниях лог.1 и лог.0 соответственно. Ключевые слова определяющие «мощность» следующие:
Комбинации (highz1, highz0) или (highz0, highz1) являются недопустимыми. По умолчанию «мощность» цепи определяется как (strong1, strong0).
«Емкость» источника определяется так: charge_sterngth: (<capacitor_size>), где capacitor_size определяется одним из следующих ключевых слов:
По умолчанию «емкость» устанавливается как (medium).
Замечание: «мощность» или «емкость» источника могут иметь практическое значение при моделировании схемы с целью получить наиболее объективные результаты, большинство систем синтеза эти объявления игнорируют.
Объявления разрядности для цепи и регистра несколько отличаются:
Ключевые слова scalared и vectored определяют скалярная это цепь или это вектор. Различие заключается в следующем: скалярность подразумевает, что разработчик может использовать (читать или устанавливать) отдельные биты или часть (группу) битов. Векторизованная цепь может быть прочитана или установлена лишь целиком. По умолчанию цепь устанавливается как scalared. Границы диапазона msb и lsb представляются либо в числовой форме (константы) или в виде константных выражений - т.е. все входящие в выражение операнды являются константами. Кроме того границы диапазона не могут представляться отрицательными или дробными числами. При этом msb может быть меньше или равно lsb.
Замечание: По стандарту разрядность цепей или регистров не ограничивается, но системы синтеза могут иметь ограничения на разрядность переменных.
Многоразрядные цепи и регистры подчиняются арифметике по модулю 2 в степени n, где n - количество разрядов.
Временные задержки (delay) будут подробно рассмотрены в пункте ХХ.
1) Алгоритм нахождения минимального элемента на С++ (представлен далее.)
For i:=1 to n do
Begin
a[i,1]:=min[i];
For j:=1 to m do
If A[i,j]<min[i] then
Min [i]:=A[i,j];
End;
2. Практическая часть
2.1 Разработка и описание фрагментов кода
Объявление модуля и задание постоянных величин:
module Kursach ( inp,outp,clk,reset);
localparam len = 64;
localparam size = 8;
Объявление входных и выходных сигналов модулей:
output wire [0:size-1] outp ;
input wire [0:size-1] inp ;
inputwire clk;
inout wire reset;
Объявление регистров:
reg [0:size-1] ram [0:len-1];
reg [0:size-1] min;
reg state;
reg [5:0] counter;
reg [0:size-1] outp_reg;
reg reset_reg = 1;
Связка провода и регистра:
assign outp=outp_reg;
assign reset=reset_reg;
Тело кода:
Присваиваем новые значения переменным:
always @(posedge reset)
begin
min = 255;
state = 1'b0;
counter = 1'b0;
outp_reg = 1'b0;
reset_reg = 0;
end
Совершаем алгоритм считывания и поиска минимального элемента в матрице:
always @(inp)
begin
if (state == 1'b0)
begin
ram[counter] = inp;
if (min>inp)
begin
min=inp;
end
if (counter == 63)
begin
state = 1'b1;
counter = 1'b0;
end
else
begin
counter=counter+1;
end
end
end
Совершаем вывод через выходной порт матицы, значения которой равны минимальному элементу:
always @(posedge clk)
begin
if (state == 1'b1)
begin
if (counter == 63)
begin
reset_reg = 1'b1;
end
outp_reg = min;
counter=counter+1;
end
end
3. Временные Диаграммы
3.1 Разработка временных диаграмм (ВД) и примеры ВД
На вход подается 64 рандомных значения, которые последовательно записываются в массив ram[]. Временные диаграммы реализации данной программы можно наглядно увидеть на рис.1, рис.2 и рис.3.
Рис. 1 Результат успешной работы программы
Рис. 2 Результат успешной работы программы
Рис. 3 Результат успешной работы программы
Мы нашли минимальное значение для заданой матрицы, оно равно 1 и совпадает со значением, которое мы нашли простым путем сравнения чисел. Выходная матрица соответствует ожидаемой.
Заключение
В ходе выполнения работы был реализован модуль, способный вычислять минимальное значение входной матрицы и выдавать на выходе матрицу состоящую из элементов равных минимальному значению. Код написан на VERILOG. Также был изучен теоретический материал по теме курсовой работы. И были получены практические навыки в написании кода и создании временных диаграмм.
Список использованных источников
1. Математическое и программное обеспечение устройств с программируемой логикой. 2019 г. Фахми, Соколов
2. https://www.kit-e.ru/articles/circuit/2009_03_134.php - лекции по схемотехнике
3. Verilog.renerta.com
4. https://alterozoom.com/documents/8468.html
Приложение А
Исходный код
`timescale 1 ns / 1 ps
module Kursach ( inp,outp,clk,reset);
localparam len = 64;
localparam size = 8;
output wire [0:size-1] outp ;
input wire [0:size-1] inp ;
inputwire clk;
inout wire reset;
reg [0:size-1] ram [0:len-1];
reg [0:size-1] min;
reg state;
reg [5:0] counter;
reg [0:size-1] outp_reg;
reg reset_reg = 1;
assign outp=outp_reg;
assign reset=reset_reg;
always @(posedge reset)
begin
min = 255;
state = 1'b0;
counter = 1'b0;
outp_reg = 1'b0;
reset_reg = 0;
end
//Блок считывания входной матрицы
always @(inp)
begin
if (state == 1'b0)
begin
ram[counter] = inp;
if (min>inp)
begin
min=inp;
end
if (counter == 63)
begin
state = 1'b1;
counter = 1'b0;
end
else
begin
counter=counter+1;
end
end
end
always @(posedge clk)
begin
if (state == 1'b1)
begin
if (counter == 63)
begin
reset_reg = 1'b1;
end
outp_reg = min;
counter=counter+1;
end
end
endmodule
Размещено на Allbest.ru
Подобные документы
Определение понятия "алгоритм". Изображение схемы алгоритма. Разработка схемы действий и этапы решения задач. Рассмотрение функции разрабатываемого приложения. Распределение исходного кода по файлам проекта. Контрольный пример и описание результатов.
реферат [695,9 K], добавлен 28.09.2014Описание алгоритма и исходного кода программы формирования графовой модели заданного фрагмента принципиальной электрической схемы. Разработка схемы алгоритмов решения задачи. Результаты решения контрольных примеров, выполненные с помощью программы.
контрольная работа [47,8 K], добавлен 14.10.2012Структурная диаграмма программного модуля. Разработка схемы программного модуля и пользовательского интерфейса. Реализация программного модуля: код программы; описание использованных операторов и функций. Вид пользовательской формы с заполненной матрицей.
курсовая работа [215,3 K], добавлен 01.09.2010Процесс моделирования работы САПР: описание моделирующей системы, разработка структурной схемы и Q-схемы, построение временной диаграммы, построение укрупненного моделирующего алгоритма. Описание математической модели, машинной программы решения задачи.
курсовая работа [291,6 K], добавлен 03.07.2011Общая структура микропроцессора. Жизненный цикл программного обеспечения. Проектирование схемы операционного блока, создание временных диаграмм с использованием средств Microsoft Office и в среде OrCAD. Разработка алгоритма хранения значений констант.
курсовая работа [839,5 K], добавлен 24.07.2013Описание алгоритма работы и разработка структурной схемы МКС. Схема вывода аналогового управляющего сигнала, подключения ЖК-дисплея, клавиатуры и аварийного датчика. Разработка блок-схемы алгоритма главной программы работы МКС. Функция инициализации.
курсовая работа [5,7 M], добавлен 26.06.2016Спецификация требований к разрабатываемому приложению. Разработка структурной схемы интерфейса. Описание алгоритма шифрования DES. Разработка программного кода приложения "DES". Проведение исследования основных шагов для генерации ключей и шифрования.
курсовая работа [398,4 K], добавлен 13.12.2022Применение коды Файра при необходимости последовательной обработки информации. Синтез кодера и декодирующего устройства. Разработка структурной и принципиальной схемы кодера. Устранение временной задержки при декодировании. Выбор и обоснование кода Файра.
курсовая работа [401,6 K], добавлен 21.03.2013Разработка структурной схемы и поведенческой модели последовательного CAN-порта. Методика синтеза и синтез схем. Построение топологии и анализ результатов. Техническая прогрессивность новой конструкции. Verilog-описание механизма сигнализации ошибок.
дипломная работа [548,1 K], добавлен 01.06.2013Разработка функциональной и структурной схемы программного средства. Реализация основного модуля программы. Реализация модуля печати и модуля обновлений. Изучение взаимодействия информационных технологий, методов их интеграции и обмена данными.
дипломная работа [3,2 M], добавлен 27.10.2017