EDA课程设计:数字秒表的设计(14页).doc
《EDA课程设计:数字秒表的设计(14页).doc》由会员分享,可在线阅读,更多相关《EDA课程设计:数字秒表的设计(14页).doc(14页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、-EDA课程设计:数字秒表的设计-第 14 页EDA课程设计报告数字秒表的设计指导老师: 时间: 组员:一、设计流程1.文本编辑:用Active-HDL的编译环境进行编写源代码,编译通过后,保存为.hdl文件格式。2.功能仿真:将文件调入Active-HDL仿真环境里进行功能仿真,检查逻辑功能是否正确。3.逻辑综合与物理实现:将源代码调入ISE软件中,逻辑综合,管脚分配,下载到FPGA板上调试物理实现。二、设计规划本系统设计采用自顶向下的设计方案,系统的整体组装设计原理图如图1所示,它主要由控制模块、时基分频模块,计时模块和显示模块四部分组成。各模块分别完成计时过程的控制功能、计时功能与显示功
2、能。数字秒表计时控制电路控制状态机计时电路显示电路时基分频电路计数器六十进制计数器扫描电路七段译码器一百进制计数器图1 系统组成框图三、各模块的原理及其程序本系统设计由控制模块、时基分频模块,计时模块和显示模块四部分组成。各模块实现秒表不同的功能 。1、控制模块计时模块的作用是针对计时过程进行控制。计时控制模块可用俩个按钮来完成秒表的启动、停止和复位。部分源程序:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY CTRL IS PORT( CLR,CLK,SP:IN STD_LOGIC
3、; EN :OUT STD_LOGIC);COM:PROCESS(SP,CURRENT_STATE) BEGINEND IF;END PROCESS;END BEHAVE;2、时基分频模块时基分频模块的作用把输入时钟信号变为分频输出信号。部分源程序:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY CB10 IS PORT( CLK: IN STD_LOGIC; CO : OUT STD_LOGIC);END CB10;ARCHITECTURE ART OF CB10 IS SIGNA
4、L COUNT:STD_LOGIC_VECTOR (3 DOWNTO 0); BEGINPROCESS(CLK)BEGIN IF RISING_EDGE(CLK)THEN IF COUNT=1001THEN COUNT=0000; CO=1; ELSE COUNT=COUNT+1; CO=0; END IF; END IF; END PROCESS;END ART;3、计时模块计时模块执行计时功能,计时方法和计算机一样是对标准时钟脉冲计数。他是由四个十进制计数器和俩个六进制计数器构成,其中毫秒位、十毫秒位、秒位和分位采用十进制计数器,十秒位和十分位采用六进制计数器。部分源程序:十进制计数器:L
5、IBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY CDU10 IS PORT( CLK:IN STD_LOGIC; CLR,EN:IN STD_LOGIC; CN :OUT STD_LOGIC; COUNT10:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);END CDU10;END IF;END IF;END PROCESS;END ART;六进制计数器:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LO
6、GIC_UNSIGNED.ALL;ENTITY CDU6 ISEND IF;END IF;END PROCESS;END ART;计数器:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY COUNT ISEND ART;4、显示模块计时显示电路的作用是将计时值在LED数码管上显示出来。计时电路产生的值经过BCD七段译码后,驱动LED数码管。计时显示电路的实现方案采用扫描显示。部分源程序:数据选择器:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE
7、 IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY MULX IS PORT( CLK,CLR,EN:IN STD_LOGIC; S_1MS:IN STD_LOGIC_VECTOR(3 DOWNTO 0); S_10MS:IN STD_LOGIC_VECTOR(3 DOWNTO 0); S_100MS:IN STD_LOGIC_VECTOR(3 DOWNTO 0); S_1S:IN STD_LOGIC_VECTOR(3 DOWNTO 0); S_10S:IN STD_LOGIC_VECTOR(3 DOWNTO 0); M_1MIN:IN STD_LOGIC_VECTOR(3
8、 DOWNTO 0); M_10MIN:IN STD_LOGIC_VECTOR(3 DOWNTO 0); HOUR:IN STD_LOGIC_VECTOR(3 DOWNTO 0); OUTBCD:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); SEG:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);END MULX;ARCHITECTURE ART OF MULX ISSIGNAL COUNT:STD_LOGIC_VECTOR(3 DOWNTO 0);END CASE;END IF;END PROCESS;END ART;BCD七段译码器:LIBRARY
9、IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY BCD7 IS PORT( BCD:IN STD_LOGIC_VECTOR(3 DOWNTO 0); LED:OUT STD_LOGIC_VECTOR(6 DOWNTO 0);END BCD7;ARCHITECTURE ART OF BCD7 ISBEGINLED=1111110WHEN BCD =0000 ELSE0110000WHEN BCD =0001 ELSE1101101WHEN BCD =0010 ELSE1111001WHEN BCD =
10、0011 ELSE0110011WHEN BCD =0100 ELSE1011011WHEN BCD =0101 ELSE1011111WHEN BCD =0110 ELSE1110000WHEN BCD =0111 ELSE1111111WHEN BCD =1000 ELSE1111011WHEN BCD =1001 ELSE0000000;END ART;四、系统仿真1、时基分频模块的仿真分析:CLK为时钟信号的输入 ,CO为分频输出信号。2、控制模块的仿真分析:CLK、CLR和SP为输入信号,EN为输出信号。3、计时电路模块的仿真(如图 4-3图4-5所示)十进制计数器的仿真六进制计数器
11、的仿真计数器的仿真分析:clk为时钟脉冲脉冲,s_1ms是毫秒计数值,s_10ms是十毫秒计数器,s_100ms是百毫秒计数器,s_1s是秒计数器,s_10s是十秒计数器,m_1min是分计数器,s_10min是十分计数器,hour是小时计数器。它们均为输入信号。每来两个时钟脉冲,s_1ms加1,当s_1ms满十时,s_10ms加1,依次类推,s_10ms满十的时候,s_100ms加1等等作为输出。4、显示电路模块的仿真(如图 4-6图4-7所示)数据选择器的仿真BCD七段译码器驱动器的仿真分析:bcd为时钟脉冲输入信号,led是输出信号,如图所示:当输出为“1111110”时候,输入为“00
12、00”;当输出为“0110000”时输入“0001”,当输入为“0010”时输出为“1101101”,当输入为“0011”时输出为“1111001”等等来实现七段译码功能。5、数字秒表整个系统的仿真数字秒表起始工作的仿真图状态仿真图分析:秒表开始从零开始计数,每次增加10ms。工作正常。五、ISE软件物理实现 打开ISE软件,创建项目工程,将源程序带入综合,然后定义输入输出管脚约束,设计实现。下载到FPGA板子上,可以观察到设计的数字秒表可以按照设计要求正常工作。至此,整个课程设计完成。六、结束语开始做设计时总是会犯一些错误,只有经过不停的改错不停的编译得到正确的程序说明了作为软件编程人员是不
13、能粗心大意的,一个程序的质量的高低与你细心与否有着一定的联系。在编程时,应充分使用了结构化的思想,这样程序检查起来也比较方便,调试时也给了我很大方便,只要一个模块一个模块的进行调就可以了,充分体现了结构化编程的优势。在设计中要求我要有耐心和毅力,还要细心,稍有不慎,一个小小的错误就会导致结果的不正确,而对错误的检查要求我要有足够的耐心,通过这次设计和设计中遇到的问题,也积累了一定的经验,对以后从事集成电路设计工作会有一定的帮助。在应用VHDL的过程中让我真正领会到了其并行运行与其他软件顺序执行的差别及其在电路设计上的优越性。用Active-HDL硬件描述语言的形式来进行数字系统的设计方便灵活,
14、利用EDA软件进行编译优化仿真极大地减少了电路设计时间和可能发生的错误,降低了开发成本,这种设计方法在数字系统设计中发挥越来越重要的作用。附录源程序如下:1. 时基分频模块的源程序(CB10.VHD)LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY CB10 IS PORT( CLK: IN STD_LOGIC; CO : OUT STD_LOGIC);END CB10;ARCHITECTURE ART OF CB10 IS SIGNAL COUNT:STD_LOGIC_VECTOR
15、(3 DOWNTO 0) :=0000; BEGINPROCESS(CLK)BEGIN IF RISING_EDGE(CLK)THEN IF COUNT=1001THEN COUNT=0000; CO=1; ELSE COUNT=COUNT+1; COEN=0; IF SP=1THEN NEXT_STATE=S1; ELSE NEXT_STATEEN=1; IF SP=1THEN NEXT_STATE=S1; ELSE NEXT_STATEEN=1; IF SP=1THEN NEXT_STATE=S3; ELSE NEXT_STATEEN=0; IF SP=1THEN NEXT_STATE=S
16、3; ELSE NEXT_STATE=S0; END IF;END CASE;END PROCESS;SYNCH:PROCESS(clk)BEGIN IF CLR=1THENCURRENT_STATE =S0;ELSIF CLKEVENT AND CLK=1THENCURRENT_STATE=NEXT_STATE;END IF;END PROCESS;END BEHAVE;3. 计时模块的源程序十进制计数器的源程序(CDU10.VHD)LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY
17、CDU10 IS PORT( CLK:IN STD_LOGIC; CLR,EN:IN STD_LOGIC; CN :OUT STD_LOGIC; COUNT10:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);END CDU10;ARCHITECTURE ART OF CDU10 ISSIGNAL SCOUNT10: STD_LOGIC_VECTOR(3 DOWNTO 0);BEGIN COUNT10=SCOUNT10;PROCESS (CLK,CLR,EN)BEGIN IF(CLR=1)THENSCOUNT10=0000;CN=0;ELSIF RISING_EDGE(CLK
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- EDA 课程设计 数字 秒表 设计 14
限制150内