版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、摘要本课程设计主要介绍了运用eda技术实现“电子时钟”的设计,以达到对eda技术的熟练掌握,提升对eda技术及应用课程所学的内容的掌握和应用,文介绍一种利用fpga可编程逻辑器件设计数字电子时钟的方法及过程。文中包含各部分程序及经过max-plusii仿真的波形。通过对max-plusii的使用熟悉max-plusii仿真软件的工作方法及应用。关键字:eda fpga 电子时钟 max-plusii目录摘要1.设计方案及原理11.1设计方案11.2设计原理12. 设计过程32.1顶层设计32.2各个模块程序及波形32.2.1小时模块32.2.2分钟模块52.2.3秒钟模块62.2.4数码管译码
2、模块82.2.5数码管片选模块92.2.6数码管扫描模块102.2.7分频模块112.3硬件电路图14总结15参考资料16附录 简易时钟电路图17附录 元件清单181.设计方案及原理1.1设计方案根据电路特点,可用层次化结构化设计概念。将此项设计任务分成若干模块:(1)时钟模块:由外部晶振提供; (2)秒钟模块:对秒进行60循环计数,并向分钟产生进位,同时具有调分功能; (3)分钟模块:对分进行60循环计数,并向小时产生进位,同时具有调时功能; (4)小时模块:对小时进行24进制循环计;。(5)10分频器和4分频器:将外部时钟分频为1hz的时钟信号;(6)6选1扫描显示:(7)7段数码管译码器
3、:译出数码管要显示的数字。1.2设计原理电子钟是一个将“时”“分”显示于人的视觉器官的计时装置。它的计时周期为24小时;显示满刻度为23时59分59秒,秒由两个数码管显示,将标准秒信号送入“秒计数器”,每累加60秒发送一个“分脉冲”信号,该信号将被送到“时计数器”。“时计数器”采用24进制计数器,可实现对一天24小时的累计。译码显示电路将“时”“分”“秒”计数器的输出状态六段显示译码器译码。通过六位七段显示器显示出来。数字钟结构组成框图如图1.2.1。24进制小时计数器60进制分计数器60进制秒计数器时译码显示分译码显示秒译码显示选 择 器选 择 器sethoursetminnnnnnnnco
4、co校时控制校分控制1hz图 1.2.1 数字钟结构方框图2. 设计过程2.1顶层设计顶层文件是将各个模块连接在一起的模块。其中,clk提供时钟信号,setmin用来调节分钟,sethour用来调节小时。输出cout2.0是片选信号,输出a6.0连接7段数码管的7个引脚。其顶层文件的电路图如图2.1.1。图 2.1.1 顶层图2.2各个模块程序及波形2.2.1小时模块小时模块的电路图如图2.2.1,其中,h13.0是小时的高位,h03.0是小时的低位。当h03.0计到9时向高位进一。当h13.0与h03.0分别计到0010和0011时,自动为0000。图 2.2.1 小时模块library i
5、eee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity hour is port(clk:in std_logic; h1,h0:out std_logic_vector(3 downto 0);end hour;architecture art of hour issignal cnt1,cnt0:std_logic_vector(3 downto 0);beginprocess(clk)beginif clk'event and clk='1' then if cnt1="
6、;0010" thenif cnt0="0011" thencnt0<="0000"cnt1<="0000"else cnt0<=cnt0+1; end if;elsif cnt0="1001" thencnt0<="0000"cnt1<=cnt1+1;elsecnt0<=cnt0+1;end if;end if;h1<=cnt1;h0<=cnt0;end process;end art;小时模块的波形图如图2.2.2。图 2.2.2小时
7、模块波形2.2.2分钟模块分钟模块的电路图如图2.2.3,其中,min13.0是分钟的高位,min03.0是分钟的低位。当min13.0计到9时向高位进一。当min13.0与min03.0分别计到0101和1001时,自动为0000。sethour是调时控制。其分钟模块的电路图如图2.2.3。图 2.2.3分钟模块library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity minu is port(sethour,clk:in std_logic; min1,min0:out std_logic
8、_vector(3 downto 0); c0:out std_logic);end minu;architecture art of minu issignal cnt1,cnt0:std_logic_vector(3 downto 0);signal cc1,cc2:std_logic;begincc2<=(sethour and clk);c0<=(cc1 or cc2);process(clk,sethour)beginif clk'event and clk='1' thenif cnt1="0101" thenif cnt0=
9、"1001" thencc1<='1'cnt0<="0000"cnt1<="0000" else cnt0<=cnt0+1;cc1<='0'end if; elsif cnt0="1001" thencnt0<="0000"cnt1<=cnt1+1;cc1<='0'elsecnt0<=cnt0+1;cc1<='0'end if;end if;min1<=cnt1;mi
10、n0<=cnt0;end process;end art;分钟模块的波形图如图2.2.4。图2.2.4分钟模块波形2.2.3秒钟模块秒钟模块的电路图如图2.2.5,其中,sec13.0是秒钟的高位,sec03.0是秒钟的低位。当sec13.0计到9时向高位进一。当sec13.0与sec03.0分别计到0101和1001时,自动为0000。setmin是调时控制。秒钟模块的电路图如图2.2.2。图2.2.5 秒钟模块library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity second i
11、s port(clk,setmin:in std_logic; sec1,sec0:out std_logic_vector(3 downto 0); c0:out std_logic);end second;architecture art of second issignal cnt1,cnt0:std_logic_vector(3 downto 0);signal cc1,cc2:std_logic;begincc2<=(setmin and clk);c0<=(cc1 or cc2);process(clk,setmin)beginif clk'event and
12、clk='1' thenif cnt1="0101" and cnt0="1000" thencc1<='1'cnt0<="1001"elsif cnt0<"1001" thencnt0<=cnt0+1;cc1<='0'elsecnt0<="0000"if cnt1<"0101" thencnt1<=cnt1+1;cc1<='0'elsecnt1<=&q
13、uot;0000"cc1<='1'end if; end if;end if;sec1<=cnt1;sec0<=cnt0;end process;end art;其秒钟模块的波形图如图2.2.6。图2.2.6 秒钟模块波形2.2.4数码管译码模块数码管译码模块用来译出数码管要显示的数字。其电路图如图2.2.7。图2.2.7数码管译码模块library ieee;use ieee.std_logic_1164.all;entity disp is port(d : in std_logic_vector(3 downto 0); q : out std
14、_logic_vector(6 downto 0);end;architecture one of disp isbegin process(d) begin case d is when "0000"=>q<="0111111" when "0001"=>q<="0000110" when "0010"=>q<="1011011" when "0011"=>q<="1001111" wh
15、en "0100"=>q<="1100110" when "0101"=>q<="1101101" when"0110"=>q<="1111101" when "0111"=>q<="0100111" when"1000"=>q<="1111111" when"1001"=>q<="1101111
16、" when others=>q<="0000000" end case; end process;end one;2.2.5数码管片选模块数码管片选模块用来选择数码管哪一时刻有效。其电路图如图2.2.8。图2.2.8数码管片选模块library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity cn6 is port(clk : in std_logic; cout : out std_logic_vector(2 downto 0);end cn6;arc
17、hitecture rtl of cn6 is signal q : std_logic_vector(2 downto 0);begin process(clk) begin if(clk'event and clk='1') then if(q=5) then q<="000" else q<=q+1; end if; end if; end process;cout<=q;end rtl;数码管片选模块的波形图如图2.2.9。图2.2.9数码管片选模块2.2.6数码管扫描模块数码管扫描模块用来显示输出的数字。a3.0与b3.0
18、分别接秒钟的高地位。c3.0与d3.0分别接分钟模块的高地位。e3.0与f3.0分别接小时模块的高低位。其电路图如图2.2.10。图2.2.10数码管扫描模块library ieee;use ieee.std_logic_1164.all;entity sel61 is port(sel : in std_logic_vector(2 downto 0); a,b,c,d,e,f : in std_logic_vector(3 downto 0); q : out std_logic_vector(3 downto 0);end;architecture rtl of sel61 isbegi
19、n process(a,b,c,d,e,f,sel) variable cout : std_logic_vector(3 downto 0); begin case sel is when "000"=>cout:=a; when "001"=>cout:=b; when "010"=>cout:=c; when "011"=>cout:=d; when "100"=>cout:=e; when others=>cout:=f; end case; q &l
20、t;=cout; end process;end rtl;2.2.7分频模块10分频电路用来对时钟信号十分频。10分频电路如图2.2.11。图2.2.11 10分频电路library ieee;use ieee.std_logic_1164.all;entity fen10 is port(clk:in std_logic ;q:out std_logic);end fen10;architecture fen_arc of fen10 isbegin process(clk) variable cnt:integer range 0 to 9;beginif clk' event a
21、nd clk='1'thenif cnt<9 then cnt:=cnt+1;q<='0'elsecnt:=0;q<='1'end if;end if;end process;end fen_arc;十分频器波形图如图2.2.12。图2.2.12 十分频器波形图四分频模块电路图如图2.2.13。图 2.2.13四分频模块library ieee;use ieee.std_logic_1164.all;entity fen4 is port(clk:in std_logic ;q:out std_logic);end fen4;a
22、rchitecture fen_arc of fen4 isbegin process(clk) variable cnt:integer range 0 to 3;beginif clk' event and clk='1'thenif cnt<3 then cnt:=cnt+1;q<='0'elsecnt:=0;q<='1'end if;end if;end process;end fen_arc;图2.2.13四分频模块波形2.3硬件电路图本电路采用fpga芯片ep1k10tc144-1,外加有源晶振。图 2.2.14 硬件电路图总结通过这次设计,进一步加深了对eda的了解,让我对它有了更加浓厚的兴趣。在编写顶层文件的程序时,遇到了不少问题,特别是各元件之间的连接,以及信号的定义,总是有错误的存在,但是在我细心的检查下,终于找出了错误和警告的所在,排除困难后,程序编译就通过了。 在刚开始做实验的时,做起来感觉有点困难,很多的步骤都不记得,但是还是摸索着继续做完了实验,后来的实验就容易多了。 在这次实验中也遇到了不少问题,开始的时候我先是决定做数字钟这个实
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 防疫期间个人先进事迹(7篇)
- 赴企业调研报告8篇
- 游峨眉山的心得(31篇)
- 手机市场调查报告
- 心理健康教育的活动总结范文
- 消防年度工作总结15篇
- 情深意重,感恩演讲稿300字(3篇)
- 知识竞赛活动领导讲话稿
- 幼儿园卫生保健秋季传染病活动方案
- 2022年购物中心七夕节促销活动方案(7篇)
- 广东省2024-2025学年高三上学期9月份联考英语试卷
- 研究生学术表达能力培养智慧树知到答案2024年西安建筑科技大学、清华大学、同济大学、山东大学、河北工程大学、《环境工程》英文版和《环境工程》编辑部
- 湖北省2023-2024学年七年级上学期语文期中考试试卷(含答案)
- 第六单元测试卷(单元卷)-2024-2025学年六年级上册统编版语文
- 2024 中国主要城市群生态环境保护营商竞争力指数研究报告
- 人教版(2024)2024-2025学年七年级数学上册期中质量评价(含答案)
- 单元统整视域下的小学英语课内外融合教学探析
- 合伙协议书四人范本
- 2024年新人教版七年级上册数学全册大单元整体设计教案
- 2024-2025学年七年级英语上册第一学期 期中综合模拟考试卷(沪教版)
- 高中数学大单元教学设计案例研究
评论
0/150
提交评论