基于VHDL的可逆计数器的设计与实现 下载本文

龙源期刊网 http://www.qikan.com.cn

基于VHDL的可逆计数器的设计与实现

作者:张喜凤 屈宝鹏

来源:《价值工程》2016年第04期

摘要: 计数器作为一种数据采集设备,是各领域测量系统的重要组成部分,它在时钟、定时器、分频电路、状态机等应用中都有应用。针对传统计数器功能单一,电路复杂、调试困难,设备升级、维护成本高的缺点,研究开发了一种基于VHDL的同步二进制可逆计数器,可实现可逆计数,并且可以灵活的调整计数器的位数;并通过实验测试验证了该设计的可行性及准确性,也为使用VHDL设计其他的器件提供了参考和依据。

Abstract: As a kind of data acquisition equipment, counter is an important part of the measurement system in every field. It is used in the clock, timer, frequency division circuit, state machine and other applications. Aimed at the shortcomings of traditional counter, such as the single function, complex circuit, difficult debugging, high cost of the equipment upgrades and maintenance, a kind of binary reversible synchronous counter based on VHDL is developeded. It can realize reversible counting and can flexibly adjust the counter digits. The feasibility and accuracy of the design is verified by the experimental tests. It also provides the reference and basis for the design of other device by using VHDL. 关键词: VHDL;可逆;FPGA;计数器 Key words: VHDL;reversible;FPGA;counter

中图分类号:TN47 文献标识码:A 文章编号:1006-4311(2016)04-0093-02 0 引言

计数器电路是常见的一种数字电路,有着极为广泛的应用,可以作为电路最基本时钟的信号输入,可以以此为基础配合拓展其它的信号,也可以配合其它电路一起使用,计数器电路还可用于电路的测试等[1]。可逆计数器可以执行加法计数,也可以进行减法计数,它拓展了计数器的使用范围,可作为整机配套器件使用,用来产生更多用途的信号。

传统计数器功能单一,电路复杂、调试比较困难,一旦结构确定,就很难更改,设备升级难度大、维护成本比较高,针对这些问题本文研究开发了一种基于VHDL的同步二进制可逆计数器,可实现可逆计数,并且可以通过修改程序的方法,灵活的调整计数器的位数;并通过实验测试验证了该设计的可行性及准确性,也为使用VHDL设计其他的器件提供了参考和依据。

1 设计思路

龙源期刊网 http://www.qikan.com.cn

计数器是时序应用电路中十分普遍的应用部件[3],例如,时钟、定时器、分频电路、状态机等应用设计都能看到计数器的踪迹。计数器的原理是:每次时钟脉冲信号为上升沿或下降沿时,计数器就会将计数值加1或减1。

针对计数器的原理,可以设计出可逆计数器的真值表。要实现二进制计数的可逆计数,必须设置可逆计数的信号端子,在文中设置的可逆计数端子名称为updn,当清零信号无效且置数信号无效时,时钟信号上升沿到来时,当updn=1为加法计数,当updn=0为减法计数。当时钟下降沿到来时,保持原来的状态不变。 2 基于VHDL的电路设计与实现 2.1 芯片的选择

设计选用了Altera公司的Cyclone Ⅱ系列FPGA(现场可编程门阵列)芯片

EP2C20F484C7,FPGA器件具有下列优点:高密度、高速率、系列化、标准化、小型化、多功能、低功耗、低成本、设计灵活方便,可无限次反复编程,并且可现场模拟调试验证。使用FPGA器件,一般可在几天到几周内完成一个电子系统的设计和制作[4],可以缩短研制周期,达到快速上市和进一步降低成本的要求。 2.2 硬件描述语言的实现

芯片一旦选定,就可以使用硬件语言设计计数器了。同步可逆二进制计数器的设计思路是:每次时钟脉冲信号为上升沿时,计数器就会将计数值加1或减1。一个N位的计数器其计数范围是2N,即0~2N-1。下面是使用VHDL语言设计一个四位的二进制可逆计数器。在QuantusⅡ平台中可以采用文本输入、原理图输入、波形输入等多种输入方式进行文件的输入。本文首先在软件中建立一个名为test31的工程,然后采用文本输入的方式,在

QuantusⅡ9.0软件中输入以下VHDL代码,进行可逆计数器的设计描述,保存为test31.vhd的形式。通过对其进行编译及仿真验证可以验证其正确性。 二进制可逆计数器的VHDL代码如下: LIBRARY IEEE;

USE ieee.std_logic_1164.ALL; USE ieee.std_logic_unsigned.ALL;

ENTITY test31 IS ----建立一个实体描述可逆计数器的输入输出端子 PORT(clk,clr,s,en,updn:IN std_logic;

龙源期刊网 http://www.qikan.com.cn

d:in std_logic_VECTOR(3 DOWNTO 0); co:OUT std_logic;

q:buffer std_logic_VECTOR(3 DOWNTO 0)); END test31;

ARCHITECTURE one OF test31 IS BEGIN

PROCESS(clk,clr) BEGIN if clr='1' then q

elsif clk'event and clk='1' then if s='1' then q elsif en='1' then if updn='1' then if q=\ else q end if;

elsif updn='0' then if q=\ else q end if; end if; end if;