Генератор системных IP-ядер (CORE Generator & Architecture Wizard)
Теперь рассмотрим более мощные средства для создания сложных элементов принципиальной схемы ПЛИС с помощью встроенного в САПР Xilinx ISE 10.1.i – Генератор системных IP-ядер (CORE Generator & Architecture Wizard). Это очень необходимый и удобный инструмент для разработчика. Он содержит в себе специальные генерируемые библиотеки символов, оптимизированные под конкретное семейство ПЛИС. Можно пользоваться и стандартной библиотекой элементов и на их основе строить более сложные узлы разрабатываемой схемы, но бывают моменты, что разрабатываемая схема должна работать, а она не работает. Это происходит из-за того, что разработчик не учитывает реальные задержки распространения сигнала внутри ПЛИС при работе на высоких скоростях, что на практике бывает очень часто. Поэтому рано или поздно придется воспользоваться данным средством — IP (CORE Generator & Architecture Wizard) и надо набраться терпения, чтобы понять как правильно использовать данное решение в своих разработках.
Вызываем Помощник создания нового источника (New Source Wizard) -> IP (CORE Generator & Architecture Wizard) и задаем имя файла – IP_CORE:

Выбираем необходимое для проекта IP-ядро из целого перечня готовых IP-ядер и следуем инструкциям Помощника создания нового источника:

Соглашаемся с выведенным в диалоговом окне отчетом о проделанной работе и нажимаем кнопку Finish:

Запускается диалоговое окно Генератора системных IP-ядер для выбранного IP-ядра – Distributed Memory Generator:

Далее разработчику предоставляется выбрать все необходимые параметры, которые должен сгенерировать Генератор системных IP-ядер, в частности ширину данных (Data Width), количество данных (Depth – глубина), тип создаваемой памяти (Memory Type):

В следующем окне предлагается выбрать входные и выходные параметры и опции, назначение которых более подробно можно посмотреть в описании на данное IP-ядро, которое вызывается при нажатии на кнопку View Data Sheet. Для простоты пока не будем ничего менять и продолжим работу дальше, нажав на кнопку Next:

А вот следующее диалоговое окно рассмотрим обязательно:

Данное окно предназначено для задания специального файла коэффициентов с расширением *.coe, в котором задаются постоянные или временные начальные данные. Прежде чем начать заполнение данного окна надо с начала создать в любом простом редакторе (Блокнот) сам файл с расширением *.coe по определенному правилу, который определяет правильный формат написания подобного файла:

После того, как файл rom_ip_core.coe будет сформирован и сохранен в рабочем каталоге разрабатываемого проекта, его можно добавлять с помощью кнопки Browse…, которая вызывает диалоговое окно Open:

Таким образом, добавляется Файл коэффициентов (Coefficients File):

Для проверки или просмотра заданных коэффициентов служит кнопка Show…, которая вызывает диалоговое окно для просмотра данных коэффициентов:

Для завершения работы Генератора системных IP-ядер для генерирования нашего IP-ядра нажимаем на кнопку Finish. Обращаю внимание на то, что процесс генерации IP-ядра требует некоторого времени, и в окне Сообщений нужно дождаться надписи – Successfully generated IP_CORE:

В САПР Xilinx ISE 10.1i осталась не большая недоработка, которая приводит к тому, что не всегда можно сразу добавить созданное IP-ядро в схемотехническом редакторе, даже если попытаться обновить изображение схемы нажатием по рабочему полю схемы ПЛИС. Поэтому рекомендую закрывать схемотехнический редактор. Проверить наличие создания IP-ядра в окне Источников (Sources for: ….):

Снова войти в схемотехнический редактор, и добавить IP-ядро в разрабатываемую схему ПЛИС точно так же, как добавляли новый символ — SYNC:

При этом, в редакторе символа можно уменьшить размер и переместить название символа как показано ниже:

При правильной работе САПР Xilinx ISE10.1i при создании IP-ядра выводит диалоговое окно, в котором нужно нажать кнопку Update, далее кнопку OK:

Чтобы изменить параметры IP_CORE достаточно нажать на иконку Push в панели инструментов после чего автоматически загружается Генератор системных IP-ядер (CORE Generator & Architecture Wizard) для созданного ранее IP-ядра IP_CORE, где вносятся все необходимые изменения, например новые данные коэффициентов. Обратите внимание только на то, что как только отредактировали файл rom_ip_core.coe, его желательно снова выбрать с помощью кнопки Browse… и для вступления новых параметров необходимо заново сгенерировать IP-ядро с помощью Генератора системных IP-ядер нажав на кнопку Finish. При этом на разрабатываемой схеме старое IP-ядро может изменить свое местоположение и размеры на новое IP-ядро и заново потребуется отредактировать схему. Неудобно, но это проблемы разработчиков САПР Xilinx ISE10.1i, которые почему то не хотят длительное время исправлять данную проблему и вряд ли будут ее исправлять, так как основной упор делается на использование языка программирования VHDL.
| Главная | Проекты | САПР | Программирование | Поддержка | Контакты | Новости | Ноу-хау | Карта сайта | |
| ©www.fpga-cpld.ru 2007-2019. Все права защищены. При копировании материалов ссылка на сайт www.fpga-cpld.ru обязательна. | |
Xilinx Announces Cost Optimized SPI-4.2 «Lite» IP Core
SAN JOSE, Calif., December 19, 2002 ¾ Xilinx, Inc., (NASDAQ:XLNX) today announced a new SPI-4.2 Lite LogiCORE™ product to offer customers with a low cost vehicle for designing the Optical Internetworking Forum’s (OIF) System Packet Interface Level 4 (SPI-4) Phase 2 standard running at 2.5 Gigabits per second (Gbps). Xilinx also announced support for its OIF compliant 10 Gbps SPI-4.2 core with single chip dynamic alignment on for use with its lowest speed grade Virtex-II Pro™ FPGAs. The SPI-4.2 core is quickly being adopted as the standard interconnect between 2.5Gbps and 10Gbps PHY devices and traffic management devices such as network processors. It is used in routers, switches, and other equipment typical of multi-service voice and data networks.
The new SPI-4.2 Lite core allows customers to implement a 2.5Gbps SPI-4.2 interface in the cost effective – 4 speed grade Virtex-II device. With the SPI-4.2 Lite core using only 10% of the Virtex-II XC2V3000 device, designers can choose a smaller, less expensive device to host a SPI-4.2 interface. The new SPI 4.2 Lite core is functionally compliant with the SPI-4.2 standard, allowing customers to easily migrate their systems to support data rates of 10Gbps. For interconnect designs running at a full 10Gbps, the SPI-4.2 core is now supported on Virtex-II Pro devices in both the –5 and –6 speed grades, running at 700Mbps and 800Mbps respectively.
«The sweet spot for new telecommunications equipment over the next 12 to 18 months will be for products running at 2.5 gigabits per second,» said Per Holmberg, director of programmable systems marketing at Xilinx. «However, telecom equipment suppliers want to be well positioned for the transition to 10Gbps data rates. Our compact SPI-4.2 Lite core, combined with the lowest speed grade Virtex-II FPGAs, provides a SPI-4.2 solution at the lowest possible price and a great foundation for scaling systems to higher data rates when the market moves in that direction.»
The company also announced today its SPI-4.2-to-XGMII (10Gigabit Media Independent Interface) bridge LogiCORE product. The bridge core allows designers to cut system development costs by using an off-the-shelf solution. The bridge core is ideally suited for the rapid development of Metro Networks utilizing OC-192 POS/ATM and 10-Gigabit Ethernet technologies. .
How to add primitives and IP cores from Xilinx to Active-HDL?
Primitives for schematic editor can be added directly from the Block Diagram Editor. Click on the symbol tool box to see the list of available primitives. Right click menu will give the option for selecting the libraries; here you can add the family you are working with. After adding family, for example Virtex 5 you would be able to use all the primitives from that device.
IP cores from the Xilinx coregen and architecture wizard can be added directly using TOOLS button from the design flow manager. TOOLS and ANALYSIS buttons allow you to use auxiliary application of your 3rd party vendor tool from within Active-HDL.
- Solutions
- FPGA Design
- Functional Verification
- Hardware Emulation Solutions
- Hardware Prototyping
- Requirements Management
- FPGA Embedded Solutions
- DO-254 Compliance
- Specialized Applications
- High Performance Computing
- Technical Resources
- Recorded Webinars
- White Papers
- Blog
- Application Notes
- What’s New
- Press Releases
- Events
- Let Us Help You
- Contact Us
- Ask Aldec
- Customer Portal
©2024 Aldec, Inc. All Rights Reserved.
Разработка базовых компонентов цифровых устройств, реализуемых на базе ПЛИС FPGA фирмы Xilinx®, с помощью генератора параметризированных модулей core Generator Текст научной статьи по специальности «Электротехника, электронная техника, информационные технологии»
Аннотация научной статьи по электротехнике, электронной технике, информационным технологиям, автор научной работы — Зотов Валерий
Основным инструментом разработки мультиплексоров при использовании средств CORE Generator является параметризированный модуль Bit Multiplexer.
i Надоели баннеры? Вы всегда можете отключить рекламу.
Похожие темы научных работ по электротехнике, электронной технике, информационным технологиям , автор научной работы — Зотов Валерий
Разработка базовых компонентов цифровых устройств, реализуемых на базе ПЛИС FPGA фирмы Xilinx®, с помощью генератора параметризированных модулей core Generator (часть 5)
Разработка базовых компонентов цифровых устройств, реализуемых на базе ПЛИС FPGA фирмы Xilinx, с помощью генератора параметризированных модулей core Generator. САПР серии Xilinx ISE
Разработка базовых компонентов цифровых устройств, реализуемых на базе ПЛИС FPGA фирмы Xilinx®, с помощью генератора параметризированных модулей core Generator
Разработка базовых компонентов цифровых устройств, реализуемых на базе ПЛИС FPGA фирмы Xilinx® с помощью генератора параметризированных модулей core Generator
Разработка базовых компонентов цифровых устройств, реализуемых на базе ПЛИС FPGA фирмы Xilinx®, с помощью генератора параметризированных модулей core Generator
i Не можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.
Текст научной работы на тему «Разработка базовых компонентов цифровых устройств, реализуемых на базе ПЛИС FPGA фирмы Xilinx®, с помощью генератора параметризированных модулей core Generator»
Разработка базовых компонентов цифровых устройств,
реализуемых на базе ПЛИС FPGA фирмы Xilinx®, с помощью генератора параметризированных модулей CORE Generator
Продолжение, начало в КиТ№ 2’2007
Создание мультиплексоров с помощью генератора параметризированных модулей CORE Generator
Основным инструментом разработки мультиплексоров при использовании средств CORE Generator является параметризирован-ный модуль Bit Multiplexer. Этот модуль предназначен для формирования N-входовых мультиплексоров (N в 1), которые осуществляют передачу данных с одного из входов (номер которого определяется значением кода (состоянием сигналов) на входах выбора) на выход мультиплексора. Входы данных и выбора представлены в виде шин соответствующей разрядности. Все мультиплексоры, создаваемые с помощью параметризирован-ного модуля Bit Multiplexer, рассчитаны на оптимальную реализацию в ПЛИС следующих
семейств: Spartan-II; Spartan-IIE; Spartan-3;
Spartan-3E; Virtex; Virtex-E; Virtex-II; Virtex-II
Особенности данного модуля:
• поддержка широкого диапазона разрядности входного сигнала (количества информационных входов) — от 2 до 256;
• возможность формирования выходов различного типа (комбинационного и/или регистрового);
• наличие в выходном регистре синхронных и асинхронных входов сброса и/или установки, а также входа разрешения синхронизации, включаемых в состав разрабатываемого мультиплексора по выбору пользователя;
• инициализация начального состояния выходного регистра при включении питания;
• применение технологии Xilinx Smart-IP, обеспечивающей наилучшую реализацию
генерируемого мультиплексора в выбранном кристалле;
• возможность генерации мультиплексоров в виде макросов с относительным размещением Relationally Placed Macro (RPM). «Мастер» настройки параметров рассматриваемого ядра мультиплексора содержит две диалоговые панели, одна из которых является основной, а другая — дополнительной. В основной диалоговой панели, вид которой представлен на рис. 29, определяются значения ключевых параметров формируемого мультиплексора.
Идентификатор для генерируемого вида мультиплексора задается в поле редактирования Component Name. Количество информационных входов в создаваемом мультиплексоре следует указать в поле редактирования Number of Inputs. По умолчанию в данном поле редактирования указано значение 2. Информация о допустимом диапазоне значений этого параметра приведена справа от поля редактирования Number ofInputs в виде строки Valid Range. После ввода значения, определяющего количество информационных входов мультиплексора, производится автоматическое вычисление разрядности шины выбора в соответствии с формулой К = Log2 (Number of Inputs). Если полученный результат вычислений не является целым числом, то он округляется в большую сторону до ближайшего целого значения.
Для выбора типа выходов в создаваемом мультиплексоре нужно воспользоваться группой кнопок с зависимой фиксацией Output Options (рис. 29). Если в формируемом мультиплексоре необходим только обычный (комбинационный) выход, то в нажатом состоянии должна быть зафиксирована кнопка Non Registered. Чтобы включить в состав генерируемого мультиплексора выходной регистр (точнее, выходной триггер), следует переключить в нажатое состояние кнопку Registered. В том случае, когда требуется сформировать
Q Parameters Core Overview Contact Wel) unks ЬдКфКЕ ____________________________________Bit Multiplexer
Component Name, f
Number of Inputs. |2 Valid Range. 2.256
SSET М Output Options
S fl- С Non Registered
CE СІК (• Registered Register Options. |
[ Generate ] I Dismiss | [ Data Sheet ] [ Version Info
Рис. 29. Основная диалоговая панель «мастера» настройки параметров ядра мультиплексора Bit Multiplexer (страница Parameters)
Clock Enable W Clock Enable
CE overrides Sync Controls Sync Controls ovemde CE
Asynchronous Settings r None Set c Clear
r None [Setl^~ Clear С Set and Clear
Рис. 30. Дополнительная диалоговая панель «мастера» настройки параметров ядра мультиплексора Bit Multiplexer
мультиплексор с обычным и регистровым выходами, нужно установить в нажатое состояние кнопку Both. Если выбран вариант мультиплексора с использованием выходного регистра, то становится доступной клавиша Register Options. С помощью этой клавиши можно открыть дополнительную диалоговую панель «мастера» настройки параметров формируемого мультиплексора, назначение и структура которой рассматриваются далее.
Параметр Create RPM позволяет изменить форму представления создаваемого мультиплексора для последующей реализации. Если необходимо сгенерировать мультиплексор в виде макроса с относительным размещением, нужно установить одноименный индикатор, расположенный во встроенной панели Layout (рис. 9), в состояние «включено».
Дополнительная диалоговая панель «мастера» настройки параметров ядра мультиплексора Bit Multiplexer предназначена для выбора параметров выходного регистра (триггера). Вид этой панели представлен на рис. 3О.
Если в выходном регистре генерируемого мультиплексора необходимо задействовать вход разрешения синхронизации и определить его приоритет по отношению к входам синхронного сброса и установки, следует воспользоваться индикатором состояния и кнопками, которые расположены во встроенной панели Clock Enable (рис. 3О). Для использования входа разрешения синхронизации нужно установить индикатор Clock Enable в состояние «включено». При этом если в выходном регистре также предусмотрены режимы синхронного сброса и/или установки, то следует определить соотношение приоритетов сигналов на входах разрешения синхронизации и сброса/установки с помощью группы кнопок с зависимой фиксацией CE Overrides. Когда в нажатом состоянии находится кнопка CE overrides Sync Control, сигнал на входе разрешения синхронизации
будет иметь более высокий приоритет по сравнению с сигналами на входах синхронного сброса/установки. Для изменения соотношения приоритетов указанных сигналов на противоположное необходимо нажать кнопку Sync Controls override CE.
Чтобы предусмотреть в выходном регистре формируемого мультиплексора режимы и соответствующие входы асинхронного сброса и/или установки, нужно воспользоваться кнопками с зависимой фиксацией, расположенными во встроенной панели Asynchronous Settings (рис. 3О). Активизация входов асинхронной установки или сброса в составе генерируемого описания мультиплексора осуществляется при переключении в нажатое состояние кнопки SET или Clear соответственно. Если в выходном регистре необходимо предусмотреть режимы и асинхронного сброса, и асинхронной установки, то следует зафиксировать в нажатом состоянии кнопку Set and Clear. При отсутствии входов асинхронного сброса и асинхронной установки (когда нажата кнопка None) можно определить начальное состояние выходного регистра при включении питания. Для этого нужно воспользоваться полем редактирования Power On Reset Value, которое становится доступным после нажатия кнопки None.
Чтобы задействовать в выходном регистре генерируемого мультиплексора режимы и соответствующие входы синхронного сброса и/или установки, следует использовать аналогичные кнопки с зависимой фиксацией, которые находятся во встроенной панели Synchronous Settings (рис. 3О). При одновременном присутствии входов синхронного сброса и синхронной установки нужно с помощью группы кнопок с зависимой фиксацией SET/Clear Priority определить приоритеты соответствующих сигналов. Для назначения более высокого приоритета сигналу на входе синхронного сброса по сравнению с сигналом на входе синхронной установки необходимо переключить в нажатое состояние кнопку Clear overrides SET. При нажатии кнопки SET overrides Clear более высокий приоритет будет иметь сигнал на входе синхронной установки.
В рассматриваемом параметризированном модуле мультиплексора Bit Multiplexer используется следующая система условных обозначений интерфейсных портов:
• MIN^] — информационные входы;
• SI^] — входы выбора;
• CLK — вход тактового сигнала;
• CE — вход сигнала разрешения синхронизации;
• ACLR — вход сигнала асинхронного сброса;
• ASET — вход сигнала асинхронной установки;
• SCLR — вход сигнала синхронного сброса;
• SSET — вход сигнала синхронной установки;
• O — комбинационный выход;
• Q — регистровый выход.
Из всех перечисленных выше идентификаторов в составе описания интерфейса сгенерированного мультиплексора и, соответственно, в его условном графическом образе будут присутствовать названия только тех входных и выходных портов, которые были указаны разработчиком в процессе определения его параметров. В качестве примера, демонстрирующего применение параметри-зированного модуля Bit Multiplexer, далее приводится VHDL-описание мультиплексора «32 в 1» с входом разрешения синхронизации, синхронным сбросом и синхронной установкой, комбинационным и регистровым выходами:
ENTITY mux_32 IS
M: IN std_logic_VECTOR(31 downto 0);
S: IN std_logic_VECTOR(4 downto 0);
O: OUT std_logic;
Q: OUT std_logic;
CLK: IN std_logic;
CE: IN std_logic;
SCLR: IN std_logic;
SSET: IN std_logic
ARCHITECTURE mux_32_a OF mux_32 IS
M: IN std_logic_VECTOR(31 downto 0);
S: IN std_logic_VECTOR(4 downto 0);
O: OUT std_logic;
Q: OUT std_logic;
CLK: IN std_logic;
CE: IN std_logic;
SCLR: IN std_logic;
SSET: IN std_logic
for all : wrapped_mux_32 use entity
i Не можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
Декларация сформированного мультиплексора тих_32 в составе УИБЬ-описания проектируемого устройства выполняется следующим образом:
component mux_32 port (
M: IN std_logic_VECTOR(31 downto 0);
S: IN std_logic_VECTOR(4 downto 0);
O: OUT std_logic;
Q: OUT std_logic;
CLK: IN std_logic;
CE: IN std_logic;
SCLR: IN std_logic;
SSET: IN std_logic );
— FPGA Express Black Box declaration attribute fpga_dont_touch: string;
attribute fpga_dont_touch of mux_32: component is «true»;
— Synplicity black box declaration attribute syn_black_box : boolean; attribute syn_black_box of mux_32: component is true;
Для создания экземпляров мультиплексора вида mux_32 нужно использовать следующий оператор:
Формирование параллельных регистров с помощью генератора параметризированных модулей CORE Generator
Генератор параметризированных модулей CORE Generator позволяет формировать параллельные регистры с различной разрядностью, выполненные на основе триггеров с динамическим или потенциальным управлением (защелок). Для создания регистров на базе D-триггеров следует применять параметри-
зированный модуль FD-based Parallel Register. Генерация параллельных регистров, построенных на основе триггеров-защелок, осуществляется с помощью параметризированно-го модуля LD-based Parallel Latch. Данные модули входят в состав группы базовых элементов цифровых устройств Basic Elements. Каждый из этих параметризированных модулей позволяет формировать соответствующие регистры для оптимальной реализации в ПЛИС широкого спектра семейств: Spartan-II; Spartan-IIE; Spartan-3; Spartan-3E; Spartan-3A; Virtex; QPRO Virtex Rad-Hard; QPRO Virtex Hi-Rel; Virtex-E; QPRO Virtex-E Military; Virtex-II; Virtex-II PRO и Virtex-4.
Ядра параллельных регистров FD-based Parallel Register и LD-based Parallel Latch обладают следующими функциональными возможностями. Это:
• поддержка широкого диапазона разрядности генерируемых регистров (от 1 до 256);
• возможность применения по выбору разработчика синхронных и асинхронных входов сброса и/или установки, входов инициализации, а также входа разрешения синхронизации;
• выбор способа представления формируемых регистров, в том числе в виде макросов с относительным размещением RPM. «Мастер» настройки параметров указанных ядер включает в себя одну основную диалоговую панель и одну дополнительную. Вид основной диалоговой панели для параметризированных модулей FD-based Parallel Register и LD-based Parallel Latch представлен на рис. 31 и 32 соответственно.
Основная диалоговая панель позволяет определить с помощью соответствующих полей редактирования название формируемого вида регистра Component Name и его разрядность Data Width. В этой же панели в виде индикатора состояния указывается значение параметра Create RPM, который определяет форму представления создаваемого регистра для последующей реализации. Состояние
«включено» соответствует генерации создаваемого регистра в виде макроса с относительным размещением.
Дополнительная диалоговая панель «мастера» настройки параметров ядер FD-based Parallel Register и LD-based Parallel Latch предназначена для выбора режимов и соответствующих управляющих входов генерируемого регистра. Чтобы открыть эту панель, нужно воспользоваться кнопкой Register Options. или Latch Options. расположенной на основной диалоговой панели «мастера» настройки (рис. 31, 32). Вид дополнительной панели аналогичен виду вспомогательной панели «мастера» настройки параметров ядра двоичного дешифратора, рассмотренного в первой части данной статьи (рис. 7, см. «КиТ» № 2 ‘2007, стр. 63). Выбор режимов и соответствующих входов сброса, установки или инициализации в создаваемом параллельном регистре осуществляется так же, как и в выходном регистре двоичного дешифратора.
В параметризированных модулях параллельных регистров FD-based Parallel Register и LD-based Parallel Latch приняты следующие условные обозначения интерфейсных портов:
• D [N:0] — информационные входы регистра;
• CLK — динамический вход тактового сигнала;
• G — статический вход тактового сигнала;
• CE — вход сигнала разрешения синхронизации;
• GE — вход разрешения тактового сигнала;
• ACLR — вход сигнала асинхронного сброса;
• ASET — вход сигнала асинхронной установки;
• SCLR — вход сигнала синхронного сброса;
• SSET — вход сигнала синхронной установки;
• AINIT — вход сигнала асинхронной инициализации;
• SINIT — вход сигнала синхронной инициализации;
• Q[N:0]— выходы регистра.
Рис. 31. Основная диалоговая панель «мастера» настройки параметров ядра параллельного регистра FD-based Parallel Register
Рис. 32. Основная диалоговая панель «мастера» настройки параметров ядра параллельного регистра LD-based Parallel Register
В качестве примера параллельного регистра, выполненного на базе D-триггеров, далее приводится описание 48-разрядного регистра fd_reg_48 с входами разрешения синхронизации, синхронного сброса и синхронной установки, который сгенерирован с помощью па-раметризированного модуля FD-based Parallel Register:
Чтобы использовать сформированный регистр fd_reg_48 в качестве компонента в составе УИБЬ-описания разрабатываемого устройства, необходимо поместить в раздел деклараций архитектурного тела следующие выражения:
— FPGA Express Black Box declaration attribute fpga_dont_touch: string;
attribute fpga_dont_touch of fd_reg_48: component is «true»;
— Synplicity black box declaration attribute syn_black_box : boolean;
attribute syn_black_box of fd_reg_48: component is true;
Для создания конкретного экземпляра регистра fd_reg_48 нужно использовать оператор, который имеет следующий вид:
Применение параметризированного модуля LD-based Parallel Latch для формирования параллельных регистров, выполненных на основе триггеров-защелок, демонстрирует представленное далее описание З6-разрядно-го регистра ld_reg_56 с входами разрешения тактового сигнала, асинхронного сброса и асинхронной установки:
i Не можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
ENTITY ld_reg_56 IS
D: IN std_logic_VECTOR(55 downto 0);
Q: OUT std_logic_VECTOR(55 downto 0);
GE: IN std_logic;
ACLR: IN std_logic;
ASET: IN std_logic
ARCHITECTURE ld_reg_56_a OF ld_reg_56 IS
D: IN std_logic_VECTOR(55 downto 0);
Q: OUT std_logic_VECTOR(55 downto 0);
GE: IN std_logic;
ACLR: IN std_logic;
ASET: IN std_logic
for all : wrapped_ld_reg_56 use entity
c_has_sclr => О v
Для декларации компонента ld_reg_56 в составе описания проектируемого устройства необходимо поместить в соответствующий раздел архитектуры следующую конструкцию:
component ld_reg_56 port (
D: IN std_logic_VECTOR(55 downto 0);
Q: OUT std_logic_VECTOR(55 downto 0);
GE: IN std_logic;
ACLR: IN std_logic;
ASET: IN std_logic );
— FPGA Express Black Box declaration
attribute fpga_dont_touch: string;
attribute fpga_dont_touch of ld_reg_56: component is «true»;
— Synplicity black box declaration
attribute syn_black_box : boolean;
attribute syn_black_box of ld_reg_56: component is true;
Создание экземпляров регистров вида ld_reg_56 в составе архитектуры разрабатываемого устройства осуществляется с помощью следующего оператора:
Подготовка описаний сдвиговых регистров с помощью генератора параметризированных модулей CORE Generator
В состав средств CORE Generator включены два параметризированных модуля, предназначенных для автоматической генерации сдвиговых регистров, которые имеют различную структуру, функциональные возможности и форму реализации в ПЛИС. Эти модули относятся к группе базовых элементов цифровых устройств Basic Elements. Для формирования обычных регистров сдвига, выполняемых на базе D-триггеров, следует использовать ядро FD-based Shift Register.
Отличия данного параметризированного модуля:
• возможность формирования регистров с различным направлением сдвига данных, в том числе и двунаправленных (реверсивных);
• поддержка широкого диапазона разрядности сдвигаемых данных (от 2 до 64);
• возможность использования в формируемом регистре сдвига как последовательного, так и параллельных входов данных;
component fd_reg_48 port (
D: IN std_logic_VECTOR(47 downto О);
Q: OUT std_logic_VECTOR(47 downto О); CLK: IN std_logic;
CE: IN std_logic;
SCLR: IN std_logic;
SSET: IN std_logic );
— synopsys translate_off Library XilinxCoreLib;
— synopsys translate_on ENTITY fd_reg_48 IS port (
D: IN std_logic_VECTOR(47 downto О);
Q: OUT std_logic_VECTOR(47 downto О);
CLK: IN std_logic;
CE: IN std_logic;
SCLR: IN std_logic;
SSET: IN std_logic );
ARCHITECTURE fd_reg_48_a OF fd_reg_48 IS — synopsys translate_off component wrapped_fd_reg_48 port (
D: IN std_logic_VECTOR(47 downto О);
i Не можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
Q: OUT std_logic_VECTOR(47 downto О);
CLK: IN std_logic;
CE: IN std_logic;
SCLR: IN std_logic;
SSET: IN std_logic );
— Configuration specification for all : wrapped_fd_reg_48 use entity
XilinxCoreLib.C_REG_FD_V7_0(behavioral) generic map(
c_width => 48, c_has_sinit => О, c_sinit_val =>
«ОООООООООООООООООООООООООООООООООООООООООООООООО», c_has_ce => 1, c_ainit_val =>
«ОООООООООООООООООООООООООООООООООООООООООООООООО», c_sync_enable => 1, c_has_aset => О, c_enable_rlocs => 1, c_has_aclr => О, c_has_sset => 1, c_sync_priority => 1, c_has_ainit => О, c_has_sclr => 1 );
— synopsys translate_on BEGIN
— synopsys translate_off Ш : wrapped_fd_reg_48 port map (
— synopsys translate_on END fd_reg_48_a;
Рис. 33. Основная диалоговая панель «мастера» настройки параметров ядра сдвигового регистра FD-based Shift Register (страница Parameters)
• возможность формирования сдвиговых регистров не только с последовательным, но и параллельным выходом;
• инициализация начального состояния формируемого регистра сдвига при включении питания;
• возможность использования в создаваемом сдвиговом регистре синхронных и асинхронных входов сброса и/или установки, а также входа разрешения синхронизации;
• применение технологии Xilinx Smart-IP, обеспечивающей наилучшую реализацию генерируемого регистра сдвига в выбранном кристалле ПЛИС;
• возможность генерации сдвиговых регистров в виде макросов с относительным размещением RPM.
Выбор параметров формируемого регистра сдвига осуществляется с помощью соответствующего «мастера» настройки, в составе которого используются две диалоговые панели, одна из которых является основной, а другая — дополнительной. Вид страницы Parameters основной диалоговой панели представлен на рис. 33. Данная страница диалоговой панели позволяет определить название создаваемого типа сдвигового регистра, его разрядность, направление сдвига, состав информационных входов и выходов, а также способ заполнения регистра при выполнении операции сдвига.
Идентификатор формируемого типа регистра сдвига и его разрядность указываются в полях редактирования Component Name и Register Width соответственно. Для определения направления сдвига данных в создаваемом регистре следует воспользоваться группой кнопок с зависимой фиксацией Operation (рис. 33). Если необходимо сформировать регистр, выполняющий сдвиг данных в направ-
лении от младшего к старшему значащему разряду, то необходимо зафиксировать в нажатом состоянии кнопку LSB to MSB. Чтобы создать регистр, осуществляющий сдвиг записываемых данных в обратном направлении (от старшего значащего разряда к младшему), нужно переключить в нажатое состояние кнопку MSB to LSB. Для генерации двунаправленного сдвигового регистра следует установить в нажатое состояние кнопку Bidirectional. В этом случае в формируемом регистре автоматически добавляется дополнительный вход управления LSB_2_MSB, уровень сигнала на котором определяет направление сдвига данных. Наличие сигнала высокого логического уровня на этом входе соответствует сдвигу данных, выполняемому в сторону старшего значащего разряда. При поступлении на данный вход сигнала низкого логического уровня сдвиг данных будет осуществляться в противоположном направлении (в сторону младшего значащего разряда).
Выбор информационных входов в генерируемом регистре сдвига осуществляется с помощью двух индикаторов состояния, расположенных во встроенной панели Input Options (рис. 33). Чтобы задействовать в создаваемом сдвиговом регистре последовательный вход данных, нужно установить в состояние «включено» индикатор Serial Data Input. Для использования в формируемом регистре входов параллельной загрузки данных необходимо переключить в состояние «включено» индикатор Parallel Data Input. При этом кроме шины параллельной загрузки данных, разрядность которой совпадает с разрядностью генерируемого регистра, добавляется вход управления параллельной загрузкой. Высокий логический уровень сигнала на этом входе разрешает запись в регистр информа-
ции, представленной на входах параллельной загрузки данных. После установки активного уровня сигнала на входе разрешения параллельной записи соответствующая информация заносится в регистр по следующему фронту сигнала синхронизации.
Тип выходов, формируемых в создаваемом сдвиговом регистре, выбирается с помощью двух индикаторов состояния, представленных во встроенной панели Output Options (рис. 33). Для генерации регистра сдвига с последовательным выходом следует установить в состояние «включено» индикатор Serial Data Output. При необходимости использования параллельных выходов в генерируемом регистре нужно перевести в активное состояние индикатор Parallel Data Output.
Чтобы задействовать в формируемом регистре сдвига режимы и соответствующие входы синхронного и асинхронного сброса и/или установки, а также вход разрешения сигнала синхронизации, следует воспользоваться дополнительной диалоговой панелью «мастера» настройки рассматриваемого ядра. Эта панель открывается при нажатии кнопки Register Options. которая также находится во встроенной панели Output Options. Структура дополнительной панели «мастера» настройки параметров ядра сдвигового регистра FD-based Shift Register аналогична структуре вспомогательной панели «мастера» настройки параметров ядра двоичного дешифратора (рис. 7). Выбор требуемых режимов и соответствующих входов управления в создаваемом сдвиговом регистре производится таким же образом, как и в выходном регистре двоичного дешифратора.
Группа кнопок с зависимой фиксацией Fill Data, расположенных в одноименной встроенной панели (рис. 33), предназначена для выбора источника данных, записываемых в освобождающийся при сдвиге разряд регистра. Число и состав доступных кнопок в этой группе зависит от наличия или отсутствия в формируемом сдвиговом регистре последовательного входа данных и выбранного направления сдвига. Если последовательный вход данных не задействован, то кнопки Fill with Zeros, Fill with Ones, Wrap from LSB и Wrap from MSB находятся в доступном состоянии. При этом если в нажатом состоянии зафиксирована кнопка Fill with Zeros, то в освобождающийся разряд регистра при выполнении сдвига данных записывается нулевое значение. Когда в нажатое состояние переключается кнопка Fill with Ones, в этот разряд регистра будет загружаться единичное значение. При установке в нажатое состояние кнопки Wrap from LSB освобождающийся разряд регистра будет заполняться значением, поступающим с выхода младшего значащего разряда этого регистра. При фиксации в нажатом состоянии кнопки Wrap from MSB в освобождающийся разряд регистра будет записываться значение, поступающее с выхода старшего значащего разряда. Кнопка Wrap
Dynamic доступна только при отсутствии последовательного входа данных в генерируемом двунаправленном сдвиговом регистре. При переключении данной кнопки в нажатое состояние источник данных, записываемых в освобождающийся при сдвиге разряд, определяется уровнем сигнала на входе установки направления сдвига. Если сигнал на этом входе управления соответствует высокому логическому уровню, то в освобождающийся разряд регистра сдвига записывается значение младшего значащего разряда. Если на входе установки направления сдвига — низкий логический уровень сигнала, то в освобождающийся при сдвиге разряд заносится значение старшего значащего разряда этого регистра. При использовании в составе создаваемого регистра последовательного входа данных доступной является только кнопка Fill from Pin, которая автоматически устанавливается во включенное состояние. Тогда разряд регистра, освобождающийся при сдвиге данных, будет заполняться значением, которое поступает на последовательный вход.
Выбор формы представления создаваемого сдвигового регистра для последующей реализации осуществляется с помощью индикатора состояния Create RPM, расположенного во встроенной панели Layout (рис. 33), тем же способом, что и в рассмотренных ранее параметризированных модулях.
В VHDL-описаниях сдвиговых регистров, подготовленных с помощью параметризиро-ванного модуля FD-based Shift Register, применяется следующая система условных обозначений интерфейсных портов:
• SDIN — последовательный вход данных;
• D [N:0] — входы параллельной загрузки данных;
• CLK — вход тактового сигнала;
• CE — вход сигнала разрешения синхронизации;
• P_LOAD — вход разрешения параллельной загрузки данных;
• LSB_2_MSB — вход установки направления сдвига данных в регистре;
• ACLR — вход сигнала асинхронного сброса;
• ASET — вход сигнала асинхронной установки;
• SCLR — вход сигнала синхронного сброса;
• SSET — вход сигнала синхронной установки;
• AINIT — вход сигнала асинхронной инициализации;
• SINIT — вход сигнала синхронной инициализации;
• SDOUT — последовательный выход регистра;
• Q[N:0] — параллельные выходы регистра. Примером сдвигового устройства, сформированного с помощью параметризирован-ного модуля FD-based Shift Register, является 32-разрядный реверсивный регистр сдвига fd_sh_reg32. В составе данного сдвигового регистра используются последовательные и параллельные входы и выходы данных, входы
разрешения сигнала синхронизации, синхронного сброса, синхронной установки и асинхронной инициализации содержимого. При включении напряжения питания в данный регистр автоматически записывается значение F0F0F0F0. Сгенерированное VHDL-описание регистра fd_sh_reg32 выглядит следующим образом:
— synopsys translate_off Library XilinxCoreLib;
— synopsys translate_on ENTITY fd_sh_reg32 IS port (
CLK: IN std_logic;
SDIN: IN std_logic;
SDOUT: OUT std_logic;
P_LOAD: IN std_logic;
D: IN std_logic_VECTOR(31 downto 0);
Q: OUT std_logic_VECTOR(31 downto 0);
LSB_2_MSB: IN std_logic;
CE: IN std_logic;
SCLR: IN std_logic;
SSET: IN std_logic;
AINIT: IN std_logic );
ARCHITECTURE fd_sh_reg32_a OF fd_sh_reg32 IS — synopsys translate_off component wrapped_fd_sh_reg32 port (
CLK: IN std_logic;
SDIN: IN std_logic;
SDOUT: OUT std_logic;
P_LOAD: IN std_logic;
D: IN std_logic_VECTOR(31 downto 0);
Q: OUT std_logic_VECTOR(31 downto 0);
LSB_2_MSB: IN std_logic;
CE: IN std_logic;
SCLR: IN std_logic;
SSET: IN std_logic;
AINIT: IN std_logic );
for all : wrapped_fd_sh_reg32 use entity
XilinxCoreLib.C_SHIFT_FD_V7_0(behavioral) generic map(
c_has_aset => 0, c_has_d => 1, c_sync_priority => 1, c_has_sclr => 1, c_fill_data => 5, c_width => 32, c_enable_rlocs => 1, c_ainit_val => «11110000111100001111000011110000», c_has_ce => 1, c_has_aclr => 0, c_sync_enable => 0, c_has_ainit => 1, c_sinit_val => «00000000000000000000000000000000», c_has_sdout => 1, c_has_sset => 1, c_has_sinit => 0, c_has_q => 1, c_shift_type => 2, c_has_sdin => 1, c_has_lsb_2_msb => 1 );
— synopsys translate_on BEGIN
— synopsys translate_off U0 : wrapped_fd_sh_reg32 port map (
— synopsys translate_on END fd_sh_reg32_a;
При использовании сформированного регистра сдвига fd_sh_reg32 в качестве компонента необходимо для его декларации поместить в соответствующий раздел VHDL-описания проектируемого устройства следующую последовательность выражений:
i Не можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
component fd_sh_reg32 port (
CLK: IN std_logic;
SDIN: IN std_logic;
SDOUT: OUT std_logic;
P_LOAD: IN std_logic;
D: IN std_logic_VECTOR(31 downto 0);
Q: OUT std_logk_VECTOR(31 downto 0);
LSB_2_MSB: IN std_logic;
CE: IN std_logic;
SCLR: IN std_logic;
SSET: IN std_logic;
AINIT: IN std_logic
— FPGA Express Black Box declaration
attribute fpga_dont_touch: string;
attribute fpga_dont_touch of fd_sh_reg32: component is «true»;
— Synplicity black box declaration
attribute syn_black_box : boolean;
attribute syn_black_box of fd_sh_reg32: component is true;
Для описания конкретных экземпляров компонента fd_sh_reg32 в составе архитектуры разрабатываемого устройства следует воспользоваться приведенным далее оператором, в котором нужно изменить названия цепей (сигналов), подключаемых ко входам и выходам сдвигового регистра:
Параметризированный модуль RAM-based Shift Register предназначен для генерации сдвиговых регистров, реализуемых на базе таблиц преобразования LUT конфигурируемых логических блоков CLB кристаллов семейств FPGA. При этом используемые таблицы преобразования конфигурируются в форме распределенного ОЗУ, построенного на основе регистров сдвига SRL16 или SRL32 (в зависимости от применяемого семейства ПЛИС). В отличие от рассмотренного ранее ядра сдвигового регистра FD-based Shift Register, пара-метризированный модуль RAM-based Shift Register позволяет создавать устройства, выполняющие операцию сдвига (задержки на определенное количество тактов) одновременно для нескольких последовательных потоков данных. Иными словами, создаваемые устройства осуществляют операции сдвига (задержки) многоразрядных данных, представленных в параллельном двоичном коде. Поэтому последовательные входы и выходы данных в таком устройстве представляют собой шины,
Рис. 34. Стартовая диалоговая панель «мастера» настройки параметров ядра сдвигового регистра RAM-based Shift Register, реализуемого на основе распределенной памяти ПЛИС
Рис. 35. Вторая диалоговая панель «мастера» настройки параметров ядра сдвигового регистра RAM-based Shift Register, реализуемого на основе распределенной памяти ПЛИС
количество разрядов в которых определяется разрядностью ячеек распределенной памяти, используемой для реализации регистров. При этом необходимо различать понятия разрядности (длины) сдвигового регистра, которая определяет величину задержки появления информации на выходах, и разрядности входных и выходных данных. По сути, регистры сдвига, генерируемые с помощью ядра RAM-based Shift Register, представляют собой запоминающие устройства, работающие по принципу «первый вошел — первый вышел» (FIFO — first-in, first-out).
Параметризированный модуль RAM-based Shift Register формирует высокоскоростные устройства сдвига данных, которые оптимальным образом реализуются в ПЛИС следующих семейств: Spartan-II, Spartan-IIE, Spartan-3, Automotive Spartan3, Spartan3E, Automotive Spartan3E, Spartan-3A, Virtex, QPro Virtex Rad-Hard, QPro Virtex Hi-Rel, Virtex-E, QPro VirtexE Military, Virtex-II, Virtex-II PRO, Virtex-4 и Virtex-5. Данное ядро обладает следующими отличиями. Это:
• возможность формирования регистров сдвига с фиксированной или переменной длиной (задержкой поступающих данных);
• поддержка широкого диапазона разрядности входной шины данных (от 1 до 256);
• поддержка расширенного диапазона разрядности (длины) генерируемых регистров сдвига (от 1 до 1024 для регистров с переменной задержкой поступающих данных, от 1 до 1088 — для регистров с фиксированной задержкой);
• возможность создания сдвиговых регистров с входом разрешения синхронизации;
• инициализация начального состояния формируемых сдвиговых регистров при включении питания;
• возможность применения в составе генерируемого сдвигового устройства выходного регистра, реализуемого на основе D-триггеров;
• возможность использования в выходном регистре синхронных и асинхронных входов сброса и/или установки;
• возможность выбора одного из двух критериев оптимизации генерируемых сдвиговых регистров: достижение максимального быстродействия или минимизация объема используемых ресурсов.
«Мастер» настройки параметров ядра RAM-
based Shift Register включает в себя три диалоговые панели. Стартовая диалоговая панель, вид которой приведен на рис. 34, предназначена для выбора типа создаваемого сдвигового регистра, его разрядности, разрядности поступающих данных, критерия оптимизации и параметров тактирования.
Выбор типа создаваемого регистра сдвига производится с помощью группы кнопок с зависимой фиксацией Register Type. Для генерации сдвигового регистра с фиксированной разрядностью (длиной) нужно установить в нажатое состояние кнопку Fixed Length. Чтобы сформировать регистр сдвига, в котором количество последовательно сдвигаемых разрядов (количество тактов задержки) может изменяться в процессе функционирования, следует переключить в нажатое состояние кнопку Variable-Length Lossless или Variable-Length Lossy. В этом случае в состав создаваемого сдвигового устройства добавляется входная адресная шина, количество разрядов которой соответствует максимальному значению задержки появления данных на выходах регистра (максимальной длине регистров). Совокупность значений сигналов, представленных на адресных входах, определяет длительность задержки (выраженной в количестве тактов) слова данных, поступающих на информационные входы сдвигового регистра. При нажатой кнопке Variable-Length Lossless на выходах формируемого регистра сдвига будет всегда представлена достоверная информация, в том числе и при изменении данных на адресных входах. Если в нажатом состоянии находится кнопка
Variable-Length Lossy, то достоверность выходных данных при изменении сигналов на адресных входах не гарантируется.
Критерий оптимизации формируемого сдвигового устройства выбирается с помощью группы кнопок с зависимой фиксацией Optimization (рис. 34). При нажатой кнопке Resources генерируется описание сдвигового регистра с учетом минимизации используемых ресурсов ПЛИС. Чтобы сформировать регистр сдвига с максимальным быстродействием, нужно переключить в нажатое состояние кнопку Speed.
Для включения в состав сдвигового устройства выходного регистра, реализуемого на основе D-триггеров, следует установить в состояние «включено» индикатор Register Last Bit, расположенный во встроенной панели Clocking Options (рис. 34). При создании регистров сдвига с фиксированной разрядностью (задержкой), то есть при нажатой кнопке Fixed Length, данный индикатор автоматически переводится в активное состояние. Чтобы задействовать в формируемом регистре сдвига вход разрешения сигнала синхронизации, следует переключить в состояние «включено» индикатор CE, также находящийся во встроенной панели Clocking Options.
Разрядность создаваемого регистра сдвига и записываемых данных определяется с помощью полей редактирования, которые расположены во встроенной панели Dimensions (рис. 34). Значение разрядности входной и, соответственно, выходной шины данных указывается в поле редактирования Width. Разрядность (длина) генерируемого сдвигового регистра задается в поле редактирования Depth. Допустимые диапазоны значений данных параметров показываются справа от соответствующих полей редактирования и автоматически корректируются при изменении типа создаваемых регистров сдвига.
Информация о вносимой дополнительной задержке выходных данных автоматически
Рис. 36. Заключительная диалоговая панель «мастера» настройки параметров ядра
сдвигового регистра RAM-based Shift Register, реализуемого на основе распределенной памяти ПЛИС
отображается во встроенной панели Latency Information. Значение задержки выражается в количестве периодов тактового сигнала.
Вторая диалоговая панель «мастера» настройки параметров ядра сдвигового устройства RAM-based Shift Register, реализуемого на основе распределенной памяти ПЛИС, позволяет определить начальное состояние генерируемого регистра сдвига при включении напряжения питания. Вид этой диалоговой панели изображен на рис. 35.
Данная диалоговая панель предоставляет разработчику два способа определения данных, которые будут автоматически загружены в сформированные регистры после завершения конфигурирования ПЛИС. С помощью поля редактирования Default Data, расположенного во встроенной панели Initialization Options (рис. 35), можно указать значение, которое записывается по умолчанию во все ячейки формируемого сдвигового устройства. Указываемое значение может быть представлено в двоичной или шестнадцатеричной форме. Формат представления данных (основание системы счисления), записываемых по умолчанию в ячейки создаваемого устройства сдвига, задается с помощью поля выбора Radix, которое также находится во встроенной панели Initialization Options. Выпадающий список значений этого параметра включает в себя два возможных варианта— 2 и 16, которые соответствуют указанным ранее форматам представления данных. Количество двоичных или шестнадцатеричных символов, указываемых в поле редактирования Default Data, должно соответствовать разрядности входной шины данных генерируемого устройства сдвига.
Кроме того, информацию, которая должна быть записана в устройство сдвига при его инициализации, может быть представлена в виде файла формата COE. Для этого нужно, прежде всего, установить в состояние «включено» индикатор Use COE File, который находится во встроенной панели COE File (рис. 35). После этого станет доступным поле редактирования Initialization File, которое расположено в этой же встроенной панели. Идентификатор требуемого файла COE, описывающего содержимое создаваемого сдвигового устройства, может быть непосредственно указан в этом поле редактирования с помощью клавиатуры или найден в стандартной панели диалога открытия файла, которая открывается при нажатии кнопки Browse, расположенной справа от поля редактирования Initialization File. Для быстрого просмотра содержимого выбранного файла предназначена кнопка Show, расположенная несколько правее кнопки Browse. Если указанный файл инициализации не полностью описывает содержимое генерируемого устройства сдвига, то все оставшиеся неинициализированными ячейки заполняются по умолчанию значением, заданным в поле редактирования Default Data.
Заключительная диалоговая панель «мастера» настройки параметров ядра сдвигово-
го регистра RAM-based Shift Register, реализуемого на основе распределенной памяти ПЛИС, используется в том случае, если в состав создаваемого устройства сдвига включен выходной регистр. Вид этой диалоговой панели представлен на рис. 36.
Чтобы задействовать в выходном регистре режимы и входы асинхронного сброса, асинхронной установки и инициализации, следует перевести в состояние «включено» соответственно индикаторы Clear, SET и Init, расположенные во встроенной панели Asynchronous Settings. Значение данных, записываемое в выходной регистр устройства сдвига при асинхронной инициализации, указывается в поле редактирования Asynchronous Init Value. При этом формат представления данных (основание системы счисления), указываемых в данном поле редактирования, задается с помощью поля выбора Radix, которое находится в этой же встроенной панели.
Для применения в выходном регистре режимов и входов синхронного сброса, синхронной установки и инициализации нужно воспользоваться аналогичными индикаторами состояния и полем редактирования Synchronous Init Value, которые расположены во встроенной панели Synchronous Settings (рис. 36). При одновременном использовании входов синхронного сброса и синхронной установки нужно с помощью группы кнопок с зависимой фиксацией SET/Clear Priority определить приоритеты соответствующих сигналов. Чтобы сигнал на входе синхронного сброса имел более высокий приоритет по сравнению с сигналом на входе синхронной установки, следует зафиксировать в нажатом состоянии кнопку Clear overrides SET. Для назначения обратного соотношения приоритетов указанных сигналов нужно переключить в нажатое состояние кнопку SET overrides Clear.
При одновременном применении входов разрешения сигнала синхронизации и синхронного сброса/установки в выходном регистре необходимо указать соотношение приоритетов сигналов на этих входах. Для этой цели предназначены две кнопки с зависимой фиксацией — CE Overrides Sync Controls и Sync Controls Overrides CE, которые находятся во встроенной панели CE/Sync Priority (рис. 36). При нажатой кнопке CE overrides Sync Control сигнал на входе разрешения синхронизации будет иметь более высокий приоритет по сравнению с сигналом на входе синхронного сброса или установки. Присвоение противоположного соотношения приоритетов данных сигналов осуществляется фиксацией в нажатом состоянии кнопки Sync Control overrides CE.
В описаниях сдвиговых устройств, создаваемых с помощью параметризированного модуля RAM-based Shift Register, применяется следующая система условных обозначений входных и выходных портов:
• d[N:0] — входная шина данных;
• a[M:0] — адресная шина;
• clk — вход тактового сигнала;
• ce — вход сигнала разрешения синхронизации;
• aclr — вход сигнала асинхронного сброса;
• asset — вход сигнала асинхронной установки;
• sclr — вход сигнала синхронного сброса;
• sset — вход сигнала синхронной установки;
• ainit — вход сигнала асинхронной инициализации;
• sinit — вход сигнала синхронной инициализации;
• q [N:0] — выходная шина данных регистра. Примером сдвигового регистра, сформированного на основе ядра RAM-based Shift Register, является 64-разрядное устройство сдвига 32-разрядных данных с изменяемой величиной задержки (сдвигаемых разрядов),
VHDL-описание которого выглядит следующим образом:
c_generate_mif => 0, c_ainit_val => «00000000000000000000000000000000», c_has_ce => 1, c_family => «spartan3», c_has_aclr => 0, c_mem_init_radix => 1, c_sync_enable => 1, c_depth => 64, c_has_ainit => 1, c_sinit_val => «00000000000000000000000000000000», c_has_sset => 1, c_has_sinit => 0,
c_mem_init_file => «no_coe_file_loaded», c_shift_type => 1, c_default_data => «00000000000000000000000000000000», c_reg_last_bit => 1, c_addr_width => 6 );
— synopsys translate_on BEGIN
— synopsys translate_off U0 : wrapped_shift_ram_v9_0 port map (
a => a, d => d, clk => clk, ce => ce, ainit => ainit, sclr => sclr, sset => sset, q => q );
— synopsys translate_on END shift_ram_v9_0_a;
В составе сгенерированного сдвигового устройства используется вход разрешения сигнала синхронизации, а также выходной регистр с входами синхронного сброса и синхронной установки, а также входом асинхронной инициализации. Для декларации данного регистра сдвига в VHDL-описании
разрабатываемого устройства нужно использовать следующую конструкцию:
component shift_ram_v9_0 port (
a: IN std_logic_VECTOR(5 downto 0);
d: IN std_logic_VECTOR(31 downto 0);
clk: IN std_logic;
ce: IN std_logic;
ainit: IN std_logic;
sclr: IN std_logic;
sset: IN std_logic;
q: OUT std_logic_VECTOR(31 downto 0)
— FPGA Express Black Box declaration
attribute fpga_dont_touch: string;
attribute fpga_dont_touch of shift_ram_v9_0: component is «true»;
i Не можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
— Synplicity black box declaration
attribute syn_black_box : boolean;
attribute syn_black_box of shift_ram_v9_0: component is true;
Конкретные экземпляры сгенерированного сдвигового регистра, используемые в составе проектируемого устройства, описываются с помощью оператора, который имеет следующий вид:
shift_ram_v9_0 port map (
a => a, d => d, clk => clk, ce => ce, ainit => ainit, sclr => sclr, sset => sset, q => q );
— synopsys translate_off Library XilinxCoreLib;
— synopsys translate_on ENTITY shift_ram_v9_0 IS port (
a: IN std_logic_VECTOR(5 downto 0);
d: IN std_logic_VECTOR(31 downto 0);
clk: IN std_logic;
ce: IN std_logic;
ainit: IN std_logic;
sclr: IN std_logic;
sset: IN std_logic;
q: OUT std_logic_VECTOR(31 downto 0)
ARCHITECTURE shift_ram_v9_0_a OF shift_ram_v9_0 IS — synopsys translate_off component wrapped_shift_ram_v9_0 port (
a: IN std_logic_VECTOR(5 downto 0);
d: IN std_logic_VECTOR(31 downto 0);
clk: IN std_logic;
ce: IN std_logic;
ainit: IN std_logic;
sclr: IN std_logic;
sset: IN std_logic;
q: OUT std_logic_VECTOR(31 downto 0)
for all : wrapped_shift_ram_v9_0 use entity
XilinxCoreLib.c_shift_ram_v9_0(behavioral) generic map(
c_has_aset => 0, c_read_mif => 0, c_has_a => 1, c_sync_priority => 1, c_opt_goal => 1, c_has_sclr => 1, c_width => 32, c_enable_rlocs => 0, c_default_data_radix => 1,