FPGA中的毛刺信号解析

FPGA中的毛刺信号解析
FPGA中的毛刺信号解析

FPGA设计中毛刺信号解析

在FPGA的设计中,毛刺现象是长期困扰电子设计工程师的设计问题之一, 是影响工程师设计效率和数字系统设计有效性和可靠性的主要因素。由于信号在FPGA的内部走线和通过逻辑单元时造成的延迟,在多路信号变化的瞬间,组合逻辑的输出常常产生一些小的尖峰,即毛刺信号,这是由FPGA 内部结构特性决定的。毛刺现象在FPGA的设计中是不可避免的,有时任何一点毛刺就可以导致系统出错,尤其是对尖峰脉冲或脉冲边沿敏感的电路更是如此。

任何组合电路、反馈电路和计数器都可能是潜在的毛刺信号发生器,但毛刺并不是对所有输入都有危害,如触发器的D输入端,只要毛刺不出现在时钟的上升沿并满足数据的建立保持时间,就不会对系统造成危害。而当毛刺信号成为系统的启动信号、控制信号、握手信号,触发器的清零信号(CLEAR)、预置信号(PRESET)、时钟输入信号(CLK)或锁存器的输入信号时就会产生逻辑错误。在实际设计过程中,应尽量避免将带有毛刺的信号直接接入对毛刺敏感的输入端上,对于产生的毛刺,应仔细分析毛刺的来源和性质,针对不同的信号,采取不同的解决方法加以消除。

因此,克服和解决毛刺问题对现代数字系统设计尤为重要。本文从FPGA的原理结构的角度探讨了产生毛刺的原因及产生的条件,在此基础上,总

结了多种不同的消除方法,在最后结合具体的应用对解决方案进行深入的分析。

1毛刺产生的原因

以图1的例子分析毛刺产生的起因:图1是一个3位同步加法计数器,当使能端为高电平时,在每个时钟上升沿时刻,QA ,QB,QC从000逐步变到111,进入到全1状态后,进位输出端输出半个时钟脉冲宽度的高电平,但从图2仿真结果中可以看到在011变化到100时刻ROC出现了尖脉冲,即毛刺。

以Xilinx的FPGA为例分析其内部结构,如图3所示[2]。

FPGA芯片是由可构造的输入输出块(Input/OutputBlock,IOB)、可构造逻辑块(Cinfigur able Logic Block,CLB)和可编程连线资源(Programmable Interconnect Array,PIA)3种可构造单元构成的。IOB位于芯片内部四周,在内部逻辑阵列与外部芯片封装引脚之间提供一个可编程接口,他主要由逻辑门、触发器和控制单元组成。CLB组成了FPGA的核心阵列,能完成用户指定的逻辑功能;每个CLB主要有一个组合逻辑、几个触发器、若干个多选一电路和控制单元组成;PIA位于芯片内部的逻辑块之间,经编程后形成连线网络,用于芯片内部逻辑间的相互连接,并在他们之间传递信息。从图3中可以看出,对于不同的输入1、2,到逻辑块(M)的走线可能是不同的,这就造成了输入信号的延迟,假设1、2同时变化,由于延迟的存在,到达M时就有先有后(这种现象称为竞争),在逻辑输出端就可能会有险象(也称冒险),即产生了毛刺。在上述例子中的011状态,假设QA与QB同时从1变化到0,而QC提前了2 ns从0变到1 ,产生一个2 ns的高电平,这就是毛刺。也就是说,在FPGA设计中,毛刺产生的根本原因是信号在芯片内部走线时产生的延迟。

2毛刺产生的条件

借助同样的例子来分析毛刺产生的条件。QA,QB,QC在每一个时钟上升沿同时发生翻转,但实际中由于延迟的存在,并不能保证QA,QB,QC到D触发器的布线长短一致。如果QC比Q A,QB提前了2 ns,这就形成了2 ns的全1状态,称为“假象全1”,进而导致进位输出产生一个尖脉冲。值得注意的是,在3变到4即011到100时,3位中有2位同时发生翻转,即在同一时刻有大于一个的信号发生改变。由于延迟的作用,多个信号到达终点的时间有先有后,形成了竞争,由竞争产生的错误输出就是毛刺。所以,毛刺发生的条件就是在同一时刻有多个信号输入发生改变。

3消除毛刺的方法

知道了毛刺产生的条件,就可以通过改变设计,破坏其条件来减少毛刺的发生。例如,利用格雷码计数器每次输出只有一位跳变的特性,代替普通的二进制计数器,避免了毛刺的产生[3]。还可以对电路进行改进,以消除毛刺对系统的影响。下面对各种方法做分别介绍:

3.1利用冗余项法

利用冗余项消除毛刺有2种方法:代数法和卡诺图法,两者都是通过增加冗余项来消除险象,只是前者针对于函数表达式而后者针对于真值表。以卡诺图为例,若两个卡诺圆相切,其对应的电路就可能产生险象。因此,修改卡诺图,在卡诺图的两圆相切处增加一个圆,以增加多余项来消除逻辑冒险。但该法对于计数器型产生的毛刺是无法消除的。

3.2采样法

由于冒险多出现在信号发生电平跳变的时刻,即在输出信号的建立时间内会产生毛刺,而在保持时间内不会出现,因此,在输出信号的保持时间内对其进行

