基于FPGA的数字秒表的设计

合集下载

基于FPGA数字秒表设计(完整资料).doc

基于FPGA数字秒表设计(完整资料).doc

此文档下载后即可编辑目录1.秒表设计要求 (1)2.设计思路 (1)2.1功能模块 (1)2.1.1分频器 (1)2.1.2计数器 (1)2.1.3数据锁存器 (2)2.1.4控制器 (2)2.1.5扫描显示的控制电路 (2)2.1.6显示电路 (3)2.1.7按键消抖电路 (3)3.电路实现 (4)4.程序仿真 (13)4.1分频器 (13)4.1.1计数器电路综合 (15)4.1.2计数器电路仿真 (15)4.2同步计数器 (17)4.2.1计数器实现 (17)4.2.2计数器仿真 (20)4.2.3同步计数器电路综合 (22)4.3按键消抖电路 (23)4.3.1按键消抖电路实现 (23)4.3.2按键消抖电路仿真 (24)4.3.3按键消抖电路综合 (26)4.4八段译码器 (27)4.4.1八段译码器实现 (27)4.4.2八段译码器仿真 (28)4.4.3八段译码器电路综合 (28)4.5控制器 (30)4.5.1控制器 (30)4.5.1控制器仿真 (31)4.5.3控制器电路综合 (33)5.2View Technology Schematic : (34)5.3管脚锁定: (35)6.实验结论 (35)1.秒表设计要求(1)秒表的计时范围为00:00:00 ~ 59:59:99。

(2)两个按钮开关Start/Stop和Split/Reset,控制秒表的启动、停止、分段和复位:在秒表已经被复位的情况下,按下“Start/Stop”键,秒表开始计时。

在秒表正常运行的情况下,如果按下“Start/Stop”键,则秒表暂停计时;再次按下该键,秒表继续计时。

在秒表正常运行的情况下,如果按下“Split/Reset”键,显示停止在按键时的时间,但秒表仍然在计时;再次按下该键,秒表恢复正常显示。

在秒表暂停计时的情况下,按下“Split/Reset”键,秒表复位归零。

