跳转到主要内容
国际橡塑展报名
国际橡塑展报名
国际橡塑展报名

System Generator

System Generator从入门到放弃(二)——Digital Filter

judy 提交于

System Generator是Xilinx公司进行数字信号处理开发的一种设计工具,它通过将Xilinx开发的一些模块嵌入到Simulink的库中,可以在Simulink中进行定点仿真,可以设置定点信号的类型,这样就可以比较定点仿真与浮点仿真的区别。并且可以生成HDL文件,或者网表,可以在ISE中进行调用

学会System Generator(22)——图像采集与输出(数据流方法)

judy /

本文是该系列的第22篇。上一篇介绍了使用Image From File和Video Viewer完成图像的采集和输出,并将两部分分别打包为子系统,使其具有通用性。本文将介绍如何使用Simulink提供的回调函数机制,实现从MATLAB工作空间采集和输出图像。

<strong>Simulink回调函数机制</strong>
在空白处右键->Model Properties,切换到“Callbacks”标签下,可以看到Simulink支持的回调函数,这些函数在某些时刻会自动触发,执行M文件中的程序:
<center><img src="http://xilinx.eetrend.com/files-eetrend-xilinx/blog/201810/13750-39965-…; alt=""></center>

学会System Generator(21)——图像采集与输出(文件方法)

judy /

本文是该系列的第21篇。前几篇介绍的音频信号处理本质上属于一维信号,直接采样与输出即可。但图像属于二维信号,如果想在Simulink中采集和输出图像,进行图像处理算法的仿真时会遇到一些问题。本文将介绍如何搭建图像的采集与输出模型。

<strong>采集图像需要解决的问题</strong>

Computer Vision System Toolbox中包含两个模块:Image From File可以读取图片格式的文件;Video Viewer可以输入图像并显示(类似于Scope观察信号波形一样)。

利用ZYNQ SOC快速打开算法验证通路(5)——system generator算法IP导入IP integrator

judy /

<strong>一、前言</strong>

  利用FPGA设计算法一直以来都是热点,同样也是难点。将复杂的数学公式 模型通过硬件系统来搭建,在低延时 高并行性等优势背后极大提高了设计难度和开发周期。Xilinx公司的sysGen(system generator)工具扩展了MATLAB的simulink,提供很多IP Catalog中没有的基础模块和针对DSP应用的硬件模型。工程师利用丰富的模块和MATLAB强大的数据处理及可视化能力能够更快速完成设计与仿真验证工作。

<strong>二、sysGen算法系统设计</strong>

学会System Generator(20)——基于LSB算法的数字水印技术

judy /

本文是该系列的第20篇。数字水印是一种将标识信息嵌入到载体当中,且不影响载体使用的一种技术,主要分为时域水印嵌入算法(将水印嵌入到时域采样数据中)和变换域水印嵌入算法(先对音频做变换,将水印嵌入到变换域系数中)。本文将介绍一种简单的时域水印嵌入算法——LSB算法。

<strong>LSB算法</strong>

通常数字水印技术有不可感知性的要求,即嵌入数字水印后载体数据发生了变化,但是不会影响到该数据的使用,对使用者而言也不可察觉。

该算法将水印信息嵌入到数据的最低有效位(Least Significant Bit)部分,即将数据的LSB替换为需要加入的水印信息。这正是因为低位数据对整体数据的影响最小,这也导致嵌入的水印信息强度不高,否则会影响到载体的数据质量。因此该算法仅限用于脆弱性数字水印(相较于鲁棒性数字水印而言,无法承受大量失真)。

<strong>System Generator设计</strong>

学会System Generator(19)——增量调制(DM)编码解码

judy /

本文是该系列的第19篇。语音编码压缩的目的是在尽量不损失信息的情况下降低码率,从而节省存储空间和通信带宽。To Multimedia File这个block就提供几种语音压缩方式:CCITT A律、CCITT μ律、GSM 6.10、PCM、ADPCM。本文将介绍一种很简单的增量调制(DM)编码方式。

