新闻中心

EEPW首页>EDA/PCB>设计应用> VHDL设计中电路简化问题的探讨

VHDL设计中电路简化问题的探讨

作者:朱明程 林欣荣 时间:2008-06-25 来源:电子技术应用 收藏

  ctemp<=″00000001″;??

本文引用地址://m.amcfsurvey.com/article/84777.htm

  elsif(count3=″001″)then

  ctemp<=″00000010″;??

  elsif(count3=″010″)then

  ctemp<=″00000100″;??

  elsif(count3=″011″)then

  ctemp<=″00001000″;??

  elsif(count3=″100″)then

  ctemp<=″00010000″;??

  elsif(count3=″101″)then

  ctemp<=″00100000″;??

  elsif(count3=″110″)then

  ctemp<=″01000000″;??

  elsif(count3=″111″)then

  ctemp<=″10000000″;??

  else

  ctemp<=″00000000″;??

  endif;??

  endif;??

  endprocess;??

2.第二种设计方法的源程序

  process(clk,ctemp,count)

  begin

  if(clk='1'andclk'event)then

  count<=count+1;??

  if(count=″00000000000000000″)then

  ctemp<=″00000001″;??

  elsif(count=″001000000000000000″)then

  ctemp<=″00000010″;??

  elsif(count=″010000000000000000″)then

  ctemp<=″00000100″;??

  elsif(count=″011000000000000000″)then

  ctemp<=″00001000″;??

  elsif(count=″100000000000000000″)then

  ctemp<=″00010000″;??

  elsif(count=″101000000000000000″)then

  ctemp<=″00100000″;??

  elsif(count=″110000000000000000″)then

  ctemp<=″01000000″;??

  elsif(count=″111000000000000000″)then

  ctemp<=″10000000″;??

  endif;??

  endif;??

  endpeocess;??

  对于第一种的程序可以综合出的如图1所示。

  该用一个15位的加法器和寄存器组成一个15位的记数器。在记数器记完一周回到“000000000000000”时,通过后面的15输入的与非门和一位的触发器就可以实现同步的进行215次分频,同步输出32Hz的时钟CCLK。CCLK再驱动一8位的移位寄存器,便可实现每32秒输出一信号。

  而用第二种的程序设计综合出的如图2所示。

  图2所示的电路用一个18位的加法器和寄存器组成一个18位的记数器。后接了8个18输入的逻辑门和8输入的或门。输入的1kHz时钟经过记数器被分频,其中有八个相隔32Hz的记数状态,逻辑门就负责把这八状态译码成所需的八组信号。译码后的数据通过选择器输出到8位的触发器,以实现同步输出。还有个锁存器,是用来保持输出信号不变,在八个状态中的从一个状态变到下一个之前,保持前一个的数值。选择器当逻辑门输出新的数据时让其输出数据通过,在新数据到来之前输出锁存器的数据。

  以上两种方法都能实现相同的逻辑功能,但图2所示的方法由于运用了较少位数的记数器,所用的逻辑门也较简单,而且还少用了多路选择器和锁存器资源,所以综合出来的电路较简单,以XILINX SpartanS05-3芯片为例。第一种方法占用芯片CLB的12%,其中FMAPS为9%,最高工作速度为82Hz。而第二种方法占用了15%的CLB,FMAPS占用15%,最高工作速度只有69.9MHz。在这一个简单的设计之中就能省20%的电路,提高12.1MHz的工作速度,由此可见科学的划分设计对降低电路复杂程度的重要意义。

DIY机械键盘相关社区:机械键盘DIY




评论


相关推荐

技术专区

关闭