2.设计思路2.1功能模块2.1.1分频器对晶体振荡器产生的时钟信号进行分频,产生时间基准信号2.1.2计数器对时间基准脉冲进行计数,完成计时功能2.1.3数据锁存器锁存数据使显示保持暂停2.1.4控制器通过产生锁存器的使能信号来控制计数器的运行、停止以及复位设计分析:2.1.5扫描显示的控制电路包括扫描计数器、数据选择器和7段译码器,控制8个数码管以扫描方式显示计时结果,原理图如下:实验电路板上的按键2.1.6显示电路2.1.7按键消抖电路消除按键输入信号抖动的影响,输出单脉冲按键按下时,FPGA 的输入为低电平;松开按键时,FPGA 的输入为高电平但是在按下按键和松开按键的瞬间会出现抖动现象2.2电路框图3.电路实现 ---------------------------------------------------------------------------------- 实验板上的数码管为共阳LED数码管-- Company:-- Engineer:---- Create Date: 09:08:39 03/12/2011-- Design Name:-- Module Name: stopwatch_1 - 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 declaration if instantiating ---- any Xilinx primitives in this code.--library UNISIM;--use UNISIM.VComponents.all;entity stopwatch_1 isPort (Clk : in STD_LOGIC;start_stop : in STD_LOGIC;split_reset : in STD_LOGIC;ncs : out STD_LOGIC;s : out STD_LOGIC_VECTOR(2 downto 0);seg : out STD_LOGIC_VECTOR (7 downto 0) );end stopwatch_1;architecture Behavioral of stopwatch_1 issignal k1,k2,k3,k4: STD_LOGIC;signal cnt_1,cnt_2 : STD_LOGIC_VECTOR(1 downto 0);signal start_stop_out,split_reset_out: STD_LOGIC;signal count: STD_LOGIC_VECTOR(15 downto0):=(others=>'0');signal clk_1k: STD_LOGIC;signal z0,z1,z2,z3,z4,z5,z6,q1,q2,q3,q4,q5,q6 :STD_LOGIC_VECTOR(3 downto 0):=(others=>'0');signal count_2: STD_LOGIC_VECTOR(2 downto0 ):=(others=>'0');signal in_7: STD_LOGIC_VECTOR(3 downto 0);signal sreg: STD_LOGIC_VECTOR(2 downto 0):="111";signal snext: STD_LOGIC_VECTOR(2 downto 0);Begin---------------------------------------------------------为三八译码器置入使能信号ncs <= '0';---------------------------------------------------------分频电路process(clk)beginif rising_edge(clk) thenif count = 47999 thencount <=(others=>'0');elsecount <= count+1;end if;end if;end process;clk_1k <= count(15);---------------------------------------------------------同步计数电路process(clk_1k,sreg(2))beginif rising_edge(clk_1k) thenif sreg(2) = '1' thenz0<=(others=>'0');z1<=(others=>'0');z2<=(others=>'0');z3<=(others=>'0');z4<=(others=>'0');z5<=(others=>'0');z6<=(others=>'0');elsif sreg(1) = '1' thenz0 <= z0+1;if z0 = 9 thenz0 <=(others=>'0');z1 <= z1+1;if z1 = 9 thenz1 <=(others=>'0');z2 <= z2+1;if z2 = 9 thenz2 <=(others=>'0');z3 <= z3+1;if z3 = 9 thenz3 <= (others=>'0');z4 <= z4+1;if z4 = 5 thenz4 <= (others=>'0');z5 <= z5+1;if z5 = 9 thenz5 <= (others=>'0');z6 <= z6+1;if z6 = 5 thenz6 <= (others=>'0');end if;end if;end if;end if;end if;end if;end if;end if;end if;end process;---------------------------------------------------------扫描计数器process(clk_1k)beginif rising_edge(clk_1k) thencount_2 <= count_2+1;end if;end process;s <= count_2;---------------------------------------------------------锁存器process(sreg(0),z1,z2,z3,z4,z5,z6)beginif sreg(0) = '1' thenq1 <= z1;q2 <= z2;q3 <= z3;q4 <= z4;q5 <= z5;q6 <= z6;end if;end process;---------------------------------------------------------process(count_2,q1,q2,q3,q4,q5,q6)begincase count_2 iswhen "000" => in_7 <= q1;when "001" => in_7 <= q2;when "011" => in_7 <= q3;when "100" => in_7 <= q4;when "110" => in_7 <= q5;when "111" => in_7 <= q6;when others => in_7 <= "1111";end case;end process;---------------------------------------------------------八段译码器process(in_7)begincase in_7 iswhen "0000" => seg <="00000011";when "0001" => seg <="10011111";when "0010" => seg <="00100101";when "0011" => seg <="00001101";when "0100" => seg <="10011001";when "0101" => seg <="01001001";when "0110" => seg <="01000001";when "0111" => seg <="00011111";when "1000" => seg <="00000001";when "1001" => seg <="00001001";when others => seg <="11111101";end case;end process;---------------------------------------------------------按键去抖电路process(clk_1k,start_stop)beginif clk_1k'event and clk_1k='0' thenif cnt_1 = 3 thenk1 <= '1';elsek1 <= '0';cnt_1 <= cnt_1+1;end if;k2 <= k1;end if;if start_stop = '0' thencnt_1 <= "00";end if;end process;start_stop_out <= not k1 and k2;process(clk_1k,split_reset)beginif clk_1k'event and clk_1k='0' thenif cnt_2 = 3 thenk3 <= '1';elsek3 <= '0';cnt_2 <= cnt_2+1;end if;k4 <= k3;end if;if split_reset = '0' thencnt_2 <= "00";end if;end process;split_reset_out <= not k3 and k4;---------------------------------------------------------控制器process(clk_1k,start_stop_out,split_reset_out)beginif rising_edge(clk_1k) thensreg <= snext;end if;end process;process(start_stop_out,split_reset_out,sreg)begincase sreg iswhen "111" => if start_stop_out = '1' andsplit_reset_out = '0' thensnext <= "011";else snext <= sreg;end if;when "011" => if start_stop_out = '1' andsplit_reset_out = '0' then snext <= "001";elsif start_stop_out = '0' andsplit_reset_out = '1' then snext <= "010";else snext <= sreg;end if;when "001" => if start_stop_out = '0' andsplit_reset_out = '1' then snext <= "111";elsif start_stop_out = '1' andsplit_reset_out = '0' then snext <= "011";else snext <= sreg;end if;when "010" => if start_stop_out = '0' andsplit_reset_out = '1' then snext <= "011";else snext <= sreg;end if;when others => snext <= "111";end case;end process;end Behavioral;注:控制器设计时,巧妙地将状态编码和控制器输出的控制信号编码合二为一,即状态编码也是控制信号编码,使得程序形式上更为简单、清晰。

