最新日志

发表于:2008-5-14 15:09:02
标签:无标签

0

仪表运放 RF INTERFERENCE

RF rectification is often a problem when amplifiers are used in
applications having strong RF signals. The disturbance can appear
as a small dc offset voltage. High frequency signals can be
filtered with a low-pass RC network placed at the input of the
instrumentation amplifier, as shown in Figure 47. The filter
limits the input signal bandwidth, according to the following
relationship:

点击此处查看原文 >>

系统分类: 模拟技术   |    用户分类: 无分类    |    来源: 无分类

评论(0) | 阅读(32)
发表于:2008-5-14 15:05:18
标签:无标签

0

仪表运放输入偏置电流回路

Input Bias Current Return Path
The input bias current of the AD8228 must have a return path
to common. When the source, such as a thermocouple, cannot
provide a return current path, one should be created, as shown
in Figure 46.

 

点击此处查看原文 >>

系统分类: 模拟技术   |    用户分类: 无分类    |    来源: 整理

评论(0) | 阅读(32)
发表于:2008-5-9 17:11:42
标签:无标签

0

关于MaxII 在多电压系统中的应用

(1)当Vccio=3.3V时,MAX II能够驱动5V TTL电路,因为它在3.3V I/O供电时,输出高电平是2.4V,符合5V TTL器件的电平要求。

(2)当MAX II器件的输出接口直接驱动5V COMS器件时,将不能正确驱动。如果MAX II的Vout大于Vccio时,PMOS上拉晶体管将导通,防止外部上拉电阻将信号拉高到5V。为了使MAX II能够兼容5V CMOS电平,应使能PCI钳位二极管,同时配置输出引脚为开漏,并且使用外部上拉电阻。如下图所示

点击看大图

注:由于内内部的PCI钳位二极管只有在MAX II器件上电后才能起作用,故当MAXII被5V电平驱动时,在上电前在外部需要一个二极管。

引脚设置成开漏后将不能输出高电平,只有低电平和高阻状态。当开漏引脚使能,输出低电平,当开漏禁止,输出为高阻状态,由外部电阻拉高到5V。使能PCI钳位二极管的目的是为了保护MAXII 的I/O引脚。当Vccio为3.3V时,钳位二极管使A点钳位在4V,这是MAXII所允许的可靠的极限。

只在EPM1270和EPM2210的I/O Bank 3中有PCI钳位二极管,对EPM1270和EPM2210的其他Bank和EPM240 and EPM570的Bank,需要外部二极管。

上拉电阻应尽量小,以满足信号的上升时间要求,但又要足够大,以确保符合MAXII的IoL(输入电流)要求。电流要求见下表

点击看大图

Quartus使用最大的电流驱动设置。PCI I/O始终设置为20mA不能更改。

当外部串联电阻并且使用内部PCI钳位二极管(只有EPM1270和EPM2210具备)时MAX II具有5V的电压容限。

由于时间关系,具体参考Chapter 8. Using MAX II Devices in Multi-Voltage Systems

注意:因为5V驱动时用到了PCI钳位二极管,而钳位二极管只有在MAX II上电后才有效,故当与5V器件相连时应使MAX II先上电!!!

pdf

点击此处查看原文 >>

系统分类: CPLD/FPGA   |    用户分类: 无分类    |    来源: 整理

评论(0) | 阅读(47)
发表于:2008-4-18 21:50:48
标签:无标签

0

基于FPGA的分布式算法FIR滤波器设计

转自:http://user.qzone.qq.com/410505504

基于FPGA的分布式算法FIR滤波器设计

发表于:2007年12月16日 20时5分28秒阅读(8)1)特效:[图]本文链接:http://user.qzone.qq.com/410505504/blog/1197806728
基于FPGA的分布式算法FIR滤波器设计 2007.10.29   来自:电子测量技术    作者:赵岚 毕卫红等 0 引 言

