使用VHDL语言设计FPGA的几个常见问题的探讨_第1页
使用VHDL语言设计FPGA的几个常见问题的探讨_第2页
使用VHDL语言设计FPGA的几个常见问题的探讨_第3页
使用VHDL语言设计FPGA的几个常见问题的探讨_第4页
使用VHDL语言设计FPGA的几个常见问题的探讨_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、使用VHDL 语言设计FPGA 的几个常见问题的探讨搞要:详细讨论了在MAX plus开发平台下使用VHDL 硬件描述语言设计现场可编程门阵列(FP-GA时常见的三个问题:等占空比分频电路、延时任意量的延时电路、双向电路。关键词:FPGA;VHDL;分频电路;延时电路;双向电路1 引言随着EDA 技术的发展,使用硬件语言设计可编程逻辑器件(PLD/现场可编程门阵列(FPGA成为一种趋势。FPGA是一种将门阵列的通用结构与PLD 的现场可编程特性结合为一体的新型器件,具有集成度高、通用性好、设计灵活、编程方便、产品上市快等诸多优点。美国Xilinx 公司于1985年领先推出了FPGA。目前市场上

2、应用较广泛的FPGA 产品当数Xilinx 公司的Spartan 和Virtex 系列及Al-tera 公司的ACEX 和AP EX 系列。目前最主要的硬件描述语言是VHDL 和Ver-ilog HDL。VHDL 发展的较早,语法严格,而VerilogHDL 是在C 语言的基础上发展起来的硬件描述语言,语法较自由。在工程应用尤其是在有关控制电路的设计中,用VHDL 硬件描述语言设计FPGA 经常会遇到以下三个问题:实现等占空比、非等占空比整数分频的分频电路;在时钟控制下对同步脉冲信号任意时间量的延迟;使用VHDL 语言进行双向电路的设计。2 常见问题2.1 分频电路分频电路是数字系统设计中的基

3、本电路。在硬件电路设计中,时钟信号是最重要的信号之一,经常需要对较高频率的时钟进行分频操作,得到较低频率的时钟信号。分频电路一般分为三种:第一种是任意占空比的偶数分频及非等占空比的奇数分频,通常由计数器或计数器的级联来完成。 第二种是等占空比的奇数分频电路。要实现占空比为50的M=2N+1分频电路,本文采用计数器和1个或门来实现。利用时钟的上升沿计数,设计一个模M 的计数器:下降沿时判断计数器的值并产生占空比为1:2N的M 分频器C1;上升沿时判断计数器的值并产生占空比为N:N+1的M 分频器CO。两个分频器的输出端相或既可实现等占空比的M 分频器。程序附下。图1为等占空比5分频电路的仿真波形

4、。 architecture Behavioral of div is 如果在上述程序最后加入判断语句,则该段程序可以实现等占空比的任意分频,判断M-N 的奇偶性:M-N 为偶数,CO就是所要的分频输出;M-N为奇数C0+C1为所要的分频输出。第三种是小数分频电路。实现分频系数为N-0.5的分频器可以采用1个模N 的减法计数器、1个异或门、1个2分频器。要想用同一个电路完成多种形式半分频,可以在半整数分频器原理的基础上对异或门加1个使能控制信号。2.2 延时电路延时电路是电子设计中常用的电路。在学习数字电路时采用555型集成定时器来实现脉冲的延迟,而在进行信号处理时,很多设计并不能使用555集

5、成定时器来完成。用VHDL 语言设计时一般用计数器或计数器的级联来实现。下面以一个实例来说明如何实现任意时间量的延时。在5 MHz时钟CLK 控制下对同步信号SYNC 进行N 延时(SYNC脉冲宽度为2 s,脉冲重复频率为1 kHz;0sN998 s。要求每次在同步脉冲上升沿到来时开始延时,并在延时结束后产生宽度为10 s的选通信号。需要产生的延时时序如图2所示(延时量N=4.2s。这里采用3个计数器和1个或门产生上述延时信号,如图3所示,模N 计数器计延时量;模50计数器计选通信号的宽度;模N+50计数器用于产生使能信号。用VHDL 硬件描述语言进行硬件电路设计时,同一个进程中不能用2个时钟

6、来触发,而时序图中又要求在同步脉冲SYNC 的上升沿开始延时,为了解决这一问题,采用了模N+50计数器和1个或门。 当同步脉冲为高电平时,模N 计数器和模N+50计数器开始计数,并置dly_en为高电平。模N 计数器满,置dly_enl为高电平同时产生选通信号。当模N+50计数器计满即选通信号产生完之后置dly_en为低电平。当下一个同步脉冲到来时重复以上过程。这种设计电路的好处是当同步脉冲的宽度改变时对时序控制并无影响,因为在计数过程中只用了SYNC 的上升沿,从延时开始到选通信号结束,在或门的作用下SYNC对计数器不起控制作用。 上述电路的VHDL 程序如下: 该程序选择N=20,即延时量

7、是4.2 s,由于要使用时钟来判断SYNC 的上升沿情况,因此,如果令N =0,产生的delay 信号仍然会有1个时钟的固有延时,在计算延时量时应充分考虑到这一点,延时量=(N+1×时钟周期。该程序是雷达目标模拟器时序控制程序的一部分,它产生的延时用于模拟目标的距离,随着目标的运动,要求模拟的延时量也要变化,每次同步脉冲上升沿到来之前,DSP会计算出延时量N 并通过数据总线送给FPGA。2.3 双向电路在工程应用中,双向电路是设计者必须面对的问题。使用VHDL 语言设计FPGA 时,经常会遇到很多接口控制电路的设计,例如FPGA 与外部存储设备的接口电路设计、FPGA 与DSP 接口

8、电路的设计、FPGA 与CPU 接口电路的设计等,其中数据总线的设计是不可避免的,而数据总线往往是双向的。因此,如何正确处理数据总线是进行时序逻辑电路设计的基础。在程序设计过程中,双向信号既作为信号的输入又作为信号的输出。常见双向信号的模式有二种,第一种是双向信号作为一个信号的输入,作为另一信号的输出;第二种是双向信号既作为输出又作输入。经常用的数据总线就是第二种模式。要很好地进行双向电路的设计,关键在于实体部分必须对端口属性进行说明,端口属性必须为inout 类型;在构造体内需要对输出信号进行有条件的高阻控制。下面结合一段程序说明用VHDL 编写数据总线时应注意的问题,第一种模式的双向信号编

9、写与此类似。 DBus为数据总线,datal6(15 downto 0和SA(18downto 0为16位和19位的寄存器,dlyL和dlyH 为datal6的使能端,AddrLReg、AddrMReg、AddrHReg为SA 的使能端。dlyL或dlyH 为高电平时FPGA 从数据总线上读取数据(延时量,锁存在数据寄存器datal6里;AddrLReg、AddrMReg、AddrHReg有1个为高电平时FPGA 把状态寄存器SA的值送到数据总线上。 在双向电路程序设计中,DBus输入是普通的in 类型,而在输出时需要加一定的控制条件来控制高阻状态。最后一句不可省去,它说明了双向信号的三态输出,更要注意when 后面语句的条件

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论