基于fpga的计数器的程序设设计(编辑修改稿)内容摘要:

IF CNT8 = 11111111 THENCNT8 := DD。 当CNT8计数计满时,输入数据D被同步预置给计数器CNT8FULL = 39。 139。 同时使溢出标志信号FULL输出为高电平ELSE CNT8 := CNT8 + 1。 否则继续作加1计数FULL = 39。 039。 且输出溢出标志信号FULL为低电平END IF。 END IF。 END PROCESS P_REG。 P_DIV: PROCESS(FULL)VARIABLE CNT2 : STD_LOGIC。 BEGINIF FULL39。 EVENT AND FULL = 39。 139。 THENCNT2 := NOT CNT2。 如果溢出标志信号FULL为高电平,D触发器输出取反IF CNT2 = 39。 139。 THEN FOUT = 39。 139。 ELSE FOUT = 39。 039。 END IF。 END IF。 END PROCESS P_DIV。 END。 图2 分频器仿真波形 RTL电路图图3 分频器RTL电路图 计数器设计 计数器及其应用计数是一种最简单基本的运算,计数器就是实现这种运算的逻辑电路,计数器在数字系统中主要是对脉冲的个数进行计数,以实现测量、计数和控制的功能,同时兼有分频功能,计数器是由基本的计数单元和一些控制门所组成,计数单元则由一系列具有存储信息功能的各类触发器构成,这些触发器有RS触发器、T触发器、D触发器及JK触发器等。 计数器在数字系统中应用广泛,如在电子计算机的控制器中对指令地址进行计数,以便顺序取出下一条指令,在运算器中作乘法、除法运算时记下加法、减法次数,又如在数字仪器中对脉冲的计数等等。 计数器可以用来显示产品的工作状态,一般来说主要是用来表示产品已经完成了多少份的折页配页工作。 它主要的指标在于计数器的位数,常见的有3位和4位的。 很显然,3位数的计数器最大可以显示到999,4位数的最大可以显示到9999。 在数字电子技术中应用的最多的时序逻辑电路。 计数器不仅能用于对时钟脉冲计数,还可以用于分频、定时、产生节拍脉冲和脉冲序列以及进行数字运算等。 但是并无法显示计算结果,一般都是要通过外接LCD或LED屏才能显示。 计数器源程序及其仿真 (1) 十进制计数器加数的合法设计范围为0到9,故当输入的加数大于9的时候要将其统一变换成0。 本实验采用一个带有异步复位和同步时钟使能的十进制加法计数器,这种计数器有许多实际的用处。 如果rst为“1”,将对时钟清零;如果为1,且有clk信号,则允许计数器就数,若计数器小于9,计数器加1,否则清零。 第二个if语句功能是当计数器cqi的只达到9时产生进位溢出信号。 library ieee。 use。 use。 entity t10 is port (rst,clk,ena:in std_logic。 cout: out std_logic。 outy :out std_logic_vector(3 downto 0))。 end t10。 architecture behv of t10 isbeginprocess (rst,ena,clk)variable cqi :std_logic_vector(3 downto 0)。 beginif rst=39。 139。 then cqi :=(others =39。 039。 )。 elsif clk39。 event and clk=39。 139。 thenif ena =39。 139。 thenif cqi 9 then cqi:=cqi+1。 cout=39。 039。 elsif cqi=9 thencqi :=(others =39。 039。 )。 cout=39。 139。 end if。 elsif ena=39。 039。 then cqi:=(others =39。 039。 )。 end if。 end if。 outy =cqi。 end process。 end behv。 图4 十进制计数器仿真波形(2)四位计数器下面是一含计数使能、异步复位功能的4位计数器, rst是异步清信号,高电平有效。 library ieee。 use。 entity t10_4 isport(clkk,rst,ena:in std_logic。 d:out std_logic_vector(15 downto 0))。 end entity。 architecture one of t10_4 isponent t10 port (rst,clk,ena:in std_logic。 cout: out std_logic。 outy :out std_logic_vector(3 downto 0))。 end ponent。 signal e:std_logic_vector(3 downto 0)。 beginu1:t10 port map(clk=clkk,rst=rst,ena=ena,cout=e(0),outy=d(3 downto 0))。 u2:t10 port map(clk=e(0),rst=rst,ena=ena,cout=e(1),outy=d(7 downto 4))。 u3:t10 port map(clk=e(1),rst=rst,ena=ena,cout=e(2),outy=d(11 downto 8))。 u4:t10 port map(clk=e(2),rst=rst,ena=ena,cout=e(3),outy=d(15 downto 12))。 end architecture one。 锁存器设计 锁存器及其应用所谓锁存器,就是输出端的状态不会随输入端的状态变化而变。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。