Научная статья на тему 'Цифровой генератор сигнала с перестраиваемой частотой, реализуемый на базе инструментального комплекта Spartan-3E Starter Kit фирмы Xilinx'

Цифровой генератор сигнала с перестраиваемой частотой, реализуемый на базе инструментального комплекта Spartan-3E Starter Kit фирмы Xilinx Текст научной статьи по специальности «Электротехника, электронная техника, информационные технологии»

CC BY
973
161
i Надоели баннеры? Вы всегда можете отключить рекламу.

Аннотация научной статьи по электротехнике, электронной технике, информационным технологиям, автор научной работы — Зотов Валерий

Настоящая статья открывает серию публикаций о наиболее интересными проектами, которые не только позволяют на практике познакомиться с возможностями инструментального модуля Xilinx Spartan#3E Starter Board, но и могут быть использованы в качестве шаблонов или прототипов в процессе разработки аналогичных устройств. В данной статье рассматривается проект цифрового генератора сигнала прямоугольной формы с перестраиваемой частотой.

i Надоели баннеры? Вы всегда можете отключить рекламу.

Похожие темы научных работ по электротехнике, электронной технике, информационным технологиям , автор научной работы — Зотов Валерий

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Текст научной работы на тему «Цифровой генератор сигнала с перестраиваемой частотой, реализуемый на базе инструментального комплекта Spartan-3E Starter Kit фирмы Xilinx»

Цифровой генератор сигнала с перестраиваемой частотой,

реализуемый на базе инструментального комплекта Spartan-3E Starter Kit фирмы Xilinx

Валерий ЗОТОВ

[email protected]

Настоящая статья открывает серию публикаций о наиболее интересными проектами, которые не только позволяют на практике познакомиться с возможностями инструментального модуля Xilinx Spartan-3E Starter Board, но и могут быть использованы в качестве шаблонов или прототипов в процессе разработки аналогичных устройств. В данной статье рассматривается проект цифрового генератора сигнала прямоугольной формы с перестраиваемой частотой.

В предыдущем номере журнала [1] были представлены характеристики и архитектура нового инструментального комплекта Spartan-3E Starter Kit, выпускаемого фирмой Xilinx®. Для аппаратного модуля Xilinx Spartan-3E Starter Board™, который является основным компонентом этого комплекта, разработан ряд типовых проектов, выполненных на основе микропроцессорных ядер семейств PicoBlaze™ [1-7] и MicroBlaze™

[1, 8-10]. Данные проекты наглядно демонстрируют возможности практического применения указанных ядер в составе устройств различного назначения. Каждый представленный проект может быть непосредственно загружен в ПЛИС семейства Spartan-3E инструментального модуля, реализуя законченное устройство. Кроме того, оригинальные решения, реализованные в этих проектах, могут применяться разработчиками в собственных системах. С полным списком проектов, предназначенных для инструментального комплекта Spartan-3E Starter Kit, можно ознакомиться, открыв Web-страницу ht tp:/ /ww w.xilinx.c om/products/boards/ s3estarter/reference_designs.h tm.

Структура архива проекта цифрового генератора сигнала с перестраиваемой частотой, предназначенного для реализации на базе инструментального комплекта Spartan-3E Starter Kit

Проект цифрового генератора сигнала с перестраиваемой частотой предоставляется пользователям в виде архива s3esk_frequency_

generator.zip, который содержит следующие файлы:

• модуль исходного описания аппаратной части устройств на языке VHDL frequency_ generator.vhd;

• исходный текст микропроцессорной программы на языке ассемблера fg_ctrl.psm;

• файл описания содержимого программной памяти на языке VHDL fg_ctrl.vhd;

• файл временных и топологических ограничений frequency_generator.ucf, соответствующий архитектуре инструментального модуля Xilinx Spartan-3E Starter Board;

• файл конфигурационной последовательности frequency_generator.bit, реализующей соответствующее устройство, предназначенный для непосредственной загрузки в ПЛИС;

