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

№ 12’2006
PDF версия
Исходный текст микропроцессорной программы на языке ассемблера для цифрового генератора сигнала с перестраиваемой частотой включает в себя следующие модули.

Микропрограммное обеспечение цифрового генератора сигнала с перестраиваемой частотой

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

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

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

Далее следует группа директив, с помощью которых задаются начальные значения переменных, используемых в процессе вычислений. В эту же группу входят директивы определения адресов ячеек сверхоперативного запоминающего устройства (СОЗУ), выделяемых для хранения различных параметров генератора сигнала, в том числе управляющих кодов для цифрового синтезатора частоты.

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

Блок инициализации системы включает в себя последовательность микропроцессорных команд, выполняющих начальную установку основных параметров генератора сигнала при включении напряжения питания. Данная последовательность инструкций осуществляет операции инициализации жидкокристаллического дисплея, а также определяет значения начальной позиции курсора и отображаемых параметров, которые соответствуют исходному номиналу частоты формируемого сигнала, равному 100 МГц. Кроме того, здесь же присутствует команда установки режима, разрешающего обработку прерываний. Рассматриваемый модуль микропрограммы выглядит следующим образом:

Основной модуль микропрограммы построен в виде бесконечного цикла, в котором выполняются следующие операции:

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

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

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

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

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

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

К группе вспомогательных программных модулей относятся:

  • подпрограмма сдвига данных;
  • подпрограмма преобразования символьного десятичного представления значения частоты в 32-разрядный код;
  • подпрограмма умножения операндов, представленных в двоичной форме;
  • подпрограмма вывода информации о параметрах управления работой цифрового синтезатора частоты на экран жидкокристаллического дисплея;
  • подпрограммы преобразования и отображения шестнадцатиричных значений на экране жидкокристаллического дисплея;
  • подпрограммы отображения статического текста на экране жидкокристаллического дисплея;
  • подпрограммы формирования временных задержек;
  • подпрограммы управления работой жидкокристаллического дисплея.

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

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

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

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

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

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

Подпрограммы формирования задержек предназначены для реализации необходимых временных задержек различной длительности в процессе выполнения микропрограммы. Далее поочередно представлен исходный текст подпрограмм формирования задержек длительностью 1 мкс, 40 мкс, 1 мс, 20 мс и 1 с.

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

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

Завершает микропроцессорную программу код определения вектора обработки прерывания, который записывается по адресу 3FF в соответствии с правилами, принятыми для используемой версии микропроцессорного ядра семейства PicoBlaze [2, 7].

Для реализации рассмотренного генератора в оригинальном виде следует воспользоваться командным файлом install_frequency_generator.bat, который позволяет автоматически в пакетном режиме выполнить загрузку конфигурационной последовательности, содержащейся в файле frequency_generator.bit, в ПЛИС инструментального модуля Xilinx Spartan-3E Starter Board. Процесс загрузки указанной последовательности в кристалл осуществляется с помощью USB-кабеля, входящего в состав инструментального комплекта Spartan-3E Starter Kit [1], и встроенной схемы загрузочного кабеля фирмы Xilinx, предназначенного для конфигурирования ПЛИС и программирования ППЗУ. Наличие исходного текста микропрограммы предоставляет пользователю возможность внесения необходимых изменений в алгоритм функционирования рассмотренного генератора, а также модификации значений параметров в соответствии с условиями решаемой задачи. После коррекции ассемблерного текста микропроцессорной программы необходимо повторить процесс его трансляции. Чтобы воспользоваться загрузчиком JTAG Program Loader, необходимо при трансляции исходного текста использовать модифицированные варианты шаблонов описания содержимого ППЗУ JTAG_Loader_ROM_form.vhd и JTAG_Loader_ROM_form.v [2, 7]. Полученный в результате трансляции код микропрограммы может быть записан непосредственно в программную память ядра PicoBlaze через порт JTAG-интерфейса ПЛИС инструментального модуля с помощью загрузчика JTAG Program Loader и того же кабеля, который использовался для загрузки конфигурационной последовательности, содержащейся в файле frequency_generator.bit.

Литература

  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, предназначенного для применения в проектах, реализуемых на основе ПЛИС семейства CoolRunner-II // Компоненты и технологии. 2003. № 7.
  7. Зотов В. Особенности микропроцессорного ядра PicoBlaze, предназначенного для применения в проектах, реализуемых на основе ПЛИС семейств Spartan-3, Virtex-II и Virtex-IIPRO // Компоненты и технологии. 2005. № 5–6.
  8. Зотов В. MicroBlaze — семейство 32-разрядных микропроцессорных ядер, реализуемых на основе ПЛИС фирмы Xilinx // Компоненты и технологии. 2003. № 9.
  9. Зотов В. Система команд микропроцессорного ядра MicroBlaze // Компоненты и технологии. 2004. № 1–3.
  10. Зотов В. Организация памяти микропроцессорного ядра MicroBlaze // Компоненты и технологии. 2004. № 5.
  11. Бибило П. Н. Основы языка VHDL. М.: Солон-Р, 2000.
  12. Бибило П. Н. Синтез логических схем с использованием языка VHDL. М.: Солон-Р, 2002.
  13. Уэйкерли Дж. Ф. Проектирование цифровых устройств. Том 1. М.: Постмаркет, 2002.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *