Сгенерируйте HDL-код для квантованного фильтра
generatehdl(
генерирует HDL-код для заданного фильтра System object™ и типа входных данных, filtSO
,'InputDataType',nt
)nt
.
Сгенерированный файл является одним исходным файлом, который включает в себя объявление сущности и код архитектуры. Вы можете найти этот файл в текущей рабочей папке, внутри hdlsrc
подпапка.
generatehdl(
генерирует HDL-код для заданного filterObj
)dfilt
фильтровать объект с использованием настроек по умолчанию.
generatehdl(___,Name,Value)
использует необязательные аргументы имя-значение, в дополнение к входным параметрам в предыдущих синтаксисах. Используйте эти свойства для переопределения настроек генерации HDL-кода по умолчанию.
Для настройки имени фильтра, целевой папки и определения целевого языка смотрите Свойства Генерации Основного HDL-кода.
Чтобы сконфигурировать коэффициенты, сложные входные порты и дополнительные порты для определенных типов фильтров, смотрите Свойства строения HDL-фильтра.
Для оптимизации скорости или области сгенерированного HDL-кода смотрите HDL Optimization Properties.
Для настройки портов, идентификаторов и комментариев см. раздел «Свойства HDL-портов и идентификаторов».
Для настройки HDL- конструкций см. HDL- Конструкции Свойств.
Чтобы сгенерировать и настроить испытательный стенд, смотрите Свойства испытательного стенда HDL.
Для интеграции сторонних инструментов EDA в рабочий процесс создания фильтра смотрите HDL-синтез и свойства автоматизации рабочих процессов.
Разработайте симметричный фильтр equiripple прямой формы с этими спецификациями:
Нормированная ширина полосы пропускания 0,2
Нормированная частота пробки 0,22
Неравномерность в полосе пропускания 1 дБ
Затухание в полосе задерживания 60 дБ
The design
функция возвращает dsp.FIRFilter
Системная object™, которая реализует спецификацию.
filtSpecs = fdesign.lowpass('Fp,Fst,Ap,Ast',0.2,0.22,1,60); FIRe = design(filtSpecs,'equiripple','FilterStructure','dfsymfir','SystemObject',true)
FIRe = dsp.FIRFilter with properties: Structure: 'Direct form symmetric' NumeratorSource: 'Property' Numerator: [1x202 double] InitialConditions: 0 Show all properties
Чтобы сгенерировать HDL-код, вызовите generatehdl
функция. Когда фильтр является системным объектом, необходимо задать тип данных с фиксированной точкой для входа с помощью свойства InputDataType. Кодер генерирует файл MyFilter.vhd
в целевой папке по умолчанию hdlsrc
.
generatehdl(FIRe,'InputDataType',numerictype(1,16,15),'Name','MyFilter');
### Starting VHDL code generation process for filter: MyFilter ### Generating: /tmp/BR2021ad_1655202_180016/mlx_to_docbook1/tp7b274b1c/hdlfilter-ex48836167/hdlsrc/MyFilter.vhd ### Starting generation of MyFilter VHDL entity ### Starting generation of MyFilter VHDL architecture ### Successful completion of VHDL code generation process for filter: MyFilter ### HDL latency is 2 samples
Разработайте симметричный фильтр equiripple прямой формы с этими спецификациями:
Нормированная ширина полосы пропускания 0,2
Нормированная частота пробки 0,22
Неравномерность в полосе пропускания 1 дБ
Затухание в полосе задерживания 60 дБ
The design
функция возвращает dsp.FIRFilter
Системная object™, которая реализует спецификацию.
filtSpecs = fdesign.lowpass('Fp,Fst,Ap,Ast',0.2,0.22,1,60); FIRe = design(filtSpecs,'equiripple','FilterStructure','dfsymfir','SystemObject',true)
FIRe = dsp.FIRFilter with properties: Structure: 'Direct form symmetric' NumeratorSource: 'Property' Numerator: [1x202 double] InitialConditions: 0 Show all properties
Сгенерируйте код VHDL и испытательный стенд VHDL для фильтра конечной импульсной характеристики equiripple. Когда фильтр является системным объектом, необходимо задать тип данных с фиксированной точкой для типа входных данных. Кодер генерирует файлы MyFilter.vhd
и MyFilterTB.vhd
в целевой папке по умолчанию hdlsrc
.
generatehdl(FIRe,'InputDataType',numerictype(1,16,15),'Name','MyFilter',... 'GenerateHDLTestbench','on','TestBenchName','MyFilterTB')
### Starting VHDL code generation process for filter: MyFilter ### Generating: /tmp/BR2021ad_1655202_180016/mlx_to_docbook1/tp7b274b1c/hdlfilter-ex63281302/hdlsrc/MyFilter.vhd ### Starting generation of MyFilter VHDL entity ### Starting generation of MyFilter VHDL architecture ### Successful completion of VHDL code generation process for filter: MyFilter ### HDL latency is 2 samples ### Starting generation of VHDL Test Bench. ### Generating input stimulus ### Done generating input stimulus; length 4486 samples. ### Generating Test bench: /tmp/BR2021ad_1655202_180016/mlx_to_docbook1/tp7b274b1c/hdlfilter-ex63281302/hdlsrc/MyFilterTB.vhd ### Creating stimulus vectors ... ### Done generating VHDL Test Bench.
Спроектируйте симметричный фильтр равновесия прямой формы с полностью параллельной (по умолчанию) архитектурой и программируемыми коэффициентами. The design
функция возвращает dsp.FIRFilter
Системный object™ с спецификацией lowpass по умолчанию.
firfilt = design(fdesign.lowpass,'equiripple','FilterStructure','dfsymfir','SystemObject',true)
firfilt = dsp.FIRFilter with properties: Structure: 'Direct form symmetric' NumeratorSource: 'Property' Numerator: [1x43 double] InitialConditions: 0 Show all properties
Чтобы сгенерировать HDL-код, вызовите generatehdl
функция. Когда фильтр является системным объектом, необходимо задать тип данных с фиксированной точкой для входных данных. Чтобы сгенерировать интерфейс процессора для коэффициентов, необходимо задать дополнительный аргумент пары "имя-значение".
generatehdl(firfilt,'InputDataType',numerictype(1,16,15),'CoefficientSource','ProcessorInterface')
### Starting VHDL code generation process for filter: firfilt ### Generating: /tmp/BR2021ad_1655202_180016/mlx_to_docbook1/tp7b274b1c/hdlfilter-ex74213987/hdlsrc/firfilt.vhd ### Starting generation of firfilt VHDL entity ### Starting generation of firfilt VHDL architecture ### Successful completion of VHDL code generation process for filter: firfilt ### HDL latency is 2 samples
Кодер генерирует эту сущность VHDL для объекта фильтра.
Создайте антисимметричный фильтр прямой формы с коэффициентами:
coeffs = fir1(22,0.45); firfilt = dsp.FIRFilter('Numerator',coeffs,'Structure','Direct form antisymmetric')
firfilt = dsp.FIRFilter with properties: Structure: 'Direct form antisymmetric' NumeratorSource: 'Property' Numerator: [1x23 double] InitialConditions: 0 Show all properties
Чтобы сгенерировать HDL-код, вызовите generatehdl
функция. Когда фильтр является системным объектом, необходимо задать тип данных с фиксированной точкой для входных данных. Чтобы сгенерировать частично последовательную архитектуру, задайте последовательный раздел. Чтобы включить CoefficientMemory
свойство, вы должны задать CoefficientSource
на ProcessorInterface
.
generatehdl(firfilt,'InputDataType',numerictype(1,16,15), ... 'SerialPartition',[7 4],'CoefficientMemory','DualPortRAMs', ... 'CoefficientSource','ProcessorInterface')
### Starting VHDL code generation process for filter: firfilt ### Generating: /tmp/BR2021ad_1655202_180016/mlx_to_docbook1/tp7b274b1c/hdlfilter-ex21465785/hdlsrc/firfilt.vhd ### Starting generation of firfilt VHDL entity ### Starting generation of firfilt VHDL architecture ### Clock rate is 7 times the input sample rate for this architecture. ### Successful completion of VHDL code generation process for filter: firfilt ### HDL latency is 3 samples
Сгенерированный код включает двухпортовый интерфейс ОЗУ для программируемых коэффициентов.
Исследуйте тактовую частоту и задержку для различных последовательных реализаций одного и того же фильтра. Использование симметричной структуры также позволяет логике фильтра совместно использовать умножители для симметричных коэффициентов.
Создайте симметричный конечная импульсная характеристика прямой формы с этими спецификациями:
Порядок фильтрации 13
Нормированная частота отсечения 0,4 для точки 6-dB
The design
функция возвращает dsp.FIRFilter
Системная object™, которая реализует спецификацию.
FIR = design(fdesign.lowpass('N,Fc',13,.4),'FilterStructure','dfsymfir','SystemObject',true)
FIR = dsp.FIRFilter with properties: Structure: 'Direct form symmetric' NumeratorSource: 'Property' Numerator: [1x14 double] InitialConditions: 0 Show all properties
Чтобы сгенерировать HDL-код, вызовите generatehdl
функция. Когда фильтр является системным объектом, необходимо задать тип данных с фиксированной точкой для входных данных.
Для сравнения базовой линии сначала сгенерируйте полностью параллельную архитектуру по умолчанию.
generatehdl(FIR,'Name','FullyParallel', ... 'InputDataType',numerictype(1,16,15))
### Starting VHDL code generation process for filter: FullyParallel ### Generating: /tmp/BR2021ad_1655202_180016/mlx_to_docbook1/tp7b274b1c/hdlfilter-ex94948885/hdlsrc/FullyParallel.vhd ### Starting generation of FullyParallel VHDL entity ### Starting generation of FullyParallel VHDL architecture ### Successful completion of VHDL code generation process for filter: FullyParallel ### HDL latency is 2 samples
Сгенерируйте полностью последовательную архитектуру путем установки размера раздела на эффективную длину фильтра. Скорость системных часов в шесть раз выше входа скорости выборки. Сообщенная задержка HDL на одну выборку больше, чем параллельная реализация по умолчанию.
generatehdl(FIR,'SerialPartition',6,'Name','FullySerial', ... 'InputDataType',numerictype(1,16,15))
### Starting VHDL code generation process for filter: FullySerial ### Generating: /tmp/BR2021ad_1655202_180016/mlx_to_docbook1/tp7b274b1c/hdlfilter-ex94948885/hdlsrc/FullySerial.vhd ### Starting generation of FullySerial VHDL entity ### Starting generation of FullySerial VHDL architecture ### Clock rate is 6 times the input sample rate for this architecture. ### Successful completion of VHDL code generation process for filter: FullySerial ### HDL latency is 3 samples
Сгенерируйте частично последовательную архитектуру с тремя равными разделами. Эта архитектура использует три множителя. Тактовая частота в два раза превышает входную, а задержка совпадает с параллельной реализацией по умолчанию.
generatehdl(FIR,'SerialPartition',[2 2 2],'Name','PartlySerial', ... 'InputDataType',numerictype(1,16,15))
### Starting VHDL code generation process for filter: PartlySerial ### Generating: /tmp/BR2021ad_1655202_180016/mlx_to_docbook1/tp7b274b1c/hdlfilter-ex94948885/hdlsrc/PartlySerial.vhd ### Starting generation of PartlySerial VHDL entity ### Starting generation of PartlySerial VHDL architecture ### Clock rate is 2 times the input sample rate for this architecture. ### Successful completion of VHDL code generation process for filter: PartlySerial ### HDL latency is 3 samples
Сгенерируйте каскадно-последовательную архитектуру, позволяя повторно использовать аккумулятор. Задайте три раздела в порядке убывания размера. Заметьте, что тактовая частота выше, чем скорость в частично последовательном (без повторного использования аккумулятора) примере.
generatehdl(FIR,'SerialPartition',[3 2 1],'ReuseAccum','on','Name','CascadeSerial', ... 'InputDataType',numerictype(1,16,15))
### Starting VHDL code generation process for filter: CascadeSerial ### Generating: /tmp/BR2021ad_1655202_180016/mlx_to_docbook1/tp7b274b1c/hdlfilter-ex94948885/hdlsrc/CascadeSerial.vhd ### Starting generation of CascadeSerial VHDL entity ### Starting generation of CascadeSerial VHDL architecture ### Clock rate is 4 times the input sample rate for this architecture. ### Successful completion of VHDL code generation process for filter: CascadeSerial ### HDL latency is 3 samples
Можно также сгенерировать каскадно-последовательную архитектуру, не задавая явно разделы. Кодер автоматически выбирает размеры разделов.
generatehdl(FIR,'ReuseAccum','on','Name','CascadeSerial', ... 'InputDataType',numerictype(1,16,15))
### Starting VHDL code generation process for filter: CascadeSerial ### Generating: /tmp/BR2021ad_1655202_180016/mlx_to_docbook1/tp7b274b1c/hdlfilter-ex94948885/hdlsrc/CascadeSerial.vhd ### Starting generation of CascadeSerial VHDL entity ### Starting generation of CascadeSerial VHDL architecture ### Clock rate is 4 times the input sample rate for this architecture. ### Serial partition # 1 has 3 inputs. ### Serial partition # 2 has 3 inputs. ### Successful completion of VHDL code generation process for filter: CascadeSerial ### HDL latency is 3 samples
Создайте двухступенчатый каскадный фильтр с этими спецификациями для каждой ступени фильтра:
Симметричный конечная импульсная характеристика прямой формы
Порядок фильтрации 8
Нормированная частота отсечения 0,4 для точки 6-dB
Каждый вызов design
функция возвращает dsp.FIRFilter
Системная object™, которая реализует спецификацию. The cascade
функция возвращает двухэтапный каскадный фильтр.
lp = design(fdesign.lowpass('N,Fc',8,.4),'FilterStructure','dfsymfir','SystemObject',true)
lp = dsp.FIRFilter with properties: Structure: 'Direct form symmetric' NumeratorSource: 'Property' Numerator: [1x9 double] InitialConditions: 0 Show all properties
hp = design(fdesign.highpass('N,Fc',8,.4),'FilterStructure','dfsymfir','SystemObject',true)
hp = dsp.FIRFilter with properties: Structure: 'Direct form symmetric' NumeratorSource: 'Property' Numerator: [1x9 double] InitialConditions: 0 Show all properties
casc = cascade(lp,hp)
casc = dsp.FilterCascade with properties: Stage1: [1x1 dsp.FIRFilter] Stage2: [1x1 dsp.FIRFilter]
Чтобы сгенерировать HDL-код, вызовите generatehdl
функция для каскадного фильтра. Когда фильтр является системным объектом, необходимо задать тип данных с фиксированной точкой для входных данных.
Задайте различные разделы для каждого каскадного каскада как массив ячеек.
generatehdl(casc,'InputDataType',numerictype(1,16,15),'SerialPartition',{[3 2],[4 1]})
### Starting VHDL code generation process for filter: casfilt ### Cascade stage # 1 ### Starting VHDL code generation process for filter: casfilt_stage1 ### Generating: /tmp/BR2021ad_1655202_180016/mlx_to_docbook1/tp7b274b1c/hdlfilter-ex16715237/hdlsrc/casfilt_stage1.vhd ### Starting generation of casfilt_stage1 VHDL entity ### Starting generation of casfilt_stage1 VHDL architecture ### Clock rate is 3 times the input sample rate for this architecture. ### Successful completion of VHDL code generation process for filter: casfilt_stage1 ### Cascade stage # 2 ### Starting VHDL code generation process for filter: casfilt_stage2 ### Generating: /tmp/BR2021ad_1655202_180016/mlx_to_docbook1/tp7b274b1c/hdlfilter-ex16715237/hdlsrc/casfilt_stage2.vhd ### Starting generation of casfilt_stage2 VHDL entity ### Starting generation of casfilt_stage2 VHDL architecture ### Clock rate is 4 times the input sample rate for this architecture. ### Successful completion of VHDL code generation process for filter: casfilt_stage2 ### Generating: /tmp/BR2021ad_1655202_180016/mlx_to_docbook1/tp7b274b1c/hdlfilter-ex16715237/hdlsrc/casfilt.vhd ### Starting generation of casfilt VHDL entity ### Starting generation of casfilt VHDL architecture ### Successful completion of VHDL code generation process for filter: casfilt ### HDL latency is 2 samples
Чтобы исследовать эффективную длину фильтра и опции разбиения для каждого каскада фильтра, вызовите hdlfilterserialinfo
функция. Функция возвращает вектор разбиения, соответствующий желаемому количеству умножителей. Запросите возможности последовательного разбиения для первого этапа и выберите количество умножителей.
hdlfilterserialinfo(casc.Stage1,'InputDataType',numerictype(1,16,15))
| Total Coefficients | Zeros | A/Symm | Effective | --------------------------------------------------- | 9 | 0 | 4 | 5 | Effective filter length for SerialPartition value is 5. Table of 'SerialPartition' values with corresponding values of folding factor and number of multipliers for the given filter. | Folding Factor | Multipliers | SerialPartition | -------------------------------------------------- | 1 | 5 |[1 1 1 1 1] | | 2 | 3 |[2 2 1] | | 3 | 2 |[3 2] | | 4 | 2 |[4 1] | | 5 | 1 |[5] |
Выберите вектор последовательного разбиения для цели из двух умножителей и передайте векторы в generatehdl
функция. Вызов функции таким образом возвращает первый возможный вектор разбиения, но существует несколько векторов разбиения, которые достигают архитектуры с двумя умножителями. Каждый каскад использует разную тактовую частоту, основанную на количестве умножителей. Кодер генерирует контроллер синхронизации, чтобы вывести эти часы.
sp1 = hdlfilterserialinfo(casc.Stage1,'InputDataType',numerictype(1,16,15),'Multiplier',2)
sp1 = 1×2
3 2
sp2 = hdlfilterserialinfo(casc.Stage2,'InputDataType',numerictype(1,16,15),'Multiplier',3)
sp2 = 1×3
2 2 1
generatehdl(casc,'InputDataType',numerictype(1,16,15),'SerialPartition',{sp1,sp2})
### Starting VHDL code generation process for filter: casfilt ### Cascade stage # 1 ### Starting VHDL code generation process for filter: casfilt_stage1 ### Generating: /tmp/BR2021ad_1655202_180016/mlx_to_docbook1/tp7b274b1c/hdlfilter-ex16715237/hdlsrc/casfilt_stage1.vhd ### Starting generation of casfilt_stage1 VHDL entity ### Starting generation of casfilt_stage1 VHDL architecture ### Clock rate is 3 times the input sample rate for this architecture. ### Successful completion of VHDL code generation process for filter: casfilt_stage1 ### Cascade stage # 2 ### Starting VHDL code generation process for filter: casfilt_stage2 ### Generating: /tmp/BR2021ad_1655202_180016/mlx_to_docbook1/tp7b274b1c/hdlfilter-ex16715237/hdlsrc/casfilt_stage2.vhd ### Starting generation of casfilt_stage2 VHDL entity ### Starting generation of casfilt_stage2 VHDL architecture ### Clock rate is 2 times the input sample rate for this architecture. ### Successful completion of VHDL code generation process for filter: casfilt_stage2 ### Generating: /tmp/BR2021ad_1655202_180016/mlx_to_docbook1/tp7b274b1c/hdlfilter-ex16715237/hdlsrc/casfilt.vhd ### Starting generation of casfilt VHDL entity ### Starting generation of casfilt VHDL architecture ### Successful completion of VHDL code generation process for filter: casfilt ### HDL latency is 2 samples
Создайте фильтр SOS прямой формы с этими спецификациями:
Частота дискретизации 48 кГц
Порядок фильтрации 5
Частота отключения 10,8 кГц для точки 3 дБ
The design
функция возвращает dsp.BiquadFilter
Системная object™, которая реализует спецификацию. Пользовательский тип данных аккумулятора избегает ошибки квантования.
Fs = 48e3; Fc = 10.8e3; N = 5; lp = design(fdesign.lowpass('n,f3db',N,Fc,Fs),'butter', ... 'FilterStructure','df1sos','SystemObject',true)
lp = dsp.BiquadFilter with properties: Structure: 'Direct form I' SOSMatrixSource: 'Property' SOSMatrix: [3x6 double] ScaleValues: [4x1 double] NumeratorInitialConditions: 0 DenominatorInitialConditions: 0 OptimizeUnityScaleValues: true Show all properties
nt_accum = numerictype('Signedness','auto','WordLength',20, ... 'FractionLength',15); nt_input = numerictype(1,16,15); lp.NumeratorAccumulatorDataType = 'Custom'; lp.CustomNumeratorAccumulatorDataType = nt_accum; lp.DenominatorAccumulatorDataType = 'Custom'; lp.CustomDenominatorAccumulatorDataType = nt_accum;
Чтобы перечислить все возможные спецификации последовательной архитектуры для этого фильтра, вызовите hdlfilterserialinfo
функция. Когда фильтр является системным объектом, необходимо задать тип данных с фиксированной точкой для входных данных.
hdlfilterserialinfo(lp,'InputDataType',nt_input)
Table of folding factors with corresponding number of multipliers for the given filter. | Folding factor | Multipliers | -------------------------------- | 6 | 3 | | 9 | 2 | | 18 | 1 |
Чтобы сгенерировать HDL-код, вызовите generatehdl
функция с одной из последовательных архитектур. Задайте либо NumMultipliers
или FoldingFactor
свойство, но не то и другое. Например, использование NumMultipliers
свойство:
generatehdl(lp,'NumMultipliers',2,'InputDataType',nt_input)
### Starting VHDL code generation process for filter: lp ### Generating: /tmp/BR2021ad_1655202_180016/mlx_to_docbook1/tp7b274b1c/hdlfilter-ex90334139/hdlsrc/lp.vhd ### Starting generation of lp VHDL entity ### Starting generation of lp VHDL architecture ### Successful completion of VHDL code generation process for filter: lp ### HDL latency is 2 samples
Кроме того, задайте ту же архитектуру с FoldingFactor
свойство.
generatehdl(lp,'FoldingFactor',9,'InputDataType',nt_input)
### Starting VHDL code generation process for filter: lp ### Generating: /tmp/BR2021ad_1655202_180016/mlx_to_docbook1/tp7b274b1c/hdlfilter-ex90334139/hdlsrc/lp.vhd ### Starting generation of lp VHDL entity ### Starting generation of lp VHDL architecture ### Successful completion of VHDL code generation process for filter: lp ### HDL latency is 2 samples
Обе эти команды генерируют фильтр, который использует в общей сложности два умножителя с задержкой в девять тактов. Эта архитектура использует меньше площади, чем параллельная реализация, за счет задержек.
Используйте распределенные арифметические опции, чтобы уменьшить количество умножителей в реализации фильтра.
Создайте фильтр конечной импульсной характеристики прямой формы и вычислите длину фильтра, FL
.
filtdes = fdesign.lowpass('N,Fc,Ap,Ast',30,0.4,0.05,0.03,'linear'); firfilt = design(filtdes,'FilterStructure','dffir','SystemObject',true); FL = length(find(firfilt.Numerator ~= 0))
FL = 31
Задайте набор разделов так, чтобы размеры разделов складывались с длиной фильтра. Это всего лишь одна опция разбиения, можно задать другие комбинации размеров.
generatehdl(firfilt,'InputDataType',numerictype(1,16,15), ... 'DALUTPartition',[8 8 8 7])
Warning: Structure fir has symmetric coefficients, consider converting to structure symmetricfir for reduced area.
Warning: Structure fir has symmetric coefficients, consider converting to structure symmetricfir for reduced area.
### Starting VHDL code generation process for filter: firfilt ### Generating: /tmp/BR2021ad_1655202_180016/mlx_to_docbook1/tp7b274b1c/hdlfilter-ex00198568/hdlsrc/firfilt.vhd ### Starting generation of firfilt VHDL entity ### Starting generation of firfilt VHDL architecture ### Clock rate is 16 times the input sample rate for this architecture. ### Successful completion of VHDL code generation process for filter: firfilt ### HDL latency is 3 samples
Для сравнения создайте симметричный конечная импульсная характеристика прямой формы. Длина фильтра меньше в симметричном случае.
filtdes = fdesign.lowpass('N,Fc,Ap,Ast',30,0.4,0.05,0.03,'linear'); firfilt = design(filtdes,'FilterStructure','dfsymfir','SystemObject',true); FL = ceil(length(find(firfilt.Numerator ~= 0))/2)
FL = 16
Задайте набор разделов так, чтобы размеры разделов складывались с длиной фильтра. Это всего лишь одна опция разбиения, можно задать другие комбинации размеров. Советы: Используйте hdlfilterdainfo
функция для отображения эффективной длины фильтра, опций разбиения LUT и возможных DARadix
значения для фильтра.
generatehdl(firfilt,'InputDataType',numerictype(1,16,15), ... 'DALUTPartition',[8 8])
### Starting VHDL code generation process for filter: firfilt ### Generating: /tmp/BR2021ad_1655202_180016/mlx_to_docbook1/tp7b274b1c/hdlfilter-ex00198568/hdlsrc/firfilt.vhd ### Starting generation of firfilt VHDL entity ### Starting generation of firfilt VHDL architecture ### Clock rate is 17 times the input sample rate for this architecture. ### Successful completion of VHDL code generation process for filter: firfilt ### HDL latency is 3 samples
Используйте распределенные арифметические опции, чтобы уменьшить количество умножителей в реализации фильтра.
Создайте прямую форму конечной импульсной характеристики полифазы дециматор и вычислите длину фильтра.
d = fdesign.decimator(4);
filt = design(d,'SystemObject',true);
FL = size(polyphase(filt),2)
FL = 27
Задайте распределенные арифметические LUT-разделы, которые складываются в размер фильтра. Когда вы задаете разделы как вектор для полифазы фильтра, каждый подфильтр использует одни и те же разделы.
generatehdl(filt,'InputDataType',numerictype(1,16,15), ... 'DALUTPartition',[8 8 8 3])
### Starting VHDL code generation process for filter: firdecim ### Generating: /tmp/BR2021ad_1655202_180016/mlx_to_docbook1/tp7b274b1c/hdlfilter-ex51670151/hdlsrc/firdecim.vhd ### Starting generation of firdecim VHDL entity ### Starting generation of firdecim VHDL architecture ### Clock rate is 4 times the input and 16 times the output sample rate for this architecture. ### Successful completion of VHDL code generation process for filter: firdecim ### HDL latency is 16 samples
Можно также задать уникальные разделы для каждого подфильтера. Для того же фильтра задайте разбиение подфильтера как матрицу. Длина первого подфильтра равна 1, а другие подфильтры имеют длину 26. Советы: Используйте hdlfilterdainfo
функция для отображения эффективной длины фильтра, опций разбиения LUT и возможных DARadix
значения для фильтра.
d = fdesign.decimator(4); filt = design(d,'SystemObject',true); generatehdl(filt,'InputDataType',numerictype(1,16,15), ... 'DALUTPartition',[1 0 0 0; 8 8 8 2; 8 8 6 4; 8 8 8 2])
### Starting VHDL code generation process for filter: firdecim ### Generating: /tmp/BR2021ad_1655202_180016/mlx_to_docbook1/tp7b274b1c/hdlfilter-ex51670151/hdlsrc/firdecim.vhd ### Starting generation of firdecim VHDL entity ### Starting generation of firdecim VHDL architecture ### Clock rate is 4 times the input and 16 times the output sample rate for this architecture. ### Successful completion of VHDL code generation process for filter: firdecim ### HDL latency is 16 samples
Используйте распределенные арифметические опции, чтобы уменьшить количество умножителей в реализации фильтра.
Создание каскадного фильтра
Создайте двухэтапный каскадный фильтр. Задайте различные разделы LUT для каждого каскада и укажите векторы разбиения в массиве ячеек.
lp = design(fdesign.lowpass('N,Fc',8,.4),'filterstructure','dfsymfir', ... 'SystemObject',true); hp = design(fdesign.highpass('N,Fc',8,.4),'filterstructure','dfsymfir', ... 'SystemObject',true); casc = cascade(lp,hp); nt1 = numerictype(1,12,10); generatehdl(casc,'InputDataType',nt1,'DALUTPartition',{[3 2],[2 2 1]})
### Starting VHDL code generation process for filter: casfilt ### Cascade stage # 1 ### Starting VHDL code generation process for filter: casfilt_stage1 ### Generating: /tmp/BR2021ad_1655202_180016/mlx_to_docbook1/tp7b274b1c/hdlfilter-ex17169310/hdlsrc/casfilt_stage1.vhd ### Starting generation of casfilt_stage1 VHDL entity ### Starting generation of casfilt_stage1 VHDL architecture ### Clock rate is 13 times the input sample rate for this architecture. ### Successful completion of VHDL code generation process for filter: casfilt_stage1 ### Cascade stage # 2 ### Starting VHDL code generation process for filter: casfilt_stage2 ### Generating: /tmp/BR2021ad_1655202_180016/mlx_to_docbook1/tp7b274b1c/hdlfilter-ex17169310/hdlsrc/casfilt_stage2.vhd ### Starting generation of casfilt_stage2 VHDL entity ### Starting generation of casfilt_stage2 VHDL architecture ### Clock rate is 29 times the input sample rate for this architecture. ### Successful completion of VHDL code generation process for filter: casfilt_stage2 ### Generating: /tmp/BR2021ad_1655202_180016/mlx_to_docbook1/tp7b274b1c/hdlfilter-ex17169310/hdlsrc/casfilt.vhd ### Starting generation of casfilt VHDL entity ### Starting generation of casfilt VHDL architecture ### Successful completion of VHDL code generation process for filter: casfilt ### HDL latency is 4 samples
Распределенные арифметические опции
Используйте hdlfilterdainfo
функция для отображения эффективной длины фильтра, опций разбиения LUT и возможных DARadix
значения для каждого каскада фильтра. Функция возвращает вектор LUT-разделов, соответствующий желаемому количеству адресных бит.
Запросите возможности разбиения LUT для первого этапа.
hdlfilterdainfo(casc.Stage1,'InputDataType',nt1);
| Total Coefficients | Zeros | A/Symm | Effective | --------------------------------------------------- | 9 | 0 | 4 | 5 | Effective filter length for SerialPartition value is 5. Table of 'DARadix' values with corresponding values of folding factor and multiple for LUT sets for the given filter. | Folding Factor | LUT-Sets Multiple | DARadix | ------------------------------------------------ | 1 | 12 | 2^12 | | 3 | 6 | 2^6 | | 4 | 4 | 2^4 | | 5 | 3 | 2^3 | | 7 | 2 | 2^2 | | 13 | 1 | 2^1 | Details of LUTs with corresponding 'DALUTPartition' values. | Max Address Width | Size(bits) | LUT Details | DALUTPartition | --------------------------------------------------------------------------- | 5 | 416 |1x32x13 |[5] | | 4 | 216 |1x16x12, 1x2x12 |[4 1] | | 3 | 124 |1x4x13, 1x8x9 |[3 2] | | 2 | 104 |1x2x12, 1x4x12, 1x4x8 |[2 2 1] | Notes: 1. LUT Details indicates number of LUTs with their sizes. e.g. 1x1024x18 implies 1 LUT of 1024 18-bit wide locations.
Чтобы запросить возможности разбиения LUT для второго этапа, необходимо сначала определить тип входных данных второго этапа.
y = casc.Stage1(fi(0,nt1));
nt2 = y.numerictype;
hdlfilterdainfo(casc.Stage2,'InputDataType',nt2);
| Total Coefficients | Zeros | A/Symm | Effective | --------------------------------------------------- | 9 | 0 | 4 | 5 | Effective filter length for SerialPartition value is 5. Table of 'DARadix' values with corresponding values of folding factor and multiple for LUT sets for the given filter. | Folding Factor | LUT-Sets Multiple | DARadix | ------------------------------------------------ | 1 | 28 | 2^28 | | 3 | 14 | 2^14 | | 5 | 7 | 2^7 | | 8 | 4 | 2^4 | | 15 | 2 | 2^2 | | 29 | 1 | 2^1 | Details of LUTs with corresponding 'DALUTPartition' values. | Max Address Width | Size(bits) | LUT Details | DALUTPartition | ---------------------------------------------------------------------------- | 5 | 896 |1x32x28 |[5] | | 4 | 488 |1x16x27, 1x2x28 |[4 1] | | 3 | 304 |1x4x28, 1x8x24 |[3 2] | | 2 | 256 |1x2x28, 1x4x23, 1x4x27 |[2 2 1] | Notes: 1. LUT Details indicates number of LUTs with their sizes. e.g. 1x1024x18 implies 1 LUT of 1024 18-bit wide locations.
Различные разделы LUT для каждого этапа
Выберите ширину адреса и коэффициент складывания, чтобы получить раздел LUT для каждого этапа. На первом этапе используются LUT с максимальным размером адреса пять бит. На втором этапе используются LUT с максимальным размером адреса в три бита. Они работают с одной тактовой частотой и имеют различные разделы LUT.
dp1 = hdlfilterdainfo(casc.Stage1,'InputDataType',nt1, ... 'LUTInputs',5,'FoldingFactor',3); dp2 = hdlfilterdainfo(casc.Stage2,'InputDataType',nt1, ... 'LUTInputs',3,'FoldingFactor',5); generatehdl(casc,'InputDataType',nt1,'DALUTPartition',{dp1,dp2});
### Starting VHDL code generation process for filter: casfilt ### Cascade stage # 1 ### Starting VHDL code generation process for filter: casfilt_stage1 ### Generating: /tmp/BR2021ad_1655202_180016/mlx_to_docbook1/tp7b274b1c/hdlfilter-ex17169310/hdlsrc/casfilt_stage1.vhd ### Starting generation of casfilt_stage1 VHDL entity ### Starting generation of casfilt_stage1 VHDL architecture ### Clock rate is 13 times the input sample rate for this architecture. ### Successful completion of VHDL code generation process for filter: casfilt_stage1 ### Cascade stage # 2 ### Starting VHDL code generation process for filter: casfilt_stage2 ### Generating: /tmp/BR2021ad_1655202_180016/mlx_to_docbook1/tp7b274b1c/hdlfilter-ex17169310/hdlsrc/casfilt_stage2.vhd ### Starting generation of casfilt_stage2 VHDL entity ### Starting generation of casfilt_stage2 VHDL architecture ### Clock rate is 29 times the input sample rate for this architecture. ### Successful completion of VHDL code generation process for filter: casfilt_stage2 ### Generating: /tmp/BR2021ad_1655202_180016/mlx_to_docbook1/tp7b274b1c/hdlfilter-ex17169310/hdlsrc/casfilt.vhd ### Starting generation of casfilt VHDL entity ### Starting generation of casfilt VHDL architecture ### Successful completion of VHDL code generation process for filter: casfilt ### HDL latency is 4 samples
Различные DARadix
Значения для каждого этапа
Можно также задать различные DARadix
значения для каждого фильтра в каскаде. В командной строке можно задать только различные каскадные разделы. Когда вы задаете разделы в диалоговом окне Генерация HDL, все каскадные этапы используют одни и те же разделы. Просмотр результатов hdlfilterdainfo
для установки DARadix
значения для каждого этапа.
generatehdl(casc,'InputDataType',nt1, ... 'DALUTPartition',{[3 2],[2 2 1]},'DARadix',{2^3,2^7})
### Starting VHDL code generation process for filter: casfilt ### Cascade stage # 1 ### Starting VHDL code generation process for filter: casfilt_stage1 ### Generating: /tmp/BR2021ad_1655202_180016/mlx_to_docbook1/tp7b274b1c/hdlfilter-ex17169310/hdlsrc/casfilt_stage1.vhd ### Starting generation of casfilt_stage1 VHDL entity ### Starting generation of casfilt_stage1 VHDL architecture ### Clock rate is 5 times the input sample rate for this architecture. ### Successful completion of VHDL code generation process for filter: casfilt_stage1 ### Cascade stage # 2 ### Starting VHDL code generation process for filter: casfilt_stage2 ### Generating: /tmp/BR2021ad_1655202_180016/mlx_to_docbook1/tp7b274b1c/hdlfilter-ex17169310/hdlsrc/casfilt_stage2.vhd ### Starting generation of casfilt_stage2 VHDL entity ### Starting generation of casfilt_stage2 VHDL architecture ### Clock rate is 5 times the input sample rate for this architecture. ### Successful completion of VHDL code generation process for filter: casfilt_stage2 ### Generating: /tmp/BR2021ad_1655202_180016/mlx_to_docbook1/tp7b274b1c/hdlfilter-ex17169310/hdlsrc/casfilt.vhd ### Starting generation of casfilt VHDL entity ### Starting generation of casfilt VHDL architecture ### Successful completion of VHDL code generation process for filter: casfilt ### HDL latency is 4 samples
Задает различные архитектуры фильтров для различных каскадных каскадных фильтров. Можно задать сочетание последовательной, распределенной арифметики (DA) и параллельной архитектуры в зависимости от аппаратных ограничений.
Создание каскадного фильтра
Создайте трехэтапный фильтр. Каждый этап является другим типом.
h1 = dsp.FIRFilter('Numerator',[0.05 -.25 .88 0.9 .88 -.25 0.05]); h2 = dsp.FIRFilter('Numerator',[-0.008 0.06 -0.44 0.44 -0.06 0.008], ... 'Structure','Direct form antisymmetric'); h3 = dsp.FIRFilter('Numerator',[-0.008 0.06 0.44 0.44 0.06 -0.008], ... 'Structure','Direct form symmetric'); casc = cascade(h1,h2,h3);
Задайте архитектуру для каждого этапа
Задайте архитектуру DA для первого этапа, последовательную архитектуру для второго этапа и полностью параллельную (по умолчанию) архитектуру для третьего этапа.
Получение DARadix
значения для первой архитектуры, используйте hdlfilterdainfo
, затем выберите значение из dr
.
nt = numerictype(1,12,10); [dp,dr,lutsize,ff] = hdlfilterdainfo(casc.Stage1, ... 'InputDataType',numerictype(1,12,10)); dr
dr = 6x1 cell
{'2^12'}
{'2^6' }
{'2^4' }
{'2^3' }
{'2^2' }
{'2^1' }
Установите значения свойств в виде массивов ячеек, где каждая камера применяется к этапу. Чтобы отключить свойство для определенного этапа, используйте значения по умолчанию (-1 для разделов и 2 для DARadix
).
generatehdl(casc,'InputDataType',nt, ... 'SerialPartition',{-1,3,-1}, ... 'DALUTPartition',{[4 3],-1,-1}, ... 'DARadix',{2^6,2,2});
Warning: Structure fir has symmetric coefficients, consider converting to structure symmetricfir for reduced area.
Warning: Structure fir has symmetric coefficients, consider converting to structure symmetricfir for reduced area.
Warning: Structure fir has symmetric coefficients, consider converting to structure symmetricfir for reduced area.
### Starting VHDL code generation process for filter: casfilt ### Cascade stage # 1 ### Starting VHDL code generation process for filter: casfilt_stage1 ### Generating: /tmp/BR2021ad_1655202_180016/mlx_to_docbook1/tp7b274b1c/hdlfilter-ex13094988/hdlsrc/casfilt_stage1.vhd ### Starting generation of casfilt_stage1 VHDL entity ### Starting generation of casfilt_stage1 VHDL architecture ### Clock rate is 2 times the input sample rate for this architecture. ### Successful completion of VHDL code generation process for filter: casfilt_stage1 ### Cascade stage # 2 ### Starting VHDL code generation process for filter: casfilt_stage2 ### Generating: /tmp/BR2021ad_1655202_180016/mlx_to_docbook1/tp7b274b1c/hdlfilter-ex13094988/hdlsrc/casfilt_stage2.vhd ### Starting generation of casfilt_stage2 VHDL entity ### Starting generation of casfilt_stage2 VHDL architecture ### Clock rate is 3 times the input sample rate for this architecture. ### Successful completion of VHDL code generation process for filter: casfilt_stage2 ### Cascade stage # 3 ### Starting VHDL code generation process for filter: casfilt_stage3 ### Generating: /tmp/BR2021ad_1655202_180016/mlx_to_docbook1/tp7b274b1c/hdlfilter-ex13094988/hdlsrc/casfilt_stage3.vhd ### Starting generation of casfilt_stage3 VHDL entity ### Starting generation of casfilt_stage3 VHDL architecture ### Successful completion of VHDL code generation process for filter: casfilt_stage3 ### Generating: /tmp/BR2021ad_1655202_180016/mlx_to_docbook1/tp7b274b1c/hdlfilter-ex13094988/hdlsrc/casfilt.vhd ### Starting generation of casfilt VHDL entity ### Starting generation of casfilt VHDL architecture ### Successful completion of VHDL code generation process for filter: casfilt ### HDL latency is 3 samples
Можно задать входные коэффициенты, чтобы протестировать фильтр с программируемыми коэффициентами.
Создайте симметричный конечная импульсная характеристика прямой формы с полностью параллельной (по умолчанию) архитектурой. Задайте коэффициенты для объекта фильтра в векторе b
. Кодер генерирует испытательный стенд для тестирования интерфейса коэффициента с помощью второго набора коэффициентов c
. Кодер обрезает c
к эффективной длине фильтра.
b = [-0.01 0.1 0.8 0.1 -0.01]; c = [-0.03 0.5 0.7 0.5 -0.03]; c = c(1:ceil(length(c)/2)); filt = dsp.FIRFilter('Numerator',b,'Structure','Direct form symmetric'); generatehdl(filt,'InputDataType',numerictype(1,16,15), ... 'GenerateHDLTestbench','on', ... 'CoefficientSource','ProcessorInterface','TestbenchCoeffStimulus',c)
### Starting VHDL code generation process for filter: firfilt ### Generating: /tmp/BR2021ad_1655202_180016/mlx_to_docbook1/tp7b274b1c/hdlfilter-ex66247050/hdlsrc/firfilt.vhd ### Starting generation of firfilt VHDL entity ### Starting generation of firfilt VHDL architecture ### Successful completion of VHDL code generation process for filter: firfilt ### HDL latency is 2 samples ### Starting generation of VHDL Test Bench. ### Generating input stimulus ### Done generating input stimulus; length 3107 samples. ### Generating Test bench: /tmp/BR2021ad_1655202_180016/mlx_to_docbook1/tp7b274b1c/hdlfilter-ex66247050/hdlsrc/firfilt_tb.vhd ### Creating stimulus vectors ... ### Done generating VHDL Test Bench.
Создайте спецификацию фильтра. Когда вы генерируете HDL-код, задайте программируемый интерфейс для коэффициентов.
Fs = 48e3; Fc = 10.8e3; N = 5; f_lp = fdesign.lowpass('n,f3db',N,Fc,Fs); filtiir = design(f_lp,'butter','FilterStructure','df2sos','SystemObject',true); filtiir.OptimizeUnityScaleValues = 0; generatehdl(filtiir,'InputDataType',numerictype(1,16,15), ... 'CoefficientSource','ProcessorInterface')
### Starting VHDL code generation process for filter: filtiir ### Generating: /tmp/BR2021ad_1655202_180016/mlx_to_docbook1/tp7b274b1c/hdlfilter-ex92389569/hdlsrc/filtiir.vhd ### Starting generation of filtiir VHDL entity ### Starting generation of filtiir VHDL architecture ### Second-order section, # 1 ### Second-order section, # 2 ### First-order section, # 3 ### Successful completion of VHDL code generation process for filter: filtiir ### HDL latency is 2 samples
Кодер генерирует эту сущность VHDL для объекта фильтра.
Исследуйте различные способы задать порты синхроимпульса для многоскоростных фильтров.
Настройка по умолчанию
Создайте полифазный преобразователь скорости выборки. По умолчанию кодер генерирует один входной синхроимпульс (clk
), активизируется вход синхроимпульс (clk_enable
) и выходной сигнал включения синхроимпульса с именем ce_out
. The ce_out
сигнал указывает, когда выборка выхода готова. The ce_in
выходной сигнал указывает, когда входная выборка была принята. Можно использовать этот сигнал для управления потоком данных в восходящем направлении.
firrc = dsp.FIRRateConverter('InterpolationFactor',5,'DecimationFactor',3); generatehdl(firrc,'InputDataType',numerictype(1,16,15))
### Starting VHDL code generation process for filter: firrc ### Generating: /tmp/BR2021ad_1655202_180016/mlx_to_docbook1/tp7b274b1c/hdlfilter-ex09049114/hdlsrc/firrc.vhd ### Starting generation of firrc VHDL entity ### Starting generation of firrc VHDL architecture ### Successful completion of VHDL code generation process for filter: firrc ### HDL latency is 2 samples
Сгенерированная сущность имеет следующие сигналы:
Настраиваемые имена часов
Можно задать пользовательские имена для входа включения синхроимпульса и выхода сигналов включения синхроимпульса. Вы не можете переименовать ce_in
сигнал.
firrc = dsp.FIRRateConverter('InterpolationFactor',5,'DecimationFactor',3)
firrc = dsp.FIRRateConverter with properties: InterpolationFactor: 5 DecimationFactor: 3 Numerator: [1x71 double] Show all properties
generatehdl(firrc,'InputDataType',numerictype(1,16,15),... 'ClockEnableInputPort','clk_en1', ... 'ClockEnableOutputPort','clk_en2')
### Starting VHDL code generation process for filter: firrc ### Generating: /tmp/BR2021ad_1655202_180016/mlx_to_docbook1/tp7b274b1c/hdlfilter-ex09049114/hdlsrc/firrc.vhd ### Starting generation of firrc VHDL entity ### Starting generation of firrc VHDL architecture ### Successful completion of VHDL code generation process for filter: firrc ### HDL latency is 2 samples
Сгенерированная сущность имеет следующие сигналы:
Несколько входов синхроимпульса
Чтобы сгенерировать входные сигналы нескольких синхроимпульсов для поддерживаемого многоскоростного фильтра, установите ClockInputs
свойство к 'Multiple'
. В этом случае кодер не генерирует никаких выходных портов включения синхроимпульса.
decim = dsp.CICDecimator(7,1,4); generatehdl(decim,'InputDataType',numerictype(1,16,15), ... 'ClockInputs','Multiple')
### Starting VHDL code generation process for filter: cicDecOrIntFilt ### Generating: /tmp/BR2021ad_1655202_180016/mlx_to_docbook1/tp7b274b1c/hdlfilter-ex09049114/hdlsrc/cicDecOrIntFilt.vhd ### Starting generation of cicDecOrIntFilt VHDL entity ### Starting generation of cicDecOrIntFilt VHDL architecture ### Section # 1 : Integrator ### Section # 2 : Integrator ### Section # 3 : Integrator ### Section # 4 : Integrator ### Section # 5 : Comb ### Section # 6 : Comb ### Section # 7 : Comb ### Section # 8 : Comb ### Successful completion of VHDL code generation process for filter: cicDecOrIntFilt ### HDL latency is 7 samples
Сгенерированная сущность имеет следующие сигналы:
Создайте объект фильтра. Затем позвоните generatehdl
, и задайте инструмент синтеза.
lpf = fdesign.lowpass('fp,fst,ap,ast',0.45,0.55,1,60); firfilt = design(lpf,'equiripple','FilterStructure','dfsymfir', ... 'SystemObject',true); generatehdl(firfilt,'InputDataType',numerictype(1,14,13), ... 'HDLSynthTool','Quartus');
### Starting VHDL code generation process for filter: firfilt ### Generating: /tmp/BR2021ad_1655202_180016/mlx_to_docbook1/tp7b274b1c/hdlfilter-ex92219095/hdlsrc/firfilt.vhd ### Starting generation of firfilt VHDL entity ### Starting generation of firfilt VHDL architecture ### Successful completion of VHDL code generation process for filter: firfilt ### HDL latency is 2 samples
Кодер генерирует файл скрипта с именем firfilt_quartus.tcl
, используя свойства скрипта по умолчанию для инструмента синтеза Altera ® Quartus II.
type hdlsrc/firfilt_quartus.tcl
load_package flow set top_level firfilt set src_dir "./hdlsrc" set prj_dir "q2dir" file mkdir ../$prj_dir cd ../$prj_dir project_new $top_level -revision $top_level -overwrite set_global_assignment -name FAMILY "Stratix II" set_global_assignment -name DEVICE EP2S60F484C3 set_global_assignment -name TOP_LEVEL_ENTITY $top_level set_global_assignment -name vhdl_FILE "../$src_dir/firfilt.vhd" execute_flow -compile project_close
Можно задать свойства автоматизации скриптов в фиктивные значения, чтобы проиллюстрировать, как кодер создает скрипт синтеза из свойств.
Проектируйте фильтр и генерируйте HDL. Укажите инструмент синтеза и пользовательский текст для включения в скрипт синтеза.
lpf = fdesign.lowpass('fp,fst,ap,ast',0.45,0.55,1,60); firfilt = design(lpf,'equiripple','FilterStructure','dfsymfir', ... 'Systemobject',true); generatehdl(firfilt,'InputDataType',numerictype(1,14,13), ... 'HDLSynthTool','ISE', ... 'HDLSynthInit','init line 1 : module name is %s\ninit line 2\n', ... 'HDLSynthCmd','command : HDL filename is %s\n', ... 'HDLSynthTerm','term line 1\nterm line 2\n');
### Starting VHDL code generation process for filter: firfilt ### Generating: /tmp/BR2021ad_1655202_180016/mlx_to_docbook1/tp7b274b1c/hdlfilter-ex64737676/hdlsrc/firfilt.vhd ### Starting generation of firfilt VHDL entity ### Starting generation of firfilt VHDL architecture ### Successful completion of VHDL code generation process for filter: firfilt ### HDL latency is 2 samples
Кодер генерирует файл скрипта с именем firfilt_ise.tcl
. Обратите внимание на расположение заданного пользовательского текста. Можно использовать эту функцию для добавления инструкций по синтезу к сгенерированному скрипту.
type hdlsrc/firfilt_ise.tcl
init line 1 : module name is firfilt init line 2 command : HDL filename is firfilt.vhd term line 1 term line 2
filtSO
- ФильтрФильтр, из которого можно сгенерировать HDL-код, заданный как Системный объект фильтра. Чтобы создать Системный объект фильтра, используйте design
или см. страницу с описанием объекта. Можно использовать следующие системные объекты из DSP System Toolbox™:
Фильтры с одной скоростью
Многоскоростные фильтры
nt
- Тип входных данныхnumerictype
объектВходные данные, заданный как a numerictype
объект. Этот аргумент применяется только, когда входной фильтр является системным объектом. Функции numerictype(s,w,f)
, где s
равен 1 для со знаком и 0 для без знака, w
- размер слова в битах и f
- количество дробных бит.
fd
- Тип данных дробной задержкиnumerictype
объектТип данных дробной задержки, заданный как a numerictype
объект. Этот аргумент применяется только, когда входной фильтр является dsp.VariableFractionalDelay
Системный объект. Функции numerictype(s,w,f)
, где s
равен 1 для со знаком и 0 для без знака, w
- размер слова в битах и f
- количество дробных бит.
filterObj
- Фильтрdfilt
объектФильтр, из которого можно сгенерировать HDL-код, заданный как dfilt
объект. Вы можете создать этот объект при помощи design
функция. Обзор поддерживаемых функций фильтра см. в разделе Опции строения фильтра.
Вы можете использовать fdhdltool
функция для генерации HDL-кода (требует Filter Design HDL Coder™). Укажите типы данных входов и дробной задержки в качестве аргументов, а затем установите дополнительные свойства в диалоговом окне Генерация HDL.
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.