FIR(finite impulse response)滤波器是数字信号处理系统中最基本的元件,它可以在保证任意幅频特性的同时具有严格的线性相频特性,同时其单位冲激响应是有限的,没有输入到输出的反馈,是稳定的系统。因此,FIR滤波器在通信、图像处理、模式识别等领域都有着广泛的应用。
目前FIR滤波器的硬件实现有以下几种方式:
一种是使用单片通用数字滤波器集成电路,这种电路使用简单,但是由于字长和阶数的规格较少,不易完全满足实际需要。虽然可采用多片扩展来满足要求,但会增加体积和功耗,因而在实际应用中受到限制。
另一种是使用DSP芯片。DSP芯片有专用的数字信号处理函数可调用,实现FIR滤波器相对简单,但是由于程序顺序执行,速度受到限制。而且,就是同一公司的不同系统的DSP芯片,其编程指令也会有所不同,开发周期较长。
还有一种是使用可编程逻辑器件,FPGA/CPLD。FPGA有着规整的内部逻辑块整列和丰富的连线资源,特别适合用于细粒度和高并行度结构的FIR滤波器的实现,相对于串行运算主导的通用DSP芯片来说,并行性和可扩展性都更好。
FIR滤波器的主要组成模块是乘累加单元(MAC),如果按照直观结构构造乘法器和系数寄存器来实现会占用大量的逻辑资源,显然不可取。本文采用基于分布式算法思想的方法来设计FIR滤波器,并在FPGA上实现。
1 分布式算法原理
分布式算法(distributed arithmetic,DA)最初是在1973年由Croisier提出的,但直到Xilinx发明FPGA的查找表以后,DA算法才在上世纪90年代初重新受到重视,并有效地应用在FIR滤波器的设计中。DA算法的原理如下。
一线性时不变网络的输出为:


假设c(n)为已知常系数,x(n)是变量,用(B+1)位2进制补码表示为:


函数f(c(n),xb(n))的实现方法是利用一个LUT(查找表)实现影射f(c(n),xb(n)),也就是说2N字宽、预先设定程序的LUT接收一个N位输入向量xb=[xb[0],xb[1]…xb[N-1]],输出为f(c(n),xb(n)),个个影射,f(c(n),xb(n))都由相应的二次幂加权并累加。对于固定系数,整数乘以2b即左移6位,可以通过硬连线实现,不占用逻辑资源,利用图1所示的移位加法器就能有效地实现累加。DA算法的主要特点是巧妙利用SRAM查找表将固定系数的MAC运算转化为查表操作,其运算速度不随系数和输入数据精度的增加而降低,而且相对直接实现乘法器和系数寄存器在逻辑资源占用上得到了极大的改善。缺点是查找表的大小随滤波器的阶数的增加呈指数增长,这时可以采用将大查找表分解为小查找表的方法来降低逻辑资源的消耗,如图2所示。


2 FIR滤波器的网络结构
N阶FIR滤波器相对于输入时间序列x(n)的输出表达式为:


即输出序列为单位脉冲相应h(n)与输入x(n)的卷积,由卷积关系可直接画出结构图,称之为直接型结构,如图3所示,该结构中共需要N个乘法器。


对于线性相位FIR滤波器,其单位取样响应是对称或反对称的,即:


利用对称性可以简化网络结构,当h(n)为偶对称且N为偶数时,


其线性网络结构如图4所示,仅需N/Z个乘法器。


3 FIR滤波器的硬件电路设计
下面以一个32阶FIR带通滤波器为例说明硬件电路设计的方法和过程。
3.1 设计指标
采用频率:200 Hz        类型:带通
上限截止频率:54.3 Hz     下限截止频率:46 Hz
阶数:32阶           系数数据宽度:16位
输入数据宽度:16位       输出数据宽度:16位
3.2 滤波器的设计
使用MATLAB 7.1软件中Filter Design&AnalysisTool,选取带通滤波器,Kaiser窗设计方法,设计出符合设计指标的32阶线性相位FIR滤波器,其幅频特性和相频特性如图5所示。


滤波器的特征参数用16位二进制补码表示如下:


3.3 硬件电路组成单元
FIR滤波器的硬件电路包括数据位扩展、并串转换器、移位寄存器组、预相加单元、查找表单元、查表结果相加单元、移位累加单元、锁存输出单元、控制单元等,总的结构如图6所示。


