用Verilog实现基于FPGA的通用分频器

来源 :电子与电脑 | 被引量 : 0次 | 上传用户:xiaogui999
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  在复杂数字逻辑电路设计中,经常会用到多个不同的时钟信号。介绍一种通用的分频器,可实现2~256之间的任意奇数、偶数、半整数分频。首先简要介绍了FPGA器件的特点和应用范围。接着介绍了通用分频器的基本原理和分类,并以分频比为奇数7和半整数6.5的分频器设计为例,介绍了在QuartusII开发软件下,利用Verilog硬件描述语言来设计数字逻辑电路的过程和方法。
  在数字逻辑电路设计中,分频器是一种基本电路。我们常会遇到偶数分频、奇数分频、半整数分频等,在同一个设计中有时要求多种形式的分频。通常由计数器或计数器的级联构成各种形式的偶数分频和奇数分频,实现较为简单。但对半整数分频分频实现较为困难。但在某些场合下,时钟源与所需的频率不成整数倍关系,此时可采用小数分频器进行分频。例如:时钟源信号为130MHz,而电路中需要产生一个20MHz的时钟信号,其分频比为6.5,因此根据不同设计的需要,本文利用Verilog硬件描述语言,通过MAX+plus II开发平台,使用Altera公司的FLEX系列EPF10K10LC84-3型FPGA,设计了一种能够满足上述各种要求的较为通用的分频器。
  
  基于查找表(LUT)的FPGA的结构特点
  
  查找表(Look-Up-Table)简称为LUT,LUT本质上就是一个RAM。目前FPGA中多使用4输入的LUT,所以每一个LUT可以看成一个有4位地址线的16x1的RAM。当用户通过原理图或HDL语言描述了一个逻辑电路以后,PLD/FPGA开发软件会自动计算逻辑电路的所有可能的结果,并把结果事先写入RAM,这样,每输入一个信号进行逻辑运算就等于输入一个地址进行查表,找出地址对应的内容,然后输出即可。由于LUT主要适合SRAM工艺生产,所以目前大部分FPGA都是基于SRAM工艺的,而SRAM工艺的芯片在掉电后信息就会丢失,一定需要外加一片专用配置芯片,在上电的时候,由这个专用配置芯片把数据加载到FPGA中,然后FPGA就可以正常工作,由于配置时间很短,不会影响系统正常工作。 也有少数FPGA采用反熔丝或Flash工艺,对这种FPGA,就不需要外加专用的配置芯片。
  FPGA(Field programmable Gates Array,现场可编程门阵列)都是可编程逻辑器件,它们是在PAL、GAL等逻辑器件基础上发展起来的。同以往的PAL、GAL相比,FPGA/CPLD的规模比较大,适合于时序、组合等逻辑电路的应用。它可以替代几十甚至上百块通用IC芯片。这种芯片具有可编程和实现方案容易改动等特点。由于芯片内部硬件连接关系的描述可以存放在磁盘、ROM、PROM、或EPROM中,因而在可编程门阵列芯片及外围电路保持不动的情况下,换一块EPROM芯片,就能实现一种新的功能。它具有设计开发周期短、设计制造成本低、开发工具先进、标准产品无需测试、质量稳定以及实时在检验等优点,因此,可广泛应用于产品的原理设计和产品生产之中。几乎所有应用门阵列、PLD和中小规模通用数字集成电路的场合均可应用FPGA和CPLD器件。在现代电子系统中,数字系统所占的比例越来越大。系统发展的越势是数字化和集成化,而FPGA作为可编程ASIC(专用集成电路)器件,它将在数字逻辑系统中发挥越来越重要的作用。
  
  通用分频器基本原理
  
  整数分频包括偶数分频和奇数分频,对于偶数N分频,通常是由模N/2计数器实现一个占空比为1:1的N分频器,分频输出信号模N/2自动取反。对于奇数N分频,上述方法就不适用了,而是由模N计数器实现非等占空比的奇数N分频器,分频输出信号取得是模N计数中的某一位(不同N值范围会选不同位)。这种方法同样适用于偶数N分频,但占空比不总是1:1,只有2的n次方的偶数(如4、8、16等)分频占空比才是1:1。这种方法对于奇数、偶数具有通用性。
  半整数分频器也是在这种方法基础上实现的。除了一个模N计数器,还需要一个异或模块和一个2分频模块。半整数分频器原理如图1所示:
  


  半整数分频器设计思想:通过异或门和2分频模块组成一个改变输入频率的脉冲添加电路,也就是说N-0.5个输入信号周期内产生了N个计数脉冲,即输入信号其中的一个含一个脉冲的周期变为含两个脉冲的周期。而这一改变正是输入频率与2分频输出异或的结果。由2分频输出决定一个周期产生两个脉冲有两种方式:当一个输入信号来一个脉冲(前半周期)时,2分频输出变为‘1’,clk_in取反,后半周期就会产生一个脉冲;2分频输出由‘1’变为‘0’时,clk_in刚把一个周期(前半周期)内低电平变为高电平产生一个脉冲,而后半周期的脉冲与‘0’异或不变。从而实现N-0.5分频。
  要实现奇数、偶数、半整数通用分频器只需再加一个控制选择信号sel。当sel=‘1’时,clk_in与2分频输出异或,实现半整数分频;当sel=‘0’时,只选通clk_in,实现整数分频。通用分频器原理如图2所示:
  
  Verilog语言的实现
  
  本设计采用层次化的设计方法,首先设计通用分频器中各组成电路元件,然后通过元件例化的方法,调用各元件,实现通用分频器。
  1、选择异或门模块 half_select:
  module half_select(sel,a,b,c);
  output c;
  input sel,a,b;
  xor u1(w,a,b);
  assign c= sel? w:a;
  (当sel=‘1’时,clk_in与2分频输出异或,实现半整数分频;当sel=‘0’时,只选通clk_in,实现整数分频。)
  endmodule
  
  2、模N计数器counter_n:
  实现参数化设计N可取2~256,也可增加count位数使N可取更大的值。以N=7为例通过设置sel分别实现奇数7分频和半整数6.5分频。
  module counter_n(reset,en,clk_in,clk_out,count);
  parameter N=7;
  input reset,en,clk_in;
  output clk_out;
  output[7:0] count;
  reg clk_out;
  reg[7:0] count;
  always @(posedge clk_in)
  begin
   if (reset)
   begin
   count[7:0]=0;
   end
   else if (en)
  begin
  if (count==(N-1))
  count=0;
  else
  count=count + 1;
  end
  end
  always
  begin
   if (N<=2)
   clk_out=count[0];
   else if (N<=4)
   clk_out=count[1];
   else if (N<=8)
   clk_out=count[2];
   else if (N<=16)
   clk_out=count[3];
   else if (N<=32)
   clk_out=count[4];
   else if (N<=64)
   clk_out=count[5];
   else if (N<=128)
   clk_out=count[6];
   else if (N<=256)
  
  clk_out=count[7];
  end
  endmodule
  
  3、2分频模块fenpin_2:
  module fenpin_2(clk_in,clk_out);
  input clk_in;
  output clk_out;
  reg clk_out;
  always @(posedge clk_in)
  begin
   clk_out=~clk_out;
  end
  endmodule
  
  4、最后通过元件例化的方法,调用各元件,实现通用分频器最高层设计:
  module fenpin(reset,en,sel,clk_in,clk_out,count);
  input reset,en,sel,clk_in;
  output clk_out;
  output[3:0] count;
  half_select u1(sel,clk_in,b,c);(调用half_select,元件例化)
  counter_n u2(reset,en,c,clk_out,count);(调用counter_n,元件例化)
  fenpin_2 u3(clk_out,b);(调用fenpin_2,元件例化)
  endmodule
  
  仿真结果及硬件电路测试
  
  当sel=‘0’,N=7时,实现奇数7分频。如图3所示
  当sel=‘1’,N=7时,实现半整数6.5分频。如图4所示
  由此可见,只要改变异或门选通控制sel和N的值就可实现2~256之间的任意奇数、偶数、半整数分频。本设计在Altera公司的FLEX系列EPF10K10LC84-3型FPGA构成的测试平台上测试通过,性能良好。
  
  结 语
  
  本文旨在介绍一种进行FPGA开发时,所需多种分频的实现方法,如果设计中所需分频形式较多,可以直接利用本设计,通过对程序的稍微改动以满足自己设计的要求。如果设计中需要分频形式较少,可以利用本设计部分程序,以节省资源。