• командный файл install_frequency_genera-tor.bat, предназначенный для непосредственной загрузки в кристалл конфигурационной последовательности, реализующей цифровой генератор и осуществляемой автоматически в пакетном режиме; описание проекта frequency_generator_ vWG.pdf, выполненное в формате PDF. Следует обратить внимание на то, что

файл, содержащий исходное описание на языке VHDL исполнительного модуля микропроцессорного ядра семейства PicoBlaze, не входит в состав указанного архива. Поэтому для работы с проектом цифрового генератора сигнала с перестраиваемой частотой необходимо заранее скачать архив исходных файлов микропроцессорного ядра PicoBlaze, который предназначен для применения в проектах, реализуемых на основе ПЛИС

семейств Spartan-3, Virtex-II, Virtex-IIPRO иVirtex-4 [У]. При создании новых проектов, выполняемых на основе рассматриваемого цифрового генератора сигнала с перестраиваемой частотой, необходимо включить в их состав файл VHDL-описания микропроцессорного ядра kcpsm3.vhd.

Основные характеристики и функциональная схема цифрового генератора сигнала с перестраиваемой частотой

В основе проекта цифрового генератора сигнала прямоугольной формы с перестраиваемой частотой лежит использование технологии прямого цифрового синтеза Direct Digital Synthesis (DDS) с учетом архитектурных особенностей ПЛИС семейства Spartan-3E. Применение этой технологии обеспечивает высокую разрешающую способность при выборе частоты вырабатываемого сигнала, а также сверхбыстрое переключение на новое значение частоты. Номинальный диапазон изменения частоты выходного сигнала составляет от І Гц до WG Мгц. Установка требуемого значения частоты выходного сигнала осуществляется вручную с помощью инкрементного (инкрементального, пошагового) энкодера с совмещенным кнопочным переключателем [І] и жидкокристаллического дисплея, используемого для визуального контроля.

Функциональная схема цифрового генератора сигнала с перестраиваемой частотой показана на рис. І. Аппаратная часть цифрового генератора включает в себя следующие блоки:

^ Выходные ^ сигналы

Блок светодиодных индикаторов

Жидкокристаллический

дисплей

Рис. 1. Функциональная схема цифрового генератора сигнала с перестраиваемой частотой

• блок синхронизации;

• синтезатор частоты;

• устройство управления;

• микропроцессорный блок;

• жидкокристаллический дисплей;

• блок светодиодных индикаторов.

Блок синхронизации предназначен для формирования внутреннего тактового сигнала для элементов синтезатора частоты. Более подробная функциональная схема, поясняющая структуру блока синхронизации и синтезатора частоты, приведена на рис. 2. Блок синхронизации выполнен на основе цифрового модуля управления синхронизацией Digital Clock Manager (DCM) ПЛИС XC3S5GGE. В качестве источника внешнего (по отношению к ПЛИС) сигнала синхронизации используется кварцевый генератор с частотой 5G МГц, установленный на отладочной плате Xilinx Spartan-3E Starter Board. Формируемый кварцевым генератором тактовый сигнал через глобальный буфер подается на вход первого цифрового блока управления синхронизацией DCML Этот модуль задействован в проекте цифрового генератора в режиме четырехкратного умножения частоты входного сигнала синхронизации и формирует на выходе тактовый сигнал с частотой 2GG МГц, который далее подается на соответствующие входы синтезатора частоты.

Основным элементом синтезатора частоты, выполненного по технологии прямого

цифрового синтеза, является аккумулятор фазы. Тактирование аккумулятора фазы сигналом с частотой 200 МГц обеспечивает разрешающую способность по времени 5 нс. Значение частоты изменения старшего значащего разряда сигнала на выходе аккумулятора фазы РМ8В определяется 32-разрядным кодом N который вычисляется в микропроцессорном блоке в соответствии с выражением (1) и подается на один из входов аккумулятора.

РМ5В = (№200 МГц)/ 232. (1)

