资源目录
压缩包内文档预览:
编号:516449
类型:共享资源
大小:775.66KB
格式:RAR
上传时间:2015-11-12
上传人:QQ28****1120
认证信息
个人认证
孙**(实名认证)
辽宁
IP属地:辽宁
6
积分
- 关 键 词:
-
机械毕业设计
- 资源描述:
-
fpga常见模块设计(10篇),机械毕业设计
- 内容简介:
-
一种基于移位寄存器的 CAM 的 Verilog HDL 实现 - 摘要 :一种利用 Verilog HDL 设计 CAM 的方案,该方案以移位寄存器为核心,所实现的 CAN 具有可重新配置改变字长、易于扩展、匹配查找速度等特点,并在网络协处理器仿真中得到了应用。 关键词 : CAM 移位寄存器 Verilog HDL CAM ( Content Addressable Memory,内容可寻址存储器)是一种特殊的存储阵列。它通过将输入数据与 CAM 中存储的所有数据项同时进行比较,迅速判断出输入数据是否与 CAM 中的 存储数据项相匹配,并给出匹配数据项的对应地址和匹配信息。 CAM 以其高速查找、大容量等特点而被广泛地应用于电讯、网络等领域。 本文介绍一种用 Verilog HDL 设计 CAM 的方案。该方案以移位寄存器为核心,具有可重新置改变字长、易于扩展、匹配查找速度快等特点。 1 CAM 功能描述 CAM 的基本框图如图 1 所示。 与 RAM 相似, CAM 是将数据项存储在一个阵列中。每个数据项的位数叫做字宽,CAM中所有数据项的条数叫做 CAM的深度。通过字宽和深度可以表征 CAM中容量。 在 写 CAM 模式(配置)时, WRITE_E 信号有效, MATCH_E 信号无效,此时通过地址线 ADDR 选择 DATA_IN 输入的数据将要被写放哪一个单元; 在读 CAM 模式(查找匹配)时, WRITE_E 信号无效, MATCH_E 信号有效, CAM 将不使用地址线,而是直接将 DATA_IN 读入的数据与 CAM 中 存储的各条数据项进行并行比较。如果CAM 中含有与此时输入数据相匹配的存储数据项, CAM 将从 MATCH_ADDR 输出此存储数据项的地址,并且通过 MATH_OK 输出匹配成功的信息。在查找匹配模式时,nts由于 CAM 是将输入数据与存储数据项并行比较,所以速度极快。同时,由于不需要通过地址线来寻址数 据项, CAM 将不受地址线宽度的限制,容易扩展。 2 基于移位寄存器的 CAM 的设计 为 了说明设计方案,以一个宽度为 4 位、深度为 1 的基本 CAM 存储单元为例。利 用这样一个基本存储单元,通过适当级联,可以构成任意字宽和深度的 CAM。该基 本单元采用一个 16 位的移位寄存器、一个 4 位的比较器,外加 16 位的计数器和一个 二选一 的选择器构成。如图 2 所示。 在写 CAM 模式时, WRITE_E 信号有效, DATA_IN 输入的是将要写入数据存储项的4 位数据。计数器进行从 1111到 0000的减计数,并 将计数输出值与 DATA_IN输入值进行比较。若二者相同,比较器输出 1到移位寄存器中;不同则输出 0到移位寄存器中。在 16 个时钟周期之后,将 完成 DATA_IN 输入数据与计数器输出的所有情况的比较。这样,移位寄存器中将存入 15 个 0和一个 1。 在 读 CAM 模式时, MATCH_IN 为 1,此时, DATA_IN 输入的数据直接送到移位寄存器的地址端,它将决定移位寄存器输出其 16 个位中的哪一位。 如果该位输出1,则表示此时 DATA_IN 与原来写入该单元的数据相同,即发生匹配;反之则输出 0,表示无匹配项。 以 上讨论只是针对 4 位字宽的数据项的读写,而对于更长字宽的数据项,必须进行字宽扩展。可用多个比较器和移位寄存器组成的存储数据项并联在一起,组成一个字 结构,即把输入的数据按每 4 位分为一组,每组对应一套比较器和移位寄存器,每组只产生一个最终的 MTACH_OUT 信号。例如,对于 16 位的数据项,就需 要 4 组这样的结构。这 4 组基本结构中的读和写可以同时完成。只有 4 组都产生匹配信号,最终的 MATCH_OUT 输出才有 1,表明读入的 16 位 DATA_IN数据与存储的数据项匹配。 CAM 只需要存 储 多个数据项,因此需要多个字结构的深度扩展。将这些字结构中的比较器和移位寄存器分别组合在一起,构成比较器阵列和移位寄存器阵列。为了在写 CAM 时进行 写入数据的定位,还需要一个地址译码模块来指出是对哪nts一个数据项进行写操作。在读 CAM 时,得到输入数据与各个存储数据项的匹配信息之后,还要对这些匹配 信息进行编码,得到最后要输出的相匹配的存储数据项的地址 MATCH_ADDR 和是否发生匹配的信息 MATCH_OK。 完整的 CAM 结构框图见图 3。 3 基于移位寄存器的 CAM 的 Verilog HDL 实现 硬件描述语言 VerilogHDL 是一种应用于电路设计的描述语言,具有行为级、寄存器传输级、逻辑门级和开关级等多层次描述。它简单易读,描述与工艺无关,并且得到许多 EDA 工具的支持。利用 Verilog HDL 语言进行电路设计可以大大节省设计时间和成本。 本设计以一个数据项字宽为 16 位、深度为 8 的 CAM 为例,进行 Verilog HDL 设计,并 利用 Xilinx Virtex 系列中 XCV1000 器件进行综合。综合后的仿真分析表明,该方案是合理可行的。 nts图 4 为匹配查找的时序仿真结果, CAM 中预先放入了 0019H, 001AH, , 001DH五个数据。 CLK 为系统时钟, DATA_IN 为数据输入, MATCH_ENABLE 为读 CAM(查找)允许信号, GLOBAL_RST 为全局清零信号, R_MATCH_ADDR 为匹配地址输出信号, R_MATCH_OK 为是否发生匹配信号。从仿真波形可以看出,输入数据经过两个时钟周期,输出匹配信息,包括是否匹配和相匹配的存储数据项的地址。如果 不匹配,是否匹配的信号为 0,而输出地址线不变。 本方案以移位寄存器设计 CAM,在写模式下需要 16 个时钟周期完成一个数据项的写入;读模式仅需一个时钟周期。它具有速度快、易于重新配置、易于扩展等特点。本方案中的 CAM 利用 Xilinx Virtex 系列器件实现,时钟最高频率可达80MHz 以上。以本方案为基础, 扩展到 32 位、 36 位的实用化 CAM 已运用于网络协处理器的仿真测试中,并取得了较好的效果。 nts使用 PLD内部锁相环解决系统设计难题 摘要: 从整个应用系统的角度,理解和分析 PLD内部锁相环;在此基础上,深入剖析锁相环的相移结构,同时用这个技术解决系统设计难题。 关键词: PLD 内嵌锁相环 FIFO XBUS 引言 微 电子技术的发展趋势是片上系统( SoC),也就是在一块芯片上实现整个系统,包括模拟部分和数字部分。作为 IC产业中重要的一个分支,可编程逻辑器件 ( PLD)也在努力向这个方向发展。无论是 Xilinx还是 Altera,它们最新的 PLD产品中都集成了诸如 PCI接口、乘法器、 MCU 核以及 DSP核 等部件,有的甚至集成了完整的微处理器。例如, Xlinux的 Vietex2-Pro系列就是集成了 PowerPC微处理器。 锁 相环技术是模拟集成电路设计中一个重要的研究方向。但是,现在中高档的可编程逻辑器件一般都集成有片内的锁相环(如 Xilinx的 Spartan2 系列, Altera的 Cyclone 系列)。锁相环一端连接外部全局时钟或者全局控制信号,另一端连接可编程逻辑器件内部专门的布线网络,可以最大程度地减少全 局时钟信号到片内各个部分的布线延迟,有效地消除了时钟偏移而带一的各种问题 。同时,锁相环一般都提供了倍频、分频、相移三个功能。 nts 1 应用背景介绍 本文用 FPGA实现 FIFO,连接 PCI与 TI的 TMS320C6204的扩展总线,与 DSP传输数据的时钟达到 100MHz。由于 DSP的接口对于时钟和信号的要求很苛刻,所以下面具体分析核心的 DSP的 XBUS时序。 DSP的扩展总线( XBUS)是一 个 32位宽的总线,支持与异步外设、异步 /同步 FIFO、PCI桥以及外部主控处理器等的接口。它同时提供一个灵活的总线仲裁机制,可以内部进行仲裁,也可以由外部逻辑完成。 本 文中使用 XBUS 的同步 FIFO接口。如果是要读取 FIFO,首先 FIFO 要通过中断信号 XINT0来通知 XBUS数据已经准备好,然后 XB响应 、有效,就开始读取中的数据,读的时序如图所示;如果是要写,通过申请,然 后响应、有效,开始一个写 的传输过程,写的时序如图所示。 nts 通过分析读写的时序关系可以看出,在 FIFO实现的过程中需要注意以下几个地方: XBUS 工作时钟是 100MHz,对于大部分的 FPGA 来说是一个比较高的频率。而且,由于读出的数据要求一定的建立时间( setup time)和保持时间( hold time) ,这就对内部逻辑的设计提出了较高的要求。 读 FIFO时,必须在使能信号有效之后的第二个时钟周期就把数据输出。对于FIFO内部的双端口 RAM来说,这个实现起来不一定能满足要求(有很多 RAM 是在使能信号只有的 3 5个时钟周期才输出数据的)。这样,通用 FIFO 中就要考虑产生预读逻辑来产生数据,以满足 XBUS 严格的时序要求。 XBUS 的使能信号 XCE0/XCE1/XRE/XOE/XWE 的变化时间范围是在时钟有效之后的 1 7ns,考虑到 FPGA内部的组合逻辑延时和布线延时,这样对有效信号的锁定可能是不稳定 的。这就为逻辑设计带来了很大的难度。 nts 2 锁相环的相移功能 系 统时钟是 100MHz,为了获得更好的布线效果和系统性能,时钟信号必须经过锁相环到达全局时钟布线网络。同时,锁相环还可以提供多个时钟相移的信号,同 样可以连接到全局布线网络来驱动片的时钟信号。以 Xilinx公司的 SPARTAN2系列芯片为例( Altera 的 Cyclone或者更高级别的系列也提 供了类似的锁相环),使用片内锁相环进行时钟相移的示意如图 3所示。 相移以后的时钟对于系统设计有很大的用处。本文利用了相移以后的时钟解决了系统设计中的两个难点,取得了令人满意的效果: 用 PLL解决使能信号漂移的难题; 使用 PLL满足 TI 的 TMS320C62XX系列 DSP 中 XBUS的建立、保持时间要求。 3 使用 PLL 解决使能信号漂移的难题 由 于 DSP的 XBUS 响应 FIFO的中断 XINT0 时,需要回复 XRF、 XCE0、 XOE三个信号。只有三个同时有效时,才 可以读 FIFO,所以读使能信号 RDEN=not(XCE0 or XRE or XOE); XBUS 回复 FIFO中断信号 XINT1 时,需要回复 XWE和 XCE1两个信号。只有两个信号时有效才可以写 FIFO,所以 WREN=not (XCE1 or XWE)。 RDEN或者 WREN都是由 FPGA内部组合逻辑产生的,在 FPGA内部组合逻辑的物理延时( tc)为 3 5ns。考虑到 XBUS的使能信号本身相对于时钟上升沿( td)就有 1 7ns,所以使能信号有效相对时钟上升沿来说可能的变化范围为 4 12ns,如图 4所示。 图 3 中,系统经过锁相环的相移,驱动 FPGA 内部逻辑的时钟。相对于 XCLK来说,如果 XBUS的回应信号的延时为 1ns(图 4中实线所示部分 ),则 RDEN 经过组合逻辑延迟,变为高有效的时候,可以在时钟的第一个上升沿采样到(图 4中实线所示);如果 XBUS 的回应信号延时为 7ns(图 4中虚线所示),则 RDEN经过组合逻辑延迟以后,只能在第二个时钟的上升延才能采样到高有效信号。 nts 显而易见, XBUS信号延迟的变化范围太大,造成了系统设计的不稳定性。要解决这个问题,通过逻辑优化是没有办法来进行的。因为产生使能信号的那一级组合逻辑本身的延迟是无法改变的。 本 文灵活地运用了 FPGA内部锁相环的移相功能,巧妙地解决了信号 XCLK_Shift相对于 XCLK的相移问题。而且,经过这个相移以后的时钟信号,无论 XBUS使能信号怎么在 1 7ns 内发生变化,都可以保证在 XCLK_Shift的第二个时钟周期采样到高有效信号。这样就确定了稳定的逻 辑关系,为可靠 稳定的设计奠定了基础。 4 使用 PLL 满足 XBUS 的建立、保持时间要求 如 图 1中所示, FIFO 中数据输出时需要满足一定的建立和保持时间(图 1中为时间 5和时间 6)。但是,时钟信号 XCLK输入 FPGA 的时候需要首先经过 IOB(输入输出模块),然后才能连接到锁相环部分进入全局时钟网络。采用同步输出的时候,输出数据也要经过 IOB才可以输出。 IOB本身的延时就很容易 导致无法确保正确的建立和保持时间,满足不了 XBUS 的要求,如图 5所示。 为了解决这个问题,同样可以采用锁相环进行时钟相位偏移来 弥补通过 IOB引起的时钟相位偏移。这样,数据端的输出只要相对于经过偏移的时钟信号满足建立保持时间,那么,就可以满足原始时钟信号的要求(如图 5中虚线所示)。 5 结论 通过合理的使用 FPGA 内部的锁相环,本文在不改动原有逻辑设计和代码的情况下,巧妙地解决了高速 DSP扩展总线 XBUS与 FIFO的接口问题。为系统和逻辑设计解决了可能遇到的几个难点,为进一步的研究和开发提供了一种解决问题的新方法和思路。 nts nts基于 CPLD/FPGA 的半整数分频器的设计 摘要 :简要介绍了 CPLD/FPGA器件的特点和应用范围,并以分频比为 2.5的半整数分频器的设计为例,介绍了在 MAX+plus II 开发软件下,利用 VHDL 硬件描述语言以及原理图的输入方式来设计数字逻辑电路的过程和方法。 关键词 : VHDL CPLD/FPGA 数字逻辑电路设计 半整数分频器 1 引言 CPLD ( Complex programmable Logic Device,复杂可编程逻辑器件)和 FPGA( Field programmable Gates Array,现场可编程门阵列)都是可编程逻辑器件,它们是在 PAL、 GAL 等逻辑器件基础上发展起来的。同以往的 PAL、 GAL相比, FPGA/CPLD的规模比较大,适合于时序、组合等逻辑电路的应用。它可以替代几十甚至上百块通用 IC芯片。这种芯片具有可编程和实现方案容易改动等特 点。由于芯片内部硬件连接关系的描述可以存放在磁盘、 ROM、 PROM、或 EPROM中,因而在可编程门阵列芯片及外围电路保持不动的情况下,换一块 EPROM 芯片,就能实现一种新的功能。它具有设计开发周期短、设计制造成本低、开发工具先进、标 准产品无需测试、质量稳定以及实时在检验等优点,因此, 可广泛应用于产品的原理设计和产品生产之中。几乎所有应用门阵列、 PLD和中小规模通用数字集成电路的场合均可应用 FPGA和 CPLD 器件。 在现代电子系统中,数字系统所占的比例越来越大。系统发展的越势是数字化和集成化,而 CPLD/FPGA 作为可编程 ASIC(专用集成电路)器件,它将在数字逻辑系统中发挥越来越重要的作用。 在 数字逻辑电路设计中,分频器是一种基本电路。通常用来对某个给定频率进行分频,以得到所需的频率。整数分频器的实现非常简单,可采用标准的计数器,也可以 采用可编程逻辑器件设计实现。但在某些场合下,时钟源与所需的频率不成整数倍关系,此时可采用小数分频器进行分频。比如:分频系数为 2.5、 3.5、 7.5等半整数分频器。笔者在模拟设计频率计脉冲信号时,就用了半整数分频器这样的电路。由于时钟源信号为 50MHz,而电路中需要产生一个 20MHz 的 时钟信号,其分频比为 2.5,因此整数分频将不能胜任。为了解决这一问题,笔者利用 VIDL硬件描述语言和原理图输入方式,通过 MAX+plus II开发软件和 ALTERA公司的 FLEX系列 EPF10K10LC84-4型 FPGA 方便地完成了半整数分频器电路的设计。 nts 2 小数分频的基本原理 小 数分频的基本原理是采用脉冲吞吐计数器和锁相环技术先设计两个不同分频比的整数分频器,然后通过控制单位时间内两种分频比出现的不同次数来获得所需要的小 数分频值。如设计一个分频系数为 10.1的分频器时,可以将分频器设计成 9次 10分频, 1次 11分频,这样总的分频值 为: F=( 910+111 ) /( 9+1) =10.1 从这种实现方法的特点可以看出,由于分频器的分频值不断改变,因此分频后得到的信号抖动较大。当分频系数为 N-0.5( N为整数)时,可控制扣除脉冲的时间,以使输出成为一个稳定的脉冲频率,而不是一次 N分频,一次 N-1分频。 图 2 模 3计数器仿真波形 3 电路组成 分频系数为 N-0.5 的分频器电路可由一个异或门、一个模 N计数器和一 个二分频器组成。在实现时,模 N计数器可设计成带预置的计数器,这样可以实现任意分频系数为 N-0.5的分频器。图 1给出了通用半整数分频器的电路组成。 采用 VHDL硬件描述语言,可实现任意模 N的计数器(其工作频率可以达到 160MHz以上),并可产生模 N逻辑电路。之后,用原理图输入方式将模 N逻辑电路、异或门和 D触发器连接起来,便可实现半整数( N-0.5)分频器以及( 2N-1)的分频。 4 半整数分频器设计 现通过设计一个分频系数为 2.5的分频器给出用 FPGA设计半整数分频器的一般方法。该 2.5分频器由模 3计数器、异或门和 D触发器组成。 图 3 2.5分频器电路原理图 4.1 模 3计数器 nts该计数器可产生一个分频系数为 3的分频器,并产生一个默认的逻辑符号COUNTER3。其输入端口为 RESET、 EN和 CLK;输出端口为 QA和 QB。下面给出模3计数器 VHDL描述代码: library ieee; use ieee.std-logic-1164.all; use ieee.std-logic-unsigned.all; entity counter3 is port(clk,reset,en:in std-logic; qa,qb:out std-logic); end counter3; architecture behavior of counter3 is signal count:std-logic-vector(1 downto 0); begin process(reset,clk) begin if reset=1then count(1 downto 0)=00; else if(clk event and clk=1)then if(en=1)then if(count=10)then count=00; else count=count+1; ntsend if; end if; end if; end if; end process; qa=count(0); qb=count(1); end behavior; 任意模数的计数器与模 3计数器的描述结构完全相同,所不同的仅仅是计数器的状态数。上面的程序经编译、时序模拟后,在 MAX+PLUS II可得到如图 2所示的仿真波形。 图 4 2.5分频器仿真波形图 4.2 完整的电路及波形仿真 将 COUNTER3、 异或门和 D触发器通过图 3 所示的电路逻辑连接关系,并用原理图输入方式调入图形编辑器,然后经逻辑综合即可得到如图 4所示的仿真波形。由图中 outclk 与 inclk的波形可以看出, outclk 会在 inclk每隔 2.5 个周期处产生一个上升沿,从而实现分频系数为 2.5 的 分频器。设 inclk为 50MHz,则outclk为 20MHz。因此可见,该电路不仅可得到分频系数为 2.5的分频器( outclk),而且还可得到分频系数为 5的分频器 ( Q1)。 5 结束语 选用 ALTERA公司 FLEX 系列 EPF10K10LC84-4型 FPGA器件实现半整数分频后,经逻辑综合后的适配分析结果如表 1所列。本例中的计数器为 2位宽的位矢量,即分频系数为 4以内的半整数值。若分频系数大于 4,则需增大 count 的位宽。 表 1 半整数分频器适配分析结果 选用器件 I/O延迟时间 使用引脚数 工作频率 EPF10K10LC844 17.7ns 5/84( 5.95%) 68.02MHz ntsntsntsnts基于 FPGA 的多种形式分频的设计与实现 摘 要 : 本文通过在 Quarturs 开发平台下,一种能够实现等占空比、非等占空比整数分频及半整数分频的通用分频器的 FPGA 设计与实现,介绍了利用 VHDL硬件描述语言输入方式,设计数字电路的过程。 关键词 : FPGA; VHDL 硬件描述语言;数字电路设计;分频器 引言 分频器是数字系统设计中的基本电路,根据不同设计的需要,我们会遇到偶数分频、奇数分频、半整数分频等,有时要求等占空比,有时要求非等占空比。在同一个 设计中有时要求多种形式的分频。通常由计数器或计数器 的级联构成各种形式的偶数分频及非等占空比的奇数分频,实现较为简单。但对半整数分频及等占空比的奇 数分频实现较为困难。本文利用 VHDL 硬件描述语言,通过Quartus3.0 开发平台,使用 Altera 公司的 FPGA,设计了一种能够满足上述各种 要求的较为通用的分频器。 一、电路设计 采 用 FPGA 实现半整数分频器,可以采用以下方法:设计一个模 N 的计数器,再设计一个脉冲扣除电路,每来两个脉冲扣除一个脉冲,即可实现分频系数为 N- 0.5 的分频器。脉冲扣除电路由异或门和一个 2 分频器构成。本设计在半整数分频器原 理的基础上,对异或门加一个使能控制信号,通过对异或门和计数器计数状 态值的控制,实现同一个电路完成多种形式分频,如图 1 所示。 二、 VHDL 语言的实现 现通过设计一个可以实现 8.5 分频,等占空比的 17 分频, 2、 4、 8、 16、 32 分频,及占空比为 18 和 45 的 9 分频等多种形式分频的分频器,介绍该通用分nts频器的 FPGA 实 现。 由图 1 所示的电路原理图可知,分频器由带使能端的异或门、模 N 计数器和一个2 分频器组成,本设计用 D 触发器来完成 2 分频的功能,实现方法是:将触发器的 Q 反输出端反馈回输入端 D,将计数器的一个计数输出端作为 D 触发器的时钟输入端。各功能模块的 VHDL 语言实现如下。 1模 N 计数器的实现 一般设计中用到计数器时,我们可以调用 lpm 库中的计数器模块,也可以采用VHDL语言自己设计一个模 N计数器。本设计采用 VHDL语言设计一个最大模值 为16 的计数器。输入端口为:使能信号 en,复位信号 clr 和时钟信号 clk;输出端口为: qa、 qb、 qc、 qd。其 VHDL 语言描述略。 2带使能控制的异或门的实现 输入端为: xor_en:异或使能, a 和 b:异或输入;输出端为: c:异或输出。当xor_en 为高电平时, c 输出 a 和 b 的异或值。当 xor_en 为低电平时, c 输出信号 b。其 VHDL 语言略。 3 2 分频(触发器)的实现 输入端为:时钟信号 clk,输入信号 d;输出端为: q:输出信号 a, q1:输出信号 a 反。其 VHDL 语言略。 4分频器的实现 本设计采用层次化的设计方法,首先设计实现分频器电路中各组成电路元件,然后通过元件例化的方法,调用各元件,实现整个分频器。其 VHDL 语言略。 三、仿真结果及硬件电路的测试 本设计的目的是通用性和简易性,只要对上述程序稍加改动即可实现多种形式的分频。 1实现 8.5 分频和等占空比的 17 分频 nts 只要将上述程序中,调用计数器模块时端口 qa、 qb、 qc 匹配为 open 状态,同时置 xor_en 为高电平即可。从编译报告看出总共占用 8 个逻辑单元( logic elements),其仿真波形如图 2 4 所示。 图 2 图 3 图 4 由图中 qxiao 和 clk 的波形可以看出,每隔 8.5 个时钟周期, qxiao 信号产生一个上升沿,从而实现分频系数是 8.5 的分频,同时在 qzheng 端 得到等占空比的17 分频。设 clk 为 170MHz,则 qxiao 输出为 20MHz, qzheng 输出为 10MHz。 2实现占空比为 18 和 45 的 9 分频 只要上述程序的 xor_en置低电平即可在 qxiao输出占空比为 18 的 9分频信号;在 qzheng2 输出占空比为 45 的 9 分频信号。同样仅占 8 个逻辑单元( logic elements)。仿真波形如下。 3实现等占空比的 2、 4、 8、 16 和 32 分频 只要将上述程序中的 xor_en 置为低电平 ,同时将计数器模块的计数最大值设为16 即可。仿真波形如下。 由此可见,只要稍微改变计数器的计数状态值,对异或门进行选通控制,即可实现上述多种形式的分频。本设计在 Altera 公司的 EP1K50QC208-3 构成的测试平台上测试通过,性能良好。 结束语 我们在设计模拟雷达脉冲信号和用 FPGA 开发扩频芯片时就用到了上述多种形式得分频。本文旨在介绍一种进行 FPGA 开发时,所需多种分频的实现方法,如果 设计中所需分频形式较多,可以直接利用本设计,通过对程序的稍微改动以满足自己设计的要求。如果设计中需要分频 形式较少,可以利用本设计部分程序,以节省 资源。 nts基于 FPGA 的高频时钟的分频和分配设计 摘要: 介 绍了为 PET(正电子发射断层扫描仪)的前端电子学模块提供时间基准而设计的一种新型高频时钟扇出电路。该电路利用 FPGA 芯片来实现对高频时钟的分频与 分配,并用 LVDS 传输标准对生成的多路时钟信号进行传输,从而最大程度地减少了输出各路时钟之间的延时偏差,同时利用低压差分信号的传输特性增强了信号 的抗干扰能力。文章给出了采用 VHDL 语言编写的时钟电路程序代码。 关键词: FPGA;高频时钟; VHDL 引言 随 着应用系统向高速度、低功耗和低电压方向的 发展,对电路设计的要求越来越高 传统集成电路设计技术已无法满足性能日益提高的整机系统的要求。同时,由于 设计与工艺技术水平的提高,集成电路规模越来越大,复杂程度越来越高。目前已经可以将整个系统集成在一个芯片上,即片上系统( 缩写为),这种芯片以具有系统级性能的复杂可编程逻辑器件()和现场可编程门阵列()为主要代表。与主要实现组合逻辑功 能的相比,主要用于实现时序逻辑功能。对于设计来说,采用在实现小型化、集成化和高可靠性 系统的同时,还可以减少风险、 降低成本、缩短开发周期。 nts 系统硬件组成 本 文介绍的时钟板主要由于为(正电子发射断层扫描仪)的前端电子学模块提供路系统时钟()和路同步时钟()。时钟信号 之间的偏差要求在之内。为了消除各路时钟信号之间的偏差,文中介绍利用来实现主时钟的分 频、零延时输出和分配,同时利用技术实现多 路时钟的传输的实现方法。图所示是其硬件设计示意图。 由 图可知,该时钟电路的具体工作原理是:首先由精密晶体振荡器产生的时钟信号,然后经时钟驱动芯片输入芯片的时钟引脚 以作为时钟源。该时钟在芯片内部经(延迟锁定环)模块分别生成的系统时钟和的同步时钟 电平信号 ,然后由内部的(输入输出功能模块)分配到个输出引脚(路系统时钟和路同步 时钟),这路电平信 号两两进入块(两路)驱动转换芯片后,即可转换为信号并通过差分双绞线传输给前端电子学模块的块数字电路板。 nts图 2 的结构 单 元型主要由三部分组成:可配置逻辑模块( ),输入、输出模块和可编程连线( )。对于不同规格的芯片,可分别包含 、 、 甚至 个阵列,同时配有、 、甚至个以及为实现可编程连线所必需的其它部件。图所示是本设计中使用的芯片的内部结构。 公司的系列 公司目前生产的有两类代表性产品 一类是系列 另一类是 -系列。这两类产品除具 有 的三种基本资源(可编程、可编程逻辑功能模块和可编程布线等)外 还具有片内资源。但两种产品也有所不同。其中 可以用于实现片内分布,同时专门为实现可编程片上系统开发的系列,其片内分布和块都可以实现,并可实现片上 系统所要求的其他性能,如时钟分配和多种电平接口等特性。系列与系列产品相比,除了块数量少于系列产品 外,其余有关性能(如典型门范围、线宽、金属层、芯内电压、芯片输入输出引脚电压、系统频率和所 含个数等)都基本相同,它的一个突出优点(也是本设 计选用该系列芯片的主要原因)是:该系列产品是专门为取代掩膜门阵列的低价位,在达到门阵列数量时,其价格可与门阵列相比。因此,本文介绍的时钟 电路的设计选用系列 -中的芯片来实现。 用实现时钟分 频和分配 nts如 图所示 系列芯片内部含有四个全数字延时锁定环(),每一个可驱动两个全局时钟分布网络。通过控制输出时钟的一个 采样 可以补偿由于布线网络带来的时钟延时,从而有效消除从外部输入端口到器件内部各个时钟负载的延时。除提供对用户输入时钟的零延时之外,还具有 时钟倍频和分频功能。它可以对时钟源进行两倍频和、或分频。本设计就是利用的零延时和分频功能来实现对 时钟的输出和分频后(约)时钟的输出。 数字延时锁定环()的结构原理 图 是一个的内部原理框图,它由各类时钟延时线和控制逻辑组成。延时线主要用于对时钟输入端产生一个延时。通过器件内部的时钟分布网络可将 该输入时钟分配给所有的内部寄存器和时钟反馈端。控制逻辑则主要用于采样输入时钟和反馈时钟以调整延时线。这里所说的延时线由压控延时或 衰减延 时组件构成,系列芯片选用了后者。可在输入时钟和反馈时钟之间不停地插入延时,直到两个时钟的上升沿同步为止。当两时钟同步时, 锁定。在锁定后,只要输入时钟没有变化,两时钟就不会出现可识别偏差。因此,输出时钟就补偿了时钟分布网络带来的输入时钟延时,从而消 除了源时钟和负载之间的延时。 功能的实现 系列芯片内含专门实现功能的宏单元模块,其结构简图如图所示。该模块由、和三个库元件组成 其原理 框图如图所示。图中,库元nts件用于实现的主要功能 包括完成时钟的零延时输出、时钟的倍频以及分频和镜像操作。而和 则分别实现外部时钟的输入以及将输出时钟分配到芯片引脚。本设计的时钟分频就是将的时钟由输入 经分频后再 由端传给 然后经片内分配到芯片的普通输出引脚。 软件实现 在设计的总体构思和器件选择完成后,必须进行的工作是建立设计输入文件,该文件主要用于描述所设计电路的逻辑功能。这里使用的是公司提供的开发工具 。本设计采用硬件描述语言来设计,其部分程序如下: ( : ; _ : _ _ ( ); _ : _ _ ( ); ; _ nts ( : _ ; : _ ; : _ ; : _ ; : _ ; : _ ; : _ ; : _ ; : _ ; : _ ); ; ; : ( , ); : ( , _ , , , , , , , nts , ); _ : ( , _ ; ); _ ; ( ); _ ; _ ; _() _; _() _; _() _; _() _; _() _; _() _; ; ; nts _; nts异步 FIFO结构及 FPGA 设计 摘要 :首先介绍异步 FIFO的概念、应用及其结构,然后分析实现异步 FIFO的难点问题及其解决办法;在传统设计的基础上提出一种新颖的电路结构并对其进行综合仿真和 FPGA实现。 关键词 :异步电路 FIFO 亚稳态 格雷码 1 异步 FIFO 介绍 在 现代的集成电路芯片中,随着设计规模的不断扩大,一个系统中往往含有数个时钟。多时钟域带来的一个问题就是,如何设计异步时钟之间的接口电路。异步 FIFO( First In First Out)是解决这个问题一种简便、快捷的解决方案。使 用异步 FIFO可以在两个不同时钟系统之间快速而方便地传输实时数据。在网络接口、图像处理等方面, 异步 FIFO得到了广泛的应用。 异 步 FIFO是一种先进先出的电路,使用在需要产时数据接口的部分,用来存储、缓冲在两个异步时钟之间的数据传输。在异步电路中,由于时钟之间周期和相位完 全独立,因而数据的丢失概率不为零。如何设计一个高可靠性、高速的异步FIFO电路便成为一个难点。本文介绍解决这一问题的一种方法。 图 1是异步 FIFO的结构框图。 nts由 图 1可以看出:整个系统分为两个完全独立的时钟域 读时钟域和写时间域; FIFO的存储介质为一块双端口 RAM,可以同时进行读写操作。在写时钟域部 分,由写地址产生逻辑产生写控制信号和写地址;读时钟部分由读地址产生逻辑产生读控制信号和读地址。在空 /满标志产生部分,由读写地址相互比较产生空 /满 标志。 2 异步 FIFO 的设计难点 设计异步 FIFO有两个难点:一是如何同步异步信号,使触发器不产生亚稳态 ;二是如何正确地设计空、满以及几乎满等信号的控制电路。 下面阐述解决问题的具体方法。 2.1 亚稳态问题的解决 在 数字集成电路中,触发器要满足 setup/hold 的时间要求。当一个信号被寄存器锁存时,如果信号和时钟之间不满足这个要求, Q端的值是不确定的,并且 在未知的时刻会固定到高电平或低电平。这个过程称为亚稳态( Metastability)。图 2所示为异步时钟和亚稳态,图中 clka 和 clkb为异步时 钟。 亚稳态必定会发生在异步 FIFO中。图中在异步 FIFO中,电路外部的输入和内部的时钟之间是毫无时间关系的,因此 setup/hold 冲突是必然的;同 在电路内部的两个没有关系的时钟域之间的信号传递,也必须会导致 setup/hold 冲突。 虽然亚稳态是不可避免的,但是,下面的设计改进可以将其发生的概率降低到一个可以接受的程度。 对写地址 /读地址采用格雷码。由实践可知,同步多个异步输入信号出现亚稳态的概率远远大于同步一个异步信 号的概率。对多个触发器的输出所组成的写地nts址 /读地址可以采用格雷码。由于格雷码每次只变化一位,采用格雷码可以有效地减少亚稳态的产生。 采用触发器来同步异步输入信号,如图 3 中的两极触发器可以将出现亚稳态的几率降低到一个很小的程度。但是,正如图 3所示,这种方法同时带来了对输入信号 的一级延时,需要在设计时钟的时候加以注意。 2.2 空 /满标志的产生 空 /满标志的产生 FIFO 的核心部分。如何正确设计此部分的逻辑,直接影响到FIFO的性能。 空 / 满标志产生的原则是:写满不溢出,读空不多读。即无论在什么进修,都不应出现读写地址同时对一个存储器地址操作的情况。在读写地址相等或相差一个或多个地 址的时候,满标志应该有效,表示此时 FIFO已满,外部电路应对 FIFO发数据。在满信号有效时写数据,应根据设计的要求,或保持、或抛弃重发。同理,空 标志的产生也是如此,即: 空标志 =(|写地址 -读地址 |=预定值 )AND(写地址超前读地址) 满标志 =( |写地址 -读地址 |=预定值) AND(读地址超前写地址 ) 最直接的做法是,采用读写地址相比较来产生空满标志。如图 4所示,当读写地址的差值等于一个预设值的时候,空 /满信号被置位。这种实现方法逻辑简单,但它 是减法器形成的一个比较大的组合逻辑,因而限制了 FIFO的速度。所以,一般只采用相等不相等的比较逻辑,避免使用减法器。 nts 图 5是另外一种常用的设计,比较器只对读写地址比较是否相等。在读写地址相等的时候有两种情况:满或者空。所以,附加了一个并行的区间判断逻辑来指示是空 还是满。这个区间判断逻辑将整个地址空间分为几个部分,以指示读写地址的相对位置。这种做法提高了整个电路的速度,但是也有其缺点。主要是直接采用读写地 址等于不等于的比较逻辑来进行空 /满标志的判断,可以
- 温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

人人文库网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。