(1) 数据位扩展:由于输入数据要进行预相加,为了防止溢出,保证电路正常工作,采用符号位扩展,使输入数据由16位增加到17位。
(2) 并串转换器:由于电路以串行方式工作,须将并行输入的数据转换为串行数据输入,且顺序是先输入低位(LSB),后输入高位(MSB)。
(3) 移位寄存器组:其主要功能是用寄存器组存储输入序列,实现输入数据的延时输出,存储的级数等于FIR滤波器的阶数减1,即31。移位寄存器组输出的数据和并串转换器输出的数据一起形成如图1中所示的输入数据阵列形式。
(4) 预相加单元:利用FIR滤波器系数的对称性,按照图4所示的FIR滤波器线性网络结构,将相同滤波器系数相乘两个输入数据预先相加,这样相当于将滤波器的阶数减半,减小了硬件规模。预相加单元采用在位串行电路中广泛应用的串行加法器来实现。
(5) 查找表单元:如前所述,LUT的规模随滤波器阶数的增加呈指数增长,当滤波器的阶数很大时,查找表的规模过于庞大。为了减小规模,可以将1个有16位地址总线的LUT分割,产生4个4位地址总线部分LUT,先分别对4个部分表查表,再将结果相加。为防止相加时产生溢出,将16位查表输出经过1位符号扩展变为17位。
(6) 查表结果相加单元:加法器是影响FIR滤波器性能的主要部件,其工作速度决定了FIR滤波器的效率,因此采用具有超前进位功能的流水线加法器。
(7) 移位累加单元:得到的查表结果相当于一个部分积,移位累加单元将其与寄存器中的部分积相加,结果右移1位还放入寄存器中,直到所有的位数都查表结束。特别应注意,最高位查表得到的结果不是与上一个右移1位的部分积相加,而是相减。这里的加法器仍是采用具有超前进位功能的流水线加法器,作减法时,只需将被减数取补即可。
(8) 锁存输出单元:加法器的输出不稳定,将其结果经过一锁存器得到稳定的输出。
(9) 控制单元:产生复位,时序等控制信号,控制电路的总体运行。
3.4 电路仿真
在ALTERA公司的MAX+PLUS2软件环境下,用硬件描述语言VHDL对上述FIR滤波器的模块进行编程描述,并仿真各模块的波形,最后将各模块综合起来下载到器件FLEX10KE中形成FIR滤波器。
用MATLAB设计了一幅度为0.22的50 Hz的正弦波,用250 Hz的采样器对其采样,得到周期序列[0,0.209 2,0.129 3,—0.129 3,—0.209 2],用16位二进制补码表示为:[0000H,1ACBH,108DH,EF73H,E538H],将其输入到FIR滤波器的输入端,滤波器的输出如图6所示,实验结果与理论计算一致。并取32位以后的输出结果,在MATLAB里绘制波形,如图7所示,可见,FPGA仿真结果正确,50 Hz的正弦波通过了FIR滤波器。


4 结 论
本文所介绍的基于FPGA、采用分布式算法实现FIR滤波器的方法,在提高系统运行速度和节省硬件资源方面具有很大的优势。而且,通过改变阶数和查找表中的系数,还可以将此设计灵活地运用于实现高通、低通和带阻滤波器,可移植性较好。因此,这种方法在高速数字信号处理中将有很好的应用前景。

点击此处查看原文 >>

系统分类: CPLD/FPGA   |    用户分类: 无分类    |    来源: 转贴

评论(0) | 阅读(129)
发表于:2008-4-18 10:26:40
标签:无标签

0

如何在SignalTAP II中保留特定节点 (verilog和VHDL禁止节点优化)

转自riple的:http://blog.ednchina.com/riple/2008/1/2.aspx
 
 
To be an Architect
发表于 2008-1-2 21:50:33

    一直以来,都觉得搭建一个SOPC系统很难。不是因为软件的使用存在问题——我可以阅读文档、咨询论坛上的高手、自己动手试试;而是因为搭建一个功能完备、结构自洽的SOPC系统太不易了——随便打开一个Altera提供的设计示例就会发现那么多的设备、那么多的DMA控制器、那么复杂的启动过程。 riple

    对我来说,看懂一个设计示例不难,照葫芦画瓢设计一个也不是难事。但是真的要自己定义需求,搭建一个SOPC系统——这个系统需要多个主设备协同工作,主设备之间需要竞争从设备的不可重入的使用权,需要自己定义从设备的操作接口,需要采用Scatter-Gather DMA,甚至不要采用Nios II......——我想了很久,一直还没有一个整体而清晰的轮廓。 riple

    回想最近一个项目,虽然我的工作FPGA设计是唱戏的主角,但搭台的是系统设计工作。由于外部器件和IP的限制,我们的系统还不是一个SOPC系统,而是一个“SOPCB”系统。系统设计和PCB布局工作是由我们硬件组的“老大”完成的,PCB上的总线用245搭建,还用CPLD完成Nor Flash换页和FPGA配置工作。“老大”就是老大,系统搭建得漂亮简洁。那么多器件,两层板搞定,尺寸还中规中矩。“老大”的功底让人不得不佩服。 riple

    工作快三年了,技术上一直在进步,不只是广度上的,我更看重的是深度上的。让我在FPGA内部设计一个工作稳定的模块基本上不是难事,可是让我像“老大”那样设计一个“自给自足”的PCB系统,还真是无从下手。模块设计和系统设计的差距是很大的,三年的技术积累还不足以让我跨入系统设计的门槛。 riple

    由于有了上面的思考,我决定要补一补系统设计的知识,在网上搜了搜,在书上查了查,大家都推荐Computer Architecture:A Quantitative Approach。到图书馆借来一本07年出的第四版,在前言中读到这样一段话: riple

