计数器电路是常见的一种数字电路,有着极为广泛的应用,可以作为电路最基本时钟的信号输入,可以以此为基础配合拓展其它的信号,也可以配合其它电路一起使用,计数器电路还可用于电路的测试等。本文主要针对基于VHDL的可逆计数器的设计与实现进行了一些研究,文章是一篇工业设计论文发表范文。
摘要: 计数器作为一种数据采集设备,是各领域测量系统的重要组成部分,它在时钟、定时器、分频电路、状态机等应用中都有应用。针对传统计数器功能单一,电路复杂、调试困难,设备升级、维护成本高的缺点,研究开发了一种基于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 引言
可逆计数器可以执行加法计数,也可以进行减法计数,它拓展了计数器的使用范围,可作为整机配套器件使用,用来产生更多用途的信号。
传统计数器功能单一,电路复杂、调试比较困难,一旦结构确定,就很难更改,设备升级难度大、维护成本比较高,针对这些问题本文研究开发了一种基于VHDL的同步二进制可逆计数器,可实现可逆计数,并且可以通过修改程序的方法,灵活的调整计数器的位数;并通过实验测试验证了该设计的可行性及准确性,也为使用VHDL设计其他的器件提供了参考和依据。
1 设计思路
计数器是时序应用电路中十分普遍的应用部件[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;
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<="0000";co<='0';
elsif clk'event and clk='1' then
if s='1' then q<=d;
elsif en='1' then
if updn='1' then
if q="1111" then q<="0000";co<='1';
else q<=q+1;co<='0';
end if;
elsif updn='0' then
if q="0000" then q<="1111";co<='1';
else q<=q-1;co<='0';
end if;
end if;
end if;
end if;
END PROCESS;
END ARCHITECTURE one ;
2.3 仿真验证
以上述的test.vhd为基础,建立波形仿真文件,就可以验证其功能是否实现。设置仿真结束时间为1μs,CLK的周期为10ns,二进制可逆计数器的功能仿真输出波形如图1所示。
由图1可以看出,当clr信号有效时,输出q和co为零;当clr无效时,计数器正常工作。当置数信号s有效为1时,计数器的输入信号d有效,从d的输入数值开始计数,图中的输入数值为5,即0101,此时可以看出updn信号为1,即做加计数,每来一个时钟上升沿,加1直到15即1111为止,此时产生进位信号co=1。当updn为0时,开始减法计数直到减到0为止。从以上的分析可以看出用VHDL设计的可逆计数器很好地实现了可逆计数的功能,同时在功能扩展方面也非常的方便,把外部计数的端子接到d端子上,就可以实现任意场合的计数,把在程序中位数修改,就可以实现任意数值的计数。
3 编程与FPGA下载验证
在仿真验证结束后,就可以对编写的VHDL代码进行硬件的编程及下载验证。本文采用的是ALTERA公司的DE1开发板的CycloneⅡ EP2C20F484C7 FPGA芯片进行了硬件实现。DE1平台上内嵌了USB Blaster下载组件,可以通过一条USB连接线与电脑相连,并且通过两种模式配置FPGA[5]:一种是JTAG模式,通过USB Blaster直接配置FPGA,但掉电后FPGA中的配置内容会丢失,再次上电需要用电脑对FPGA重新配置;另一种模式是在AS模式下,通过USB Blaster对DE1平台上的串行配置器件EPCS16进行编程,平台上电后,EPCS16自动配置FPGA。
文中采用的是JTAG的模式进行FPGA配置。在进行器件的选择时选择CycloneⅡ系列中的芯片 EP2C20F484C7 型号;pin脚选择时,输入端口分配的是开发板上的拨码开关,以便方便设置输入的高低电位;输入端口CLK分配一个时钟信后端口,由于平台自带的时钟信号频率都较高,分别为24MHz,50MHz,27MHz,所以为了方便观察输出结构,需要在原程序的基础上再加一段分频器程序,使频率降低以便观察结果;输出端口co分配一个红色LED灯LEDR0的pin脚;为了观测计数器输出的数值,需要再加一段数码显示的程序。在编程器中,单击start按钮,开始编程,编程结束之后,观察DE1板上数码管的数据,可以看出其很好的实现了可逆计数。
4 结束语
本文利用QuantusⅡ软件平台,使用VHDL硬件描述语言结合FPGA芯片来设计二进制同步可逆计数器,方便快捷,简单有效,易于实现,电路扩展性强,修改方便。QuantusⅡ软件交互性强,易于使用,DE1平台作为一个非常完善的FPGA设计平台,具有强大的功能特性,能够设计多款电路系统,拓展性强,其在电子系统的设计和实现中占据着越来越重要的地位。
参考文献:
[1]张寅,赵剡,秦超.基于FPGA的通用可逆计数器的设计及实现[J].计量与测试技术,2010,37(12).
[2]王永军,李景华.数字逻辑与数字系统[M].北京:电子工业出版社,2005.
[3]李秀霞,李兴保,王心水.电子系统EDA设计实训[M].北京航空航天大学出版社,2011.
[4]樊昌信,曹丽娜.通信原理[M].六版.北京:国防工业出版社,2008.
[5]潘松,黄继业.EDA技术实用教程[M].二版.北京:科学出版社,2005.
工业设计论文发表期刊推荐《山东科技大学学报》为自然科学、工程技术综合性理论刊物,以促进科学技术发展,培育科技人才、服务于两个文明建设为办刊宗旨。创刊20多年来,取得了良好的社会效益和经济效益,多次获奖,并被国内外10个重要检索系统和数据库收录。《山东矿业学院学报》现用刊名《山东科技大学学报(自然科学版)》。