

4.5 8位十进制等精度数字频率计顶层文件设计
若按传统的设计方法,完成8位十进制数字频率计需用上述的四种器件共计十几块芯片构成,不仅体积大, 而且因外接引脚多,影响可靠性。而采用EDA技术,整个设计分仅两步:第一步,先用VHDL语言分别编写出以上四种器件的文本文件(称为底层文件),并将它们分别转换成相应的器件,然后分别进行时序仿真,使每个器件的时序仿真结果与设计要求一致;第二步,将这四种器件共十几块芯片以电路图形式连接起来,形成顶层文件后进行整个系统的综合,并将整个频率计作为一个器件进行时序仿真。虽然采用电路图方法连接以上模块仿真的办法比较简单,但是使用这种方法存在一个较大的缺陷,那就是有可能使电路系统在工作中出现“毛刺”,从而降低系统的可靠性,而且采用这种图形化编译方法不易于复杂电路系统的维护和升级,因而这种方法只适合应用于简单电路系统里。因此,最终的顶层文件最好是用纯文本形式来编写,即用 VHDL语言来描述十几块芯片的连接,从而避免了系统在工作中出现“毛刺”现象,使系统的稳定性和可靠性均得到提高。
下面是分别采用电路图连接编译和采用纯VHDL语言编译的顶层文件比较。电路图连接编译的效果图如下所示。
图12 电路图方法编译顶层实体
Fig 12 use of circuit diagram compile entity
电路图左上的模块为测频控制信号发生器模块,左下为32位锁存器模块,中间是8个相同的10进制计数器模块,最右边的是8个相同的7段显示译码器模块,各模块的实体图如下所示。
由顶层实体图我们可以清楚地看到,频率计的结构臃肿,如果要实现频率计的计数功能,那么就一共需要18块FPGA芯片连接起来。而我们如果采用纯VHDL语言来编写顶层文件,最后实现相同的频率计计数功能就只需要一块芯片,频率计体积得到大大减小,成本也大大减少。频率计各个模块实体图如下所示。
测频控制信号发生器模块 十进制计数器模块
controller block algorism counter block
32位锁存器 7位显示译码器
32bit flip-latch 7bit display encoder
图13 各个模块实体
Fig13 block entity
下面是采用VHDL语言编写顶层文件的源程序
library ieee;
use IEEE.std_logic_1164.ALL;
use IEEE.std_logic_unsigned.ALL;
entity pin is
port(
FSIN:in std_logic;
CLK:in std_logic;
AA:out std_logic_vector(6 downto 0);
BB:out std_logic_vector(6 downto 0);
CC:out std_logic_vector(6 downto 0);
DD:out std_logic_vector(6 downto 0);
EE:out std_logic_vector(6 downto 0);
FF:out std_logic_vector(6 downto 0);
GG:out std_logic_vector(6 downto 0);转贴于 酷文网-论文下载中心 http://www.coolwen.net