采样,就可以消除毛刺信号的影响,常用的采样方法有2种:一种使用一定宽度的高电平脉冲与输出相与,从而避开了毛刺信号,取得输出信号的电平值。这种方法必须保证采样信号在合适的时间产生,并且只适用于对输出信号时序和脉冲宽度要求不严的情况。另一种更常见的方法叫锁存法,是利用D触发器的输入端D对毛刺信号不敏感的特点,在输出信号的保持时间内,用触发器读取组合逻辑的输出信号。由于在时钟的上升沿时刻,输出端Q=D,当输入的信号有毛刺时,只要不发生在时钟的上升沿时刻,输出就不会有毛刺。这种方法类似于将异步电路转化为同步电路,实现简单,但同样会涉及到时序问题。

3.3吸收法

由于产生的毛刺实际上是高频窄脉冲,故增加输出滤波,在输出端接上小电容C就可以滤除毛刺。但输出波形的前后沿将变坏,在对波形要求较严格时,应再加整形电路,该方法不宜在中间级使用。

3.4延迟法

因为毛刺最终是由于延迟造成的,所以可以找出产生延迟的支路。对于相对延迟小的支路,加上毛刺宽度的延迟可以消除毛刺。但有时随着负载增加,毛刺会继续出现,而且,当温度变化,所加的电压变化或要增加逻辑门时,所加的延迟是不同的,必须重新设计延迟线,因而这种方法也是有局限性的。而且采用延迟线的方法产生延迟会由于环境温度的变化而使系统可靠性变差。

3.5硬件描述语言法

这种方法是从硬件描述语言入手,找出毛刺产生的根本原因,改变语言设计,产生满足要求的功能模块,来代替原来的逻辑功能块。在图1电路中,一个3

位计数器可能会在011到100和101到110发生跳变时产生毛刺,究其原因是因为一次有2位发生跳变,可以采用VHDL语言对计数器编写如下,产生的计数模块代替原来普通的计数器。

注意在新的计数器中,每次状态发生改变时Q0,Q1,Q2 只有1位发生跳变,从根本上消除了毛刺。但计数器的输出状态没有规律,不便于其他电路利用。如果希望计数器的输出状态有规律变化以便其他电路使用,可以考虑采用双输出电路,一路是单信号输出,一路是正常计数输出。这种方法从根本上消除了毛刺产生的根源,具有普遍的意义,对系统也不会产生影响,是最为可靠的方法,其不利之处是这种方法对VHDL语言要求比较高,必须对电路的工作状态及其转变有全面的分析和掌握,而随着电路的复杂度提高,毛刺产生的来源繁杂,实现起来比较困难。

对于一般情况下产生的毛刺,可以尝试用D触发器来消除。但用D触发器消除时,有时会影响到时序,需要考虑很多问题。所以应根据不同情况,仔细地分析毛刺产生的来源和毛刺的性质,结合系统资源选择具体办法,消除毛刺的影响。

4具体实例

在实际应用中要对一个周期同步脉冲信号进行检测,要求若在给定的时间内没有检测到同步信号则给出一定脉冲宽度的高电平,作为复位信号。设计思想是采用一个计数器,当有同步信号时对其清零,并同时开始计数,根据给定时间和系统时钟周期设定计数器的模数,经过给定的时间后输出高电平,满足宽度后再置低。

实际要求检测时间大约1 s,脉冲宽度保持在20 ms左右,采用5片74161级联,第5片计数器的ROC接D触发器的使能端。同步信号输入后,清零并开始计数,若不再出现同步脉冲,经16^5 个时钟周期后,第5片的RCO端输出一个高电平,使触发器的Q输出D(高电平),再过16^3*2个时钟周期后使第4片的QA,QB,QC,QD接组合门电路输出低电平,接到D触发器的计数器预制端,使Q输出为零。这样就实现经一定延时后的一定宽度的脉冲。经仿真结果如图4所示。

仿真平台采用Max+PlusⅡ,时钟周期设为10 ns,经计算可以知道在10.485 928 2 ms处产生宽度为81.92μs的高电平,但由于存在数据建立时间和保持时间,仿真结果中的变化时刻并不是严格与计算相符的,其中 q0,q1,q2,q3是第5片74161的输出,roc1是第4片的进位输出,roc是第5片的进位输出,roc1输出16个高电平后,roc同时输出一个高电平。图4中复位信号reset却在5.247 ms 和10.485 297 9 ms处发生。第一个错误的原因是,由于计数器累加,内部走线造成的延时,当第5片计数器从0111状态跳变到1 000时,输入同时有3位变化,致使进位输出roc在roc1的第8个输出时产生了一个尖脉冲,使触发器的Q端提前发生电平转变,导致了在5.247 ms处产生错误复位信号。同样的原因,第4片的进位输出roc1在第14个输出跳变到第15个输出时发生毛刺,而该毛刺使第5片161进入计数状态,在roc端也产生了毛刺,就出现了图4中复位信号提前翻转的结果。

对于该电路中存在的毛刺问题,可以采用2种方法修改电路。由于该电路对时间要求的不是很严格,对第4,5片74LS161取1110状态做最后输出,就避免了由延迟造成的假象全1状态,仿真结果证明这种方法是有效的。但这种方法增加了逻辑门数量,同时也增加了险象发生的可能性。

另一种比较可靠且常用的方法是用带使能端的D触发器代替原来的触发器,把计数器最后的输出roc接到触发器的使能端,时钟用统一的计数时钟,由于毛刺本身是尖脉冲,不能满足数据的建立时间和保持时间,避免了产生的毛刺对Q 的输出的影响。从仿真结果(图5)中可以看到,虽然这种方法并不能消除毛刺,但是毛刺已经不具有危害性,故这是一种简单有效的方法。

