主要内容

高密度脂蛋白视频滤镜

这个例子演示了如何生成一个的HDL代码ITU-R BT.601亮度与8位输入数据和10位输出数据过滤。这个过滤器是一个低通滤波器和一个3 dB点采样频率为3.2 MHz 13.5 MHz指定范围和通带波纹和阻带衰减ITU规范所示。滤波器系数的设计使用DSP系统工具箱™。本例着重于量子化效应和生成HDL代码过滤系统的对象。

设置系数

前面设计的滤波器系数分配给变量b。这是一个halfband过滤,因此,每一个系数是零除滤波器系数的中点,这正是1/2。

检查双精度滤波器设计满足ITU-R BT.601模板通带波纹通带和阻带衰减使用freqz和阴谋。红线显示规范中允许的变化。

[0.00303332064210658 b = 0-0.00807786494715095,0,0.0157597395206364,0,-0.028508691397868,0,0.0504985344927114,0,-0.0977926818362618,0,0.315448742029959,0.5,0.315448742029959,0,-0.0977926818362618,0,0.0504985344927114,0,-0.028508691397868,0,0.0157597395206364,0,-0.00807786494715095,0,0.00303332064210658);f = 0:100:2.75e6;H = freqz (b, f, 13.5 e6);情节(f, 20 * log10 (abs (H)));标题(高密度脂蛋白视频滤波器双精度通带的);轴([0 2.75 e6。8。8]);passbandrange = {[2.75 e6;1 e6;0;1 e6;2.75 e6),(-0.5;-0.5;0;0.5;0.5)};线(passbandrange {:},“颜色”,“红色”);

图包含一个坐标轴对象。坐标轴对象与标题HDL视频滤波器双精度通频带包含2线类型的对象。

画出阻带

红线显示了一个“不超过”限制在阻带。

f = 4 e6:100:6.75e6;H = freqz (b, f, 13.5 e6);情节(f, 20 * log10 (abs (H)));标题(高密度脂蛋白视频滤波器双精度阻带的);轴(6.75 [4 e6 e6 -70 -35]);stopbandrange = {[4 e6;6.25 e6;6.75 e6),(-40;-55;-55]};线(stopbandrange {:},“颜色”,“红色”);

图包含一个坐标轴对象。坐标轴对象与标题HDL视频滤波器双精度阻带包含2线类型的对象。

创建量化滤波器

创建一个冷杉过滤系统对象与之前定义的过滤系数。实验系数单词长度为8位得到所需的响应输入数据和10位输出数据。

videoFilter = dsp.FIRFilter;videoFilter。分子= b;videoFilter。结构=直接形成对称的;%尝试10位系数videoFilter。CoefficientsDataType =“自定义”;videoFilter。CustomCoefficientsDataType = numerictype (10);

情节量化滤波器响应

现在检查量化滤波器的通带和阻带响应相对于规范。阴谋,首先检查量子化的通频带。

量化设计满足通频带规范除了在特区,它忽略了规范约0.035 dB。

f = 0:100:2.75e6;H = freqz (videoFilter f 13.5 e6,“算术”,“固定”);情节(f, 20 * log10 (abs (H)));标题(高密度脂蛋白视频滤镜量子化的通带的);轴([0 2.75 e6。8。8]);线(passbandrange {:},“颜色”,“红色”);

图包含一个坐标轴对象。坐标轴对象与标题HDL视频滤镜量子化的通频带包含2线类型的对象。

情节的量子化的阻带

红线再次显示“不超过”限制在阻带。

阻带限制违反了,这表明量化设置的问题。

f = 4 e6:100:6.75e6;H = freqz (videoFilter f 13.5 e6,“算术”,“固定”);情节(f, 20 * log10 (abs (H)));标题(高密度脂蛋白视频滤镜量子化的阻带的);轴(6.75 [4 e6 e6 -70 -35]);线(stopbandrange {:},“颜色”,“红色”);

图包含一个坐标轴对象。坐标轴对象与标题HDL视频滤镜量子化的阻带包含2线类型的对象。

变化的系数量化器设置

添加更多的位字长使滤波器的系数满足规范。增加单词长度和改建阻带。

这只是忽略了规范的阻带。这个小偏离规范可能是可接受的,如果你知道一些其他的一部分系统适用于这个信号的低通滤波器。

videoFilter。CustomCoefficientsDataType = numerictype (11);f = 4 e6:100:6.75e6;H = freqz (videoFilter f 13.5 e6,“算术”,“固定”);情节(f, 20 * log10 (abs (H)));标题(高密度脂蛋白视频滤镜量子化的阻带的);轴(6.75 [4 e6 e6 -70 -35]);线(stopbandrange {:},“颜色”,“红色”);

图包含一个坐标轴对象。坐标轴对象与标题HDL视频滤镜量子化的阻带包含2线类型的对象。

设置最后的系数量化字长

加多一位系数量化字长和改建阻带。这应该符合规范。

videoFilter。CustomCoefficientsDataType = numerictype (12);f = 4 e6:100:6.75e6;H = freqz (videoFilter f 13.5 e6,“算术”,“固定”);情节(f, 20 * log10 (abs (H)));标题(高密度脂蛋白视频滤镜最后量子化的阻带的);轴(6.75 [4 e6 e6 -70 -35]);线(stopbandrange {:},“颜色”,“红色”);

图包含一个坐标轴对象。坐标轴对象与标题HDL视频滤镜最终量化阻带包含2线类型的对象。

在通带响应执行最终检查

重新检查确保通频带附近的变化提高了响应的问题。现在通过规范的响应。

f = 0:100:2.75e6;H = freqz (videoFilter f 13.5 e6,“算术”,“固定”);情节(f, 20 * log10 (abs (H)));标题(高密度脂蛋白视频滤镜最后量子化的通频带的);轴([0 2.75 e6。8。8]);线(passbandrange {:},“颜色”,“红色”);

图包含一个坐标轴对象。坐标轴对象与标题HDL视频滤镜最终量子化的通频带包含2线类型的对象。

生成HDL代码和试验台的量子化的过滤器

从量化的过滤器,生成硬件描述语言(VHDL)或Verilog代码。

创建一个临时工作目录。后生成HDL(选择硬件描述语言(VHDL)在这种情况下),在编辑器中打开生成的硬件描述语言(VHDL)文件。

生成一个硬件描述语言(VHDL)试验台,以确保在MATLAB完全匹配的响应。选择默认输入的刺激,这对冷杉是冲动,一步,坡道,唧唧喳喳,噪声输入。

生成Verilog代码和Verilog试验台相反,改变为“开发”属性值从“硬件描述语言(VHDL)”到“Verilog”。

警告表明,通过选择对称结构的过滤和产生高密度脂蛋白,可能导致较小的区域或更高的时钟频率。

假设一个输入8位字长和7位小数部分。

workingdir = tempname;generatehdl (videoFilter“名字”,“hdlvideofilt”,“InputDataType”numerictype (7),“开发”,硬件描述语言(VHDL)的,“TargetDirectory”workingdir,“GenerateHDLTestbench”,“上”);
# # #开始硬件描述语言(VHDL)过滤器的代码生成过程:hdlvideofilt # # #生成:/ tmp / Bdoc23a_2213998_491196 / tpf775bc5c_8389_41bc_938f_f0d9cd6296c1 / hdlvideofilt。vhd # # # # # #开始代hdlvideofilt VHDL的实体开始代hdlvideofilt硬件描述语言(VHDL)架构# # #成功完成硬件描述语言(VHDL)过滤器的代码生成过程:hdlvideofilt # # # HDL延迟是2 # # #样品开始一代的硬件描述语言(VHDL)试验台。刺激# # # # # #生成输入生成输入刺激;3261个样本长度。# # #生成试验台:/ tmp / Bdoc23a_2213998_491196 / tpf775bc5c_8389_41bc_938f_f0d9cd6296c1 / hdlvideofilt_tb。vhd # # #创造刺激向量……# # #完成生成硬件描述语言(VHDL)试验台。
编辑(fullfile (workingdir,“hdlvideofilt.vhd”));

试验台的刺激

情节默认试验台刺激使用上面的命令,使用generatetbstimulus函数。

tbstim = generatetbstimulus (videoFilter,“InputDataType”7)numerictype(8日);情节(tbstim);标题(高密度脂蛋白视频滤试验台刺激的);

图包含一个坐标轴对象。坐标轴对象与标题HDL视频滤镜试验台刺激包含一个类型的对象。

结论

你设计了一个双精度过滤来满足ITU-R BT.601亮度过滤器规格,然后创建了一个冷杉过滤系统对象,也符合规范。你生成VHDL代码和功能验证了滤波器的硬件描述语言(VHDL)试验台。

您可以使用硬件描述语言(VHDL)模拟器,比如ModelSim®,以验证这些结果。你也可以用Verilog实验。您可以使用许多优化得到更小、更快的HDL的结果通过删除约束MATLAB生成的高密度脂蛋白是完全正确。当你使用这些优化,高密度脂蛋白试验台可以检查在指定的滤波器响应误差的MATLAB的回应。