При этом значение кода N выбирается таким образом, чтобы частота Рм8В находилась в диапазоне от 6,25 до 12,5 МГц. Далее старший значащий разряд сигнала с выхода аккумулятора фазы поступает на вход второго цифрового модуля управления синхронизацией ЭСМ2. Этот модуль конфигурируется для работы в режиме юстировки (выравнивания) частоты. Данный режим функционирования блока ЭСМ к моменту разработки проекта не входил в число стандартных поддерживаемых возможностей ПЛИС семейства 8ра1!ап-3Е. Использование этого режима работы обеспечивает не только шестнадцатикратное умножение частоты входного сигнала, но и существенное снижение ее нестабильности. Выходной сигнал модуля управления синхронизацией ЭСМ2 подается

на вход 32-разрядного счетчика, выходы которого подключены к входам мультиплексора, осуществляющего выбор необходимого значения делителя частоты. Код делителя Б, устанавливаемый на управляющих входах мультиплексора, вычисляется в микропроцессорном блоке, исходя из требуемого значения частоты выходного сигнала, которое определяется соотношением (2).

Роит = (Мх200х16 МГц)/

/(2(с+1)х232). (2)

Сформированный выходной сигнал поступает на высокочастотный разъем типа 8МА117 инструментального модуля и контакт 1012 разъема 14.

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

LCD

lcd(7)

lcd(6) ,

lcd(5)

lcd(4)

От устройства управления

>

Порт быстрой загрузки программ

Программная память

program_rom fg_ctrl

Входные

порты

ввода/

вывода

input_ports

proc_reset 1 JTAG

instruction

elk address

Исполнительный модуль PicoBlaze

in_port

interrupt

interrupt_control

clk-

kcpsm3 processor

instruction address —

out_port

in port

read_strobe read strobe

reset port_id port_id

interrupt interrupt_ack —

> elk

interrupt_ack

Выходные

порты

ввода/

вывода

output_ports

>

led (7) led (6)

led (5)

led (4)

led (3)

led (2)

led (1)

led (0)

■>

'У К блоку -)> светодиодных V> индикаторов

■>

■>

■>

К ЖК-дисплею LCD

>

“R led (7) /

Lx lcd №) '

~"R led (5) /

~"R led (4) /

/— led rs ,

/ A —і—\ lcd_rw /

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

— lcd_e j

[4:0] dds_scaling_word

[31:24]

[23:16]

"I

[15:8]

[7:0]

К синтезатору частоты

dds control word

Рис. 3. Структурная схема микропроцессорного блока цифрового генератора сигнала с перестраиваемой частотой

Блок светодиодных индикаторов используется для визуального контроля текущего режима работы устройства управления. В его состав входят два из восьми индикаторов, установленных на отладочной плате Xilinx Spartan-3E Starter Board. Режим установки текущего изменяемого десятичного разряда значения частоты отображается с помощью светодиодного индикатора LD0. Режиму выбора значения зафиксированного текущего разряда соответствует включенное состояние светодиодного индикатора LD1.

Микропроцессорный блок выполняет следующие функции:

• декодирование сигналов, поступающих с выхода устройства управления;

• вычисление кодовых значений N и D, управляющих работой соответствующих элементов синтезатора частоты;

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

• управление работой блока светодиодных индикаторов.

Структурная схема микропроцессорного блока показана на рис. 3. В ее состав входят:

• исполнительный модуль микропроцессорного ядра семейства РісоВіаге, предназначенного для реализации в ПЛИС серий 8рагіал-3, УіЛех-ІІ, УгЛех-ПРИО иУіі1ех-4 [7];

• память микропрограмм;

• входные и выходные порты ввода/вывода. Жидкокристаллический дисплей используется для отображения информации о частоте формируемого сигнала и управляющих кодах N и Б для синтезатора частоты. Значение частоты выходного сигнала цифрового генератора выводится в верхней строке ЖК-дисплея. Эта строка дисплея является интерактивной. Числовые значения, представленные в ней, (и, соответственно, частота выходного сигнала) могут изменяться пользователем в любое время с помощью инкрементного энкодера устройства управления. Значения управляю-

щих кодов N иБ для синтезатора частоты отображаются в нижней строке ЖК-дисплея.

Описание основных функциональных блоков цифрового генератора сигнала с перестраиваемой частотой на языке УИБЬ, реализуемых на основе ресурсов ПЛИС семейства 8раг:ап-3Е, рассматривается в следующем разделе.