The architect's role is not that of a scientist or inventor who will deeply study a particular phenomenon and create new basic materials or techniques. Nor is the architect the craftsman who masters the handling of tools to craft the finest details. The architect's role is to combine a thorough understanding of the state of the art of what is possible, a thorough understanding of the historical and current styles of what is desirable, a sense of design to conceive a harmonious total system, and the confidence and energy to marshal this knowledge and available resources to go out and get something built. To accomplish this, the architect needs a tremendous density of information with an in-depth understanding of the fundamentals and a quantitative approach to ground his thinking.

    由此恍然大悟——自己离Architect的目标还远着呢,充其量是个SOPC Builder。 riple

系统分类: CPLD/FPGA
用户分类: 数字之外
标签: SOPC Builder
来源: 原创
发表评论 阅读全文(354) | 回复(0)

7

关于投票
加快SignalTAP II编译过程的小技巧
发表于 2008-1-2 10:36:08

    使用Start Analysis & Elaboration代替Start Analysis & Synthesis可以显著缩短编译时间,对于添加节点来说,效果是相同的。原理如下: riple

Go to the Processing menu, point to Start and select Start Analysis & Elaboration to compile the design.
Before you can connect the ELA to signals in your design, you must first compile the design to build the node database. For this step, you do not need to fit the design completely. The Start Analysis & Elaboration command builds the node database, but stops before the fitting step.

    可以简单的认为:Start Analysis & Synthesis = Start Analysis & Elaboration + Mapping。Start Analysis & Elaboration可以建立未经过器件结构映射的设计数据库,而Start Analysis & Synthesis建立的是经过器件结构映射和优化的设计数据库。 riple

    同样,如果只需要观察一个设计的层次关系图,也可以使用这种方法加快速度。 riple

    同样,如果只需要观察一个设计的RTL视图,不需要观察Technology Map视图,也可以使用这种方法加快速度。 riple

 

背景资料:Using SignalTap II Embedded Logic Analyzers in SOPC Builder Systems riple

系统分类: CPLD/FPGA
用户分类: Signal Tap II
标签: SignalTAP 编译选项
来源: 原创
发表评论 阅读全文(1178) | 回复(0)

2

关于投票
使用SignalTAP II必须要关闭的编译选项
发表于 2008-1-2 10:21:41

    以前遇到过几次类似问题,只知道关闭一下就可以通过,但是没搞清原理。在Altera的一篇文档里找到了答案: riple

In the Settings dialog box, under the Compilation Process Settings section, select Incremental Compilation. Set the Incremental Compilation option to Off.
By turning off the Incremental Compilation option, pre-synthesis signals can be added to the SignalTap II ELA in the later sections. Pre-synthesis signals exist after design elaboration, but before any synthesis optimizations are done. This set of signals should reflect your register transfer level (RTL) signals.

 

背景资料:Using SignalTap II Embedded Logic Analyzers in SOPC Builder Systems riple

系统分类: CPLD/FPGA
用户分类: Signal Tap II
标签: signaltap 编译选项
来源: 原创
发表评论 阅读全文(494) | 回复(2)

2

关于投票
如何在SignalTAP II中保留特定节点
发表于 2008-1-2 10:11:27

    在使用SignalTAP II的过程中,我经常发现一些用于调试的逻辑(比如调试用的计数器)会被优化掉,不能出现在调试波形中。在Altera的一篇文档中,发现了以下关键信息: riple