5结语

毛刺问题在FPGA设计中非常关键,只有深刻理解毛刺的本质,才有可能真正掌握设计的精髓,本文就FPGA设计中的毛刺问题进行了深入的探讨,分析其产生的原因和条件,给出了几种常用的消除方法,希望对FPGA设计者有一定的参考作用。

SERDES的FPGA实现

芯片功能的增加和数据吞吐量的要求,促使芯片行业从较低数据率的并行连接,转向较高速度的串行连接。SERDES(Serializer-Dese rializer,)是经高速差分对,而不是经较低速度的并行总线传输串行化的数据。一个实例是用单个PCI-Express通道,替代传统的32位、64MHz PCI总线(可达到2.112Gb/s),仅用4条线(运行在2.5GHz),可达到4Gb/s 总数据率。简言之,SERDES协议允许用较少的引脚数传输较高的数据率。 典型的SERDES的FPGA实现 图1给出在复杂的FPGA实现中各种可能的SERDES接口,包括数据通路(芯片到芯片,SPI 4.2,PCI-Express,SGM11)、背板(GbE/GSM11,PCI Express/AS,专用)接口、存储器接口(DDR1/ⅡSDRAM,QDRⅡSRAM)。可由FPGA实现的芯片包括存储器控制器、帧调节器/MAC、DSP协处理器、控制板接口和背板驱动器。 SERDES接口有两类:源同步(SS)接口和时钟数据恢复(CDR)接口。这两类接口的基本差别是如何实现同步。源同步接口有一个伴随传输数据的分离时钟信号。CDR没有分离的时钟信号,代之以嵌入在数据开关转换中的时钟。这就是说,CDR接收机将锁相数据信号本身来得到时钟。表1给出这两类接口的基本差别。CDR接口通常运行在较高的速度和较长的距离,因而会带来较大的设计问题。基于此原因,本文主要集中在CDR方面。 图1 典型的SERDES应用 时钟数据恢复 时钟数据恢复(CDR)接收机必须恢复来自数据的嵌入式时钟。更确切地说,时钟起源于数据信令的开关转换。CDR发送到串行化数据开始,然后,变换数据为8b/10b(或类似的编码方法)。编码取8位数据,并变换此数据为10位符号。8b/10b编码在

ISE中FPGA的实现流程

一.ISE实现的步骤 在综合之后,我们开始启动FPGA在ISE中的实现过程,整个过程包括以下几个步骤: 1.Translate - 将输入的网表文件和约束文件整合后输出到一个Xilinx私有的通用数据库文件 (Native Generic Database,NGD)中。 2.MAP-将设计映射到目标器件的资源上,可以选择在此阶段完成资源的布局。 3.Place and Route-按照时序约束的要求,完成设计的布局布线。 4.Generate Programming File- 生成一个可下载到FPGA器件的bit流文件。 本文将会详细的介绍如何完成一个设计的实现过程以及实现过程的这四个步骤。 二.启动实现过程的方法 1.在design窗口的第一行,找到view选项,选中Implementation模式,表示design窗口中显示的是Implementation过程的界

面。新建工程中默认选择Implementation 模式。 2.在design窗口上半部分的hierarchy子窗口中,点击顶层文件。 3.在design窗口下半部分的processes子窗口中,可以双击Implement Design启动完整实现过程,也可以右键选中run启动 完整实现过程。同时,可以展开Implement Design,单独执行Translate、MAP、Place and Route等过程。Implement 结束以后,可以双击Generate Programming File生成bit流文件。Generate Programming File过程也可以通过邮件选中 run来启动。 三.Translate Translate过程将输入的所有网表文件和约束文件进行整合,输出到一个NGD(Native Generic Database)文件中。NGD文件是Xilinx自定义的一种通用数据库文件,在文件中设计被映射成各种NGD 定义的基元,例如与门、或门、LUTs、flip-flops和RAM等。NGD文件中同时包含着原始网表文件中描

串口通信FPGA实现

FPGA设计与应用 串口通信实验报告 班级:1105103 姓名:苏林效 学号:1110510321 日期:2014年10月29日

实验性质:验证性实验类型:必做 开课单位:电信院学时:2学时 一、实验目的 1、了解串口通信的基本原理; 2、掌握锁相环的基本原理和使用方法; 3、掌握起始位和停止位的含义及实现方法; 4、掌握VHDL状态机的基本使用方法; 5、掌握基本的接口设计和调试技巧; 二、实验准备 2.1 串口通信原理(1分) 串口通信是以字节为单位,按位传输数据和接收数据的。 先看一下发送数据:串行线缆的两端事先约定好串行传输的参数(传输速度、传输格式等),之后进行传输,①当没有数据传输的时候,发送端向数据线上发送“1”;②当要传输数据时,发送端先发送一个“0”来表示要传输数据了,这样当接收端检测到“0”便可以知道有数据到来了;③开始传输后,数据以约定的速度和格式传输;④每次传输完成一个字节之后,都在其后发送一个停止位“1”。这样,发送数据就结束了。 再来看接收数据,初始状态是等待状态,接收的一直是“1”,当检测到0时进入检验状态,在检验状态下如果再检测到0(一般采用过采样)则进入接收数据状态,当接收完8位比特数后判断是否有停止位,如果有则此字节接收结束,重新进入等待状态准备接受下一字节。 2.2 锁相环的基本原理(1分) 锁相环是以锁定输入载波信号的相位为目标的一种载波环实现形式。它由三部分组成:鉴相器(PD)、环路滤波器(LPF)和压控振荡器(VCO)。如上图。 锁相环的工作原理:压控振荡器的输出经过采集并分频,后与基准信号同时