VHDL-описание основных блоков аппаратной части цифрового генератора сигнала с перестраиваемой частотой

Аппаратная часть цифрового генератора сигнала описывается в форме объекта frequency_generator. Этот объект может применяться как автономно, так и в виде модуля, входящего в состав более сложной разрабатываемой системы. В настоящей статье рассматривается вариант автономного применения данного объекта.

Описание объекта frequency_generator имеет стандартную структуру исходного модуля, выполненного с использованием языка VHDL [11-13]. В ней можно выделить три части. В первой части VHDL-описания указаны ссылки на используемые стандартные библиотеки и пакеты. Здесь же присутствует ссылка на используемую библиотеку Unisim Library фирмы Xilinx и пакет vcomponents этой библиотеки. Содержимое этой части VHDL-описания выглядит следующим образом.

library IEEE;

use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL;

-- The Unisim Library is used to define Xilinx primitives. It is also used during

-- simulation. The source can be viewed at XILINX%\vhdl\src\ unisims\unisim_VCOMP.vhd

library unisim;

use unisim.vcomponents.all;

Вторая часть содержит описание внешнего интерфейса объекта frequency_generator, представляющего цифровой генератор. Это описание имеет следующий вид:

entity frequency_generator is

Port ( sma_out : out std_logic;

simple : out std_logic_vector(12 downto 9); led : out std_logic_vector(7 downto 0); strataflash_oe : out std_logic; strataflash_ce : out std_logic; strataflash_we : out std_logic;

lcd_d : inout std_logic_vector(7 downto 4); lcd_rs : out std_logic; lcd_rw : out std_logic; lcd_e : out std_logic; rotary_a : in std_logic; rotary_b : in std_logic; rotary_press : in std_logic;

clk : in std_logic); end frequency_generator;

В приведенных выражениях используется следующая система обозначений интерфейсных цепей объекта frequency_generator. Идентификаторы clk и sma_out описывают соответственно вход тактового сигнала и выход цифрового генератора сигнала. Вектор lcd_d представляет шину данных интерфейса ЖК-дисплея, а идентификаторы lcd_rs, lcd_rw, lcd_e — сигналы управления этого интерфейса. Идентификаторы rotary_a, rotary_b и rotary_press соответствуют входам сигналов, поступающих от устройства управления. Векторы led и simple представляют соответственно выходы, предназначенные для сопряжения с блоком светодиодных индикаторов, и выходные сигналы в контрольных точках. Идентификаторы strataflash_oe, strataflash_ce strataflash_we описывают выходы сигналов управления интерфейса параллельной Flash-m-мяти серии StrataFlash® Memory фирмы Intel®.

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

-- Start of test architecture

architecture Behavioral of frequency_generator is

-- Декларация исполнительного модуля KCPSM3

component kcpsm3

Port ( address : out std_logic_vector(9 downto 0); instruction : in std_logic_vector(17 downto 0); port_id : out std_logic_vector(7 downto 0); write_strobe : out std_logic;

out_port : out std_logic_vector(7 downto 0); read_strobe : out std_logic;

in_port : in std_logic_vector(7 downto 0); interrupt : in std_logic; interrupt_ack : out std_logic; reset : in std_logic; clk : in std_logic); end component;

-- Декларация модуля программной памяти

component fg_ctrl

Port ( address : in std_logic_vector(9 downto 0);

instruction : out std_logic_vector(17 downto 0); proc_reset : out std_logic; --JTAG Loader version clk : in std_logic); end component;

Далее следует блок УИБЬ-кода, содержащий выражения декларации внутренних сигналов. В начале этого блока приведены объявления сигналов, используемых для сопряжения исполнительного модуля микропроцессорного ядра РісоВіаге с программной памятью и портами ввода/вывода.

-- Сигналы сопряжения исполнительного модуля КСРБМЗ

-- с программной памятью и портами ввода/вывода

signal address і std_logic_vector(9 downto О);

signal instruction std_logic_vector(17 downto О);

signal port_id std_logic_vector(7 downto О);

signal out_port std_logic_vector(7 downto О);

signal in_port std_logic_vector(7 downto О);

signal write_strobe і std_logic;

signal read_strobe і std_logic;

signal interrupt std_logic і='О';

signal interrupt_ack і std_logic;

signal kcpsm3_rese і std_logic;

Следующая совокупность выражений осуществляет декларацию сигналов, соответствующих интерфейсам жидкокристаллического дисплея и устройства управления, выполняемого на основе инкрементного энкодера.

сании блока синхронизации и цифрового синтезатора частоты.

-- Сигналы блока синхронизации и цифрового синтезатора частоты

Signal cIk_200mhz і std_logic;

Signal dds_clk і std_logic;

Signal dds_control_word і std_logic_vector (З1 downto О);

Signal dds_scaling_word і std_logic_vector (4 downto О);

signal phase_accumulator і std_logic_vector (З1 downto О);

signal dcm_clean_clock і std_logic;

signal synth_clk і std_logic;

signal frequency_divider і std_logic_vector (З1 downto О);

signal frequency_out і std_logic;

signal freq_out_pipe і std_logic;

После блока декларации внутренних сигналов следует потоковое описание микропроцессорного блока, рассмотренного в предыдущем разделе. В начале этого описания приведены операторы определения значений управляющих сигналов интерфейса параллельной Flash-памяти серии StrataFlashMemory фирмы Intel, установленной на отладочной плате Xilinx Spartan-3E Starter Board. Flash-память и жидкокристаллический дисплей подключены к ПЛИС XC3S500E через общие проводники шины данных. Для предотвращения конфликта сигналов на этих линиях шины данных необходимо перевести информационные входы/выходы микросхемы Flash-памяти, не используемой в данном проекте, в состояние «выключено». С этой целью на управляющие входы этой микросхемы подаются соответствующие значения сигналов, которые переключают входы/выходы данных Flash-памяти в третье состояние (состояние высокого импеданса). Далее следуют операторы создания экземпляров компонентов исполнительного модуля микропроцессорного ядра и программной памяти.

-- Start of circuit description

begin

-- Отключение информационных входов/выходов Flash-памяти

strataflash_oe <= '1';

strataflash_ce <= '1';

strataflash_we <= '1';

-- Создание экземпляров исполнительного модуля KCPSM3 и про-

rpaMMHOH naMOTH

processor: kcpsm3

port map( address => address,

instruction => instruction,

port_id => port_id,

write_strobe => write_strobe,

out_port => out_port,

read_strobe => read_strobe,

in_port => in_port,

interrupt => interrupt,

interrupt_ack => interrupt_ack,

reset => kcpsm3_reset,

clk => clk);

program_rom: fg_ctrl

port map( address => address,

instruction => instruction,

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

proc_reset => kcpsm3_reset, --JTAG Loader version

clk => clk);

-- Сигналы интерфейса управления ЖК-дисплеем -- Tri-state output requires internal signals

-- 'lcd_drive' is used to differentiate between LCD and StrataFLASH

communications

-- which share the same data bits.

signal lcd_rw_control : std_logic;

signal lcd_output_data : std_logic_vector(7 downto 4);

signal lcd_drive : std_logic;

-- Сигналы интерфейса устройства управления

signal rotary_a_in : std_logic;

signa rotary_b_in : std_logic;

signal rotary_press_in : std_logic;

signal rotary_in : std_logic_vector(1 downto 0);

signal rotary_q1 : std_logic;

signa rotary_q2 : std_logic;

signal delay_rotary_q1 : std_logic;

signal rotary_event : std_logic;

signal rotary_left : std_logic;

Завершает блок декларации внутренних сигналов последовательность выражений объявления сигналов, используемых в опи-

Описание схемы формирования сигналов прерывания в микропроцессорном блоке имеет следующий вид.

-- Interrupt

interrupt_control: process(clk) begin

if clk'event and clk=T then

-- processor interrupt waits for an acknowledgement if interrupt_ack=T then interrupt <= '0'; elsif rotary_event='1' then interrupt <= '1'; else

interrupt <= interrupt; end if;

end if;

end process interrupt_control;

Состояние входных и выходных портов микропроцессорного блока описывается следующей последовательностью операторов.

