微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 硬件工程师文库 > 基于Xilinx FPGA和VHDL的数字秒表设计与仿真实现

基于Xilinx FPGA和VHDL的数字秒表设计与仿真实现

时间:11-25 来源:互联网 点击:

not temp;

  end if ;

  end process;

  2.4 译码显示模块

  由上面的设计可知,计数器输出为二进制码,不能直接点亮数码管,要想将计数结果通过数码管显示必须再设计一个七段译码电路,以便将计数结果输出。通过分析可知该译码器是一个4输入,7输出元件,其真值表如表1所示:

  

  根据以上真值表可写出译码电路VHDL源程序如下:

  process(datainput)

  begin

  case datainput is

  when "0000"=>dataoutput<="0000010";

  when "0001"=>dataoutput<="1001111";

  when "0010"=>dataoutput<="0010001";

  when "0011"=>dataoutput<="0000101";

  when "0100"=>dataoutput<="1001100";

  when "0101"=>dataoutput<="0100100";

  when "0110"=>dataoutput<="0100000";

  when "0111"=>dataoutput<="0001111";

  when "1000"=>dataoutput<="0000000";

  when "1001"=>dataoutput<="0000100";

  when others=>dataoutput<="1111111";

  end case;

  end process;

  3 功能验证以及下载实现

  完成以上各个子模块的设计后,该数字秒表的模块设计就基本完成了,剩下的工作就是通过一个顶层文件将各个子模块连接起来。在顶层文件中可以将以上各个子模块看作一个个黑匣子,只将其输入输出端对应相连就可以了。下面是该顶层文件的VHDL源程序:

  architecture Behavioral of topfile is

  signal clk:std_logic:=‘0’;

  signal enableout:std_logic:=‘0’;

  signal data0,data1,data2,

  data3,data4,data5:std_logic_vector(3

  downto 0):="0000";

  component abc

  port(clk:in std_logic;

  dout:out std_logic);

  end component;

  component enable

  port(enablein:in std_logic;

  enableout:out std_logic);

  end component;

  component highlevel

  port(rst,clk,clear:in std_logic;

  output1,output2,output3,

  output4,output5,output6:out

  std_logic_vector(3 downto 0);

  carryout:out std_logic);

  end component;

  component yima

  port(datainput:in std_logic_vector(3 downto 0);

  dataoutput: out std_logic_vector(6 downto 0));

  end component;

  begin

  u0:abc port map(clkin,clk);

  u1:enable port map(enablein,enableout);

  u2:highlevel port map(enableout,clk,clear,data0,data1,data2,data3,data4,data5);

  u3:yima port map(data0,dataout0);

  u4:yima port map(data1,dataout1);

  u5:yima port map(data2,dataout2);

  u6:yima port map(data3,dataout3);

  u7:yima port map(data4,dataout4);

  u8:yima port map(data5,dataout5);

  end Behavioral;

  由于各个子模块都已经经过验证无误,并且顶层文件中不涉及复杂的时序关系,相当于只是将各个模块用导线连接起来,只要各个端口的连接对应正确即可,所以不需写专门的test bench进行验证。完成以上设计后,即可进行逻辑综合,综合无误后进行管脚适配,生成。bit文件然后下载到实验板上测试。经过反复多次测试,以上设计完全满足了预期的设计指标,开始/停止按键和清零按键都能准确的控制秒表的运行,七段显示数码管也能够准确的显示计时结果。通过与标准秒表对比,该设计的计时误差在0.03s以内,而这其中也包括实验板上晶振由于长期使用所带来的误差。

  4 结束语

  本文所介绍数字秒表设计方法,采用了当下最流行的EDA设计手段。在Xinlinx FPGA开发环境下,采用至上而下的模块化设计方法,使得系统开发速度快、成本低、系统性能大幅度提升。通过实验验证,本文设计的数字秒表计时准确、性能稳定,可以很容易嵌入其他复杂的数字系统,充当计时模块。

  利用EDA设计工具,结合基于FPGA的可编程实验板,轻松实现电子芯片的设计,现场观察实验结果,大大缩短了产品的设计周期和调试周期,提高了设计的可靠性和成功率,体现了逻辑器件在数字设计中优越性。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top