其他文献
2005年中国液晶电视产量大幅增长,产量由2004年的79.6万台增长到2005年的462.5万台,增长率达到481.0%。在液晶电视产业高速增长的带动下,其关键IC市场规模也高速增长,其中驱动IC市场规模由2004年的1.2亿元增加到2005年的6.9亿元,增长了475.0%,控制IC市场规模由2004年的1.6亿元增长到2005年的7.9亿元,增长了393.8%。2004-2005年中国液晶电
期刊
计算、通信、消费电子(3C)是一个数字与模拟结伴而行的时代。数字化时代为模拟集成电路提供了更广阔的发展和应用空间。今天,3C产品对模拟器件的依赖程度不是在减弱而是在增强。模拟与数字集成电路的精确组合为人们的工作、生活带来了对现实世界的完美体验。2005年模拟集成电路市场稍有增长,专家预计2006年将迎来15%的跳跃式增长,大大超过数字市场增长的速度。  作为活跃在模拟技术领域的半导体供应商,飞思卡
期刊
随着时代的发展,我们已经进入了一个崭新的数字社会,信息技术的不断革新和应用,使越来越多的电子信息产品闯进了我们的日常生活。这些现代化的产品在给我们带来便利和时尚的同时,却也带来了各种各样的社会问题,人们在生产和使用现代化电子产品的过程中所产生的环境污染便是当下全球关注的热点问题。为此,各国纷纷出台举措,以应对电子产品生产中产生的有害物质,防止其对人类健康造成危害。例如,2003年2月,欧盟通过了《
期刊
序列ATA(Serial ATA, SATA)及序列连结SCSI(Serial Attached SCSI, SAS)两种新兴的序列技术,已逐渐取代行之有年的并行接口技术。同时,虽然光纤信道(Final Channel, FC)技术在企业储存市场中仍占有优势,但SAS技术也将在此市场中拥有一席之地。  虽然如此,在OEM厂商和客户找到下一代SAS和SATA存储产品之前,仍须面临许多挑战。首先,SA
期刊
发光聚合物P-OLED开发领导厂商并将P-OLED广泛应用在电子显示器产品上的剑桥显示技术公司(CDT),是一家于1992年在英国成立,以发展、制造并销售P-OLED材料与IP给显示器产业的公司。  P-OLED隶属于有机发光二极管的一部份,是一种质地薄、重量轻且具功率效益的组件,当电流流过时就会发光。相较于其它平面显示器技术,如液晶显示器,它们提供更为强化的视觉体验与卓越的效能特性。  在技术方
期刊
逻辑门不是惟一的竞技标准,几乎已成了众家FPGA厂商的共识。为拓展产品应用范围,哪怕已是可编程器件供应界的龙头老大,赛灵思(Xilinx)仍积极推动市场多元化策略,以便让用户能根据自身需求在I/O、门电路、性能和灵活性之间找到最佳的平衡点。可喜的是,该策略已获明显得成效。将赛灵思2005年的营收情况与先前做一对比,会发现一个意味深长的现象:该公司不仅在数字上再创新高,大有朝20亿美元关卡迈进之势;
期刊
在设计高可靠性系统时,无论是陆地、航空或太空应用,设计人员都必须非常小心地选择器件技术。如果选择不当会导致FIT(Failures In Time)大幅度提高,即使基站应用也不例外。  军事和航空设计人员认识到半导体器件存在单事件翻转(Single Event Upset;SEU)效应,以及基于SRAM技术器件的相关软错误率(Soft Error Rate;SER)。SEU的发生是由于带电的亚原子
期刊
从避免交通事故发生的主动式安全系统,到保护驾乘者的被动式安全系统,如今随着信息通信科技的发展,车辆安全的定义也慢慢扩展至车祸意外发生后的紧急救援服务上。现在欧盟正在进行一项计划,要求每辆自2009年9月之后出厂的新车都需具备eCall(紧急救援服务)的功能。由于此项计划是由政府部门带动,所以启动后将衍生出庞大的商机,除了基本的硬设备外,在这一个平台上还已具备提供其它Telematics服务的雏形。
期刊
在过去的几年间,通用串行总线(USB)已经让连接个人计算机与计算机外设变得越来越容易,它以低成本、易于采用与稳定的接口来传输数据,已经成为多种产业都可接受的方式,如同UART与RS-232通信协议在20世纪末期主宰着嵌入式系统的串行数据接口一样,USB无疑地已经是21世纪的嵌入式系统的标准串行接口。  相较于RS-232,负责实行的工程师在想要实行USB接口时,仍在这个过渡时期需要额外的专业知识与
期刊
随着微处理机、多媒体和网络技术的不断发展,以及当今多任务操作系统和功能丰富的应用程序产生,人们对微机系统的I/O带宽不断提出新的要求,原有的标准总线如ISA,EISA和MC已经逐渐不能满足数据高速传输的要求,成为阻塞计算机系统性能的瓶颈。PCI总线具有高数据传输率、独立于处理器、支持多个外设等独特性能,越来越受到计算机厂家和工程开发人员的青睐。目前,PCI总线是Pentium主机最常见的总线,已经
期刊