-- Входные порты микропроцессорного блока

-- The inputs connect via a pipelined multiplexer

input_ports: process(clk)

begin

if clk'event and clk=T then case port_id(0) is

-- read rotary control signals at address 00 hex when '0' => in_port <= «000000» & rotary_press_in & ro-tary_left ;

-- read LCD data at address 01 hex when '1' => in_port <= lcd_d & «0000»;

-- Don't care used for all other addresses to ensure minimum logic implementation

when others => in_port <= «XXXXXXXX»; end case; end if; end process input_ports;

-- Выходные порты микропроцессорного блока

-- adding the output registers to the processor

output_ports: process(clk)

begin

if clk'event and clk='1' then if write_strobe=T then

-- Write to LEDs at address 80 hex. if port_id(7)='1' then led <= out_port; end if;

-- LCD data output and controls at address 40 hex. if port_id(6)='1' then

lcd_output_data <= out_port(7 downto 4); lcd_drive <= out_port(3); lcd_rs <= out_port(2); lcd_rw_control <= out_port(1); lcd_e <= out_port(0); end if;

-- Write DDS frequency scaling word at addresses 20 hex. if port_id(5)='1' then

dds_scaling_word <= out_port(4 downto 0); end if;

-- Write 32-bit DDS control word at addresses 02, 04, 08 and 10 hex. if port_id(4)='1' then

dds_control_word(31 downto 24) <= out_port; end if;

if port_id(3)='1' then

dds_control_word(23 downto 16) <= out_port; end if;

if port_id(2)='1' then

dds_control_word(15 downto 8) <= out_port; end if;

if port_id(1)='1' then

dds_control_word(7 downto 0) <= out_port; end if; end if; end if;

end process output_ports;

Сигналы интерфейса управления жидкокристаллическим дисплеем описываются следующими выражениями.

-- Интерфейс управления жидкокристаллическим дисплеем

-- The 4-bit data port is bidirectional.

-- lcd_rw is '1' for read and 'О' for write

-- lcd_drive is like a master enable signal which prevents either the -- FPGA outputs or the LCD display driving the data lines.

--Control of read and write signal lcd_rw <= lcd_rw_control and lcd_drive;

--use read/write control to enable output buffers.

lcd_d <= lcd_output_data when (lcd_rw_control='0' and lcd_drive='1')

else «ZZZZ»;

VHDL-описание устройства управления цифрового генератора сигнала содержит группу операторов, которые осуществляют декодирование сигналов, поступающих от инкрементного энкодера.

-- Модуль интерфейса инкрементного энкодера

rotary_filter: process(clk) begin

if clk'event and clk='1' then

--Synchronise inputs to clock domain using flip-flops in input/output blocks.

rotary_a_in <= rotary_a; rotary_b_in <= rotary_b; rotary_press_in <= rotary_press;

--concatinate rotary input signals to form vector for case construct. rotary_in <= rotary_b_in & rotary_a_in; case rotary_in is when «00» => rotary_q1 <= '0';

rotary_q2 <= rotary_q2; when «01» => rotary_q1 <= rotary_q1;

rotary_q2 <= '0'; when «10» => rotary_q1 <= rotary_q1;

rotary_q2 <= '1'; when «11» => rotary_q1 <= '1';

rotary_q2 <= rotary_q2; when others => rotary_q1 <= rotary_q1; rotary_q2 <= rotary_q2; end case; end if; end process rotary_filter;

-- The rising edges of 'rotary_q1' indicate that a rotation has occurred and the

-- state of 'rotary_q2' at that time will indicate the direction.

direction: process(clk) begin

if clk'event and clk='1' then delay_rotary_q1 <= rotary_q1; if rotary_q1='1' and delay_rotary_q1='0' then rotary_event <= '1'; rotary_left <= rotary_q2; else

rotary_event <= '0'; rotary_left <= rotary_left; end if; end if; end process direction;

