1、 计时电路执行时功能,计时的方法是对标准时钟脉冲计数。由于计时范围是0秒到59分59.99秒,所以计数器可以由四个十进制计数器和两个六进制计数器构成,其中毫秒为,十毫秒位,秒位和分位采用十进制计数器,十秒位和十分位采用六进制计数器。该部分电路由三个计数器构成,毫秒计数器,秒计数器及分计数器。3.显示模块 计时显示电路的作用是将计时值在LED七段数码管上显示出来。计时电路产生的计时值经过BCD七段译码后,驱动LED数码管。计时显示电路的实现方案采用扫描显示,每次只驱动一位数码管,各位数据轮流驱动对应的数码管进行显示。四、硬件电路的调试 写好程序后在试验板上利用ISE软件进行调试,调试步骤如下:1
2、、 建立项目工程建立新的项目工程,选择【File】,再选择【New Project】,如图就可以了。2、 新文件的输入 【project】【new source】,如下图输入文件名。 3、 程序语法检查:点中源文件,3,编入程序。4、 双击处理窗中的Check Syntax。查看报告窗,并对错误进行修改,再运行Check Syntax,直到报告窗为Successfully。5、 管脚适配:Sources for设置为Synthesis.,选中要适配的文件,双击处理窗中的Assign Package Pinstripe,该操作会提示生成一个.ucf文件,选是。对照IO口对应管脚把管脚分配好,并保
3、存。6、 文件编程及文件下载实现:退回源窗和处理窗,选中下载文件,云新处理窗Gennerate Programming File,生成.Bit下载文件,关闭产生的对话框Xinlinx Webtalk Dialog。连接开发板,打开电源,点中下载源文件,双击处理窗中的Configure Device。选JTAG模式,点Finish。配置窗口中选BIT下载文件,点Open,观点第三方存储下载文件窗口。如下图:点左边的下载标志,点击鼠标右键,运行Program程序开始下载,直到出现Program Succeeded,观察开发板上所编文件的执行情况。五,部分仿真波形1.频率控制模块仿真波形图2.十进制
4、计数器模块仿真波形图3.译码显示模块波形仿真图六、对自行设计的产品总结与评价采用常规电路设计数字秒表,所用的器件较多、连线比较复杂,而且存在延时较大、测量误差较大、可靠性低的缺点。采用复杂可编程逻辑器件,以EDA工具为开发手段、运用VHDL语言编程进行数字频率计的设计,将在使系统大大简化的同时,提高仪器整体的性能和可靠性。我们设计的用FPGA实现的6位数字秒表测频系统,能够用数码显示被测信号的频率。我们采用VHDL语言编程,用Quartus II集成开发环境进行波形仿真、编译,并下载到FPGA中。FPGA的功耗低、速度快。经测试,该系统性能可靠、测量精确。不过本系统还有以下几点缺陷:1)不能自
5、适应量程,实现自动转换功能。2)测量的频率范围有限。七、实习心得与体会 因为首次接触FPGA语言,所以做起来还是有点困难,期间和同学讨论学习很多,有些问题通过查阅相关书籍也得到了解决。 在设计过程中,首先要明确实验目的,弄清实验思路,把实验原理详细的表达出来,然后通过查阅资料取其中的几种设计方案,再根据实验要求和实验的实际可操作性定下最终的设计方案。在设计过程中通过自主独立的发现问题,设计实验,操作,调查,搜索与处理信息等而获得知识,技能的发展。特别是培养了探索精神和创新能力的发展的学习方式和学习过程。这次课程设计的整个过程让我受益良多。在实验过程中学会了对自己的实验进展,试验方法做自我监控,
6、自我反馈和自我调节,在实验的最后学会了对自己的实验结果进行自我检查,自我总结,自我评价和自我补救。 对于在课程设计过程中碰到的一些问题,在自己一个人无法独立解决的时候可以通过查阅相关资料或请同学帮忙,在此过程中也培养了团队合作精神。虽然设计过程不是一帆风顺,遇到了很多问题,但整个过程让我学到了很多平时没学到的知识。通过这次设计更进一步的提高了我的思维能力,动手能力,增强了对电子专业学习的兴趣。希望以此为起点,在以后的学习中能更积极的动脑动手,提高自己的综合能力,为以后的发展打下坚实的基础。八、参考文献1.程源,祝洪峰.基于FPGA的数字频率计的设计与制作J.电子制作,2008,(01):343
7、62. 王凤英. 基于FPGA的数字频率计设计与仿真J.科技资讯,2008,(33):193.潘松,黄继业.EDA技术实用教程(第三版)M.北京:科学出版社,2008.4 陈尚志,胡荣强, 胡合松.基于FPGA自适应数字频率计的设计J.中国测试计术2007,(02):141144.5 王戎丞,陈可中,明鑫.基于VHDL的数字频率计的设计与实现J.现代电子技术,2005,(15):102104.附件:程序清单- Company:- Engineer:- - Create Date: 16:39:31 09/06/2011 - Design Name:- Module Name: CLOCKmai
8、n - Behavioral - Project Name:- Target Devices:- Tool versions:- Description:- Dependencies:- Revision:- Revision 0.01 - File Created- Additional Comments:library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;- Uncomment the following library declarati
9、on if instantiating- any Xilinx primitives in this code.-library UNISIM;-use UNISIM.VComponents.all;entity CLOCKmain is Port ( CLK : in STD_LOGIC; RESET : BEGIN_AND_STOP : DISPLAY : out STD_LOGIC_VECTOR (7 downto 0); CHO : out STD_LOGIC_VECTOR (2 downto 0); enable :out std_logic);end CLOCKmain;archi
10、tecture Behavioral of CLOCKmain iscomponent cnt10 Port ( clk : reset : in std_logic; dat_out : out STD_LOGIC_VECTOR (3 downto 0); C : out std_logic);end component;component cnt6component cnt8 Port ( clks : out STD_LOGIC_VECTOR (2 downto 0);component disp Port ( chos : in STD_LOGIC_VECTOR (2 downto 0
11、); input1 : in STD_LOGIC_VECTOR (3 downto 0); input2 : input3 : input4 : input5 : input6 : display : out STD_LOGIC_VECTOR (7 downto 0);component clock enable:in std_logic; clks : out STD_LOGIC);signal c1:std_logic;signal c2:signal c3:signal c4:signal c5:signal c6:signal display1:std_logic_vector(3 d
12、ownto 0);signal display2:signal display3:signal display4:signal display5:signal display6:signal display_temp:std_logic_vector(7 downto 0);signal clks:signal cho_temp:std_logic_vector(2 downto 0);signal begin_and_stop_temp:beginU0:clock port map(clk=CLK,enable=begin_and_stop_temp,clks=clks);U1:cnt10
13、port map(clk=clks,reset=reset,dat_out=display1,C=c1);U2:c1,reset=display2,C=c2);U3:c2,reset=display3,C=c3);U4:cnt6 port map(clk=c3,reset=display4,C=c4);U5:c4,reset=display5,C=c5);U6:c5,reset=display6,C=c6);U7:disp port map (chos=cho_temp,input1=display1,input2=display2,input3=display3,input4=display
14、4,input5=display5,input6=display6,display=display_temp);U8:cnt8 port map (clks=CLK,dat_out=CHO_temp);enable=0;DISPLAY=display_temp;CHO=cho_temp;process (BEGIN_AND_STOP) if rising_edge(BEGIN_AND_STOP) then begin_and_stop_temp=not begin_and_stop; end if;end process;end Behavioral; 15:41:44 08/29/2011
15、clock - Behavioral entity clock isin STD_LOGIC;end clock;architecture Behavioral of clock issignal temp :integer range 0 to 500000;signal cls : process (clk) begin if (rising_edge(clk) and enable= then temp=temp+1; if temp=480000 then=0; cls=not cls; clks=cls; 14:20:03 08/29/2011 cnt10 - Behavioral
16、entity cnt6 isPort ( clk :end cnt6;architecture Behavioral of cnt6 is signal count_temp:std_logic_vector (3 downto 0):=0000count:process (clk,reset) if reset= count_temp elsif (rising_edge (clk) then count_temp=count_temp+1; if count_temp=0101 then count_temp C1 else end if; dat_out=count_temp;52:02 08/29/2011 cnt8 - Behavioral entity cnt8 isend cnt8;architecture Behavioral of cnt8 issignal temp:std_logic_vector (2 downto 0);process(clks) if(rising_edge(clks) thendat_out=temp;- Project Name
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1