Схема Минимум

Реализация схемы минимума матрицы в среде САПР- 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

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