基于FPGA的秒表实验

基于FPGA的秒表实验

基于FPGA的秒表实验目的4个七段数码管分别表示十分分十秒秒当SW0为1的时候,暂停计时,进入设置。

按BTN0时秒加1,按BTN1时增加10秒按BTN2时增加1分,按BTN3时增加10分module miaobiao(clk,out,out1,control,btn);//模块名及端口input clk,control,btn;//输入端口声明output out,out1;//输出端口声明wire control;//输入控制信号是wire类型wire [3:0] btn;//四位按键reg [6:0] out1;//定义段选7位寄存器reg [3:0] out;//定义位选4位寄存器reg [31:0] count;//定义一个计数器reg [3:0] sec_l,sec_h,min_l,min_h,out2;//定义存储秒、十秒、分、十分的寄存器,还有显示寄存器供译码用;initial out1 <= 7'b0000001;//给段选赋初值,刚开始时位0000always @(posedge clk)//计数行为语句begincount = count + 1;if ((count==50000000)&&(control==0))//进行分频与控制信号的检测,控制信号为假,继续计数beginsec_l = sec_l +1;count = 0;if(sec_l==10)beginsec_l=0;sec_h = sec_h + 1;if(sec_h == 6)beginsec_h = 0;min_l = min_l + 1;if (min_l==10)beginmin_l = 0;min_h = min_h + 1;if(min_h==6)min_h = 0;endendendendelse if((count==50000000)&&(control==1))//控制信号为真,进入操作模式begincount = 0;if (btn[0]==1)beginsec_l = sec_l + 1;if (sec_l==10)sec_l = 0;endif (btn[1]==1)beginsec_h = sec_h + 1;if (sec_l==6)sec_h = 0;endif (btn[2]==1)beginmin_l = min_l + 1;if (min_l==10)min_l = 0;endif (btn[3]==1)beginmin_h = min_h + 1;if (min_h==6)min_h = 0;endendendalways @(posedge clk)//时钟扫描(动态扫描)行为语句begincase(count[15:14])2'b00:begin out <= 4'b1110; out2 <= sec_l;end//打通第一个管子的时候,把秒寄存器的值给显示寄存器,显示寄存器通过译码转换为段码2'b01:begin out <= 4'b1101; out2 <= sec_h;end2'b10:begin out <= 4'b1011; out2 <= min_l;end2'b11:begin out <= 4'b0111; out2 <= min_h;endendcaseendalways @(posedge clk)//译码行为语句,根据显示寄存器的值,译为2进制代码来赋予电平信号,打通led管begincase(out2)0:out1 <= 7'b0000001;1:out1 <= 7'b1001111;2:out1 <= 7'b0010010; 3:out1 <= 7'b0000110; 4:out1 <= 7'b1001100; 5:out1 <= 7'b0100100; 6:out1 <= 7'b0100000; 7:out1 <= 7'b0001111; 8:out1 <= 7'b0000000; 9:out1 <= 7'b0000100; endcaseendendmodule。

基于FPGA的数字秒表设计

基于FPGA的数字秒表设计

基于FPGA的数字秒表设计摘要:该设计是用于体育比赛的数字秒表,基于FPGA在Quartus II 9.0sp2软件下应用VHDL语言编写程序,采用ALTRA公司CycloneII系列的EP2C8Q208芯片进行了计算机仿真,并给出了相应的仿真结果。

本设计有效的克服了传统的数字秒表的缺点采用EDA技术采取自上而下的设计思路。

绘制出了具体的逻辑电路,最后又通过硬件上对其进行调试和验证。

该电路能够实现很好的计时功能,计时精度高,最长计时时间可达一个小时。

关键字:数字秒表;EDA;FPGA;VHDL;Quartus IIThe design of digital stop watch based on FPGA Abstract:This design is a digital stop watch which is used for athletic contests and is based on FPGA using VHDL language to write program in Quartus II software,adopting EP2C8Q208 chip of CycloneII series of ALTRA company for computer simulation and at the same time showing the corresponding simulation result. This design effectively overcomes the traditional digital stop watch weaknesses and takes a top-down approach to design. Draw out a particular logic circuits, and finally pass the circuits to the hardware to debug and verify it.This circuit is able to carry out excellent timing function,has high timing precision,and the longest timing time could reach an hour.Key Words: Digital stop watch;EDA;FPGA;VHDL;MAX PlusⅡ引言数字秒表是日常生活中比较常见的电子产品,其设计也是EDA技术中最基本的设计实验之一[1]。