In the logic synthesis stage, the Quartus II software may optimize away signals that you are trying to analyze with the SignalTap II Embedded Logic Analyzer. If this occurs, you will see a compilation error. You can force the Quartus II software to preserve these signals by adding the keep or preserve attribute in the source HDL to the signals you want to monitor.

The keep attribute is used for a wire or net node. For example:
In Verilog:
    wire my_wire /* synthesis keep = 1 */:
In VHDL:
    signal my_signal: bit;
    attribute syn_keep : boolean;
    attribute syn_keep of my_signal: signal is true;

The preserve attribute is used for a register. For example:
In Verilog:
    reg my_reg /* synthesis preserve = 1 */:
In VHDL:
    signal my_reg: stdlogic;
    attribute preserve : boolean;
    attribute preserve of my_signal: signal is true;

 

背景资料:Using SignalTap II Embedded Logic Analyzers in SOPC Builder Systems riple

系统分类: CPLD/FPGA
用户分类: Signal Tap II
标签: signaltap 保留节点
来源: 原创

点击此处查看原文 >>

系统分类: CPLD/FPGA   |    用户分类: 无分类    |    来源: 转贴

评论(0) | 阅读(124)
发表于:2008-4-18 10:21:49
标签:无标签

0

关于verilog 和VHDL的语句优化问题1

转自:http://www.edacn.net/bbs/thread-94623-1-1.html

 

 

用 verilog 如何描述使quartus 编译不会把加的延时非门(功能上说无用的)优化掉

用 verilog 如何描述使quartus 编译不会把加的延时非门(功能上说无用的)优化掉

想对一个信号加门级延时(打算加若干非门),用 verilog 如何描述使quartus 编译不会把加的
延时非门(功能上说无用的)优化掉。

[ 本帖最后由 ntlnt 于 2007-7-23 09:20 编辑 ]

wire my_wire /* synthesis keep = 1 */;
/* synthesis keep = 1 */方法试过,
本打算加3个非门延时,结果仍然被优化为一个非门了

用lcell

在综合的时候把它弄成黑盒子.综合完后用quartus来mapping,就可以了.
错了!是/* synthesis syn_keep = 1 */请参考synplify的HELP
引用:
原帖由 ntlnt 于 2007-7-23 14:14 发表
/* synthesis keep = 1 */方法试过,
本打算加3个非门延时,结果仍然被优化为一个非门了
你可以Quartus的RTL View中比效下面现段程序的区别:
程序1:
module delayg(a,b,out);
input a,b;
output out;
wire t/* synthesis keep = 1 */;
wire x/* synthesis keep = 1 */;
wire y/* synthesis keep = 1 */;
wire z/* synthesis keep = 1 */;
assign t="a"^b;
assign x="t";
assign y="x";
assign z="y";
assign out="z";
endmodule

程序2:
module delayg(a,b,out);
input a,b;
output out;
wire t;
wire x;
wire y;
wire z;
assign t="a"^b;
assign x="t";
assign y="x";
assign z="y";
assign out="z";
endmodule
引用:
原帖由 wuhuifeng 于 2007-7-23 15:11 发表
错了!是/* synthesis syn_keep = 1 */请参考synplify的HELP
老兄,quartus综合器用的是/* synthesis keep = 1 */,你说的/*synthesis syn_keep = 1*/是synplify综合器的设置。
不过现在quartus也支持/*synthesis syn_keep = 1*/

不要随便就说别人错了

回复 #7 rose8866 的帖子

谢谢rose8866,让我多学了一招.
引用:
原帖由 forrest1 于 2007-7-23 17:31 发表
谢谢rose8866,让我多学了一招.
互相学习

点击此处查看原文 >>

系统分类: CPLD/FPGA   |    用户分类: 无分类    |    来源: 转贴

评论(0) | 阅读(64)
发表于:2008-4-18 10:17:28
标签:无标签

0

开博记录工作

发现ednchina的blog很好,在此开博,希望能把自己工作中遇到并接觉得问题、工作进度情况及网上搜集的资料在此保留!

 

                mxs

点击此处查看原文 >>

系统分类: 生活点滴   |    用户分类: 无分类    |    来源: 无分类

评论(0) | 阅读(49)
总共 , 当前 /