高速数字电路设计与实现-Read
- 格式:doc
- 大小:793.50 KB
- 文档页数:11
27卷 第8期2010年8月微电子学与计算机M ICROELECTRONICS &COM PUTERVol.27 No.8August 2010收稿日期:2010-05-13;修回日期:2010-06-08一种高性能异步FIFO 的设计与实现李 冬1,赵志凯2(1中国矿业大学信息与电气工程学院,江苏徐州221008;2中国矿业大学计算机科学与技术学院,江苏徐州221008)摘 要:提供了一种全新的高性能异步FIF O 设计方案.首先定义了F IFO 的通信协议和总体结构设计,然后围绕如何提高FIF O 性能依次论述了存储阵列设计、读写控制逻辑和空/满判断逻辑的设计方法.通过与FPGA 本身的F IF O 模块比较,该方案可以提高FI FO 性能30%以上.关键词:异步F IFO ;亚稳态;多时钟中图分类号:T P302 文献标识码:A 文章编号:1000-7180(2010)08-0145-04Design and Implementation of High Performance Asynchronous FIFOLI Dong 1,ZHAO Zhi kai 2(1School of I nformation and Electr ical Engineering,China U niversity of M ining and T echnolog y,Xuzhou 221008,China;2School of Co mputer Science and T echnolo gy,China U niversity of M ining and T echnology ,Xuzhou 221008,China)Abstract:T hi s paper presents a high performance FIF O desig n t hat interfaces subsystems on a chip working at different speeds.T he communication protocol and the ar chitecture of F IFO are pr oposed at first.A im at improving its operation speed,the design of stor ag e array,read/w rite control logic and full/empty status logic are described par ed with the ex isting F IFO block,the desig n s performance improv ement r atio is more than 30percent.Key words:asy nchr onous FIF O;meta stability;multiple clock1 引言随着计算机及电子器件的飞速发展,高速处理器中的逻辑越来越复杂,芯片规模不断扩大,在一个芯片中常常含有多个不同的高速时钟.当数据从一个时钟域传输到另一个时钟域时,确保数据在高速状态下的可靠传输就成为一个重要问题.异步FIFO (First In First Out)单元成为解决这类跨时钟域的数据可靠传输问题的不可缺少的元件.异步FIFO 是一个缓冲存储部件,用于在两个不同时钟域之间进行数据交换.数据从一个时钟域生成并写入FIFO,然后从另外的时钟域读出并被使用.为了提高FIFO 的性能,需要精心设计FIFO 的体系结构和电路实现.为此,文中对已有的工作进行了仔细研究.不同的设计有不同的读写控制策略和空/满逻辑判断方法.有些方法会导致性能降低,比如存储阵列会严重影响系统性能[1]、在设计中使用减法器来进行空/满逻辑判断也会降低系统性能[2].文中基于FIFO 存储电路的功能和特点,讨论了FIFO 设计的关键技术,重点探讨了高性能异步FIFO 的设计和实现方法.2 总体结构2.1 外部端口FIFO 是一种用来作为缓冲的存储器,它能对数据进行快速顺序的存储和发送,主要用来解决不同速率器件间的速率匹配问题.图1是采用FIFO 连接的数据通信系统.图1中,数据发送系统和数据接收系统采用不同的工作时钟.数据发送系统产生数据,数据接收系统使用数据.FIFO 模块通过不同的端口分别与数据发送系统和数据接收系统连接,其中与数据发送系统连接的端口统称为 写端口!,与数据接收系统图1 采用F IFO 连接的数据通信系统连接的端口统称为 读端口!.写端口包括四组信号,分别是:(1)req put 来自数据发送系统的发送请求信号;(2)data put 数据发送总线;(3)full 该值为1时表示FIFO 存储空间满;(4)clk put 数据发送系统工作时钟.读端口包括五组信号:(1)req get 来自数据接收系统的数据请求信号;(2)valid get 标志接收的数据是否有效;(3)empty 该值为1时表示FIFO 存储空间空;(4)data get 数据接收总线;(5)clk get 数据接收系统工作时钟.2.2 通信协议FIFO 的写端口和读端口分别遵循不同的通信协议.写端口的数据通信协议如下:当数据发送系统有数据需要传输时,在clk put 时钟上升沿来临之前,数据需要放在dataput总线上,并给出req put 信号,如果在时钟上升沿来临时,full 信号为低电平,则数据被写入FIFO.如果时钟上升沿来临时,full 为高电平,则数据发送系统需要一直等待full 信号变为低电平,数据才能正常发送.如图2所示,在时钟沿A,数据被正确写入FI FO;在时钟沿B,数据不能被写入FIFO,需要等待FIFO 腾空.图2 F IFO 写端口的时序图读端口的数据通信协议如下:当数据发送系统有数据需要传输时,在clk get 时钟的上升沿来临之前,数据接收系统首先发送req g et 信号,如果FIFO 中存在有效数据,那么数据将被放在data get 数据总线上,同时valid g et 和em pty 信号也被置为相应的值.在clkget 的下一个时钟沿来临时,数据接收系统可以根据后两个信号来决定数据总线上的data get 数据是否有效.valid get 表示当前读取的数据是否有效,empty 表示当前数据读取之后,FIFO 是否为空,在系统初始化时,empty 的初值置为0.2.3 结构设计FIFO 的总体结构如图3所示.与RAM 相比,FIFO 对存储阵列按顺序读写,不需要额外的地址端口.图3 FI FO 的总体结构FIFO 的存储阵列类似于一片双端口的RAM,可以同时执行读操作和写操作,读写操作受控于不同的时钟.空/满状态判断逻辑根据读、写指针的变化实时检测当前FIFO 的空/满状态.读控制和写控制逻辑分别根据相应的读写信号,控制存储存储阵列执行读操作和写操作.3 存储阵列与读写控制逻辑改善存储阵列与读、写控制逻辑是提高FIFO 性能的有效途径.3.1 存储阵列设计当前广泛使用的片上存储单元有SRAM 、DRAM 和Flash 等多种形式.由于对FIFO 进行读、写操作的性能与存储阵列的性能密切相关,因此我们选择SRAM 来构建存储整列.SRAM 是静态随机存取存储器,它的每一个单元由6个尺寸不同的晶体管构成[1],它存储数据是依靠晶体管之间的正反馈结构.在执行读写操作时,由于它既不需要像DRAM 那样的预充电-求值过程,也不需要Flash 那样的编程-擦除过程,因而效率较高.146微电子学与计算机2010年通过对晶体管尺寸的优化,读写性能可以得到较大改善.为了加快读操作的时间,SRAM采用了灵敏放大单元,以便加快读操作的时间并提高数据的可靠性.多个SRAM单元排列在一起构成了存储阵列.为了便于同时优化读、写性能,阵列的排列需要尽量接近方形.3.2 读写控制逻辑FIFO的读写控制逻辑控制读写指针和存储阵列进行工作.FIFO对存储阵列按地址依次读写.系统初始化之后,FIFO的读写指针均指向0地址,每执行一次读操作或者写操作,相应的读写指针顺序加1.当指针移到存储阵列的最后一个位置后,下一个操作会使指针返回地址0.读写指针如此周而复始地变化,FIFO空间得到了最有效的运用.写指针总是指向下一个要写入的单元,每执行完一次写操作后,写指针指向下一个将要写入的存储单元.在写操作之前,需要判断写指针指向的单元是否可以写入,这需要空/满判断逻辑的信号支持.在clk put时钟的上升沿,如果req put信号有效,并且full无效,那么数据data put在这一时钟沿被写入存储阵列,同时写指针加1指向下一个将要被写入的单元.如果full信号有效,那么req put信号需要一直保持,直到full信号无效数据才能被写入.与此类似,读指针总是指向当前被读出的单元.每执行完一次读操作后,读指针指向下一个将要读出的存储单元.在读操作之前,需要判断读指针指向的单元是否可以读出,这需要空/满判断逻辑的信号支持.在clk get时钟的上升沿,如果req get信号有效,并且empty无效,那么数据在这一时钟沿被放在data g et数据总线上,同时读指针加1指向下一个将要被写入的单元,valid get信号置为有效.如果empty信号有效,那么valid get信号被置为无效,req get信号需要一直保持,直到empty信号无效数据才能被读出.对于数据量比较大的异步通信系统来说,上述读写控制逻辑可以实现每个时钟周期写入或者读出一个数据项,大大提高了数据读写的效率.同时,时序控制逻辑简单,便于实现.我们采用verilog语言实现了上述读写控制逻辑,并通过逻辑综合在FP GA中进行了实现.4 空/满判断逻辑分析4.1 空/满判断逻辑在FIFO进行读写操作之前,需要正确判断FI FO的存储状态,以免出现误读或者误写.正确判断FIFO的空/满状态是FIFO设计的关键点之一.空/满状态判断的原则是写满而不溢出,读空而不多读[3],以免造成数据丢失或者误用.如何设计FIFO[4]的空/满状态判断逻辑关系FIFO的读写性能.当读写指针在同一时刻指向同一个内存位置时,FIFO处于空或者满状态,否则为非空非满状态,FIFO可以随意执行读写操作.然而,当读写指针重合时,具体是空还是满要通过逻辑进行分析.传统的判断方法是另外设置一个状态位[5],作为最高位,其余作为地址位.当系统初始化时,状态位和地址位均置0.当读写指针的地址位和状态位全部吻合时,FIFO处于空状态;当读写指针的地址位相同而状态位不同时,说明写指针比读指针多循环一次,FIFO处于满状态.这种状态判断逻辑工作频率低且占面积大,不适用于高度集成化和快速数据处理的场合[3].为了快速判断空/满状态,我们采用为每个存储单元附加一个锁存器来标志单元的存储状态.当某个单元被写入数据时,锁存器被置1表示单元处于满状态.当某单元的数据被读出时,锁存器的状态被置0,表示单元处于空状态.假设第i个单元的满状态用f i表示,空状态用ei表示.对于含有N个存储单元的FIFO来说,可以分别采用式(1)和式(2)来进行空/满状态判断.公式中的AND和OR分别表示逻辑与!操作和逻辑或!操作.full=ANDNi=1(f i)(1)em pty=ORNi=1(ei)(2)以上判断逻辑如果用组合逻辑实现,虽然运行效率较高,但是逻辑规模大,需要占用较大的芯片面积.为了克服这个缺点,采用动态逻辑来实现状态判断,从而在减小芯片面积的同时获得更高的运行效率.图4是采用动态逻辑来判断含有4个存储单元的FIFO的空/满状态判断的电路图.从图中可以看出,空/满判断逻辑只需要较少的芯片资源.对于含有更多存储单元的FIFO来说,判断逻辑可以进行相似的扩充.4.2 亚稳态的避免异步电路设计需要妥善处理亚稳态的问题.当异步信号在不同的时钟域中传输时,由于工作时钟不同,如果某信号在变化的过程中恰好被采样,那么采样信号的状态变得不可确定,这种现象称为亚稳态[1].147第8期李冬,等:一种高性能异步FI FO的设计与实现图4 采用动态逻辑的空/满状态检测电路在异步FIFO的设计中,发送端口和接收端口采用不同的工作时钟.而空/满判断逻辑与两个时钟均密切相关,因而可能产生亚稳态的问题.一旦产生亚稳态,说明信号电平不稳定.如果这种状况持续的时间大于一个时钟周期,不稳定的数据状态就会造成下一级的触发器错误接收或者发送电平信号,从而影响整个FIFO的数据传输.在异步FIFO数据传输过程中,由于发送端和接收端的时钟不同,建立时间和保持时间的冲突不可避免,因而一定会产生亚稳态的问题.解决亚稳态的问题需要从分析时序电路的特性入手.对于时序器件来说,信号相对于时钟满足建立时间和保持时间是保证信号被可靠采样的前提.根据亚稳态产生的条件,可以对不同时钟域输入的信号采用双所存器连续锁存两次.如果第一个锁存器锁存到一个不稳定的电平信号,在经过一个时钟后可能趋于稳定,从而得到一个稳态的信号值.虽然亚稳态不可避免,但采用这种双所存结构之后,电路出现亚稳态的概率可以将到非常低的程度.5 实验验证采用FPGA对文中设计的FIFO的控制逻辑和状态检测逻辑进行了验证.数字逻辑部分采用了Verilog硬件描述语言进行实现.验证实验在Falcon -E25T G开发平台上进行,使用的FPGA为Xilinx 的SPARTAN3E.设计和仿真环境采用Xilinx的ISE9.1i.FIFO的存储体部分例化了FPGA提供的块RAM.FIFO的数据宽度为8位,深度为4096.通过实验,文中设计的FIFO单元的读写性能可以达到400MH z左右,比ISE工具自动生成的FIFO单元的工作频率提高了约100MH z,FIFO性能提高幅度达到30%以上.与ISE自动生成的FIFO相比,本文中FIFO所占用的FPGA资源有所增加,约增加15%左右.在高性能设计中,在增加少许资源的情况下获得显著的性能提升是值得的.6 结束语文中讨论了高速异步FIFO电路的设计方法,通过精心设计FIFO体系结构、读写电路和状态检测电路,可以实现FIFO工作性能的大幅提升.文中的设计用于FPGA设计,可以有效解决多时钟域之间的高速数据通信问题.参考文献:[1]Rabaey J M,Chandrakasan A,Nikolic B.数字集成电路∀∀∀电路、系统与设计[M].2版.周润德,译.北京:清华大学出版社,2004.[2]刘洪波,龙娟,郝晓莉,等.异步状态判断的研究与设计[J].微电子学与计算机,2007,24(3):81-84.[3]徐海铭,程月东.高速异步FI FO设计[J].电子与封装,2009(6):14-16.[4]Chelcea T,N owick S M.A low-latency FIF O for mix ed-clock systems[C]//Pro ceedings of the IEEE Computer Societ y A nnual W orkshop on VL SI(W VL SI 00).Orlan do,2000:119.[5]于海,樊晓桠.基于F PGA异步F IFO的研究与实现[J].微电子学与计算机,2007,24(3):210-213.作者简介:李 冬 女,(1989-).研究方向为电子电路.赵志凯 男,(1983-),博士研究生.研究方向为机器学习、模式识别.148微电子学与计算机2010年。
也许,昨晚你刚看完前面的四讲,学到了VHDL编程的基本功。
结果,第二天一早“老板”需要你接手某项目上的CPLD编程,其中就包括今天要讲解的AT93C46存储芯片的VHDL驱动。
首先,这个芯片采用的是“三线串行接口”,兼容SPI接口。
所谓的SPI就是Serial Peripheral interface的缩写,即串行外围设备接口,是Motorola公司推出的三线同步接口,一种高速的,全双工,同步的通信总线。
该总线广泛应用于EEPROM,FLASH,实时时钟,AD转换器,数字信号处理器(DSP)、数字信号解码器、单片机和诸如ARM 等高端的微处理器中。
所以,这个接口的用处很广,掌握了这类接口操作的操作方法对我们以后的学习有很大的帮助。
我们先了解一下SPI的一些基本知识点。
SPI以主从方式工作,这种模式通常有一个主设备和一个或多个从设备。
进行数据传输时需要如下的信号线:MOSI,MISO,SCK,SS(多个从设备时需要)。
(1)MOSI–主设备数据输出,从设备数据输入(2)MISO–主设备数据输入,从设备数据输出(3)SCK–时钟信号,只能由主设备产生,也就是说谁产生SCLK,谁就是主设备(4)SS–从设备使能信号,由主设备控制如下图是一对一的硬件连接框图:SPI接口在内部硬件实现上就是两个简单的移位寄存器:在主器件产生的SS信号和SCK脉冲下,按位传输,高位在前,低位在后(具体器件应用时的时序可能会变化,这也就是所谓的兼容SPI)。
如在下图中,数据在SCLK的下降沿改变,在SCLK上升沿被采样。
简单了解SPI后,我们再看详细的看其手册,获取对我们有用的信息。
ATMEL公司生产的93C46芯片有1K bit的存储空间,有8位和16位数据模式可选择,即1K bit的存储可分为128×8或64×16,它的电压范围是2.7V到5.5V和1.8V到5.5V,在5V的电压下最高时钟频率可以达到2M,芯片可以进行一百万次的擦写,数据可以保存一百年。
quartus 异步fifo用法-回复quartus异步FIFO用法引言:在数字电路设计中,FIFO(First In First Out)是一种常见的数据存储器,它允许数据以先进先出的顺序进出。
在使用Quartus进行FPGA设计时,异步FIFO是一种非常有用的工具,它可以帮助我们处理不同速度的数据流,并实现数据的缓冲和流量控制。
本文将介绍Quartus异步FIFO的基本概念和使用方法,并给出一些实例。
第一部分:Quartus异步FIFO概述1.1 什么是异步FIFO?异步FIFO是一种数据存储器,在其中数据可以以不同速度进入和退出。
与同步FIFO不同,异步FIFO的读写时钟可以是不同的,这使得它可以处理速度不匹配的数据流。
Quartus提供了异步FIFO的库函数和IP核,使得它可以在FPGA设计中方便地使用。
1.2 Quartus异步FIFO的特点Quartus异步FIFO具有以下特点:- 可以使用不同的时钟频率进行读写操作。
- 可以配置不同的缓冲深度来满足特定的设计需求。
- 可以实现流量控制和数据的重排序。
- 可以支持并行读写和读写使能信号。
- 可以适应不同的数据宽度和时钟域要求。
第二部分:Quartus异步FIFO的使用方法2.1 创建异步FIFO在Quartus中创建异步FIFO的方式有两种:使用库函数和使用IP核。
使用库函数创建异步FIFO的步骤如下:- 首先,在Quartus中打开设计工程,并创建一个新的源文件。
- 然后,将异步FIFO的库函数导入到源文件中,以便在设计中调用它。
- 接着,实例化异步FIFO,并通过参数配置其属性,例如宽度,深度,时钟域等。
- 最后,将异步FIFO连接到其他逻辑模块,完成设计。
使用IP核创建异步FIFO的步骤如下:- 首先,在Quartus中打开设计工程,并创建一个新的IP核。
- 然后,在IP核的界面中选择合适的FIFO类型和配置参数。
- 接着,将异步FIFO实例化到设计中,将其连接到其他逻辑模块。
数字电路 tcd数字电路是一种由数字逻辑门和电子元件组成的电路系统,用于处理和控制数字信号。
它是计算机科学和电子工程领域的重要基础,广泛应用于计算机、通信、控制系统等领域。
数字电路的核心是数字逻辑门,它是一种能够根据输入信号产生特定输出信号的电子元件。
常见的数字逻辑门包括与门、或门、非门、异或门等。
这些逻辑门可以通过组合和连接来构建复杂的数字电路,实现各种逻辑功能和运算操作。
在数字电路中,信号以二进制形式表示,只有两个可能的取值,分别为0和1。
这种离散的信号可以通过逻辑门的开关状态来表示。
当逻辑门的输入信号满足特定的条件时,门的输出信号会发生变化。
例如,当与门的所有输入信号都为1时,与门的输出信号才为1;当或门的任意输入信号为1时,或门的输出信号就为1。
数字电路的设计和分析是计算机科学和电子工程领域的重要课题。
设计一个高效可靠的数字电路需要深入理解数字逻辑门的工作原理,并能够将其灵活组合和连接,以满足特定的功能和性能需求。
分析一个数字电路的性能和可靠性则需要掌握电路分析和信号处理的基本方法。
数字电路的应用非常广泛。
在计算机中,数字电路用于实现中央处理器、存储器和输入输出接口等核心部件。
在通信系统中,数字电路用于实现编码解码、调制解调、数据传输和信号处理等功能。
在控制系统中,数字电路用于实现逻辑控制、数据采集和信号处理等任务。
随着技术的发展和进步,数字电路的规模和复杂性不断增加。
现代计算机芯片上集成了数十亿个逻辑门,能够实现复杂的计算和处理任务。
数字电路的设计和优化已经成为一个专门的领域,需要掌握高级的设计工具和技术。
数字电路是一种重要的电路系统,用于处理和控制数字信号。
它的设计和分析涉及到数字逻辑门、电路分析和信号处理等知识。
数字电路在计算机、通信、控制系统等领域有着广泛的应用。
随着技术的进步,数字电路的规模和复杂性不断增加,对设计和优化的要求也越来越高。
掌握数字电路的基本原理和设计方法对于计算机科学和电子工程的学习和研究具有重要意义。
DDR2设计说明:1 芯片选择:MT47H64M16HR-37E2 管脚分配:单片DDR2占用管脚资源如下表,一片需要一个FPGA BANK:将DDR2 SDRAM的所有有关的数据线,地址线,控制线,时钟线,均连到FPGA的SSTL18_II电平的BANK上。
端接:SSTL18_II电平在Virtex5 的端接:使用DCI的端接如下图:具体电路的连接参照我们已经调通的一个板卡原理图设计。
主要是:DDR2数据线、DQS信号等,与FPGA之间串接22欧姆电阻;对时钟、地址信号和控制信号通过47欧姆的电阻上拉至VTT(0.9V),PCB设计上需要较多因素。
PCB布线顺序:数据线-> 地址线-> 控制线-> 时钟。
其中数据线包括DQ/DQS/DM,它们都是在时钟的双沿发生操作。
PCB布线要点:(1)各种线的总长有要求;(2)时钟(差分对)除了等长(< 50mil),要需要25mil的安全距离。
两个时钟CK之间相差100mil之内。
(3)地址线不用等长,比时钟要长一些(4)控制线比时钟要长一些(5)每一个Data Group(8bits data + DQS + DM)在同一层走线。
DDR2的数据线与DQS是源同步关系,等长处理。
同组的数据线以DQS基准等长(<50mil)。
组与组之间的长度差不超过1000mil。
DQS与CK之间的约束较弱,一般不考虑,长度差别不要超过1000mil就差不多。
(6)地址/命令/控制信号与时钟是源同步的,走线长度匹配并不严格要求。
DDR2 SDRAM的供电参见电源章节。
还需要注意的是,需要把DQS信号都连接到IO_LxN_CC_LC的管脚上。
本时钟信号CK是FPGA输出给DDR2。
2 供电(1)V DD=1.8 VDDR2 SDRAM内存的电流消耗取决于其容量的大小以及运行的环境和速度。
根据Micron公司的数据手册(1GbDDR2.pdf),MT47H64M16HR-37E在Operating bank interleave read current下IDD的最大电流为350mA(颗粒是-187E,最大为520mA)。
收稿日期:2008-11-18; 修回日期:2009-03-13基金项目:通信抗干扰技术国家级重点实验室基金项目Chi r p 超宽带数字接收机设计与实现孙嘉 刘皓(电子科技大学通信抗干扰技术国家级重点实验室,成都610054) 摘 要 文章针对超宽带通信技术快速发展的需要,设计了一个Chir p 超宽带数字接收机。
该接收机使用数字匹配滤波器避免了模拟滤波器带来的巨大插入损耗,并可以使用较为简单的方法实现时间同步。
在硬件实现上,利用单比特量化匹配滤波器系数降低接收机的资源占用。
实验表明该接收机结构简单、资源占用少、性能较好。
关键词 Chir p 超宽带 数字接收机 匹配滤波器 单比特量化0 引 言 超宽带(UWB )无线传输技术被认为是未来无线通信最理想的技术之一,它可有效解决企业、家庭、公共场所等高速因特网接入的需求和越来越拥挤的频率资源分配的矛盾,同时又具有宽频谱、高速率、低成本、低功耗等特点[1]。
早期的超宽带信号均采用脉冲的形式,近年来,除了采用脉冲方式来实现超宽带通信外,还出现了使用连续载波的超宽带通信系统,比较典型的有:基于多频带正交频分复用(MB 2OF DM )[2]的超宽带系统和基于chir p 扩频技术[3]的超宽带系统。
2007年3月,Chir p 扩频技术成为I EEE 802.15.4a 的物理层标准之一,这是对该技术长距离、高抗干扰能力和低功耗等优势的肯定。
文章针对Chir p 超宽带系统设计了一种数字接收机,并在硬件电路上实现。
该接收机利用数字匹配滤波器实现脉冲压缩,避免了使用模拟滤波器带来高插入损耗的问题。
由于使用了匹配滤波器,所以,可以使用较为简单的同步算法实现时间同步。
另外,对于超宽带信号带宽很宽、匹配滤波器阶数很高、需要大量乘法器的问题,通过简化匹配滤波器的抽头系数,利用加法器、减法器代替乘法器,使得整个接收机结构简单,资源占用大为减少。
1 数字接收机设计 Chir p 超宽带通信系统有两种典型的调制方式:二进制正交键控调制(BOK )和直接调制(DM )[3]。
摘要随着数字系统规模的不断增大,单时钟域设计会极大地限制数字系统性能,现代数字系统为了提升性能,常采用多时钟域的设计。
跨时钟域的信号在传输时会遇到亚稳态现象,如何保持系统稳定地传输数据是多时钟域系统设计者重点关注的问题,在跨时钟域传递数据的系统中,常采用异步FIFO(First In First Out,先进先出队列)口来缓冲传输的数据,以克服亚稳态产生的错误,保证数据的正确传输。
常规的异步FIFO 设计采用先同步读写指针后比较产生空/满标志和用先比较读写指针产生空/满标志,再同步到相应时钟域的方法,但由于常规异步FIFO 模块中的RAM 存储器读写寻址指针常采用格雷码计数器以与“空满”控制逻辑的存在,工作频率低,面积大,将使通过这两个模块的信号通路延时对整个模块的工作频率造成制约。
本文提出了一种新型异步FIFO 的设计方法,该方法省略“了满”信号产生模块和多余的存储器位深来简化常规的FIFO 模块,而只保留“空”信号产生模块,避免使用大量的同步寄存器,减少了面积空间。
FPGA 验证的结果表明,改进后的异步 FIFO 性能有了显著的提高。
关键词:现场可编程门阵列(FPGA )亚稳态空/满标志产高速FIFOABSTRACTWith the increasing of digital system size, a single clock domain designwill greatly limit the digital system performance. To enhance the performance of modern digital systems, multiple clock domain design is conventionally adopted. While being transmitted, Cross-clock domain signals will come across the phenomenon of metastability, hence it will be a major concern for the multi -clock domain system designers to probe how to maintain the system stability and to have data transmission conducted smoothly. As to the bus system data transmission in the system where the two data interface clocks don’t match, one of super and effective solutions is to use asynchronous FIFO buffer memory. How To solve the key and difficult issue that metastability and how to generate empty and full flag correctly in asynchronous FIFO design. Traditional FIFO design often synchronizes write/read address first, then compares them to generate empty/full signals or empty / full flag first compare the read and write pointer, and then synchronized to the clock domain, This design takes on too much area and can only work at a low frequency,this will allow the signaling pathways of these two modules delay caused by constraints of the operating frequency of the entire module. A new method of asynchronous FIFO is proposed to overcome these problems,omit the "full" signal generator module and redundant memory bit depth to simplify the conventional FIFO module, leaving only the "empty" signal generation module,avoid the use of a large number of synchronization registers, reducing the area of space. FPGA verification results show that the asynchronous FIFO improved performance has been significantly improved.Keywords: Field Programmable Gate Array (FPGA); Metastable; Mmpty / Full Flag production; High-speed FIFO目录摘要 (I)ABSTRACT (I)第一章绪论 (1)1.1研究背景和意义 (1)1.2研究现状 (1)1.3本文的主要工作 (3)1.4论文结构 (3)第二章跨时钟域设计的挑战与实现方法 (3)2.1跨时钟域设计的挑战 (4)2.1.1亚稳态问题 (4)2.1.2亚稳态产生的原因 (5)2.1.3亚稳态的危害 (5)2.2 跨时钟域的实现方法 (6)2.2.1同步器 (6)2.2.2握手机制 (9)第三章开发环境 (11)3.1硬件平台 (11)3.2软件平台 (11)第四章异步FIFO的设计与实现 (13)4.1异步FIFO (13)4.1.1异步FIFO工作原理 (13)4.1.2异步FIFO设计的难点 (14)4.2常见异步 FIFO 的设计 (16)4.2.1 读写地址产生逻辑 (18)4.2.2空/满标志的产生与代码的实现 (19)4.3.3改进的异步 FIFO 设计方法分析 (22)4.4高速异步FIFO的设计与实现 (23)4.4.1常见FIFO模块分析 (23)4.4.2高速异步FIFO 设计 (25)第五章结论 (28)第六章参考文献 (29)致谢 (30)附录高速异步FIFO设计仿真分析 (31)附1. 设计工作流程 (31)附.1.1 设计输入 (31)附.1.2 设计编译 (35)附.1.3 设计仿真 (36)第一章绪论1.1研究背景和意义作为21 世纪最重要的科学领域之一,超级计算机是体现科技竞争力和综合国力的重要标志。
DDR设计规则本⽂主要介绍DDR的原理图和PCB设计规则。
1、SCH设计原则DDR原理图的设计⽬前⽐较成熟,由于其信号引脚固定,且有统⼀的规范(JESD79系列),⽽且像Micron、Samsung、SK Hynix、Toshiba等⼚家都有各⾃的technical note,因此本⽂只罗列⼀些特殊的注意事项。
1.1、颗粒容量的可扩展性根据JEDEC标准,不同容量的内存芯⽚⼀般引脚兼容,为了实现电路板的可扩展性,可以做如下处理,如128Mb与256Mb的兼容应⽤。
1.2、未⽤的DQ引脚处理对于x16的DDR器件来说,未⽤的引脚要作⼀定的处理。
例如x16的DDR来说,DQ[15:8]未⽤,则处理如下,将相关的UDM/DQMH拉⾼⽤来屏蔽DQ线,DQ[15:8]通过1~10k的电阻接地⽤来阻⽌迸发写时的噪声。
1.3、端接技术DDR常⽤的端接技术有两种,分别如下:串⾏端接,主要应⽤在负载DDR颗粒不⼤于4个的情况下。
对于双向I/O信号来说,例如DQ,串⾏端接电阻Rs放置在⾛线的中间,⽤来抑制振铃,过冲和下冲。
对于单向的信号来说,例如地址线,控制线,串⾏端接电阻放置在⾛线中间或者是信号的发送端,推荐放置在信号的发送端。
并⾏端接,主要应⽤在负载SDRAM器件⼤于4个,⾛线长度>2inch,或者通过仿真验证需要并⾏端接的情况下。
并⾏端接电阻Rt取值⼤约为2Rs,Rs的取值范围是10~33ohm,故Rt的取值范围为22~66ohm。
并⾏端接电压为VTT。
对于没有ODT功能的DDR,所有的数据线,地址,命令,控制线都需要使⽤single-ended Parallel Termination端接。
1.4、时钟信号所有DDR的差分时钟线CK与CK#必须在同⼀层布线,误差+-20mil,最好在内层布线以抑制EMI。
如果系统有多个DDR器件的话,要⽤阻值100~200ohm的电阻进⾏差分端接。
若时钟线的分叉点到DDR器件的⾛线长度<1000mil,要使⽤100~120ohm的差分端接(只⽤⼀个端接电阻),如下图:若时钟线的分叉点到DDR器件的⾛线长度>1000mil,要两个使⽤200~240ohm的电阻差分端接,因为两个200~240ohm的电阻并联值正好为100~120ohm。
TMS320f28335控制AD7656的硬件电路设计
TMS320F28335简介TMS320F28335是一款TI高性能TMS320C28x系列32位浮点DSP处理器。
TMS320F28335型数字信号处理器TI公司的一款TMS320C28X系列浮点DSP控制器。
与以往的定点DSP相比,该器件的精度高,成本低,功耗小,性能高,外设集成度高,数据以及程序存储量大,A/D转换更精确快速等。
TMS320F28335具有150MHz的高速处理能力,具备32位浮点处理单元,6个DMA通道支持ADC、McBSP和EMIF,有多达18路的PWM输出,其中有6路为TI特有的更高精度的PWM输出(HRPWM),12位16通道ADC。
得益于其浮点运算单元,用户可快速编写控制算法而无需在处理小数操作上耗费过多的时间和精力,与前代DSP相比,平均性能提高50%,并与定点C28x控制器软件兼容,从而简化软件开发,缩短开发周期,降低开发成本。
TMS320F28335核心板电气特性TMS320F28335(SOM-TL28335核心板)工作环境
环境参数\最小值\典型值\最大值
工业级温度:0C\-\85C
工作电压:4.8V\5V\5.5V
SOM-TL28335(TMS320F28335)核心板功耗
供电电压:5V
输入电流:292mA
额定功率:1.46W
TL28335-EVM开发板功耗
供电电压:5V
最大输入电流:400mA
最大功率:2W。
邮局订阅号:82-946360元/年技术创新PLD CPLD FPGA 应用《PLC 技术应用200例》您的论文得到两院院士关注基于FPGA 的LED 显示控制系统的设计和实现Design and Implementation of LED Display Control System Based on FPGA(南京工业大学帅仁俊张齐SHUI Ren-jun ZHANG Qi摘要:本文描述了一个基于可编程逻辑器件的全彩LED 显示系统的设计的过程,这个系统能够基于硬件产生LED 更多颜色灰度。
详细分析了其工作原理,并依据其原理,设计出了基于FPGA 的控制电路。
关键词:LED 显示屏;可编程逻辑器件;控制系统中图分类号:TN27;TN312+.8文献标识码:AAbstract:This article discussed the designing process of LED display control system.The system for generating more shades of full-colors from the LEDs based on hard-ware is described.In this paper,the working principle is analyzed in detail and according as the principle to the controlling circuit based on FPGA.Key words:LED display screen;FPGA;control system文章编号:1008-0570(200909-2-0133-031引言LED 的发展已过了几十年了,它现在的技术也相当成熟了。
它有很宽的可视角,并且能够显示图像、数字、视频,还能够通过红绿篮三种LED 组合成任一颜色系统,但是不推荐在小显示屏上显示视频。
施耐德PLC 通讯功能块ADDM ,READ
摘要: 施耐德PLC 通讯的套路就是三个功能块,ADDM ,READ_VAR,WRITE_VAR,下面分别介绍1、ADDMADDM 功能块是地址转换,就是把PLC 的物理地址转换成PLC 可识别的地址类型,这句话比较拗口,通俗讲,就是把字符串型变量,转换成AD ...
施耐德plc 通讯的套路就是三个功能块,
ADDM ,READ_VAR,WRITE_VAR,下面分别介绍
1、ADDM
ADDM 功能块是地址转换,就是把PLC 的物理地址转换成PLC 可识别的地址类型,这句话比较拗口,通俗讲,就是把字符串型变量,转换成ADDRESS 型变量,我们还是看例子
图一ADDM 功能块
如图一,图中红色圆圈内就是一个字符串型变量‘2,1’第一个数字2 表示PLC 的串口2,第二个数字1 表示读取的从站地址,也就是变频器的地址,而此功能块就是把此地址转换成ADDRESS 型变量A1_Add。
也许你会有疑问,为什幺这幺做?我也不知道,此款PLC 就是这样,这就是它的套路,对于此种套路,我们只能牢记。
在其他PLC 特别是日系,一般是通过设置参数的方式实现,也有使用指令的。
还有一点,黄色荧光笔部分的三个黑点,是表示电路相通,而它正是把转。
read_verilog is disabled -回复为什么read_verilog 被禁用了。
近年来,随着计算机科学与人工智能的高速发展,软件开发和硬件设计在许多领域起到了至关重要的作用。
在硬件设计的过程中,Verilog语言被广泛使用,以描述和设计各种数字电路和系统。
在Verilog设计中,read_verilog是一种常用的功能,用于读取其他文件中的Verilog代码。
然而,最近,一些版本的Verilog仿真工具和编辑器中的read_verilog功能被禁用了。
那么,为什么read_verilog被禁用了呢?本文将一步一步地回答这个问题。
首先,我们需要了解一些背景知识。
Verilog是一种硬件描述语言,它可以描述电子系统的结构和行为。
Verilog代码通常由多个模块组成,每个模块对应一个电路或者系统的一个组成部分。
在实际的硬件设计中,往往需要使用其他模块定义好的组件,以提高设计的复用性和可维护性。
read_verilog就是一种用于读取其他文件中的Verilog代码的方法,使得用户可以在一个文件中引用其他文件中定义的模块或者代码。
然而,尽管read_verilog功能在实际设计中非常实用,但它也存在一些潜在的问题。
首先,使用read_verilog功能可能会导致代码的可读性和可维护性变差。
当一个文件中引用了多个read_verilog语句时,如果涉及的文件较多或者文件层级较深,会导致代码的层级结构变得混乱,不利于后续的设计和调试工作。
另外,由于read_verilog是一个从外部文件中读取代码的过程,如果涉及的文件过多或者文件较大,那么编译和仿真的时间也会大大增加,降低了设计效率。
其次,read_verilog的使用还存在一些潜在的风险。
由于它可以引用其他文件中的任意代码,如果一个文件的作者可以修改引用的文件,那么就可能带来潜在的安全问题。
恶意代码的插入或者对引用文件的篡改可能会导致系统的隐私泄露或者系统的功能受到破坏。
微型低功耗EBAPS相机技术刘亚宁; 桑鹏; 吕嘉玮; 李海涛; 徐鹏霄; 李保权【期刊名称】《《红外技术》》【年(卷),期】2019(041)009【总页数】9页(P810-818)【关键词】电子轰击型有源像素传感器; FLASHFPGA; 极弱光成像; 低功耗【作者】刘亚宁; 桑鹏; 吕嘉玮; 李海涛; 徐鹏霄; 李保权【作者单位】中国科学院国家空间科学中心北京 100190; 中国科学院大学北京101400; 中国电子科技集团公司第五十五研究所江苏南京 210016【正文语种】中文【中图分类】TP391.4极弱光条件下工作的相机在许多领域有重要作用,例如夜视、侦查、空间科学应用等等。
极弱光成像主要采用两种技术:增强型CCD(Intensified Charge Coupled Device,ICCD)和电子倍增CCD(Electron Multiplying Intensified Charge Coupled Device,EMCCD)。
ICCD主要包括光阴极、微通道板(Micro-channel Plate,MCP)、荧光屏、光导和CCD,多部件结构使得ICCD 在尺寸、重量、可靠性、调制传递函数(Modulation Transfer Function,MTF)等方面都具有明显劣势。
EMCCD是近几年才商业化的一种固态极弱光成像器件,EMCCD利用电子转移过程中的碰撞电离实现信号放大,从而实现极弱光成像[1-2]。
无论是ICCD还是EMCCD,它们增益进程的噪声因子Kf都比较大,其中ICCD微通道板的Kf约1.8,EMCCD电子倍增过程的Kf也在1.4左右[3-5]。
虽然EMCCD的尺寸较小,但应用条件尤其对制冷的温度稳定性要求极高。
近年来,随着制造工艺水平的提升,有源像素传感器(APS)已经在视频领域获得广泛应用,尤其是低噪声背照APS的市场化,使研制低成本、高质量、可用于极弱光成像的EBAPS成为现实,美国的Intevac公司已经在国际上率先推出了商业化的EBAPS产品。