开封大学机电工程学院 侯 静
EDA是将数字系统以某一种特定的表达方式输入计算机开发平台进行处理,经由综合,仿真,下载到目标芯片,最终实现设计的智能化设计技术。其中输入文件的种类众多,有原理图输入法、硬件描述语言输入法、状态图输入法、波形输入法等。
硬件描述语言(HDL)是EDA技术的重要组成部分,是设计数字系统的重要表达手段,和原理图输入法,波形输入法相比,具有灵活度高,易于修改、升级,方便调用,库资源丰富等优点。常见的HDL主要有VHDL、Verilog HDL、ABEL、AHDL等,其中标准化语言VHDL、Verilog使用最广泛,可以被几乎所有的EDA工具支持。
可变模计数器是数字系统中广泛应用的一种电路模块,本文讨论了一种基于VHDL语言实现的可变模计数器的EDA设计方案,采用FPGA芯片作为设计载体,FPGA具有在线可重构的优点,如需对计数器的技术指标进行修改,只需修改源程序中的相应参数,重新进行编译、仿真、配置即可,使得系统本身灵活性好,便于升级和维护。
本文设计的计数器为5位输出可变模计数器,采用两位控制信号选择计数的模值,因此可进行四种模值的切换。计数器在工作时,可以通过控制信号m[1∶0]的值选择相应的模值m,计数时,在每个时钟的上升沿进行加法计数,从0计到m-1,然后自动归零循环计数。在本设计中,输出端口为5位,可以实现模小于等于32的计数应用。如果需要增可选择模值的数量,只需要增加选择控制信号位数即可。随着模值的增大,还可以相应增加输出端口信号的位数来对应。
在本设计中,采用VHDL语言进行源程序的设计,源程序由实体和结构体两个部分组成,在实体中定义了系统的输入输出端口,在结构体中行描述了计数器的逻辑功能。令两位控制信号分别为m1、m0,计数脉冲为clk输入时钟信号,计数值输出为5位二进制信号y。假设当控制信号m[1∶0]=0时,进行模19计数;m[1∶0]=1时,进行模4计数;m[1∶0]=2时,进行模10计数;m[1∶0]=3时,进行模6计数.该程序通过信号传递参数,如果想修改计数器的功能指标,只需要修改源程序中相应的端口参数和信号参数即可,修改设计非常方便、灵活。采用VHDL描述的源程序如下:
以上源程序在集成开发环境下通过综合和适配,将行为和功能的高层次表达转换为门电路的低层次表达,最终在硬件上实现系统功能。
将编写好的源程序与实体名variable_m同名保存在工程项目路径下,文件名后缀为.vhd。本设计采用的芯片是Altera公司的Flex10k系列FPGA芯片EPF10K30ETC144-1,源文件通过编译后系统的提示编译成功,如图1所示。
建立波形仿真文件,设置控制信号m[1∶0]的值分别为0和,2,在仿真窗口观察仿真波形,仿真结果正确。仿真波形见图2、图3。
图1
图2
图3
在本文编写的源程序中,输出端口y的范围定义为0到20,是由于计数的模最大设置为19的缘故,这个定义在源程序编译后,会由编译器自动生成一个5位二进制的输出端口,即实际的输出端计数范围是0到31,而源程序中设定的计数模最大不能超过32。如果需要增加计数模的值,在定义端口y的时候,就要增大y的输出范围,而系统进行编译的时候会自动生成相应位数的输出端口,从这点来看,VHDL语言设计的灵活性要远远好于原理图输入法、状态图输入法、波形输入法。
[1]潘松,黄继业.EDA技术实用教程[M].北京:科学出版社,2002.
[2]杨晓慧,杨永健.基于FPGA的EDA/SOPC技术与VHDL[M].北京:国防工业出版社,2007.
[3]谭会生,瞿遂春.EDA技术综合应用实例与分析[M].西安:西安电子科技大学出版社,2004.
[4]吴继华,王诚.Altera FPGA/CPLD设计(高级篇)[M].北京:人民邮电出版社,2005.