FPGA 数字秒表的设计

FPGA   数字秒表的设计

学院FPGA设计实践报告题目:数字秒表的设计院系:计算机与信息工程学院专业:电子科学与技术年级姓名:学号:指导老师:一、课程设计目的:本课程的授课对象是电子科学与技术专业本科生,是电子类专业的一门重要的实践课程,是理论与实践相结合的重要环节。

本课程有助于培养学生的数字电路设计方法、掌握模块划分、工程设计思想与电路调试能力,为以后从事各种电路设计、制作与调试工作打下坚实的基础。

二、课程设计要求:l. 设计用于体育比赛用的数字秒表, 要求:⑴计时精度应大于l/100S, 计时器能显示1/100S的时间, 提供给计时器内部定时的时钟脉冲频率应大于l00Hz, 这里选用1kHz 。

⑵计时器的最长计时时间为l小时, 为此需要一个6位的显示器, 显示的最长时间为59分59.99秒。

2. 设置有复位和起/停开关⑴复位开关用来使计时器清零, 并作好计时准备。

⑵起/停开关的使用方法与传统的机械式计时器相同, 即按一下起/停开关, 启动计时器开始计时, 再按一下起/停开关计时终止。

⑶复位开关可以在任何情况下使用,即使在计时过程中, 只要按一下复位开关, 计时进程立刻终止, 并对计时器清零。

3. 复位和起/停开关应有内部消抖处理。

4. 采用VHDL语言用层次化设计方法设计符合上述功能要求的数字秒表。

5. 对电路进行功能仿真, 通过有关波形确认电路设计是否正确。

6. 完成电路全部设计后, 通过系统实验箱下载验证设计课题的正确性。

三、系统组成与工作原理:数字秒表框图:1、电路原理图 :2、工作原理:l.计时控制器作用是控制计时。

计时控制器的输入信号是启动、暂停和清零。

为符合惯例, 将启动和暂停功能设置在同一个按键上, 按一次是启动, 按第二次是暂停, 按第三次是继续。

所以计时控制器共有2个开关输入信号, 即启动/暂停和清除。

计时控制器输出信号为计数允许/保持信号和清零信号。

2. 计时电路的作用是计时, 其输入信号为lkHz 时钟、计数允许/保持和清零信号, 输出为l0ms、l00ms、s 和min 的计时数据。

基于FPGA的电子秒表设计资料

基于FPGA的电子秒表设计资料

基于FPGA的电子秒表设计摘要简而言之,电子秒表的工作原理就是不断输出连续脉冲给加法计数器,而加法计数器通过译码器来显示它所记忆的脉冲周期个数。

电子秒表是日常生活中比较常见的电子产品。

本设计秒表的逻辑结构主要由74LS00, 555定时器,RS 触发器,74LS90等器件组成。

使用了基本RS触发器作为电子秒表的开关,基本RS触发器属低电平直接触发的触发器,有直接置位,复位的功能。

整个秒表需有一个清零/ 启动信号和一个停止/保持信号装置,以便秒表能随意停止及启动,计数器的输出全都为BCD码输出,方便显示译码器连接。

本设计基于简单易行的原则,秒表显示以0.01s为最小单位,设计时,按照设计任务的次序,将各单元电路逐个进行接线和调试,即分别测试基本RS触发器、时钟发生器及计数器的逻辑功能,待各单元电路工作正常后,再将有关电路逐级连接起来进行测试……,直到测试电子秒表整个电路的功能。

最后进行总结.做到经典而没有缺憾的设计结果。

关键字:74LS00 555定时器 RS触发器 BCD码目录摘要 (1)一、引言 (3)(一)设计的背景 (3)(二)设计实现的基本功能 (4)(三)设计的结构安排 (4)二、系统硬件设计 (5)(一)总体设计 (5)(二)555定时器简简介 (9)(三)基本RS触发器 (10)(四)功能测试 (12)三、系统软件设计 (14)(一) 设计方案 (14)(二)分频模块 (14)(三)计数模块 (16)(四)启停控制模块 (17)(五)显示控制模块 (18)(六)编译仿真 (19)参考文献 (22)致谢 (23)一、引言(一)设计的背景秒表计时器是电器制造,工业自动化控制、国防、实验室及科研单位理想的计时仪器,他广泛应用于各种继电器、电磁开关、控制器、延时器、定时器等的时间测试。

