Задание для самостоятельной работы



Создайте устройство, реализующее операцию умножения с накоплением для четырех 4-разрядных чисел.

Реализуйте данное устройство несколькими способами – с помощью арифметических операций языка Verilog, используя совместно библиотечные функции LPM_MULT и LPM_ADD_SUB и с помощью библиотечной функции ALTMULT_ACCUM (MAC). Какой из вариантов реализации оказался наиболее оптимальным? Почему?

 

ЛР5 > Язык Verilog: Исследование арифметических устройств

Статьи по теме

1. МКР 1 > «Основипроектуванняелектронноїапаратури на ПЛІС – 1»: Перелікзавдань на модульнуконтрольну роботу

2. ЛР2> Исследование комбинационных устройств: особенности языка Verilog

3. ЛР3 > Реализация типовых комбинационных устройств

4. ЛР4> Исследование последовательностных логических устройств: Операторы Verilog

5. ЛР6> Исследование конечных автоматов

6. ЛР6> Модернизация процессорного устройства

7. ЛР7> Исследование многофункциональных устройств

8. ЛР8 > Разработка простого процессорного модуля на Verilog

Тема: Краткие теоретические сведения по языку Verilog (продолжение) – иерархия проекта, подключение модулей, блокирующее и неблокирующее присваивание, системные функции, построение арифметических устройств.

  Структура курса лабораторных работ: Основы Verilog 1. Знакомство со средой моделирования ModelSim 2. Исследование комбинационных устройств 3. Комбинационные устройства 4. Исследование последовательностных логических устройств 5. Исследование арифметических устройств 6. Исследование конечных автоматов 7. Исследование многофункциональных устройств 8. Простой процессорный модуль

Скачать Материалы к лабораторной работе по Verilog №5.

1. Теоретические сведения.

Подключение модулей в файле верхнего уровня иерархии

Основной проектной единицей на языке Verilog являются модули. При создании сложных устройств удобно использовать иерархический подход к их построению, т.е. в состав одного устройства может входить несколько модулей. Пришло время научиться подключать готовые модули к проектируемой схеме и связывать между собой. Обычно выход одного модуля соединяется со входом другого проводником, поэтому изменения выходного сигнала источника будут немедленно передаваться на вход приемника. Можно соединять порты ввода/вывода модуля с входами устройства. Связи между модулями могут быть типа wire и reg.

Синтаксис подключения модуля имеет следующий вид:

 

 

1 module_nameinstance_name(…ioports…);

 

Где module_name– имя вызываемого модуля, который необходимо подключить. Можно

подключить в одном проекте одновременно несколько одинаковых модулей, просто указав для них разные имена – instance_name. Здесь уместно вспомнить механизм объявления переменных в языках программирования. Сначала записывается тип переменной, а затем – имя переменной. Так и при подключении модуля – вначале записывается имя модуля, который необходимо подключить, а затем имя конкретного экземпляра этого модуля в вызывающем его файле. Далее, в круглых скобках, указывается подключение сигналов (типа reg или wire) к портам ввода-вывода модуля.

Рассмотрим следующий пример:

 

Рисунок 1. Иерархическое подключение модулей

 

Допустим, проектируемое устройство включает в себя три модуля (рис. 1): debounce,onepulse, clk_div, каждый из которых описан в соответствующем файле на языке Verilog (имя файла должно совпадать с именем модуля). Соответствующие входные и выходные порты этих модулей изображены на рисунке. Вход модуля изображается с левой стороны блока, выход – с правой. В устройстве необходимо объединить между собой эти модули в файле верхнего уровня иерархии. Соединение модулей осуществляются с помощью сигналов (тип reg) – Clock_100Hz,Clock_1MHz, PB1_Debounced. Файл описания устройства будет выглядеть следующим образом:

 

 

1 2 3 4 5 6 7 8 9 10 11 12 13 module hierarch(Clock_48MHz,PB1,PB1_Single_Pulse);   input Clock_48MHz,PB1;output PB1_Single_Pulse;   regClock_100Hz,Clock_1MHz,PB1_Debounced;   debounce debounce1(PB1,Clock_100Hz,PB1_Debounced);   clk_div clk_div1(Clock_48MHz,Clock_1MHz,Clock_100Hz);   onepulse onepulse1(PB1_Debounced,Clock_1MHz,PB1_Single_Pulse);   endmodule

 

 


Дата добавления: 2018-04-04; просмотров: 395; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!