Построение блока входных данных
В первую очередь необходимо на свободном пространстве схемы *.bdf по двойному щелчку мыши вызвать окно библиотеки символов Symbol (рисунок 27). Эти символы представляют собой либо уже конкретную схему, либо ее отдельные элементы (некоторые из них можно создать из готового шаблона мегафункций).
Рис. 27. – Окно стандартных библиотек проекта
В поле Name наберите «input». Программа сразу найдет в списке нужный элемент. Нажмите ОК, и на схеме появится входная шина. Щелкните по pin_name дважды или вызовите из контекстного меню команду Properties и укажите название шины и ее разрядность. В нашем случае это будет “x[15..0]”. Выберите слева, на панели инструментов, компонент Orthogonal Bus Tool (рисунок 28) и протяните линию от выхода элемента Input и назовите ее соответственно “x[15..0]” (разрядности в имени input/output и
названии соединенной с ними шин должны совпадать!).
Рис. 28. Инструмент Orthogonal Bus Tool
Далее необходимо создать регистры для хранения множимого и множителя, их характеристик, а также триггер для хранения знака множимого. В соответствии с первым способом умножения регистр множителя должен быть сдвиговым (сдвиг вправо) n-разрядным, регистр для хранения множимого также n-разрядный и регистр для хранения характеристик обоих операндов. Начнем со сдвигового регистра множителя (сдвиговый регистр сумм частичных произведений строится аналогично). Для этого снова, по двойному щелчку мыши в свободном пространстве схемы, вызовите библиотеку символов. Нажмите MegaWizard Plug-In Manager. Нажмите Next. Выберите раздел Storage/LPM_SHIFTREG и задайте в поле What name do you want for the output file? имя нового символа (рисунок 29). В данном случае это будет rgshift.
Рис. 29. MegaWizard Plug-In Manager
Разрядность данного регистра множителя будет равна одиннадцати (т.к. в программе для проверки операционной части входные данные представлены следующим образом: 11 разрядов выделено под мантиссу со знаком, 5 разрядов для характеристики). После цикла умножения (10 тактов) знак множителя будет в младшем разряде регистра и его можно использовать для определения знака результата. Следовательно, его можно считать позже для формирования знака результата без использования дополнительного триггера. Укажите параметры как на рисунке 30.
Рис. 30. Параметры сдвигового регистра
Далее нажмите Next, Next, Finish. Теперь Вы можете воспользоваться этим элементом когда угодно, т.к. он находится в библиотеке символов в каталоге Вашего проекта Project. На вход load необходимо подавать сигнал записи по положительному фронту сигнала. Вход shiftin – информационный вход старшего разряда. Для данного примера это будет «0», поэтому этот вход необходимо заземлить (в библиотеке символов выберите gnd и соедините его с помощью Orthogonal Node Tool в свою схему). Если на вход load не поступает сигнал записи, то регистр по стробирующему импульсу будет сдвигать данные на 1 разряд вправо.
Для того, чтобы избежать непредусмотренных сдвигов, необходимо использовать дополнительный вход enable, который отвечает за разрешение реакции на стробирующий сигнал. На вход data[10..0] необходимо подавать данные с входной шины. Для этого выберите Orthogonal Bus Tool, проведите линию шины и соедините ее со входом data[10..0], после чего укажите название данной шины. Особенность построения связей между входами и выходами элементов в том, что если задать одинаковые имена на выходе одного элемента и на входе другого, эти элементы считаются соединенными! В данном примере необходимо указать в имени входной шины данных регистра множителя сначала «откуда взять» знак операнда, а затем, через запятую, «откуда взять» мантиссу. Выход q[10..0] назовите rg1[10..0] (рисунок 31). Вход sclr – синхронный сброс регистра.
Рис. 31 Изображение модели сдвигового регистра в Quartus
Создадим регистры для хранения мантиссы и характеристики множимого (рисунок 32). MegaWizard Plug-In Manager>Next. Из раздела Storage выберите LPM_FF и задайте в поле What name do you want for the output file? имя символа. В данном случае это будет rg10 (мантисса множимого) и rg5 (характеристики). В How many flipflops do you want? укажите разрядность регистров (10 для мантиссы множимого и 5 для характеристики). Поставьте галочку в разделе Create a Clock Enable input. Далее 3 раза нажмите Next и затем Finish. Входы data обозначьте в соответствии с тем, какие данные должны заноситься в эти регистры (для характеристики – x[14..10], для мантиссы множимого – x[9..0]).
Рис. 32. Окно построения регистров хранения
Создадим триггер для хранения знака множимого (рисунок 33). Двойной щелчок мыши по пустому полю схемы. Укажите в поле Name «dff» (D – триггер). Нажмите ОК. Вход PRN триггера – установка в единицу, вход CLRN – сброс триггера. На информационный вход триггера подайте х[15], а выход триггера соедините с одним из входов логического элемента XOR (в библиотеке символов наберите в поле Name «xor»). На второй вход логического элемента XOR подайте значение знакового разряда мантиссы множителя из регистра rg1 (rg1[0]), который по своей сути также является осведомительным сигналом p[3]). Выход логического элемента XOR подпишите как «sign». Это будет знаком результата умножения.
Рис. 33. Триггер для хранения знака
Дата добавления: 2022-02-05; просмотров: 306;