有关电子秒表的发展历史,大致可以分为三个演变阶段。

1、从大型钟向小型钟演变。

2、从小型钟向袋表过度。

3、从袋表向腕表发展。

基于FPGA数字秒表设计

基于FPGA数字秒表设计

数字秒表设计一、实验目的1、理解计时器的原理与Verilog/VHDL的编程方法;2、掌握多模块设计及层次设计的方法。

二、实验原理秒计时器是由计数器和译码器、显示器组成,其核心是计数器与译码器。

60秒计时器可由二个计数器分别完成:个位为十进制计数器,十位为6进制计数。

个位计数器的计数信号由实验开发板上主频20MHZ分频产生的1Hz时钟信号提供,十位计数器的计数信号由个位的进位信号提供。

然后由译码器对计数结果进行译码,送LED数码管进行显示。

Clr为清零,se t为开始。

三、实验框图图2-1四、实验任务1、采用层次设计的方法,设计一个包括顶层及底层模块的60秒计时器,底层模块用Verilog/VHDL设计(或者选用原理图输入法中宏功能元件),顶层用原理图设计。

2、秒计时器应当具有系统复位功能;3、每十秒发出提示信号及计满60秒时发出报警信号。

(选做)文件名COUNT10.V代码module COUNT1O(SET, CLR, CLK, DOUT, COUT); in put SET, CLR, CLK;output [3:0] DOUT;output COUT;reg [3:0] data;reg COUT;assig n DOUT = data;always @(n egedge CLK or n egedge CLR)4'HF: Q<=7'H71 ;default: Q<=7'B1111111;endcaseenden dmoduleCOUNT60.bdf文件名原理图五、实验步骤1•创建工程2•选择目标器件3. 编写verilog hdl程序4编译5. 生成符号文件6. 创建编辑原理图7. 设置顶层文件8编译六、实验结果1. 编译结果Flow StatusQuartos II VersionRevisicxi NameTop^vel Entity NarneFamlyDeviceTrning ModdsMet timmg requiTiefrientsTata logic ate merit ETold conbinatKMial fundioni Dedfcatcd logic registers Total negiateFBTotal pinsTot日virtual pinsTotaJ rnemory bits&vibedded Multiplier &dements Total PLLs SuccessfLi - Sat Nov 01 11:12:49 30149 1 Build 222 10/21/200& SJ Wet> Editicri COUNTSCOUNTGOl^done I IIEP3C5E144C8Fmi^lN/AG3/5.136( 1 X)33/5.136(<1 X)3J26/96(27*}Q/4?3^36<0%)0/4&(D%)0/2(0%)2. 仿真结果文件名COUNT6.V仿真结果Mann 白Value i17.B F^07ua邑更 g ^?JE^7ub ia-19 JB 71字麼甲 5 33—0宀^^4CLKCLHSETCOUTB D0UTHDH1卜1HD卜0TLrLrLrLnrLrLnnrLrLrLrLrLrLrLrLrLnjTrLrLrLrLrLrumfmrLrLrLrLri L r~1 i 1 i厂-n n文件名COUNT10.V9. 创建编辑波形图文件10. 使用波形图仿真11. 锁定管脚12. 编译13. 下载至芯片仿真结果文件名仿真结果17J?5na■TLTLrLnirLrLrWLn_ruwwjwrLnjmjirLrLrwin_ruijWWUi[n JTT ®(n2XDE®®o^oD203®2xnixD®(n®®©(n2XD®@i®OE®i®<ri i i _______ i i _______COUNT60.V (为了简便将分频器设置2分频的)C_KfHRSET 冋DOITH hiDOirn uOH5 xHUTL_nu jnlimnninmmiMmmmmrimimmMJMominroinnrumiminmTmmmnnrmim!irrno“j 厂JCJZ : 前t 底—I 強—r 耶弋騙工如丫非—仍丈丸朗代熾:璇绽帰它狀减燉麒^峨*]炊輕烫处好號爼仞XCOK切默XX*X*X5XIMM*>X*iXXXAN WtXXXCO Z備出七、实验小结通过本次实验,我掌握了分频器的设计,学习了如何通过原理图设计,知道了如何在一个工程中同时使用verilog hdl程序和原理图。

fpga秒表设计实验报告

fpga秒表设计实验报告

fpga秒表设计实验报告本次实验是基于FPGA设计的秒表。

秒表主要是用来计时的一种仪器,具有精准度高、显示清晰等优点。