Описание блока синхронизации и цифрового синтезатора частоты на языке УИБЬ выполнено в соответствии с функциональной схемой, приведенной на рис. 2. Оно включает в себя выражения создания двух экземпляров модуля управления синхронизацией БСМ, глобальных буферных элементов, а также поведенческое описание аккумулятора фазы, 32-разрядного счетчика и селектора-мультиплексора выходного сигнала.

-- Блок синхронизации и цифровой синтезатор частоты -- Direct Digital Synthesizer (DDS)

- Описание блока синхронизации phase_acc_dcm: DCM

generic map( CLK_FEEDBACK => «NONE», CLKFX_DIVIDE => 1,

CLKFX_MULTIPLY => 4,

CLKIN_PERIOD => 20.0) port map ( CLKFX => clk_200mhz,

CLKFB => '0',

CLKIN => clk,

DSSEN => '0',

PSCLK => '0',

PSEN => '0',

PSINCDEC => '0',

RST => '0');

-- Buffer 200MHz clock for use by phase accumulator.

buffer_dds_clk: BUFG

port map( I => clk_200mhz,

O => dds_clk);

-- Описание аккумулятора фазы цифрового синтезатора

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

phase_acc: process(dds_clk)

begin

if dds_clk'event and dds_clk=T then

phase_accumulator <= phase_accumulator + dds_control_word; end if; end process phase_acc;

-- Описание модуля умножения и стабилизации частоты

frequency_aligned_dcm: DCM

generic map( CLK_FEEDBACK => «NONE»,

CLKFX_DIVIDE => 1, -- CLKFX factors are shown but will be overwritten

CLKFX_MULTIPLY => 16,

CLKIN_PERIOD => 80.0) port map ( CLKFX => dcm_clean_clock,

CLKFB => '0',

CLKIN => phase_accumulator(31),

DSSEN => '0',

PSCLK => '0',

PSEN => '0',

PSINCDEC => '0',

RST => '0');

-- Create new clock domain for the clean synthesized clock using a global buffer.

buffer_synth_clk: BUFG

port map( I => dcm_clean_clock,

O => synth_clk);

-- The synthesized clock covers a high frequency range 100 to 200MHz. The final output is

-- achieved by dividing this by multiples of 2 using a simple counter and multiplexer structure.

-- Описание счетчика и селектора-мультиплексора формируемого сигнала freq_scaling: process(synth_clk) begin

if synth_clk'event and synth_clk='1' then

frequency_divider <= frequency_divider + 1; case dds_scaling_word is when «00000» => frequency_out <= frequency_divider(0);

-- выход 50 МГц и выше when «00001» => frequency_out <= frequency_divider(1);

-- выход 25-50 МГц when «00010» => frequency_out <= frequency_divider(2);

-- выход 12,5-25 МГц when «00011» => frequency_out <= frequency_divider(3);

-- и т. д.

when «00100» => frequency_out <= frequency_divider(4); when «00101» => frequency_out <= frequency_divider(5); when «00110» => frequency_out <= frequency_divider(6); when «00111» => frequency_out <= frequency_divider(7); when «01000» => frequency_out <= frequency_divider(8); when «01001» => frequency_out <= frequency_divider(9); when «01010» => frequency_out <= frequency_divider(10); when «01011» => frequency_out <= frequency_divider(11); when «01100» => frequency_out <= frequency_divider(12); when «01101» => frequency_out <= frequency_divider(13); when «01110» => frequency_out <= frequency_divider(14); when «01111» => frequency_out <= frequency_divider(15); when «10000» => frequency_out <= frequency_divider(16); when «10001» => frequency_out <= frequency_divider(17); when «10010» => frequency_out <= frequency_divider(18); when «10011» => frequency_out <= frequency_divider(19); when «10100» => frequency_out <= frequency_divider(20); when «10101» => frequency_out <= frequency_divider(21); when «10110» => frequency_out <= frequency_divider(22); when «10111» => frequency_out <= frequency_divider(23); when «11000» => frequency_out <= frequency_divider(24); when «11001» => frequency_out <= frequency_divider(25); when «11010» => frequency_out <= frequency_divider(26);

-- выход 1 Гц

