Настройте перезаписываемую рабочую папку вне своей папки установки MATLAB®, чтобы хранить файлы, которые будут сгенерированы, когда вы завершаете свою учебную работу. Учебные инструкции принимают, что вы создаете папку hdlfilter_tutorials
на диске C.
Этот пример проводит вас по шагам для разработки оптимизированного квантованного КИХ-фильтра дискретного времени, генерации кода Verilog для фильтра и проверки кода Verilog со сгенерированным испытательным стендом.
Этот раздел принимает, что вы знакомы с интерфейсом пользователя MATLAB и Filter Designer.
Запустите программное обеспечение MATLAB.
Установите свою текущую папку на папку, в которой вы создали, Создают Папку для Ваших Учебных Файлов.
Запустите Filter Designer путем ввода filterDesigner
команда в Окне Команды MATLAB. Диалоговое окно The Filter Design & Analysis Tool появляется.
В диалоговом окне Filter Design & Analysis Tool, набор следующие опции фильтра:
Опция | Значение |
---|---|
Response Type | Lowpass |
Design Method | FIR Equiripple |
Filter Order | Minimum order |
Options | Density Factor: 20 |
Frequency Specifications | Модули: Fs: Fpass: Fstop: 12000 |
Magnitude Specifications | Модули: Apass: Astop: |
Эти настройки для создания фильтра по умолчанию, которое Filter Designer создает для вас. Если вы не должны изменять фильтр, и Design Filter отображается серым, вы сделаны и можете пропустить, чтобы Квантовать КИХ-Фильтр.
Нажмите Design Filter. Filter Designer создает фильтр для заданного проекта. Следующее сообщение появляется в строке состояния Filter Designer, когда задача завершена.
Designing Filter... Done
Для получения дополнительной информации о разработке фильтров с Filter Designer см. документацию DSP System Toolbox™.
Необходимо квантовать фильтры для генерации HDL-кода. Квантовать ваш фильтр,
Откройте КИХ-создание фильтра, которое вы создали в Проекте, КИХ Просачивается Filter Designer, если это не уже открыто.
Нажмите кнопку Set Quantization Parameters на панели инструментов левой стороны. Filter Designer отображает меню Filter arithmetic в нижней половине его диалогового окна.
Выберите Fixed-point
из списка. Затем выберите Specify all
из списка Filter precision. Filter Designer отображает первую из трех панелей с вкладками параметров квантования через нижнюю половину его диалогового окна.
Используйте опции квантования, чтобы протестировать эффекты различных настроек на производительности и точности квантованного фильтра.
Установите параметры квантования можно следующим образом:
Вкладка | Параметр | Установка |
---|---|---|
Coefficients | Numerator word length | 16
|
Best-precision fraction lengths | Selected | |
Use unsigned representation | Cleared | |
Scale the numerator coefficients to fully utilize the entire dynamic range | Cleared | |
Input/Output | Input word length | 16
|
Input fraction length | 15
| |
Output word length | 16
| |
Filter Internals | Rounding mode | Floor |
Overflow mode | Saturate | |
Accum. word length | 40
|
Нажмите Apply.
Для получения дополнительной информации о квантовании фильтров с Filter Designer см. документацию DSP System Toolbox.
После того, как вы квантуете свой фильтр, вы готовы сконфигурировать опции кодера и сгенерировать код Verilog для фильтра. Этот раздел проводит вас по запуску пользовательского интерфейса, установке опций, и генерация кода Verilog и испытательного стенда для КИХ фильтрует вас спроектированный и квантованный в Проекте, КИХ Просачивается Filter Designer и Квантует КИХ-Фильтр.
Запустите пользовательский интерфейс Filter Design HDL Coder™ путем выбора Targets> Generate HDL в диалоговом окне Filter Designer. Filter Designer отображает диалоговое окно Generate HDL.
Выберите Verilog
для опции Language, как показано в следующем рисунке.
В текстовом поле Name панели Target замените имя по умолчанию на optfir
. Эта опция называет модуль Verilog и файл, который содержит код Verilog для фильтра.
В панели Filter architecture выберите опцию Optimize for HDL. Эта опция для генерации HDL-кода, который оптимизирован для требований пробела или производительности. Когда эта опция включена, кодер делает компромиссы относительно типов данных и может проигнорировать ваши настройки квантования, чтобы достигнуть оптимизации. Когда вы используете опцию, имеете в виду, что делаете так за счет потенциальных числовых различий между результатами фильтра, приведенными исходным объектом фильтра и симулированными результатами для оптимизированного HDL-кода.
Выберите CSD
для опции Coefficient multipliers. Эта опция оптимизирует содействующие операции множителя, давая кодеру команду заменить их на сложения частичных продуктов, произведенных методом канонической цифры со знаком (CSD). Этот метод минимизирует количество операций сложения, требуемых для постоянного умножения путем представления двоичных чисел с минимальным количеством ненулевых цифр.
Выберите опцию Add pipeline registers. Для КИХ-фильтров эта опция оптимизирует итоговое суммирование. Кодер создает итоговый сумматор, который выполняет попарное сложение на последовательных продуктах и включает этап конвейерных регистров после каждого уровня дерева. Когда используется в КИХ-фильтрах, эта опция может произвести числовые различия между результатами, приведенными исходным объектом фильтра и симулированными результатами для оптимизированного HDL-кода.
Диалоговое окно Generate HDL теперь появляется как показано.
Выберите вкладку Global settings пользовательского интерфейса. Затем выберите вкладку General раздела Additional settings.
В текстовом поле Comment in header введите Tutorial - Optimized FIR Filter
. Кодер добавляет комментарий в конец блока комментария заголовка в каждом сгенерированном файле.
Выберите вкладку Ports раздела Additional settings пользовательского интерфейса.
Поменяйте имена портов ввода и вывода. В текстовом поле Input port замените filter_in
с data_in
. В текстовом поле Output port замените filter_out
с data_out
.
Снимите флажок для опции Add input register. Панель Ports теперь смотрит как показано.
Кликните по вкладке Test Bench в диалоговом окне Generate HDL. В текстовом поле File name замените имя по умолчанию на optfir_tb
. Эта опция называет сгенерированный файл испытательного стенда.
В панели Испытательного стенда кликните по вкладке Configuration . Заметьте, что опция Error margin (bits) включена. Эта опция включена, потому что ранее выбранные опции оптимизации (такие как Add pipeline registers) могут потенциально привести к числовым результатам, которые отличаются от результатов, приведенных исходным объектом фильтра. Можно использовать эту опцию, чтобы настроить количество младших значащих битов, которые испытательный стенд игнорирует во время сравнений прежде, чем сгенерировать предупреждение.
В диалоговом окне Generate HDL нажмите Generate, чтобы запустить процесс генерации кода. Когда генерация кода завершится, нажмите Close, чтобы закрыть диалоговое окно.
Кодер отображает следующие сообщения в Окне Команды MATLAB, когда оно генерирует фильтр и испытательный стенд файлы Verilog:
### Starting Verilog code generation process for filter: optfir ### Generating: C:\hdlfilter_tutorials\hdlsrc\optfir.v ### Starting generation of optfir Verilog module ### Starting generation of optfir Verilog module body ### HDL latency is 8 samples ### Successful completion of Verilog code generation process for filter: optfir ### Starting generation of VERILOG Test Bench ### Generating input stimulus ### Done generating input stimulus; length 3429 samples. ### Generating Test bench: C:\hdlfilter_tutorials\hdlsrc\optfir_tb.v ### Please wait ... ### Done generating VERILOG Test Bench
Как сообщения указывают, кодер создает папку hdlsrc
под вашей текущей рабочей папкой и местами файлы optfir.v
и optfir_tb.v
в той папке.
Заметьте, что сообщения включают гиперссылки на файлы испытательного стенда и сгенерированный код. Путем нажатия на эти гиперссылки можно открыть файлы кода непосредственно в редактор MATLAB.
Сгенерированный код Verilog имеет следующие характеристики:
Модуль Verilog под названием optfir
.
Регистры, которые используют асинхронный сброс, когда сигнал сброса активен высокий (1).
Сгенерированный код, который оптимизирует его использование типов данных и устраняет избыточные операции.
Содействующие множители оптимизированы с методом CSD.
Итоговое суммирование оптимизировало использование конвейерного метода.
Порты, которые имеют следующие имена:
Порт Verilog | Имя |
---|---|
Входной параметр | data_in |
Вывод | data_out |
Вход Clock | clk |
Часы включают вход | clk_enable |
Вход Reset | reset |
Выводится дополнительный регистр для обработки фильтра.
Коэффициенты, названные coeff
, где n
n
содействующий номер, начиная с 1.
Безопасное с точки зрения типов представление используется, когда нули конкатенированы: '0' & '0'
...
Постфиксный '_process'
добавлен к последовательному (begin
) имена блока.
Сгенерированный испытательный стенд:
Портативный файл Verilog.
Часы сил, часы включают и сбросили входные сигналы.
Силы часы включают входной сигнал к активному высоко.
Управляет входным сигналом часов высоко (1) в течение 5 наносекунд и низко (0) в течение 5 наносекунд.
Обеспечивает сигнал сброса для двух циклов плюс время задержки 2 наносекунд.
Применяет время задержки 2 наносекунд к сигналам ввода данных.
Применяет допуск на погрешность 4 битов.
Для КИХ-фильтра, применяет импульс, шаг, пандус, щебет и белые шумовые типы стимула.
Познакомьтесь с оптимизированным сгенерированным кодом Verilog путем открытия и просматривания файла optfir.v
в ASCII или редакторе симулятора HDL:
Откройте сгенерированный файл фильтра Verilog optcfir.v
.
Ищите optfir
. Эта линия идентифицирует модуль Verilog, с помощью значения, которое вы задали для опции Name в панели Target. Смотрите, что шаг 3 в Конфигурирует и Генерирует Оптимизированный Код Verilog.
Ищите Tutorial
. Этот раздел кода - то, куда кодер помещает текст, вы ввели для опции Comment in header. Смотрите, что шаг 9 в Конфигурирует и Генерирует Оптимизированный Код Verilog.
Ищите HDL Code
. Этот раздел перечисляет опции кодера, в которых вы изменили, Конфигурируют и Генерируют Оптимизированный Код Verilog.
Ищите Filter Settings
. Этот раздел кода VHDL описывает настройки создания фильтра и квантования, когда вы задали в Проекте, КИХ Просачивается Filter Designer и Квантует КИХ-Фильтр.
Ищите module
. Эта линия называет модуль Verilog, с помощью значения, которое вы задали для опции Name в панели Target. Эта линия также объявляет список портов, как задано опциями на панели Ports диалогового окна Generate HDL. Порты для ввода данных и выхода называют со значениями, которые вы задали для Input port и опций Output port на вкладке Ports диалогового окна Generate HDL. Смотрите, что шаги 3 и 11 в Конфигурируют и Генерируют Оптимизированный Код Verilog.
Ищите input
. Эта линия и четыре линии, которые следуют, объявите режим направления каждого порта.
Ищите Constants
. Этот код задает коэффициенты. Их называют с помощью схемы именования по умолчанию, coeff
, где n
n
содействующий номер, начиная с 1.
Ищите Signals
. Этот код задает сигналы фильтра.
Ищите sumvector1
. Эта область кода объявляет сигналы для реализации экземпляра конвейерного итогового сумматора. Объявления сигнала для четырех дополнительных конвейерных итоговых сумматоров также включены. Эти сигналы используются, чтобы реализовать конвейерную КИХ-оптимизацию стиля сумматора, заданную с опцией Add pipeline registers. Смотрите, что шаг 7 в Конфигурирует и Генерирует Оптимизированный Код Verilog.
Ищите process
. block
назовите Delay_Pipeline_process
включает block
по умолчанию постфиксный
'_process'
.
Ищите reset
. Этот код утверждает сигнал сброса. Значение по умолчанию, активное высокий (1), было задано. Также обратите внимание что process
применяет асинхронный стиль сброса по умолчанию при генерации кода для регистров.
Ищите posedge
. Этот код Verilog проверяет на возрастающие ребра, когда фильтр работает с регистрами.
Ищите sumdelay_pipeline_process1
. Этот блок реализует конвейерный этап регистра конвейерного КИХ-стиля сумматора, из которого вы задали на шаге 7, Конфигурируют и Генерируют Оптимизированный Код Verilog.
Ищите output_register
. Этот код пишет фильтру выход в выходной регистр. Код для этого регистра сгенерирован по умолчанию. На шаге 12 в Конфигурируют и Генерируют Оптимизированный Код Verilog, вы очистили опцию Add input register, но оставили Add output register выбранным. Также обратите внимание, что процесс называет Output_Register_process
включает process
по умолчанию постфиксный
'_process'
.
Ищите data_out
. Этот код управляет выходными данными фильтра.
Этот раздел объясняет, как проверить оптимизированный сгенерированный код Verilog для КИХ-фильтра со сгенерированным испытательным стендом Verilog. Этот пример использует средство моделирования Mentor Graphics® ModelSim® в качестве инструмента для компиляции и симуляции кода Verilog. Можно использовать другие пакеты инструмента симуляции HDL.
Чтобы проверить код фильтра, завершите следующие шаги:
Запустите свое средство моделирования. Когда вы запускаете средство моделирования Mentor Graphics ModelSim, отображение на экране, похожее на следующее, появляется.
Установите текущую папку на папку, которая содержит ваши сгенерированные файлы Verilog. Например:
cd hdlsrc
При желании создайте библиотеку проекта, чтобы сохранить скомпилированные модули Verilog. В средстве моделирования Mentor Graphics ModelSim можно создать библиотеку проекта с vlib
команда.
vlib work
Скомпилируйте сгенерированный фильтр и испытательный стенд файлы Verilog. В средстве моделирования Mentor Graphics ModelSim вы компилируете код Verilog с vlog
команда. Следующие команды компилируют фильтр и фильтруют испытательный стенд код Verilog.
vlog optfir.v vlog optfir_tb.v
Следующее отображение на экране показывает эту последовательность команды и информационные сообщения, отображенные во время компиляции.
Загрузите испытательный стенд для симуляции. Процедура для загрузки испытательного стенда варьируется в зависимости от средства моделирования, которое вы используете. В средстве моделирования Mentor Graphics ModelSim загрузите испытательный стенд для симуляции с vsim
команда. Например:
vsim optfir_tb
Следующее отображение показывает результаты загрузки optfir_tb
с vsim
команда.
Откройте окно экрана для контроля симуляции, когда испытательный стенд запускается. В средстве моделирования Mentor Graphics ModelSim, может использовать следующую команду, чтобы открыть окно wave и просмотреть результаты симуляции как формы волны HDL.
add wave *
Следующее окно wave открывается:
Чтобы начать запускать симуляцию, дайте команду симуляции запуска для своего средства моделирования. Например, в средстве моделирования Mentor Graphics ModelSim, можно запустить симуляцию с run
команда.
Следующее отображение показывает run -all
команда, используемая, чтобы запустить симуляцию.
Когда ваша симуляция испытательного стенда запускается, см. за сообщениями об ошибке. Если сообщения об ошибке появляются, интерпретируют их, когда они принадлежат вашему созданию фильтра и опциям генерации HDL-кода, вы выбрали. Определите, ожидаются ли результаты на основе индивидуальных настроек, которые вы задали при генерации фильтра код Verilog.
Следующее окно wave показывает результаты симуляции формами волны HDL.