<strong>DM编解码</strong>
DM(Delta Modulation)编码的原理很简单,信号处理的学习者对这个概念也不陌生(博主是在《现代通信技术概论》这本书中第一次接触到这个概念)。其编码原理如下:
<center><img src="http://xilinx.eetrend.com/files-eetrend-xilinx/blog/201809/13697-39640-…; alt=""></center>

学会System Generator(18)——音频信号采集与输出

judy /

本文是该系列的第18篇。数字信号处理的内容博大精深,音频信号处理、数字图像处理、雷达信号处理等等都属于DSP系统。从本文开始将记录一些简单的音频信号处理算法在System Generator中的实现方法。本文将介绍如何搭建音频信号的采集与输出模型。

<strong>音频信号基础概念</strong>
音频信号属于一维信号,一些基本概念如下:
<li>采样频率:根据奈奎斯特采样定理,采样频率Fs应该不低于声音信号中最高频率2倍。常见的音频格式文件(如mp3、wav等)有几个固定的采样频率:11025Hz、22050Hz、44100Hz、48000Hz。</li>
<li>量化精度:即每个声音样本用多少位(bit)表示。通常以字节为单位。</li>
<li>声道:现在的音频文件几乎都是立体声(左声道、右声道),也可以用“格式工厂”等工具转换为单声道。</li>

<strong>单声道音频信号采集与输出</strong>

学会System Generator(17)——转置型FIR滤波器设计

judy /

本文是该系列的第17篇。上一篇介绍了使用低层次封装的block搭建直接型FIR滤波器结构的方法,对设计进行时序分析,并将设计流水线化来提高系统的工作频率。转置型FIR滤波器是一种由直接型FIR滤波器变换而来的结构,在几乎相同的结构下有着更好的性能,本文将对此做介绍。

<strong>转置型FIR滤波器</strong>
滤波器结构框图如下:
<center><img src="http://xilinx.eetrend.com/files-eetrend-xilinx/blog/201809/13383-39378-…; alt=""></center>

学会System Generator(16)——流水线设计方法详解

judy /

本文是该系列的第16篇。流水线(pipeline)是FPGA设计中经常提到的一种技巧,通过消耗更多的资源来提升系统的运行速度。本文将以FIR滤波器的设计为主题,详细介绍如何把一个设计“流水线化”,并进行时序分析体会流水线设计带来的好处。

<strong>流水线</strong>
这里先用通俗易懂的语言描述一下流水线设计思想。假设小A要从成都到哈尔滨旅游,如果直接坐火车过去恐怕要累得受不了;如果在旅程中间加几站,比如到西安、北京、天津找个客栈休息一下,路上就更加精力充沛了。

对于信号而言也是一样,加入一个状态为1的信号x需要从寄存器A传输到寄存器B,这条路线上只有组合逻辑(没有休息的地方),那么x必须保证在路上的时间保持1不变,如果传到一半值变为0了那就出错了。所以,A到B的延时就决定了系统的工作频率不能高于多少(否则会出错),系统的最大工作频率也是由最长路径上的延时决定的。

但是,假设在A到B这条路上,增加几个寄存器(信号休息的“客栈”),相当于将路径拆分为几段,信号x就不必再害怕丢失状态。缩短了路径,也就缩短了延时,也就提高了系统可以工作的最高频率。这个过程就称作“设计流水线化”。

<strong>无流水的FIR滤波器设计</strong>

学会System Generator(15)——三种数控振荡器设计方法

judy /

本文是该系列的第15篇。数字控制振荡器(NCO)是FPGA中常用的一个模块,在《FPGA数字信号处理系列》第一篇就对其做了相关介绍。System Generator中的block大致可以分为两类:高层次封装(面向系统级,如第2篇设计中用到的Digital FIR Filter)和低层次封装(面向底层,与FPGA资源的联系更直接)。

本文将采用IIR滤波器、DDS、DDS Compile IP核3种设计原理在System Generator中实现NCO。前两种采样低层次封装block,后一种采用高层次封装block,体会其中的差别。

<strong>基于IIR滤波器的NCO实现</strong>