在实验中,我们使用FPGA来实现秒表的设计。

1. 实验目的通过本次实验,我们的目的是掌握FPGA的使用方法,并设计出一个能够精准计时的秒表。

同时,也能够加深理解数字电路的基本原理和数字信号的处理方式。

2. 实验原理秒表的原理很简单,在起点按下计时键后,秒表开始计时,时间会显示在数码管或LCD屏幕上。

在终点按下停止键后,秒表停止计时。

我们需要用数字电路来实现这个过程,分为三个部分。

2.1. 时钟模块时钟模块是秒表实现的基础。

我们可以使用FPGA内置的时钟控制器IP,也可以自己实现时钟模块。

在这个实验中,我们使用了FPGA内置的时钟控制器IP。

2.2. 计时模块计时模块是实现秒表的关键。

我们可以使用FPGA内置的计数器IP,也可以自己实现计数器模块。

在这个实验中,我们使用了FPGA内置的计数器模块。

2.3. 显示模块显示模块用来显示计时结果。

我们可以使用数码管或LCD屏幕来显示计时结果。

在这个实验中,我们使用了数码管来显示计时结果。

3. 实验步骤3.1. 创建工程首先,我们需要在Vivado IDE中创建一个FPGA工程。

在创建工程时,需要选择适当的设备型号、板卡等参数。

3.2. 添加时钟控制器IP在Vivado IDE中,选择IP Catalog,搜索并添加时钟控制器IP。

3.3. 添加计数器IP在Vivado IDE中,选择IP Catalog,搜索并添加计数器IP。

3.4. 添加数码管IP在Vivado IDE中,选择IP Catalog,搜索并添加数码管IP。

3.5. 连接IP在Vivado IDE中,将时钟控制器IP、计数器IP和数码管IP进行连接。

3.6. 程序设计使用Vivado IDE中的HDL语言对秒表进行程序设计。

3.7. 烧录程序将程序烧录到FPGA中,实现秒表功能。

基于FPGA的数字秒表方案设计书

基于FPGA的数字秒表方案设计书

摘要:该设计是用于体育比赛的数字秒表,基于FPGA在Quartus II 9.0sp2软件下应用VHDL语言编写程序,采用ALTRA公司CycloneII系列的EP2C8Q208芯片进行了计算机仿真,并给出了相应的仿真结果。

本设计有效的克服了传统的数字秒表的缺点采用EDA技术采取自上而下的设计思路。

绘制出了具体的逻辑电路,最后又通过硬件上对其进行调试和验证。

该电路能够实现很好的计时功能,计时精度高,最长计时时间可达一个小时。

关键字:数字秒表;EDA;FPGA;VHDL;Quartus IIThe design of digital stop watch based on FPGA Abstract:This design is a digital stop watch which is used for athletic contests and is based on FPGA using VHDL language to write program in Quartus II software,adopting EP2C8Q208 chip of CycloneII series of ALTRA company for computer simulation and at the same time showing the corresponding simulation result. This design effectively overcomes the traditional digital stop watch weaknesses and takes a top-down approach to design. Draw out a particular logic circuits, and finally pass the circuits to the hardware to debug and verify it.This circuit is able to carry out excellent timing function,has high timing precision,and the longest timing time could reach an hour.Key Words: Digital stop watch;EDA;FPGA;VHDL;MAX PlusⅡ引言数字秒表是日常生活中比较常见的电子产品,其设计也是EDA技术中最基本的设计实验之一[1]。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