输入鉴相器。鉴相器通过比较上述两个信号的相位差,输出结果通过环路滤波器,滤除噪声和高频分量,然后输出一个直流脉冲电压,用它来控制VCO ,使它的频率改变,使()lim 0c p t θ=。经过较短时间后,VCO 的输出稳定于某一值。环路一旦进入锁定状态后,压控振荡器的输出信号与环路的输入信号(参考信号)相位时刻保持一致。 三、代码及测试 3.1程序及分析(2分) 顶层原理图如上所示,主要包括三个模块,锁相环(输出57.69MHz )、分频(输出接受时的10倍采样速率和数码管显示速率)、接受(按57.6kbps 接受从串口发来的数据)。 分频模块代码: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY DIV IS PORT(CLK : IN STD_LOGIC; --锁相环输出时钟57.69M COUT1 : OUT STD_LOGIC; --分频器输出采样时钟576k COUT2 : OUT STD_LOGIC);

位同步的FPGA实现

摘要 同步是通信系统中很重要的一个过程,它可以使通信系统更稳定、更可靠、更准确,它是数字通信系统有顺序进行的技术支撑。同步分为位同步、帧同步和载波同步,我们对数字通信信号的同步除了载波同步和帧同步之外,还要进行位同步。位同步也就是保证接收端准确有效抽样判决数字基带信号序列的基础,一般位同步信号从解调后的基带信号中提取出来,同时也可以从已调频带信号当中直接提取位同步信号,一般可以进行一元中央位置采样的决定,最好是在接收元素结束时间采样的决定。位同步有插入导频法(一种外同步法)和直接法(一种自同步法),本文运用了数字锁相法提取位同步电路的方案,以大规模可编程逻辑器件FPGA为主控制器,以VHDL硬件描述语言为主要语言对其进行在线编程,在QuartusⅡ软件工具中进行仿真和调试,以达到功耗低、成本低、效率高的技术要求。 关键词:位同步;数字锁相电路;FPGA;VHDL;QuartusⅡ

ABSTRACT Synchronization is a very important process in communication system, it can make the system more stable, more reliable, more accurate, it is the digital communication system has the technical support of the order. Synchronization is divided into bit synchronization, frame synchronization and carrier synchronization, we on the digital communication signal in addition to frame and carrier synchronization and bit synchronization. Bit synchronization is the basis to ensure the correct and effective decision receiver sampling digital baseband signal sequence,general synchronization signal is extracted from the baseband demodulated signals, but also can directly extract bit synchronization signal from the frequency band signal has, in general can be a central position sampling decisions, preferably in the receiving elements in the end time sampling decision. Bit synchronization is the pilot insertion method (a kind of external synchronization method) and direct method (a self synchronizing method), this paper uses digital PLL method of bit synchronization circuit extraction, with the large-scale programmable logic device FPGA as the main controller, using the VHDL hardware description language is the main language of the online programming, simulation and debugging in QuartusⅡsoftware tools, to meet the requirements of low power consumption, low cost, high efficiency technology Keywords: Bit synchronization (symbol extraction process); digital phase locked loop circuit (bit synchronization circuit); FPGA; VHDL; QuartusⅡ

FPGA实现步进电机控制源代码