when «11011» => frequency_out <= frequency_divider(27); when «11100» => frequency_out <= frequency_divider(28); when «11101» => frequency_out <= frequency_divider(29); when «11110» => frequency_out <= frequency_divider(30); when «11111» => frequency_out <= frequency_divider(31); -- Don't care used for all other to ensure minimum logic implementation when others => frequency_out <= 'X'; end case;

-- Pipeline output from multiplexer to maintain performance up to 200MHz freq_out_pipe <= frequency_out; sma_out <= freq_out_pipe; end if; end process freq_scaling;

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

-- Контрольные точки

simple(9) <= phase_accumuIator(31); simple(10) <= '0'; simple(11) <= '0'; simple(12) <= freq_out_pipe;

end Behavioral;

I a 11; iw 11 m ~\ I ** I

Рис. 4. Диалоговая панель параметров процесса генерации конфигурационной последовательности цифрового генератора в САПР серии Xilinx ^

При использовании VHDL-описания аппаратной части цифрового генератора сигнала или отдельных его блоков следует помнить, что модуль управления синхронизацией DCM, используемый для шестнадцатикратного умножения частоты, функционирует в нестандартном режиме. Поэтому для формирования конфигурационной последовательности разрабатываемого проекта нужно использовать следующую строку параметров для программы Bitgen, входящей в состав САПР серии Xilinx ISE™ (Integrated Synthesis Environment/Integrated Software Environment).

Данная строка указывается в диалоговой панели параметров процесса генерации конфигурационной последовательности, как показано на рис. 4. ■

Окончание следует

Литература

1. Новый инструментальный комплект Spartan-3E Starter Kit для практического освоения методов проектирования встраиваемых микропроцессорных систем на основе ПЛИС семейств FPGA фирмы Xilinx // Компоненты и технологии. 2003. № 10,

2. Зотов В. Проектирование встраиваемых микропроцессорных систем на основе ПЛИС фирмы Xilinx. М.: Горячая линия — Телеком. 2006.

3. Зотов В. PicoBlaze — семейство восьмиразрядных микропроцессорных ядер, реализуемых на основе ПЛИС фирмы Xilinx // Компоненты и технологии. 2003. № 4,

4. Зотов В. Система команд микропроцессорного ядра PicoBlaze, реализуемого на основе ПЛИС семейств Spartan-II, Spartan-IIE, Virtex, Virtex-E // Компоненты и технологии. 2003. № 5,

5. Зотов В. Особенности микропроцессорного ядра PicoBlaze, предназначенного для применения в проектах, реализуемых на основе ПЛИС семейства Virtex-II // Компоненты и технологии.

2003. № 6,

6. Зотов В. Особенности микропроцессорного ядра PicoBlaze, предназначенного для примене-

ния в проектах, реализуемых на основе ПЛИС семейства ^оЩип^^И // Компоненты и технологии. 2003. № 7.

7. Зотов В. Особенности микропроцессорного ядра PicoBlaze, предназначенного для применения в проектах, реализуемых на основе ПЛИС семейств БраШп-З, Virtex-II и Уirtex-ПРЯО // Компоненты и технологии. 2005. №№ 5-6.

8. Зотов В. MicroBlaze — семейство тридцатидвухразрядных микропроцессорных ядер, реализуемых на основе ПЛИС фирмы ХШпх // Компоненты и технологии. 2003. № 9.

9. Зотов В. Система команд микропроцессорного ядра MicroBlaze // Компоненты и технологии.

2004. №№ 1-3.

10. Зотов В. Организация памяти микропроцессорного ядра MicroBlaze // Компоненты и технологии. 2004. № 5.

11. Бибило П. Н. Основы языка УИБЬ. М.: Солон-Р, 2000.

12. Бибило П. Н. Синтез логических схем с использованием языка УИБЬ. М.: Солон-Р. 2002.

13. Уэйкерли Дж. Ф. Проектирование цифровых устройств. Т. 1. М.: Постмаркет. 2002.

-g cfg_dfs_s_x1y1:1111000011111111xxx111xxxxx1xxxxxxxxxx1 xxxxxxxxxxxxxxxxxxxxxxxxxxxxx01000000

i Надоели баннеры? Вы всегда можете отключить рекламу.