Lab6_1 (774792), страница 2
Текст из файла (страница 2)
Рис. 9.
3.2.2 Создание графических обозначений примитива и мегафункции
Помимо блоков, созданных в этом примере, файл *.bdf (Block Design File) блок-схемы проекта может содержать графические обозначения других функциональных узлов, включая примитивы, библиотеки параметризованных модулей (Library of Parameterized Modules — LPM) и другие мегафункции (megafunctions). Например D-триггера (примитив DFF). Все эти элементы вы можете использовать при создании блок-схем в редакторе Block Editor.
-
Дважды щелкните левой кнопкой мыши на пустом пространстве в окне редактора Block Editor.
-
В появившемся диалоговом окне Symbol (графические обозначения) показанном на рис. 10, в списке Libraries (библиотеки), откройте раздел библиотек …\Quartus\libraries, щелкнув символ "+". Откройте подразделы primitives и storage (элементы памяти).
-
В подразделе storage выберите примитив который вы хотите добавить в проект, графическое обозначение выбранного примитива появится в правом окне.
-
Нажмите кнопку ОК — графическое обозначение примитива DFF
будет привязано к указателю мыши. -
Поместите символ DFF на нужное место в окне редактора Block Editor и щелкните левой кнопкой мыши.
Проект с созданными примитивами: DFF, DFFE показан на рис.11.
Рис. 11
Аналогично можно добавить другие мегафункции например умножитель. Он будет создан на базе (как экземпляр) мегафункции lpm_mult. Для создания умножителя вы можете использовать встроенный мастер мегафункции MegaWizard, которая находится в диалоговом окне Symbol.
Выберите Create a new custom megafunction variation (создать новый вариант мегафункции) и нажмите кнопку Next , появится окно показанное на рис.12.
Рис.12
Мастер MegaWizard обеспечивает создание и редактирование файлов функциональных узлов проекта, на основе специализированных готовых мегафункции, включая функции библиотек параметризованных модулей (LPM). Мастер MegaWizard помогает легко и просто настроить параметры вашего узла.
-
В списке Available Megafunctions (доступные мегафункции) нажмите значок "+", чтобы раскрыть каталог arithmetic (арифметические мегафункции), затем выберите LPM_MULT (мегафункция умножителя).
-
На вопрос Which type of output file do you want to create? (какой тип выходного файла вы хотите создать?) выберите Verilog HDL (файл текстового описания на языке Verilog HDL).
-
На вопрос What name do you want for the output file? (какое имя вы хотите присвоить выходному файлу?) введите имя каталога, который вы хотите присвоить и нажмите кнопку Next. Результат заполнения окна представлен на рис. 13.
Рис. 13
При создании очередного функционального узла мастер MegaWizard предлагает выбрать значения его параметров и свойства входных/выходных портов, как показано на рис. 14..
-
На вопрос How wide should the ‘dataa’ input bus be? (какой разрядности должна быть входная шина 9ata?) введите 8.
-
На вопрос How wide should the ‘datab’ input bus be? (какой разрядности должна быть входная шина datab?) введите 8.
Рис. 14
Нажмите кнопку Finish, созданный вами умножитель появится в окне Symbol, как показано на рис.15.
Рис. 15
После создания умножителя с помощью мастера MegaWizard вы сможете использовать его в файле проекта. Проект после добавления мегафункции рис. 16.
Рис 16.
3.2.3 Создание обозначений входных/выходных выводов
Нажмите клавишу Symbol Tool на панели Block Editor. Появится диалоговое окно Symbol. Заметим, что при открытии этого окна с помощью кнопки панели инструментов будет включен режим Repeat-insert mode (режим повторной вставки элементов). В списке Libraries диалогового окна Symbol раздел …\Quartus\libraries, щелкните значок "+". Раскройте также раздел primitives , а затем - раздел pin(выводы). Выберите input, если вы хотите проставить входы вашей схемы, output – выходы. На рис. 17 показано как будет выглядеть окно Symbol после проделанных вами действий.
Нажмите кнопку Esc,если вы ввели все входные/выходные выводы.
Теперь созданным выводам необходимо присвоить имена. Для назначения имен выполните следующие действия:
-
Наведите указатель на первый входной вывод и дважды щелкните левой кнопкой мыши. В диалоговом окне Pin Properties (свойства выводов) откроется вкладка General .
-
Переименуйте выводы, введя в строке Pin name(s) (имена вывода(ов)) имя входа.
Проект с уже присвоенными именами входов/выходов показан на рис. 18.
Рис. 18.
3.2.4 Соединение функциональных элементов и блоков
Для рисования линий шины (Bus) или канала (Conduit) используйте кнопки на панели инструментов (Toolbar) редактора блок-схем (Block Editor):
Orthogonal Bus Tool (рисование ортогональных шин) и рисования ортогональных линий (Orthogonal Node Tool).
-
На панели инструментов (Toolbar) редактора блок-схем (Block Editor) нажмите кнопку Orthogonal Bus Tool.
-
Для определения начала шины щелкните левой кнопкой мыши на обозначении входа, затем, переместите указатель, для рисования линии, до границы блока у которого есть этот вход. При соединении шины с блоком, на краю блока, к которому вы присоединили вход автоматически появится символ распределителя (mapper). Распределитель позволяет назначать входные/выходные порты блока определенным сигналам шины.
На рис.19 показана схема со всеми подключенными входами/выходами.
3.2.5 Разводка сигналов между блоками
Пакет Quartus предоставляет различные пути разводки сигналов (map signals) между блоками (Blocks) и функциональными элементами (Symbols).
В этом разделе учебного пособия показано, как развести сигналы, которые не были разведены автоматически в режиме – smart.
| Метод разводки | Описание |
| Автоматическое соединение Smart | Если имена сигналов входов/выходов (l/Os) одного блока совпадают с именами соответствующих сигналам другого блока, соединения формируются автоматически. Вам не надо рисовать линии этих шин (Buses) или каналов (Conduits). Вам необходимо лишь указать, какие сигналы блоков должны оставаться неприсоединенными. Это необходимо для предотвращения автоматического выполнения их соединений. |
| Connection by name (соединение по именам проводов или шин) | Если имена соединяемых входов/выходов (I/O) блоков различны, то вы можете соединить их с каналом или шиной по имени (by Name). Для этого необходимо назначить каналу имя, соответствующее имени присоединяемого входа/выхода. Этот способ удобен для соединения каналов без отрисовки их линий на схеме. Для создания соединения между такими каналами и блоками сначала необходимо проверить, чтобы каждый такой канал соединялся с блоком одним концом и не имел физического соединения с другим блоком или функциональным элементом. Соединения двух каналов по имени (connection by name) можно выполнить, присвоив им одинаковые имена (полагая, что эти имена соответствуют именам соединяемых входов/выходов блоков). Таким же способом можно соединять по имени и отдельные проводники. |
| Задание соединений в явном виде с помощью распределителей сигналов (mappers) | Если имена входов/выходов соединяемых блоков различны, но блоки физически соединены - распределение сигналов можно задать в явном виде. Для этого необходимо присвоить имена выводов блоков сигналам шины, а затем распределить сигналы по соединяемым выводам блоков |
Чтобы назначить имена ряду сигналов для возможности соединения их по имени (Connection by Name) или логического соединения (Logical connection), выполните следующие действия:
1. С помощью указателя выбора (Selection Tool) выделите проводник.
-
Нажмите правую кнопку мыши и во всплывающем меню выберите Properties.
-
Если необходимо — перейдите на вкладку General (основные) в диалоговом окне Conduit Properties (свойства каналов).
-
В поле Conduit name (имя канала) введите имя.
Для выполнения соединений между блоками, имеющими различные имена, выполните следующие действия:
-
На шине, соединяющей блок функционального элемента, дважды щелкните по обозначению mapper (распределитель сигналов) на конце шины блока (рис. 21) -откроется диалоговое окно Mapper Properties (свойства распределителя).
Символ распределителя (трассировка) сигналов
Рис. 21.
-
Если необходимо - откройте в этом диалоговом окне вкладку General (рис. 22).
Рис. 22.
-
В списке Туре (тип вывода) выберите OUTPUT (выход).
-
Откройте вкладку Mappings.
-
В списке I/O on block (входы/выходы блока) выберите соответствующий вход.
-
В поле Signals in conduit (сигналы в канале) введите вывод, с которым вы хотите произвести соединение.
-
Для выполнения соединения нажмите кнопку Add — соединение появится в списке Existing mappings (рис. 23.).
Рис. 23.
Задание всех соединений в явном виде с помощью распределителей сигналов, показано на рис. 24
3.3 Создание описания на языке Verilog HDL
После создания блока необходимо создать файл описания этого блока (если описание еще не создано). Система Quartus позволяет сначала создать файл с основной (типовой) структурой описываемого блока, а затем наполнить эту структуру конкретным содержанием.
