本科毕业论文(设计)题目基于F P G A的数字秒表的设计学生姓名庞建铿学号**********系名物理与电子信息工程系专业年级2008级(1)班指导教师许发翔职称助教单位百色学院辅导教师职称单位完成日期2012 年05 月20 日目录百色学院本科毕业论文(设计)任务书 (I)百色学院本科毕业论文(设计)开题报告 (II)百色学院本科毕业论文(设计)中期自查表 (V)摘要 (1)关键字 (1)Abstract (1)第一章绪论 (2)1.1课题背景 (2)1.2硬件描述语言——VHDL (3)1.2.1 VHDL的简介 (3)1.2.2 VHDL语言的特点 (4)1.2.3 VHDL的设计流程 (4)1.3数字秒表设计的要求 (5)1.4数字秒表设计的目的 (5)第二章设计思想与方法论证 (5)2.1设计思想 (5)2.1.1方案一:采用74LS163和CD4046设计秒表 (6)2.1.2方案二:基于单片机的数字秒表的设计 (6)2.1.3方案三:基于FPGA的数字秒表的设计 (6)2.2论证分析 (7)第三章系统设计 (7)3.1 系统的总体设计 (8)3.2 FPGA内部各单元模块设计与仿真 (9)3.2.1分频电路模块 (9)3.2.2去抖电路模块 (10)3.2.3计数电路模块 (12)3.2.4译码显示电路模块 (13)第四章硬件模块介绍 (14)4.1 FPGA的简介 (14)4.2 CD4511的简介 (15)第五章硬件调试 (16)5.1 Quartus II的简介 (16)5.2 硬件电路的设计与调试 (17)5.2.1手工检测 (18)5.2.2程序检测 (18)5.2.3电路组装与调试 (19)5.3软件调试 (19)5.4注意事项 (19)5.4.1在FPGA芯片上调试过程 (19)5.4.2程序检测 (19)5.5系统性能测试 (20)5.5.1测试内容 (20)5.5.2实现功能 (20)5.6调试过程发现的问题与解决方法 (20)结论 (21)致谢 (22)参考文献 (23)附录一:数字秒表实物图 (24)附录二:数字秒表源程序 (25)百色学院本科毕业论文(设计)诚信保证书 (30)百色学院本科毕业论文(设计)任务书指导教师签名:许发翔2011 年12 月12 日百色学院本科毕业论文(设计)开题报告百色学院本科毕业论文(设计)中期自查表学生签名:年月日指导教师签名:年月日基于FPGA的数字秒表的设计电子信息工程2008110241 庞建铿指导老师许发翔摘要:EDA技术作为电子工程领域的一门新技术,极大的提高了电子系统设计的效率和可靠性。

该设计就是基于FPGA在Quartus II软件下利用VHDL语言结合硬件电路来实现数字秒表的功能,采用ALTRA公司CycloneII系列的EP2C5T144C8N 芯片进行仿真,并给出仿真结果。

数字秒表有4个主要模块,分别是分频电路,去抖电路,计时电路,显示电路。

用VHDL语言编程来实现各个模块的功能,再用例化来实现各模块的连接,从而实现整个数字秒表的功能。

该电路能够实现计时功能,计时精度高,电路简单。

关键字:FPGA;EDA;VHDL;Quartus II;数字秒表The design of digital stop watch based on FPGAAbstract:EDA technology as electronic engineering of a new technology, greatly enhancing the electronic system design efficiency and reliability. The design is based on FPGA in Quartus II of VHDL language software with the hardware circuit torealize the function of digital a stopwatch, the company CycloneII ALTRA series of EP2C5T144C8N chips for simulation, and the simulation results are given. Digital stopwatch there are five main modules, respectively is point’s frequency circuit, to shake circuit, timing circuit, control circuit, show circuit. With VHDL language programming to realize the function of each module of, again cases to achieve each module of the connection, and make the digital stopwatch function. This circuit can achieve good timing function, timing precision is high.Key Words:FPGA;EDA;VHDL;Quartus II;Digital stop watch第一章绪论数字秒表是日常生活中比较常见的电子产品,其设计也是EDA技术中重要的设计之一[1]。

EDA是20世纪90年代初以来迅速发展起来的现代电子工程领域的一门新技术。

它以可编程逻辑器件(PLD)为载体,以计算机为工作平台,以EDA工作软件为工作环境,以硬件描述语言(VHDL)为电子系统功能描述方式,以电子系统设计为应用方向的电子产品自动化设计过程。

在当今以数字化和网络化为特征的信息技术革命大潮中,电子技术得到了飞速发展,现代电子产品渗透到了社会的各个领域。

现代电子产品的性能进一步提高,功能越来越复杂,集成化智能化程度越来越高,更新换代的节奏越来越快,开发风险越来越大,而且向着功能多样化,体积小型化,功耗最低化的趋势发展。

所有这些都给电子系统的设计带来了前所未有的压力,唯一的出来就是熟练掌握EDA技术,并获得其有力支持。

EDA技术的出现,极大的提高了电子系统设计的效率和可靠性,减轻了设计者的劳动强度,EDA是电子产品开发研制的动力源和加速器,是现代电子技术的核心。

随着基于PLD的EDA技术的发展和应用领域的扩大和深入,它在电子信息,通信工程,自动控制及计算机应用等领域的重要性日益突出。

