Сдам Сам

ПОЛЕЗНОЕ


КАТЕГОРИИ







Разработка параметризированного модуля





 

Введение

 

Цель работы – освоение подготовки проектов, включающих описание и применение параметризированных модулей. Применение арифметических операций в описании функциональной логики устройства.

 

Необходимые сведения

 

Для построения арифметических устройств в языке Verilog имеются арифметические операции (см. табл. 4.1).

 

Таблица 4.1. Арифметические операции языка Verilog

Обозначение Применение Содержание
+ a + b Арифметическое сложение a и b
- a - b Вычитание b из a
- - b Отрицательное b
* a * b Умножение a на b
/ a / b Деление a на b
% a % b Остаток от целочисленного деления a на b
** a ** b Возведение a в степень b
<<< a <<< b Сдвиг a влево на b разрядов, правые разряды заполняются 0
>>> a >>> b Сдвиг a вправо на b разрядов, левые разряды заполняются битом знака, если выражение со знаком, или 0 в противном случае

 

Для удобного манипулирования данными разной разрядности в одном выражении и формирования шин с неодноименными линиями в языке Verilog предусмотрены операции конкатенации и тиражирования (см. табл. 4.2).

 

Таблица 4.2. Операции конкатенации и тиражирования

Обозначение Применение Содержание
{} {a,b} Соединяет a и b, формируя шину (вектор) для использования в многоразрядном выражении (a - старший разряд, b - младший)
{{}} {n{a}} Повторяет a n раз

 

При выполнении выражений с многоразрядными данными применяются следующие правила:

- все операнды расширяются до разрядности наибольшего операнда, включая операнд, стоящий слева от операции присваивания;

- разрядность операндов, образованных с помощью операций конкатенации и тиражирования, вычисляется перед выполнением выражения и рассматривается равноправно с разрядностью других операндов в выражении;

- операнды без знака расширяются слева нулями;

- операнды со знаком (signed) расширяются слева значением старшего значащего бита (бита знака).

При выполнении большинства арифметических операций все операнды выражения используются для установления того, как должна выполняться операция:

- если хотя бы один операнд является действительным, то применяется арифметика с плавающей точкой;

- если хотя бы один операнд является данным без знака, то применяется арифметика без знака;

- если все операнды со знаком (signed), то применяется арифметика со знаком;

- любой операнд может быть приведен к виду со знаком или без знака путем использования системных функций $signed и $unsigned.

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

Для обеспечения такой настройки модуля на определенную задачу в языке Verilog предусмотрен тип данных parameter. Объекты этого типа представляют собой константы реального времени, которым при разработке универсального параметризированного модуля присваивается какое-либо начальное значение. Затем, при каждой установке экземпляра модуля значение может быть переопределено. Само собой разумеется, код модуля формируется таким образом, чтобы при любых допустимых значениях параметра устройство корректно функционировало.

Ниже приведен пример параметризированного модуля, выполняющего логическую функцию И для двух шин любой разрядности (лист 4.1 и лист. 4.2). В универсальном параметризированном модуле pari разрядности входных и выходной шин указаны с использованием предварительно объявленной константы w типа parameter. Первоначальное значение разрядностей составляет 8. Затем, при установке экземпляра модуля в модуль верхнего уровня, например в испытательный файл (лист. 4.2), значение параметра может быть переопределено на любое (в примере разрядность - 16, переопределение выделено жирным шрифтом).

 

module pari(a,b,o);

parameter w = 8;

input[w-1:0] a,b;

output[w-1:0] o;

assign o = a & b;

endmodule

 

Листинг 4.1. Пример универсального параметризированного модуля

для выполнения булевой функции И с данными любой разрядности

 

 

module t_pari;

reg[15:0] ta,tb;

wire[15:0] to;

 

pari #(.w(16)) g1(ta,tb,to);

initial

begin

ta=0;

tb=0;

#2 ta=16'hffff;

#2 tb=16'hffff;

#2 ta=16'hff00;

#10 $stop;

end

endmodule

 

Листинг 4.2. Пример установки экземпляра параметризированного модуля

с новым значением параметра

 

Кроме так называемого встроенного (in-line) переопределения параметра, примененного выше (лист. 4.2), возможно его явное переопределение с помощью оператора defparam, при этом имя параметра необходимо предварять именем экземпляра модуля, например так:

defparam g1.w = 16;

 

Задание

 

1. Создать на языке Verilog в пакете ModelSim с использованием встроенных примитивов логики проект полного одноразрядного сумматора, реализующий техническое решение, представленное в таблице истинности (табл. 4.3), где a и b - одноразрядные слагаемые, ci - входной перенос (из предыдущего разряда), s - одноразрядная сумма и co - выходной перенос (в следующий разряд).

 

Таблица 4.3. Таблица истинности полного одноразрядного сумматора

ci a b s co
         
         
         
         
         
         
         
         

 

Легко видеть, что выходные функции s и co представленной таблицы истинности формируются следующими логическими выражениями:

 

s = (a ^ b) ^ ci; co = a & b | (a ^ b) & ci, (4.1)

 

где ^ - операция xor; & - операция and; | - операция or.

 

Рис. 4.1. Схема полного одноразрядного сумматора

Выражения (4.1) могут быть реализованы с помощью стандартных логических элементов в виде схемы рис. 4.1.

2. Подготовить испытательный файл к проекту, откомпилировать файлы проекта и, промоделировав проект, убедиться в его работоспособности или выявить имеющиеся ошибки.

3. Создать на базе массива модулей одноразрядных сумматоров многоразрядный (разрядность по указанию преподавателя) сумматор в соответствии со схемой, представленной на рис. 4.2.

Рис. 4.2. Схема многоразрядного сумматора

 

4. Подготовить испытательный файл к проекту, откомпилировать файлы проекта и, промоделировав проект, убедиться в его работоспособности или выявить имеющиеся ошибки.

5. Используя именованную константу parameter, арифметическую операцию сложения " + " и операцию конкатенации "{ }", подготовить проект параметризированного многоразрядного сумматора. Используя испытательный файл из п. 4, промоделировать проект.

6. Подготовить отчет. Отчет должен содержать листинги всех конструкторских файлов (на языке Verilog) и рисунки с временными диаграммами по каждому варианту реализации устройств.

 

Контрольные вопросы

 

1. Какие виды констант существуют в языке Verilog?

2. Назначение и порядок применения типа данных parameter.

3. Арифметические операции.

4. Операции конкатенации и тиражирования.

5. Правила расширения операндов и приведения типов в операциях.

6. Способы переопределения констант типа parameter.

7. Работа одноразрядного двоичного сумматора.

8. Какие недостатки, по вашему мнению, характеризуют схемное решение многоразрядного сумматора, приведенного на рис. 4.2?







Что способствует осуществлению желаний? Стопроцентная, непоколебимая уверенность в своем...

Живите по правилу: МАЛО ЛИ ЧТО НА СВЕТЕ СУЩЕСТВУЕТ? Я неслучайно подчеркиваю, что место в голове ограничено, а информации вокруг много, и что ваше право...

Что будет с Землей, если ось ее сместится на 6666 км? Что будет с Землей? - задался я вопросом...

Что делать, если нет взаимности? А теперь спустимся с небес на землю. Приземлились? Продолжаем разговор...





Не нашли то, что искали? Воспользуйтесь поиском гугл на сайте:


©2015- 2024 zdamsam.ru Размещенные материалы защищены законодательством РФ.