FPGA实现步进电机控制源代码.txt我爸说过的最让我感动的一句话:“孩子,好好学习吧,爸以前玩麻将都玩儿10块的,现在为了供你念书,改玩儿1块的了。”module fenpin(clk_48m,reset,out_door,addr,data,data_rd,rd,rw,Grating_a,Grating_b); input clk_48m,data_rd,reset,rd,rw,Grating_a,Grating_b; input [8:0]addr; output out_door; inout [7:0]data; reg flag; reg [23:0]step; reg [23:0]pul_counter; reg [5:0]clk_div1m; reg [23:0]den; reg [23:0]counter; reg [23:0]counter_now; reg [19:0]Grating_counter; reg [7:0]com; reg [7:0]databuff; reg out=0; reg data_link; reg direct; assign data=data_link?databuff:8'bzzzzzzzz; assign out_door=out&flag; always@(posedge clk_48m) if(clk_div1m<6'h2e) clk_div1m <=clk_div1m+1; else clk_div1m<=0; assign clk_1m=(clk_div1m==6'h2e); always @(posedge clk_1m) begin if(!reset) begin

FPGA实现嵌入式系统

FPGA实现嵌入式系统
北京理工大学雷达技术研究所
陈禾

主要内容
嵌入式系统概念与组成 基于FPGA的嵌入式系统设计 系统集成开发环境

嵌入式系统—定义
计算系统无处不在,由个人计算机、笔记本 电脑、工作站、大型机和服务器等构成计算 系统并不奇怪,但是,更广泛的是为完全不 同的目的构造的计算系统,它们嵌入在更大 的电子器件内,分别完成特定的功能,而不 被器件的使用者所识别。 对于这样的嵌入计算系统,简称为嵌入式系 统,可以定义为除了计算机或电脑之外的几 乎任何的计算系统。 这个不很精确的定义,可以使我们着手考察 嵌入系统设计者所面临的挑战。

嵌入式系统的一般特性
嵌入系统一般功能单一,重复执行一个特定的 程序,除非嵌入系统的程序用新的程序版本更 新,或者因尺寸限制它有几个程序倒进和倒出。 对嵌入系统的约束特别严格,诸如成本、尺寸、 性能和功耗等作为实现的特性,嵌入系统要求 成本是极低的价格,尺寸限制到最小、但达到 实时快速地处理数据,且消耗最少的功率,能 延长电池受命,也不需要冷却等。 其它如NRE成本、灵活性、样机的时间、上市 的时间、可维护性、准确性和安全性。 反应和实时性:许多嵌入系统必须对系统环境 的变化连续地反应,且要无滞后地实时计算确 定的结果。

嵌入式系统应用

嵌入式系统组成
硬件
嵌入式系统实现的基础
应用程序
实现特定任务和功能
操作系统(可选)
对应用软件进行管理 使硬件对应用软件透明

ADC0809驱动FPGA实现的verilog程序

/*FPGA实现的程序:(verilog) 贴子回复于:2008-4-27 15:26:01*/ module AD0809(clk500K, //脉宽(至少100ns) rst_n, EOC, //约100us后EOC变为高电平转换结束 START, //启动信号,上升沿有效(至少100ns) OE, //高电平打开三态缓冲器输出转换数据 ALE, //高电平有效,选择信道口 ADDA, //因为ADDB,ADDC都接地了,这里只有ADDA为变量 DATA, //转换数据 DATA_R); output START,OE,ALE,ADDA; input EOC,clk500K,rst_n; input[7:0] DATA; output[7:0] DATA_R; reg START,OE,ALE,ADDA; reg[7:0] DATA_R; reg[4:0] CS,NS; parameter IDLE=5'b00001,START_H=5'b00010,START_L=5'b00100,CHECK_END=5'b01000,GET_DATA=5'b100 00; always @(posedge clk500K) case(CS) IDLE: NS=START_H; START_H: NS=START_L; START_L: NS=CHECK_END; CHECK_END: if(EOC) NS=GET_DATA; else NS=CHECK_END; GET_DATA: NS=IDLE; default: NS=IDLE; endcase always @(posedge clk500K) if(!rst_n) CS<=IDLE;

FPGA实现嵌入式系统

FPGA实现嵌入式系统 摘要:在许多领域中广泛应用的嵌入式计算系统(简称为嵌入式系统),是在更大的电子器件中嵌入的重复完成特定功能的计算系统,它经常不被器件的使用者所识别,但在各种常用的电子器件中能够找到这些嵌入式系统。以可编程门阵列(FPGA)来实现可配置的嵌入式系统已越来越广泛,本文主要详细介绍了以FPGA实现嵌入式系统的前景。 关键词:嵌入式;FPGA;嵌入式操作系统。 FPGA Embedded Systems LI Bo (College of Electrical and Electronic Engineering,Wuhan Institute of Technology,Wuhan 430200,China) Abstract:In many embedded computing systems widely used in the field(referred to as embedded systems),is an electronic device in larger repeat embedded computing system to accomplish a specific function,it is often not recognized by the user of the device,but in a variety of conventional electronic devices can be found in these embedded systems.Programmable gate array(FPGA)to implement a configurable embedded systems has become increasingly widespread,this paper introduces the prospect to FPGA implementation of embedded systems. Key words:Embedded;FPGA;Embedded operating system. 1引言 随着计算与通信的融合以及广泛的多媒体处理需求,嵌入式系统得到了前所未有的蓬勃发展。嵌入式系统是以专用芯片为核心的专用系统,其特点是面向用户、面向应用、面向产品,软、硬件量体裁衣,满足行业应用个性化的要求,而这也是FPGA器件的特点。因此基于FPGA的可配置嵌入式系统开发技术以及相应的片上可编程系统(SOPC)解决方案,不仅可融入微处理器技术、数字信号处理技术、可编程系统级芯片设计和软硬件协同设计技术,还能提供了基于嵌入式智能平台的嵌入式系统的设计方法,还降低了设计难度、缩短了研发周期,必将成为未来的主流趋势之一。 从系统对上市时间的要求、可定制特性以及集成度等方面考虑,FPGA在嵌入式系统中获得广泛应用,已经从早期的军事、通信系统等应用扩展到低成本消费电子类等产品中。目前,FPGA在嵌入式系统中主要有3种使用方式:(1)状态机模式:无外设、无总线结构且无实时操作系统,达到最低的成本,常应用于VGA和LCD控制等,满足用户的最基本需求。 (2)单片机模式:包括一定的外设,可以利用实时操作系统和总线结构,以中等的成本,达到中等的性能,常用于控制和仪表。 (3)定制嵌入模式:高度集成扩充的外设,实时操作系统和总线结构,可达到高性能,常应用于网络和无线通信等。 2FPGA实现嵌入式系统的优势 嵌入式嵌入式系统经历了从单片计算机、工业控制计算机、集中分布式控制系统,进而发展到嵌入式智能平台的几个发展阶段。从独立单机使用发展到联

FPGA实现串口通信

FPGA实现串口通信 UART接收。因为只有数据线,没有时钟,这种叫异步通信。 首先双方必须约定好通信用的时钟频率,但是双方用的时钟必定有误差,而且不知道每个bit的起始时间。这两点是造成你有时候收到对的,有时候收到错的原因。所以必须要用高倍的时钟来采样,一般用8倍、16倍。 仅仅简单实现的话,用8倍举例,如果另一块板子(或PC)发过来的是数据,发送一个bit用的时钟频率是115200Hz的话,那么自己板子上要先产生一个115200x 8 = 921600Hz 的内部时钟。用这个时钟对收到的串行数据进行采样,理论上讲,每个bit可以得到7-8个采样点。 如果FPGA晶振是50000000Hz(50MHz),则54.25分频得到921600Hz。 分频模块 library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_arith.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; entity Clk_DIV is port (clk : in std_logic; CLK_O : out std_logic ); end Clk_DIV; architecture Clk_DIV_arch of Clk_DIV is signal clk1,clk2 : std_logic; signal s1,s2 : integer range 0 to 53; begin process(clk) begin if rising_edge(clk) then if s1 < 53 then s1<= s1+1; else s1<=0; end if; if s1 < 28 then clk1 <= '1'; else clk1 <= '0'; end if; end if; end process; process(clk) begin if falling_edge(clk) then if s2 < 53 then s2<= s2+1; else

FPGA实现PCI

基于FPGA的PCI总线接口设计 文章收录:革新科技来源:今日电子作者:西安电子科技大学电子工程学院田小林 摘要:PCI是一种高性能的局部总线规范,可实现各种功能标准的PCI总线卡。本文简要介绍了PCI总线的特点、信号与命令,提出了一种利用高速FPGA实现PCI总线接口的设计方案。关键词:PCI总线;信号;命令;协议 在现代数据采集及处理系统中,ISA、EISA、MCA等扩展总线已无法适应高速数据传输的要求,而PCI局部总线以其优异性价比和适应性成为大多数系统的主流总线。 PCI总线特点 PCI总线宽度32位,可升级到64位;最高工作频率33MHz,支持猝发工作方式,使传输速度更高;低随机访问延迟(对从总线上的主控寄存器到从属寄存器的写访问延迟为60ns);处理器/内存子系统能力完全一致;隐含的中央仲裁器;多路复用体系结构减少了管脚数和PCI部件;给于ISA、EISA、MAC系统的PCI扩展板,减少了用户的开发成本;对PCI扩展卡及元件能够自动配置,实现设备的即插即用;处理器独立,不依赖任何CPU,支持多种处理器及将来更高性能的处理器;支持64位地址;多主控制允许任何PCI主设备和从设备之间进行点对点访问;PCI提供数据和地址的奇偶校验功能,保证了数据的完整性和准确性。 PCI接口开发现状 目前开发PCI接口大体有两种方式,一是使用专用的PCI接口芯片,可以实现完整的PCI主控模块和目标模块接口功能,将复杂的PCI总线接口转换为相对简单的用户接口。用户只要设计转换后的总线接口即可,缩短了开发周期,缺点是用户可能只用到部分PCI接口功能,这样造成了一定的逻辑资源浪费,也缺乏灵活性,很可能增加板上的组件,导致产品成本的增加和可靠性的降低。二是使用可编程器件,采用FPGA的优点在于其灵活的可编程性,首先PCI接口可以依据插卡功能进行最优化,而不必实现所有的PCI功能,这样可以节约系统的逻辑资源。而且,用户可以将PCI插卡上的其他用户逻辑与PCI接口逻辑集成在一个芯片上,实现紧凑的系统设计。当系统升级时,只需对可编程器件重新进行逻辑设计,而无需更新PCB版图。现在已经有越来越多的用户使用可编程器件如FPGA、CPLD

用FPGA实现一个频率计

实验报告 实验七用FPGA实现一个频率计 实验题目: 用FPGA实现一个频率计 实验目的: 设计一个四位频率计,此频率计共分四档: 一档:0----9999Hz 二档:10----99.99kHz 三档:100----999.9kHz 四档:1----999Mhz 实验原理: 根据设计思想做出实验的顶层原理图,其中ftest的时钟为上升沿触发,而lock 中的时钟应为下降沿触。所以顶层原理图以及各模块的代码如下所示: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY pl IS

PORT(clr,Fx,door:IN STD_LOGIC; alm:OUT STD_LOGIC; q3,q2,q1,q0,dang:OUT STD_LOGIC_VECTOR(3 DOWNTO 0)); END pl; ARCHITECTURE plj OF pl IS BEGIN PROCESS(door,Fx) VARIABLE c0,c1,c2,c3,c4,c5,c6:STD_LOGIC_VECTOR(3 DOWNTO 0); VARIABLE x:STD_LOGIC; BEGIN IF Fx'EVENT AND Fx='1'THEN IF door='1'THEN IF c0<"1001"THEN c0:=c0+1; ELSE c0:="0000"; IF c1<"1001"THEN c1:=c1+1; ELSE c1:="0000"; IF c2<"1001"THEN c2:=c2+1; ELSE c2:="0000";

jesd204b_FPGA实现

JESD204B CLASS 1 简介与FPGA的实现 说明: 本文主要分析jesd204b CLASS 1 协议及在FPGA的实现 1、什么是JESD204B协议标准 JESD204B是一个实现高速ADC/DAC数据传输和多ADC/DAC同步的标准。JESD204标准于2006年初次发布,经过2次修订,最新版本是JESD204B。最初单条LAN的传输速度从3.125Gbps提升到12.5Gbps,最新标准中最重要的是加入了实现确定延迟的部分。 电气特征部分:定义源端阻抗与负载阻抗为100 ?±20%;可采用AC/DC偶合方式,具体AC、DC特性可参考JESD204B规范第4章。 2、为什么要重视JESD204B标准 当前ADC/DAC主要采用CMOS和LVDS接口电平。在数据速率不断提高时CMOS接口电路的瞬态电流会增大,导致更高的功耗。虽然LVDS的电流和功耗依然相对较为平坦,但接口可支持的最高速度受到了限制。这是由于驱动器架构以及众多数据线路都必须全部与某个数据时钟同步所导致的。图1显示一个双通道14位ADC的CMOS、LVDS和CML输出的不同功耗要求。

图1 采样率与驱动方式VS功耗 从图1可知在大约150 –200 MSPS和14位分辨率时,就功耗而言,CML输出驱动器的效率开始占优。CML的优点是:因为数据的串行化,所以对于给定的分辨率,它需要的输出对数少于LVDS和CMOS驱动器。JESD204B接口规范所说明的CML驱动器还有一个额外的优势,因为当采样速率提高并提升输出线路速率时,该规范要求降低峰峰值电压水平。同样,针对给定的转换器分辨率和采样率,所需的引脚数目也大为减少。表1显示采用200 MSPS转换器的三种不同接口各自的引脚数目,转换器具有各种通道数和位分辨率。在CMOS和LVDS输出中,数据用作每个通道数据的同步时钟,使用CML输出时,JESD204B 数据传输的最大数据速率为4.0 Gbps。从该表中可以发现,使用CML驱动器的JESD204B优势十分明显引脚数大为减少。 表1 不同驱动方式VS管脚数 另一方面采用CMOS接口的ADC/DAC器件受限于其接口传输速率,器件只能在较低频率范围内工作。LVDS相对CMOS接口,其传输速率一般使用也不超过800Mbps,且需要传输随路时钟,对数据传输时序要求严格,对于上Gsps的工作器件通常采用数据分组传输,增加了管脚数,对板卡的布局、时序收敛等带来了非常大的影响。同时这两种连接方式对要求实现多个高速ADC/DAC同步的系统的设计是非常困难的。 3、常用参数解释

用fpga实现维特比译码

FPGA Implementation of Viterbi Decoder HEMA.S, SURESH BABU.V, RAMESH P Dept of ECE, College of Engineering Trivandrum Kerala University Trivandrum, Kerala. INDIA Abstract: - Convolutional encoding with Viterbi decoding is a powerful method for forward error correction. It has been widely deployed in many wireless communication systems to improve the limited capacity of the communication channels. The Viterbi algorithm, which is the most extensively employed decoding algorithm for convolutional codes. In this paper, we present a field-programmable gate array implementation of Viterbi Decoder with a constraint length of 11 and a code rate of 1/3. It shows that the larger the constraint length used in a convolutional encoding process, the more powerful the code produced. Key-Words: - Convolutional codes, Viterbi Algorithm, Adaptive Viterbi decoder, Path memory, Register Exchange, Field-Programmable Gate Array (FPGA) implementation. Hema S. is M.Tech scholar with the Department of ECE, College of Engineering Trivandrum.E-mail: hemarajen@https://www.360docs.net/doc/1115215438.html, Suresh Babu V. is with the Department of ECE, College of Engineering Trivandrum.E-mail:vsb_sreeragam@yahoo.co.in Ramesh P is with the Dept of ECE,,Munnar Engineering. Email : ramp1718009@https://www.360docs.net/doc/1115215438.html, 1 Introduction With the growing use of digital communication, there has been an increased interest in high-speed Viterbi decoder design within a single chip. Advanced field programmable gate array (FPGA) technologies and well-developed electronic design automatic (EDA) tools have made it possible to realize a Viterbi decoder with the throughput at the order of Giga-bit per second, without using off-chip processor(s) or memory. The motivation of this thesis is to use VHDL, Synopsys synthesis and simulation tools to realize a Viterbi decoder having constraint length 11 targeting Xilinx FPGA technology.[5] The Viterbi algorithm develops as an asymptotically optimal decoding algorithm for convolutional codes. It is nowadays commonly using for decoding block codes. Viterbi Decoding has the advantage that it has a fixed decoding time. It is well suited to hardware decoder implementation.Viterbi decoding of convolutional codes found to be efficient and robust. Although the viterbi algorithm is, simple it requires O (2n-k ) words of memory, where n is the length of the code words and k is the message length, so that n k ?is the number of appended parity bits. In practical situations, it is desirable to select codes with the highest minimum Hamming distance that decodes within a specified time and an increased minimum Hamming distance min d implies an increased number of parity bits. Our viterbi decoder necessarily distributes the memory required evenly among processing elements [1]. 2. Convolutional Code 2.1 Convolutional Encoding Convolutional code is a type of error-correcting code in which each (n ≥m) m -bit information symbol (each m -bit string) to be encoded is transformed into an n -bit symbol, where m/n is the code rate (n ≥m) and the

FPGA的物理实现

附录D 辅导教材3—在FPGA 中的物理实现 在本辅导教材中,将重点讲解如何将一个设计项目物理地实现于FPGA芯片中。我们将展示如何用手工的方法选择器件封装的引脚,并且把这些引脚用做电路的输入和输出信号,此外还将描述如何使用Quartus II编程器模块把编译完的电路传送到所选择的FPGA芯片中。 D.1 分配引脚 在附录C的例子中,器件的引脚是由编译器自动分配给输入和输出信号的。在某些场合,设计者需要用手工将某个引脚分配给电路的某个信号。例如,包含FPGA芯片的电路板也许需要将来自于该FPGA芯片的某些引脚用硬线连接到其他元件,诸如开关或者发光二极管(LED)等。为了利用这些硬线的连接点,设计者必须具有将器件的某几个引脚分配给设计的某几个信号使用的能力。 为了用手工分配引脚,有必要指定所选用的芯片类型。在C.1.1节我们已经做过这件事,当时曾选用EP2C35F672C6 FPGA 芯片来实现逻辑电路,如图C-2所示。再次打开名为example_verilog的项目。 在C.1.4节,我们曾经用芯片布局器(Chip Planner)来检查项目example_verilog编译后生成的电路。正如图C-6 和图C-7所示的那样,该芯片布局器展示了FPGA的输入/输出单元,通常将这些排列在芯片四周的单元称为引脚垫(pad)。为了看清楚这些引脚垫是如何对应于FPGA芯片封装的引脚的,可以使用引脚布局工具(Pin Planner tool)。选择Assignments>Pin Planner,打开如图D-1所示的窗口。为了使显示的窗口与给出的图一致,可能需要将观察(View)菜单下的某些设置项启动或者关闭。图D-1中启动的设置项为:View>Show>Package Top、View>Show>Show Fitter Placements 和View>All Pins List。 图D-1上部的图像表示从型号为EP2C35F672C6的芯片上部往下看去所看到的芯片封装。虽然在这个窗口中有许多信息可以利用,但只是为了分配引脚的目的,没有必要考察细节。引脚的位置用行和列标记,行用字母标记,而列用数字标记。例如,最上面一行第5列的引脚称为引脚A5,最下面一行第5列的引脚称为AF5。用于编译生成电路的引脚以颜色区分。在引脚的符号上移动鼠标,从打开的提示框可以看到分配给该引脚的信号名(若提示工具没有启动,则选择Tools>Options,然后将Tooltip设置项修改为Pin Planner(引脚布局))。描述不同引脚符号的图例可以通过选择View>Pin Legend Window 打开。 对本辅导教材而言,假设由项目example_verilog 生成的电路将在DE2教学开发板上实现,这是一块基于Altera公司FPGA芯片的线路板。DE2教学开发板如图D-2所示。这块功能强大的开发板具有许多功能,我们的简单设计将只使用该线路板底边的几个开关和发光二极管。电 路的输入x 1、x 2 和x 3 将分配给名为SW[0]、SW[1] 和SW[2]的三个触发器(乒乓开关),这三个 开关分别连接到FPGA的引脚N25、N26 和P25。电路的输出f连接到引脚AE22,它将被连接到绿色的发光二极管LEDG[0]。

FPGA实现各种接口

FPGA有限状态机模拟I2C总线设计 时间:2007-08-01 来源: 作者:潘小冬点击:2758 字体大小:【大中小】 摘要:以I2C总线协议为根据。用有限状态机(FSM:Finite State Machine)设计了基于FPGA的I2C初始化程序模块。主要内容包括简述I2C总线的特点;介绍用FPGA中FSM 开发I2C总线模块时的设计思想和实现过程;给出并解释了部分用Verilog HDL描述I2C总线初始化SAA7111和SAA7121的程序,最后在QuartusII中进行了I2C总线主从模式下的时序仿真和用其内嵌逻辑软分析仪SignalTap II完成了硬件调试。 在现代电子系统中,有为数众多的IC需要进行相互之间以及与外界的通信。为了简化电路的设计,Philips公司开发了一种用于内部IC控制的简单的双向两线串行总线PC (Intel-Integrated Circuit bus)。该总线具有接口线少、通讯效率高等特点。 在进行FPGA设计时,经常需要和外围提供PC接口的芯片通信,虽然市场上有专用I2C 总线接口芯片,但是地址可选范围小、性能指标固定、功能单一、使用不方便。根据I2C 总线的电气特性及其通讯协议,在Altera公司的FPGA(EP2S30)上可以很方便地实现I2C总线的通讯接口,且具有高速、易调试、可以灵活地实现地在线配置等优点,同时大大地减少了系统的开发周期。 1 I2C总线协议概述 I2C总线系统由两根总线即SCL(串行时钟)线和SDA(串行数据)线构成。I2C 总线主从器件之间传送的一次数据称为一帧,由启动信号、地址码、若干数据字节、应答位以及停止信号等组成。通讯启动时,主器件发送一个启动信号(当SCL线上是高电平时,SDA线上产生一个下跳沿)、从器件的地址(唯一的7位地址码)和1位读写方向标志位;通讯停止时,主器件发送一个停止信号(当SCL线上是高电平时,SDA线上产生一个上跳沿)。在数据传送过程中。当SCL线上是高电平时,必须保证SDA线上的数据稳定,传完一个字节的数据,必须由从器件送回一个应答信号。总线的传输速率为100kbit/s(标准)-400kbit/s(快速)。 这种总线可以设计成很多种通讯配置,考虑到在课题中的实际应用,该I2C总线模型如下:单主操作,只实现简单的写和读操作,写地址连续,没有竞争和仲裁,是很简单的I2C 总线系统。在本设计中,用FPGA模拟的I2C总线协议模块完成对SAA7111和 SAA7121(Philips公司的视频解码和编码芯片)先后进行初始化。 2 I2C 模块的设计与实现 2.1 I2C模块设计思路 I2C 总线写命令格式如下: 写信号: ……

相关文档
最新文档