随着电子技术与计算机技术的发展,熟练掌握和应用EDA技术已成为电子类及相关专业学生不可或缺的一项技能,。

本文介绍的数字秒表,利用基于VHDL的EDA设计工具,采用大规模可编程逻辑器件FPGA,通过设计芯片来实现系统功能。

给出了顶层电路图,和各模块的设计.增加了消除抖动的控制方法,消除了开关按键的机械抖动.通过编辑、编译和器件编程, 并通过编程器将引脚下载到ALTRA公司CycloneII系列EP2C5T144C8N芯片进行仿真,经实际电路测试验证,达到了预期的设计要求,显示结果基本准确。

本次设计突出应用性,以加强工程实践能力和工程设计能力[2]。

1.1课题背景当前电子系统的设计正朝着速度快,容量大,体积小,质量轻,用电省的方向发展。

推动该潮流迅速发展的决定性因素就是使用了现代化的EDA设计工具。

EDA是电子设计自动化(Electronic Design Automation)的缩写,是90年代初,从CAD(计算机辅助没计)、CAM(算机辅助制造)、CAT(计算机辅助测试)和CAE(计算机辅助工程)的概念发展而来的。

EDA技术就是以计算机为工具,在EDA软件平台上,对以硬件描述语言VHDL为系统逻辑描述手段完成的设计文件自动地完成逻辑编译、逻辑化简、逻辑分割、逻辑综合及优化、逻辑行局布线、逻辑仿真,直至对于特定目标芯片的适配编译、逻辑映射和编程下载等工作[2]。

设计者的工作仅限于利用软件的方式,即利用硬件描述语言来完成对系统硬件功能的描述,在EDA工具的帮助下就可以得到最后的设计结果。

尽管目标系统是硬件,但整个设计和修改过程如同完成软件设计一样方便和高效。

EDA技术中最为瞩目的功能,即最具现代电子设计技术特征的功能就是日益强大的逻辑设计仿真测试技术。

EDA仿真测试技术只需通过计算机就能对所设计的电子系统从各种不同层次的系统性能特点完成一系列准确的测试与仿真操作,在完成实际系统的安装后还能对系统上的目标器件进行所谓边界扫锚测试。

这一切都极大地提高了大规模系统电子设计的自动化程度。

另一方面,高速发展的CPLD/FPGA器件又为EDA技术的不断进步奠定可坚实的物质基础。

CPLD/FPGA器件更广泛的应用及厂商间的竞争,使得普通的设计人员获得廉价的器件和EDA软件成为可能。

现代的EDA工具软件已突破了早期仅能进行PCB版图设计,或类似某些仅限于电路功能模拟的、纯软件范围的局限,以最终实现可靠的硬件系统为目标,配备了系统设计自动化的全部工具。

如配置了各种常用的硬件描述平台VHDL、Verilog HDL、ABEL HDL等;配置了多种能兼用和混合使用的逻辑描述输入工具,如硬件描述语言文本输入法(其中包括布尔方程描述方式、原理图描述方式、状态图描述方式等)以及原理图输入法、波形输入法等;同时还配置了高性能的逻辑综合、优化和仿真模拟工具[3]。

1.2硬件描述语言——VHDL1.2.1 VHDL的简介VHDL语言是一种用于电路设计的高级语言。

它在80年代的后期出现。

最初是由美国国防部开发出来供美军用来提高设计的可靠性和缩减开发周期的一种使用范围较小的设计语言。

但是,由于它在一定程度上满足了当时的设计需求,于是他在1987年成为A I/IEEE的标准(IEEE STD 1076-1987)。

1993年更进一步修订,变得更加完备,成为A I/IEEE的A I/IEEE STD 1076-1993标准。

目前,大多数的CAD厂商出品的EDA软件都兼容了这种标准。

自IEEE公布了VHDL的标准版本,IEEE-1076(简称87版)之后,各EDA公司相继推出了自己的VHDL设计环境,或宣布自己的设计工具可以和VHDL接口。

此后VHDL在电子设计领域得到了广泛的接受,并逐步取代了原有的非标准的硬件描述语言。

1993年,IEEE对VHDL进行了修订,从更高的抽象层次和系统描述能力上扩展VHDL的内容,公布了新版本的VHDL,即IEEE标准的1076-1993版本,(简称93版)。

现在,VHDL和Verilog作为IEEE的工业标准硬件描述语言,又得到众多EDA公司的支持,在电子工程领域,已成为事实上的通用硬件描述语言。

相关文档
最新文档