www.gusucode.com > signal 工具箱matlab源码程序 > signal/@dfilt/@basefilter/generatehdl.m
function generatehdl(filterobj, varargin) %GENERATEHDL Generate HDL. % Copyright 2003-2012 The MathWorks, Inc. % check for Filter Design HDL Coder fdhdlcInstallCheck; [cando, ~, errObj] = ishdlable(filterobj); if ~cando error(errObj); end % Add filter object variable name to varargin if ~any(strcmpi(varargin,'name')) varargin(end+1) = {'name'}; if ~isempty(inputname(1)) dutname = inputname(1); varargin(end+1) = {dutname}; else error(message('signal:dfilt:basefilter:generatehdl:genhdlcalledwithconst')); end end % Add testbench name to varargin when testbench is requested but name not % provided -- make up a name based on filter variable name indices = strcmpi(varargin, 'generatehdltestbench'); pos = 1:length(indices); pos = pos(indices); indices_name = strcmpi(varargin, 'name'); posname = 1:length(indices_name); posname = posname(indices_name); if (~isempty(pos) && ~strcmpi(varargin{pos+1},'off')) && ... % tb is requested ~any(strcmpi(varargin,'testbenchname')) % but name not provided varargin(end+1) = {'testbenchname'}; if ~isempty(pos) % if dut name is provided then derive the tb name varargin(end+1) = {[varargin{posname+1}, '_tb']}; else varargin(end+1) = {[inputname(1) '_tb']}; end end if any(strcmpi(fieldnames(get(filterobj)),'Arithmetic')) %all but cascades if (strcmpi(get(filterobj, 'Arithmetic'), 'fixed') && filterobj.InputWordLength == 1) error(message('signal:dfilt:basefilter:generatehdl:OneBitInputNotSupported')); end elseif strcmpi(get(filterobj.Stage(1), 'Arithmetic'), 'fixed') && filterobj.Stage(1).InputWordLength == 1 error(message('signal:dfilt:basefilter:generatehdl:OneBitInputNotSupported')); end privgeneratehdl(filterobj,varargin{:}); % [EOF]