CN111988018B - 一种半带插值滤波器rtl模型自动生成方法 - Google Patents

一种半带插值滤波器rtl模型自动生成方法 Download PDF

Info

Publication number
CN111988018B
CN111988018B CN202010896699.XA CN202010896699A CN111988018B CN 111988018 B CN111988018 B CN 111988018B CN 202010896699 A CN202010896699 A CN 202010896699A CN 111988018 B CN111988018 B CN 111988018B
Authority
CN
China
Prior art keywords
hbfir
filter
file
input
printing
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202010896699.XA
Other languages
English (en)
Other versions
CN111988018A (zh
Inventor
邵杰
蔡国文
万书芹
苏小波
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
CETC 58 Research Institute
Original Assignee
CETC 58 Research Institute
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by CETC 58 Research Institute filed Critical CETC 58 Research Institute
Priority to CN202010896699.XA priority Critical patent/CN111988018B/zh
Publication of CN111988018A publication Critical patent/CN111988018A/zh
Application granted granted Critical
Publication of CN111988018B publication Critical patent/CN111988018B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03HIMPEDANCE NETWORKS, e.g. RESONANT CIRCUITS; RESONATORS
    • H03H17/00Networks using digital techniques
    • H03H17/02Frequency selective networks
    • H03H17/0211Frequency selective networks using specific transformation algorithms, e.g. WALSH functions, Fermat transforms, Mersenne transforms, polynomial transforms, Hilbert transforms
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D30/00Reducing energy consumption in communication networks
    • Y02D30/70Reducing energy consumption in communication networks in wireless communication networks

Landscapes

  • Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Algebra (AREA)
  • Computing Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Complex Calculations (AREA)

Abstract

本发明公开一种半带插值滤波器RTL模型自动生成方法,属于数字滤波器领域。RTL模型生成器从文件coefficient.txt和parameter_input.txt中读取滤波器的配置信息,计算滤波器组件模型的全部参数,将生成的参数保存在文件parameter_output.txt中;RTL模型生成器读取滤波器系数文件,根据步骤1中计算的滤波器组件模型的参数生成全部滤波器组件的RTL模型;抓取RTL源代码,打印testbench文件,生成测试环境。

Description

一种半带插值滤波器RTL模型自动生成方法
技术领域
本发明涉及数字滤波器技术领域,特别涉及一种半带插值滤波器RTL模型自动生成方法。
背景技术
在信号的发送***中,基带信号通常需要在DUC模块上变频至中频段,DUC模块包括插值、滤波和混频三个步骤。半带插值滤波器(half band interpolator)能在插值的同时进行滤波;此外,由于系数有接近一半为零,相对于普通滤波器能够大幅减小计算量,在保证计算精度和功能的同时,能够减少硬件开销和节约功耗。正是由于具有这些特点,半带插值滤波器在DAC中得到了广泛的应用。
对于高速DAC,插值滤波器的计算速率能够达到甚至超过1Ghz,通常需要采用多路并行的方式才能实现。除此之外,复杂的乘加操作需要***多级流水线结构。所以高速半带插值滤波器需要综合考虑并行处理,插值运算和流水线结构的设计等问题,普通的开发者难以在短时间内完成设计验证工作。
发明内容
本发明的目的在于提供一种半带插值滤波器RTL模型自动生成方法,以解决现有高度半带插值滤波器设计过程复杂,开发周期长的问题。
为解决上述技术问题,本发明提供了一种半带插值滤波器RTL模型自动生成方法,包括:
步骤1、RTL模型生成器从文件coefficient.txt和parameter_input.txt中读取滤波器的配置信息,计算滤波器组件模型的全部参数,将生成的参数保存在文件parameter_output.txt中;
步骤2、RTL模型生成器读取滤波器系数文件,根据步骤1中计算的滤波器组件模型的参数生成全部滤波器组件的RTL模型;
步骤3、抓取RTL源代码,打印testbench文件,生成测试环境。
可选的,文件coefficient.txt为滤波器系数文件,包含半带滤波器的全部定点化系数,但不包括0系数;
文件parameter_input.txt为滤波器配置文件,包含滤波器输入数据位宽、输出数据位宽、定点系数位宽和滤波器长度;所述滤波器长度L满足L=4N+3,且中心对称,其中N为非负整数;
所述滤波器组件模型的全部参数包括加法流水线级数、延时周期数、加法器位宽、乘法器位宽、截位宽度,以及所述滤波器配置文件parameter_input.txt中的全部信息。
可选的,步骤1的具体步骤为:
步骤1.1,读取文件parameter_input.txt中的全部信息,储存在数组parameter_in_array中,剔除数组parameter_in_array中的无效信息;将输入数据位宽、输出数据位宽、定点系数位宽和滤波器长度分别存储在变量data_in_width,data_out_width,coefficient_width,filter_length中;
步骤1.2,计算需要的乘法器个数product_num,根据乘法器个数计算需要的加法流水线级数sum_stage;根据滤波器长度计算延时单元需要的延时周期数delay_cycle;计算加法器位宽adder_width;计算乘法器位宽product_width;计算截位宽度trucation_width;
步骤1.3,首先将步骤1.1中数组parameter_in_array全部打印到文件parameter_output.txt中;然后将步骤1.2计算出的全部参数打印到文件parameter_output.txt。
可选的,所述RTL模型生成器包括参数计算模块、延时单元生成器、加法单元生成器、乘法单元生成器、求和单元生成器、溢出处理单元生成器、单通道单元生成器和顶层单元生成器。
可选的,步骤2中RTL模型生成的具体步骤为:
步骤2.1,运行延时单元生成器,生成延时模块hbfir_delay,打印在文件hbfir_delay.v中;
步骤2.2,运行加法单元生成器,生成加法模块hbfir_adder,打印在文件hbfir_adder.v中;
步骤2.3,运行乘法单元生成器,生成乘法模块hbfir_mult,打印在文件hbfir_mult.v中;
步骤2.4,运行求和单元生成器,生成加法模块hbfir_sum,打印在文件hbfir_sum.v中;
步骤2.5,运行溢出处理单元生成器,生成溢出处理模块hbfir_overrange_handle,打印在文件hbfir_overrange_handle.v;
步骤2.6,运行单通道单元生成器,生成单通道模块hbfir_signle_channel,打印在文件hbfir_signle_channel.v中;单通道分别例化子模型hbfir_adder,hbfir_mult,hbfir_sum和hbfir_overrange_handle,例化名分别为u_hbfir_adder,u_hbfir_mult,u_hbfir_sum和u_hbfir_overrange_handle;
步骤2.7,运行顶层单元生成器,生成半带滤波器的顶层模型,打印在文件hbfir_top.v中;顶层单元例化两个hbfir_signle_channel模块,例化名称分别为hbfir_signle_channel_odd和hbfir_signle_channel_even;顶层单元同时例化一个延时模块hbfir_delay。
可选的,所述步骤2.1包括:
步骤2.1.1,读取文件parameter_output.txt中的输入数据位宽data_in_width和延时周期数delay_cycle;
步骤2.1.2,打印输入输出信号:输入信号分别为clk,din_n_0,din_n_2;输出信号为din_n_4,din_n_6,din_n_8,din_n_10…;输出共有2*delay_cycle个;
步骤2.1.3,打印always时序结构产生所有的输出信号,其中din_n_4,din_n_8,din_n_12…由din_n_0延时产生,din_n_6,din_n_10,din_n_14…由din_n_2延时产生。
可选的,步骤2.2具体为:
步骤2.2.1,读取文件parameter_output.txt中的输入数据位宽data_in_width和滤波器长度filter_length;
步骤2.2.2,打印输入输出信号:输入时钟信号为clk;输入数据信号有(filter_length+1)/2个,分别为din_n_0,din_n_2,din_n_4,din_n_6……;输出信号有(filter_length+1)/4个,分别为adder_00,adder_02,adder_04……;
步骤2.2.3,打印always时序结构产生所有的输出信号,输入输出均按照有符号数进行处理,输出信号为半带折叠结构对应的延时数据相加。
可选的,所述步骤2.3包括:
步骤2.3.1,读取文件parameter_output.txt中的加法器位宽adder_width、滤波器长度filter_length以及滤波器的定点系数位宽coefficient_width;读取文件coefficient.txt中的滤波器定点系数至系数数组coefficient_array;
步骤2.3.2,打印输入输出信号:输入时钟信号为clk;输入数据信号有(filter_length+1)/4个,分别为adder_00,adder_02,adder_04……;输出信号也是(filter_length+1)/4个,分别为mult_h00,mult_h02,mult_h04……;
步骤2.3.3,打印滤波器系数,共(filter_length+1)/4个;系数全部定义为有符号数,位宽均为coefficient_width,系数分别为h00,h02,h04……;
步骤2.3.4,打印always时序结构产生所有的输出信号,输入输出均按照有符号数进行处理,输出信号数值为对应半带滤波器系数和加法器的乘积。
可选的,所述步骤2.4包括:
步骤2.4.1,读取文件parameter_output.txt中的乘法器位宽product_width,滤波器长度filter_length,截位长度truncation_width和加法流水线级数sum_stage;
步骤2.4.2,打印输入输出信号,输入时钟信号为clk;输入信号有(filter_length+1)/4个,分别为mult_h00,mult_h02,mult_h04……,输出信号为sum;
步骤2.4.3,按照加法器流水线级数打印加法器,每一个加法器只对两个数据进行相加;每一级的加法器个数分别为2^(sum_stage-1),2^(sum_stage-2)……直至最后一级加法器只有单个加法器;第一级加法器对输入信号mult_h00,mult_h02,mult_h04……相加,如果输入数据不够2^sum_stage,则用0补齐;
步骤2.4.4,对步骤2.4.3最后一级加法器的计算结果截位后输出。
可选的,所述步骤2.7包括:
步骤2.7.1,计算延时节拍,从所述步骤2.1生成的延时模块hbfir_delay输出端口连接对应值作为两相输出dout_n_0和dout_n_2;
步骤2.7.2,例化所述步骤2.1生成的延时模块hbfir_delay为u_hbfir_delay;例化两个所述步骤2.6生成的单通道模块hbfir_single_channel,分别为hbfir_single_channe_odd和hbfir_single_channel_even,对应输出分别为dout_n_1和dout_n_3。
可选的,所述步骤3包括:
步骤3.1,打开fh_tb文件操作句柄,指向新文件tb_hbfir_top.v装载后续步骤打印的testbench代码;抓取RTL源代码,识别input output信号及其位宽;
步骤3.2,打印文件头,module名称为tb_hbfir;
步骤3.3,打印input和output对应的reg和wire;
步骤3.4,打印initial模块,为所有reg型变量赋初值为0;
步骤3.5,打印时钟模块,产生时钟信号clk;
步骤3.6,打开文件操作句柄fh_case,指向新文件CASE0.v;打印测试例至文件CASE0.v,包括随机数激励产生和复位信号rst跳变信号;
步骤3.7,打印波形保存命令至文件CASE0.v;根据Design_Auto_Gen_TB_v2.3.pl的输入参数自动选择保存波形verilog语法,如果参数输入参数为0,保存shm格式波形,如果参数为1保存fsdb格式波形;关闭文件操作句柄fh_case;
步骤3.8,打印滤波器例化;
步骤3.9,打印仿真配置环境文件list.f和run,其中list.f为仿真文件目录,run为仿真运行命令;据Design_Auto_Gen_TB_v2.3.pl的输入参数自动选择仿真器语法,如果参数输入参数为0,使用NC_verilog仿真,如果未1使用VCS仿真;
步骤3.10,新建目录tb,dc,formal,CASE,waveform,data_in,data_out;将list.f,run和tb_hbfir.v移动到tb文件夹下;CASE0.v移动到CASE目录下。
在本发明提供的半带插值滤波器RTL模型自动生成方法中,RTL模型生成器从文件coefficient.txt和parameter_input.txt中读取滤波器的配置信息,计算滤波器组件模型的全部参数,将生成的参数保存在文件parameter_output.txt中;RTL模型生成器读取滤波器系数文件,根据步骤1中计算的滤波器组件模型的参数生成全部滤波器组件的RTL模型;抓取RTL源代码,打印testbench文件,生成测试环境。本发明避免了高速半带滤波器代码设计调试周期长,难度大的问题,实现了开发过程中RTL模型设计和验证代码的自动化生成。
附图说明
图1是程序架构;
图2是实施例中coefficient.txt文件内容;
图3是实施例中parameter_input.txt文件内容;
图4是实施例中运行过程中产生的parameter_output.txt内容;
图5是RTL模型生成器生成的半带滤波器RTL模型架构;
图6是程序运行后Verdi文件层次视图;
图7是Makefile文件内容;
图8是程序运行前文件树形结构;
图9是程序运行后文件树形结构。
具体实施方式
以下结合附图和具体实施例对本发明提出的一种半带插值滤波器RTL模型自动生成方法作进一步详细说明。根据下面说明,本发明的优点和特征将更清楚。需说明的是,附图均采用非常简化的形式且均使用非精准的比例,仅用以方便、明晰地辅助说明本发明实施例的目的。
实施例一
本发明提供了一种半带插值滤波器RTL模型自动生成方法,程序架构如图1所示。
上述方法具体包括如下步骤:
步骤1、RTL模型生成器从文件coefficient.txt和parameter_input.txt中读取滤波器的配置信息,计算滤波器组件模型的全部参数,将生成的参数保存在文件parameter_output.txt中。文件coefficient.txt为滤波器系数文件,包含半带滤波器的全部定点化系数,但不包括0系数;文件parameter_input.txt为滤波器配置文件,包含滤波器输入数据位宽、输出数据位宽、定点系数位宽和滤波器长度;所述滤波器长度L满足L=4N+3,且中心对称,其中N为非负整数。步骤1的具体步骤为:
步骤1.1,读取文件parameter_input.txt中的全部信息,储存在数组parameter_in_array中,剔除数组parameter_in_array中的无效信息;将输入数据位宽、输出数据位宽、定点系数位宽和滤波器长度分别存储在变量data_in_width,data_out_width,coefficient_width,filter_length中;
步骤1.2,计算需要的乘法器个数product_num=(filter_length+1)/4=3,根据乘法器个数计算需要的加法流水线级数sum_stage=2;根据滤波器长度计算延时单元需要的延时周期数delay_cycle=8;计算加法器位宽adder_width=data_in_width+1=17;计算乘法器位宽product_widthh=data_in_width+coefficient_width=28;计算截位宽度trucation_width=product_width-data_out_width-1=11;
步骤1.3,首先将步骤1.1中数组parameter_in_array全部打印到文件parameter_output.txt中;即:
data_in_wide:16
data_out_wide:16
coefficient_wide:12
filter_length:11。
然后将步骤1.2计算出的全部参数打印到文件parameter_output.txt,即:
sum_stage:2
delay_cycle:8
adder_width:17
product_width:28
truncation_width:11。
图2是本发明实施例中文件coefficient.txt,coefficient.txt依次存放N+2个非0定点系数,图2中系数为29,-214,1209,2048,对应的全部半带滤波器系数为29,0,-214,0,1209,2048,1209,0,-214,0,29;图3是本发明实施例中parameter_input.txt内容其中:
“data_in_wide:16”表示配置输入位宽为16bit;
“data_out_wide:16”表示配置输出位宽为16bit;
“coefficient_wide:12”表示定点系数位宽为12bit;
“filter_length:11”表示滤波器长度为11。
所述滤波器组件模型的全部参数包括加法流水线级数、延时周期数、加法器位宽、乘法器位宽、截位宽度,以及所述滤波器配置文件parameter_input.txt中的全部信息。
图4是实施例中运行过程中产生的parameter_output.txt内容。其中:
“data_in_wide:16”表示配置输入位宽为16bit;
“data_out_wide:16”表示配置输出位宽为16bit;
“coefficient_wide:12”表示定点系数位宽为12bit;
“filter_length:11”表示滤波器长度为11;
“sum_stage:2”表示所述求和单元生成器(hbfir_sum_gen.pl)需要两级流水计算加法;
“delay_cycle:8”表示所述延时单元生成器(hbfir_delay_gen.pl)延时8个周期;
“adder_width:17”表示所述加法单元生成器(hbfir_adder_gen.pl)输出数据位宽为17比特;
“product_width:28”表示所述乘法单元生成器(hbfir_mult_gen.pl)输出的乘法位宽为28比特;
“truncation_width:11”表示所述求和单元生成器(hbfir_sum_gen.pl),需要在最终输出截断11比特数据。
步骤2、RTL模型生成器读取滤波器系数文件parameter_output.txt,根据步骤1中计算的滤波器组件模型的参数生成全部滤波器组件的RTL模型;所述RTL模型生成器包括参数计算模块、延时单元生成器、加法单元生成器、乘法单元生成器、求和单元生成器、溢出处理单元生成器、单通道单元生成器和顶层单元生成器。步骤2中RTL模型生成的具体步骤为:
步骤2.1,运行延时单元生成器(hbfir_delay_gen.pl),生成延时模块hbfir_delay,打印在文件hbfir_delay.v中;
所述步骤2.1具体为:
步骤2.1.1,读取文件parameter_output.txt中的输入数据位宽data_in_width=17和延时周期数delay_cycle;
步骤2.1.2,打印输入输出信号:输入信号分别为clk,din_n_0,din_n_2;输出信号为din_n_4,din_n_6,din_n_8,din_n_10…,din_n_32,din_n_34;输出共有2*delay_cycle=16个;
步骤2.1.3,打印always时序结构产生所有的输出信号,其中din_n_4,din_n_8,din_n_12…,din_n_32由din_n_0延时产生,din_n_6,din_n_10,din_n_14…,din_n_34由din_n_2延时产生。
步骤2.2,运行加法单元生成器(hbfir_adder_gen.pl),生成加法模块hbfir_adder,打印在文件hbfir_adder.v中;
步骤2.2具体为:
步骤2.2.1,读取文件parameter_output.txt中的输入数据位宽data_in_width=17和滤波器长度filter_length=11;
步骤2.2.2,打印输入输出信号:输入时钟信号为clk;输入数据信号有(filter_length+1)/2=6个,分别为din_n_0,din_n_2,din_n_4,din_n_6,din_n_8,din_n_10;输出信号有(filter_length+1)/4=3个,分别为adder_00,adder_02,adder_04;
步骤2.2.3,打印always时序结构产生所有的输出信号,输入输出均按照有符号数进行处理,输出信号为半带折叠结构对应的延时数据相加。
步骤2.3,运行乘法单元生成器(hbfir_mult_gen.pl),生成乘法模块hbfir_mult,打印在文件hbfir_mult.v中;
所述步骤2.3包括:
步骤2.3.1,读取文件parameter_output.txt中的加法器位宽adder_width=17、滤波器长度filter_length=11以及滤波器的定点系数位宽coefficient_width=12;读取文件coefficient.txt中的滤波器定点系数至系数数组coefficient_array={29,-214,1209,2048};
步骤2.3.2,打印输入输出信号:输入时钟信号为clk;输入数据信号有(filter_length+1)/4=3个,分别为adder_00,adder_02,adder_04;输出信号也是(filter_length+1)/4=3个,分别为mult_h00,mult_h02,mult_h04;
步骤2.3.3,打印滤波器系数,共(filter_length+1)/4=3个;系数全部定义为有符号数,位宽均为coefficient_width=12,系数分别为h00=29,h02=-214,h04=1209;
步骤2.3.4,打印always时序结构产生所有的输出信号,输入输出均按照有符号数进行处理,输出信号数值为对应半带滤波器系数和加法器的乘积。
步骤2.4,运行求和单元生成器(hbfir_sum_gen.pl),生成加法模块hbfir_sum,打印在文件hbfir_sum.v中;
所述步骤2.4具体为:
步骤2.4.1,读取文件parameter_output.txt中的乘法器位宽product_width,滤波器长度filter_length,截位长度truncation_width和加法流水线级数sum_stage;
步骤2.4.2,打印输入输出信号,输入时钟信号为clk;输入信号有(filter_length+1)/4=3个,分别为mult_h00,mult_h02,mult_h04……,输出信号为sum;
步骤2.4.3,按照加法器流水线级数打印加法器,每一个加法器只对两个数据进行相加;每一级的加法器个数分别为2^(sum_stage-1)=2,2^(sum_stage-2)=1;第一级加法器对输入信号mult_h00,mult_h02,mult_h04相加,如果输入数据不够2^sum_stage,则用0补齐;第一级加法有两个加法器,即:
sum_stage1_0=add_h00+add_h02;
sum_stage1_1=add_h04+0;
第二级加法器有一级加法直接输出,即:
sum_stage2_0=sum_stage1_0+sum_stage1_1。
步骤2.4.4,对步骤2.4.3最后一级加法器的计算结果截位后输出,即sum[17:0]=sum_stage2_0[28:11]。
步骤2.5,运行溢出处理单元生成器(hbfir_overflow_handle_gen.pl),生成溢出处理模块hbfir_overrange_handle,打印在文件hbfir_overrange_handle.v;
步骤2.6,运行单通道单元生成器(hbfir_single_channel_gen.pl),生成单通道模块hbfir_signle_channel,打印在文件hbfir_signle_channel.v中;单通道分别例化子模型hbfir_adder,hbfir_mult,hbfir_sum和hbfir_overrange_handle,例化名分别为u_hbfir_adder,u_hbfir_mult,u_hbfir_sum和u_hbfir_overrange_handle;
步骤2.7,运行顶层单元生成器(hbfir_top_gen.pl),生成半带滤波器的顶层模型,打印在文件hbfir_top.v中;顶层单元例化两个hbfir_signle_channel模块,例化名称分别为hbfir_signle_channel_odd和hbfir_signle_channel_even;顶层单元同时例化一个延时模块hbfir_delay。
所述步骤2.7包括:
步骤2.7.1,计算延时节拍,从所述步骤2.1生成的延时模块hbfir_delay输出端口连接对应值作为两相输出dout_n_0和dout_n_2;
步骤2.7.2,例化所述步骤2.1生成的延时模块hbfir_delay为u_hbfir_delay;例化两个所述步骤2.6生成的单通道模块hbfir_single_channel,分别为hbfir_single_channe_odd和hbfir_single_channel_even,对应输出分别为dout_n_1和dout_n_3。
步骤2全部执行完毕后,生成的半带滤波器RTL模型架构如图5所示。
步骤3、抓取RTL源代码,打印testbench文件,生成测试环境。所述步骤3具体包括:
步骤3.1,打开fh_tb文件操作句柄,指向新文件tb_hbfir_top.v装载后续步骤打印的testbench代码;抓取RTL源代码,识别input output信号及其位宽;
步骤3.2,打印文件头,module名称为tb_hbfir;
步骤3.3,打印input和output对应的reg和wire;
步骤3.4,打印initial模块,为所有reg型变量赋初值为0;
步骤3.5,打印时钟模块,产生时钟信号clk;
步骤3.6,打开文件操作句柄fh_case,指向新文件CASE0.v;打印测试例至文件CASE0.v,包括随机数激励产生和复位信号rst跳变信号;
步骤3.7,打印波形保存命令至文件CASE0.v;根据Design_Auto_Gen_TB_v2.3.pl的输入参数自动选择保存波形verilog语法,如果参数输入参数为0,保存shm格式波形,如果参数为1保存fsdb格式波形;关闭文件操作句柄fh_case;
步骤3.8,打印滤波器例化;
步骤3.9,打印仿真配置环境文件list.f和run,其中list.f为仿真文件目录,run为仿真运行命令;据Design_Auto_Gen_TB_v2.3.pl的输入参数自动选择仿真器语法,如果参数输入参数为0,使用NC_verilog仿真,如果未1使用VCS仿真;
步骤3.10,新建目录tb,dc,formal,CASE,waveform,data_in,data_out;将list.f,run和tb_hbfir.v移动到tb文件夹下;CASE0.v移动到CASE目录下。
步骤3执行完毕后,Verdi文件层次视图如图6所示。
步骤1-3采用Makefile命令顺序执行,具体内容如图7所示。Makefile命令执行前文件树结构如图8所示,Makefile命令执行后的文件树结构如图9所示。
上述描述仅是对本发明较佳实施例的描述,并非对本发明范围的任何限定,本发明领域的普通技术人员根据上述揭示内容做的任何变更、修饰,均属于权利要求书的保护范围。

Claims (7)

1.一种半带插值滤波器RTL模型自动生成方法,其特征在于,包括:
步骤1、RTL模型生成器从文件coefficient.txt和parameter_input.txt中读取滤波器的配置信息,计算滤波器组件模型的全部参数,将生成的参数保存在文件parameter_output.txt中;
步骤2、RTL模型生成器读取滤波器系数文件,根据步骤1中计算的滤波器组件模型的参数生成全部滤波器组件的RTL模型;
步骤3、抓取RTL源代码,打印testbench文件,生成测试环境;
文件coefficient.txt为滤波器系数文件,包含半带滤波器的全部定点化系数,但不包括0系数;文件parameter_input.txt为滤波器配置文件,包含滤波器输入数据位宽、输出数据位宽、定点系数位宽和滤波器长度;所述滤波器的长度L满足L=4N+3,且中心对称,其中N为非负整数;
所述滤波器组件模型的全部参数包括加法流水线级数、延时周期数、加法器位宽、乘法器位宽、截位宽度,以及所述滤波器配置文件parameter_input.txt中的全部信息;
步骤1的具体步骤为:步骤1.1,读取文件parameter_input.txt中的全部信息,储存在数组parameter_in_array中,剔除数组parameter_in_array中的无效信息;将输入数据位宽、输出数据位宽、定点系数位宽和滤波器长度分别存储在变量data_in_width,data_out_width,coefficient_width,filter_length中;
步骤1.2,计算需要的乘法器个数product_num,根据乘法器个数计算需要的加法流水线级数sum_stage;根据滤波器长度计算延时单元需要的延时周期数delay_cycle;计算加法器位宽adder_width;计算乘法器位宽product_width;计算截位宽度trucation_width;
步骤1.3,首先将步骤1.1中数组parameter_in_array全部打印到文件parameter_output.txt中;然后将步骤1.2计算出的全部参数打印到文件parameter_output.txt;
所述RTL模型生成器包括参数计算模块、延时单元生成器、加法单元生成器、乘法单元生成器、求和单元生成器、溢出处理单元生成器、单通道单元生成器和顶层单元生成器;
步骤2中RTL模型生成的具体步骤为:步骤2.1,运行延时单元生成器,生成延时模块hbfir_delay,打印在文件hbfir_delay.v中;
步骤2.2,运行加法单元生成器,生成加法模块hbfir_adder,打印在文件hbfir_adder.v中;
步骤2.3,运行乘法单元生成器,生成乘法模块hbfir_mult,打印在文件hbfir_mult.v中;
步骤2.4,运行求和单元生成器,生成加法模块hbfir_sum,打印在文件hbfir_sum.v中;
步骤2.5,运行溢出处理单元生成器,生成溢出处理模块hbfir_overrange_handle,打印在文件hbfir_overrange_handle.v;
步骤2.6,运行单通道单元生成器,生成单通道模块hbfir_signle_channel,打印在文件hbfir_signle_channel.v中;单通道分别例化子模型hbfir_adder,hbfir_mult,hbfir_sum和hbfir_overrange_handle,例化名分别为u_hbfir_adder,u_hbfir_mult,u_hbfir_sum和u_hbfir_overrange_handle;
步骤2.7,运行顶层单元生成器,生成半带滤波器的顶层模型,打印在文件hbfir_top.v中;顶层单元例化两个hbfir_signle_channel模块,例化名称分别为hbfir_signle_channel_odd和hbfir_signle_channel_even;顶层单元同时例化一个延时模块hbfir_delay。
2.如权利要求1所述的半带插值滤波器RTL模型自动生成方法,其特征在于,所述步骤2.1包括:
步骤2.1.1,读取文件parameter_output.txt中的输入数据位宽data_in_width和延时周期数delay_cycle;
步骤2.1.2,打印输入输出信号:输入信号分别为clk,din_n_0,din_n_2;输出信号为din_n_4,din_n_6,din_n_8,din_n_10…;输出共有2*delay_cycle个;
步骤2.1.3,打印always时序结构产生所有的输出信号,其中din_n_4,din_n_8,din_n_12…由din_n_0延时产生,din_n_6,din_n_10,din_n_14…由din_n_2延时产生。
3.如权利要求2所述的半带插值滤波器RTL模型自动生成方法,其特征在于,步骤2.2具体为:
步骤2.2.1,读取文件parameter_output.txt中的输入数据位宽data_in_width和滤波器长度filter_length;
步骤2.2.2,打印输入输出信号:输入时钟信号为clk;输入数据信号有(filter_length+1)/2个,分别为din_n_0,din_n_2,din_n_4,din_n_6……;输出信号有(filter_length+1)/4个,分别为adder_00,adder_02,adder_04……;
步骤2.2.3,打印always时序结构产生所有的输出信号,输入输出均按照有符号数进行处理,输出信号为半带折叠结构对应的延时数据相加。
4.如权利要求3所述的半带插值滤波器RTL模型自动生成方法,其特征在于,所述步骤2.3包括:
步骤2.3.1,读取文件parameter_output.txt中的加法器位宽adder_width、滤波器长度filter_length以及滤波器的定点系数位宽coefficient_width;读取文件coefficient.txt中的滤波器定点系数至系数数组coefficient_array;
步骤2.3.2,打印输入输出信号:输入时钟信号为clk;输入数据信号有(filter_length+1)/4个,分别为adder_00,adder_02,adder_04……;输出信号也是(filter_length+1)/4个,分别为mult_h00,mult_h02,mult_h04……;
步骤2.3.3,打印滤波器系数,共(filter_length+1)/4个;系数全部定义为有符号数,位宽均为coefficient_width,系数分别为h00,h02,h04……;
步骤2.3.4,打印always时序结构产生所有的输出信号,输入输出均按照有符号数进行处理,输出信号数值为对应半带滤波器系数和加法器的乘积。
5.如权利要求4所述的半带插值滤波器RTL模型自动生成方法,其特征在于,所述步骤2.4包括:
步骤2.4.1,读取文件parameter_output.txt中的乘法器位宽product_width,滤波器长度filter_length,截位长度truncation_width和加法流水线级数sum_stage;
步骤2.4.2,打印输入输出信号,输入时钟信号为clk;输入信号有(filter_length+1)/4个,分别为mult_h00,mult_h02,mult_h04……,输出信号为sum;
步骤2.4.3,按照加法器流水线级数打印加法器,每一个加法器只对两个数据进行相加;每一级的加法器个数分别为2^(sum_stage-1),2^(sum_stage-2)……直至最后一级加法器只有单个加法器;第一级加法器对输入信号mult_h00,mult_h02,mult_h04……相加,如果输入数据不够2^sum_stage,则用0补齐;
步骤2.4.4,对步骤2.4.3最后一级加法器的计算结果截位后输出。
6.如权利要求5所述的半带插值滤波器RTL模型自动生成方法,其特征在于,所述步骤2.7包括:
步骤2.7.1,计算延时节拍,从所述步骤2.1生成的延时模块hbfir_delay输出端口连接对应值作为两相输出dout_n_0和dout_n_2;
步骤2.7.2,例化所述步骤2.1生成的延时模块hbfir_delay为u_hbfir_delay;例化两个所述步骤2.6生成的单通道模块hbfir_single_channel,分别为hbfir_single_channe_odd和hbfir_single_channel_even,对应输出分别为dout_n_1和dout_n_3。
7.如权利要求6所述的半带插值滤波器RTL模型自动生成方法,其特征在于,所述步骤3包括:
步骤3.1,打开fh_tb文件操作句柄,指向新文件tb_hbfir_top.v装载后续步骤打印的testbench代码;抓取RTL源代码,识别input output信号及其位宽;
步骤3.2,打印文件头,module名称为tb_hbfir;
步骤3.3,打印input和output对应的reg和wire;
步骤3.4,打印initial模块,为所有reg型变量赋初值为0;
步骤3.5,打印时钟模块,产生时钟信号clk;
步骤3.6,打开文件操作句柄fh_case,指向新文件CASE0.v;打印测试例至文件CASE0.v,包括随机数激励产生和复位信号rst跳变信号;
步骤3.7,打印波形保存命令至文件CASE0.v;根据Design_Auto_Gen_TB_v2.3.pl的输入参数自动选择保存波形verilog语法,如果参数输入参数为0,保存shm格式波形,如果参数为1保存fsdb格式波形;关闭文件操作句柄fh_case;
步骤3.8,打印滤波器例化;
步骤3.9,打印仿真配置环境文件list.f和run,其中list.f为仿真文件目录,run为仿真运行命令;据Design_Auto_Gen_TB_v2.3.pl的输入参数自动选择仿真器语法,如果参数输入参数为0,使用NC_verilog仿真,如果未1使用VCS仿真;
步骤3.10,新建目录tb,dc,formal,CASE,waveform,data_in,data_out;将list.f,run和tb_hbfir.v移动到tb文件夹下;CASE0.v移动到CASE目录下。
CN202010896699.XA 2020-08-31 2020-08-31 一种半带插值滤波器rtl模型自动生成方法 Active CN111988018B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010896699.XA CN111988018B (zh) 2020-08-31 2020-08-31 一种半带插值滤波器rtl模型自动生成方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010896699.XA CN111988018B (zh) 2020-08-31 2020-08-31 一种半带插值滤波器rtl模型自动生成方法

Publications (2)

Publication Number Publication Date
CN111988018A CN111988018A (zh) 2020-11-24
CN111988018B true CN111988018B (zh) 2022-08-16

Family

ID=73440476

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010896699.XA Active CN111988018B (zh) 2020-08-31 2020-08-31 一种半带插值滤波器rtl模型自动生成方法

Country Status (1)

Country Link
CN (1) CN111988018B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113568598B (zh) * 2021-09-26 2021-12-14 中科亿海微电子科技(苏州)有限公司 基于yosys实现求和运算的FPGA逻辑综合方法及装置
CN117973288B (zh) * 2024-04-01 2024-06-11 西安智多晶微电子有限公司 一种基于fpga dsp的滤波器ip生成***

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1592103A (zh) * 2003-08-30 2005-03-09 华为技术有限公司 N阶半带插值滤波器
CN111125976A (zh) * 2019-12-06 2020-05-08 中国电子科技集团公司第五十八研究所 一种rtl模型自动生成方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1592103A (zh) * 2003-08-30 2005-03-09 华为技术有限公司 N阶半带插值滤波器
CN111125976A (zh) * 2019-12-06 2020-05-08 中国电子科技集团公司第五十八研究所 一种rtl模型自动生成方法

Also Published As

Publication number Publication date
CN111988018A (zh) 2020-11-24

Similar Documents

Publication Publication Date Title
Sander et al. System modeling and transformational design refinement in ForSyDe [formal system design]
EP1604312B1 (en) Mixed-level hdl/high-level co-simulation of a circuit design
CN111988018B (zh) 一种半带插值滤波器rtl模型自动生成方法
Taylor A single modulus complex ALU for signal processing
Aggarwal et al. FIR filter designing using Xilinx system generator
CN111125976B (zh) 一种rtl模型自动生成方法
George et al. Hardware design procedure: principles and practices
US6937969B1 (en) Method for determining signals in mixed signal systems
Al-Dulaimi et al. Design and Implementation of Communication Digital FIR Filter for Audio Signals on the FPGA Platform.
Radecka et al. Arithmetic transforms for compositions of sequential and imprecise datapaths
US6401231B1 (en) Method and apparatus for performing both negative and positive slack time budgeting and for determining a definite required constraint during integrated circuit design
Pulkkinen et al. Integration of SDL and VHDL for high-level digital design
Shamaly et al. A transformation for necessary optimality conditions for systems with polynomial nonlinearities
Lora et al. Automatic integration of cycle-accurate descriptions with continuous-time models for cyber-physical virtual platforms
Lavagno et al. A Simulink (c)-based approach to system level design and architecture selection
US7082594B1 (en) Compilation in a high-level modeling system
Guillou et al. High Level Design of Digital Filters in Mobile Comunications
Sarma et al. High-level synthesis: Technology transfer to industry
Kountouris et al. A method for the generation of HDL code at the RTL level from a high-level formal specification language
Boksuwan et al. Code generation of fractional filters for dsPIC microcontrollers
Sowmya et al. A 6tap Fir Filter Implementation Using Modified Bachet Architecture For Reduced Mapped Resources
Pongratz et al. Performance evaluation of mathworks hdl coder as a vendor independent dfe generation
Haase et al. Design Refinement of EmbeddedMixed-Signal Systems
Galkin et al. Towards the Automatic Transformation of the SIMULINK Model into an FPGA-in-Loop System and its Real-Time Simulation
Merkelov et al. Design and Implementation of Sampling Rate Converters for Conversions between Arbitrary Sampling Rates

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant