ImageVerifierCode 换一换
格式:DOCX , 页数:11 ,大小:58.43KB ,
资源ID:7956149      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/7956149.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(数字电路与EDA电子时钟.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

数字电路与EDA电子时钟.docx

1、数字电路与EDA电子时钟 数字电路与EDA课程设计报告设计题目: 数字电子钟 专 业: 班 级: 姓 名: 学 号: 指导教师: 时 间: 2011年12月 目录1、设计目的和要求.32、设计任务.33、方案论证与比较.34、设计原理和VHDL.35、硬件测试.96、设计小结.107、参考文献.10一、 设计目的和要求1、对所有设计的系统能够正确分析;2、基于VHDL语言描述系统的功能;3、在quartus 2环境中编译通过;4、下载到EDA实验箱进行验证;5、给出相应的设计报告。二、设计任务)具有时、分、秒计数显示功能,以24小时循环计时。)具有调节小时、分钟和秒及清零的功能。)具有整点报时

2、功能。三、 方案论证与比较方案一:本系统可以由秒计数器、分钟计数器、小时计数器、整点报时、分的调整以及小时的调整和一个顶层文件构成。采用自顶向下的设计方法,子模块利用VHDL语言设计,顶层文件用原理图的设计方法。用“小时分”方式显示并且每秒闪烁,用两个时钟信号。方案二:根据总体方框图及各部分分配的功能可知,本系统可以由分频器、秒计数器、分钟计数器、小时计数器、整点报时、分的调整、秒的调整以及小时的调整,模块利用VHDL语言设计。用“小时分秒” 方式显示并只用一个时钟。终上所述,考虑到试验时的全面,故我选择了方案二。四、设计原理和VHDL:A设计原理和思路该系统由振荡器、分频器、“时、分、秒”计

3、数器、译码器及显示器、校时电路、整点报时电路等组成。石英晶体振荡器和分频器产生整个系统的时钟信号,它直接决定计时系统的精度。“秒计数器”采用六十进制计数器,每累计60秒向“分计数器”进位;“分计数器”采用六十进制计数器,每累计60分向“时计数器”进位;“时计数器”采用二十四进制计数器,按照“24翻1”规律计数。“时、分、秒”计数器的输出经译码器送显示器显示。校时电路用来当计时出现误差时对“时、分、秒”进行校对调整。整点报时电路是根据计时系统的输出状态产生一脉冲信号,然后去触发彩灯实现报时。B、 library ieee;use ieee.std_logic_1164.all;use ieee.

4、std_logic_unsigned.all;use ieee.std_logic_arith.all; entity ff is port(clk,reset,S1,S2:in std_logic; alarm:out std_logic; cba: out std_logic_vector(2 downto 0); seg: out std_logic_vector(6 downto 0); q:out std_logic_vector(7 downto 0); end;architecture one of ff issignal sec1,sec2,min1,min2,hou1,hou

5、2,data,ss:std_logic_vector(3 downto 0);signal ensec,enmin,c,tmp_hou,tmp_min,alarm1,key_out,tmp_sec:std_logic;signal cnt:integer range 0 to 511:=0;signal clks:std_logic:=0;signal cnt1:std_logic_vector(2 downto 0);signal tmp1,a,b :std_logic_vector(7 downto 0);signal key_mode:std_logic_vector(1 downto

6、0);begin process(clk,reset)begin if reset=1 then clks=0; elsif rising_edge(clk) then if cnt=511 then cnt=0; clks=not(clks); else cnt=cnt+1; end if; end if; end process; process(tmp_sec,reset) begin if reset=1 then sec1=0000; sec2=0000; ensec=0; elsif rising_edge(tmp_sec) then if(sec1=1001and sec2=01

7、01) then sec1=0000; sec2=0000; ensec=1; elsif(sec1=1001)then sec1=0000; sec2=sec2+1; ensec=0; else sec1=sec1+1; ensec=0; end if; end if; end process; process(tmp_min,reset) begin if reset=1 then min1=0000; min2=0000; enmin=0; elsif rising_edge(tmp_min)then if(min1=1001and min2=0101) then min1=0000;

8、min2=0000; enmin=1; elsif(min1=1001)then min1=0000; min2=min2+1; enmin=0; else min1=min1+1; enmin=0; end if; end if; end process; process(tmp_hou,reset) begin if reset=1then hou1=0000; hou2=0000; elsif rising_edge(tmp_hou) then if(hou1=0011and hou2=0010)then hou1=0000; hou2=0000; elsif(hou1=1001)the

9、n hou1=0000; hou2=hou2+1; else hou1=hou1+1; end if; end if; end process; process(min1,min2) begin if min1=0000and min2=0000 then alarm1=1; else alarm1=0; end if; end process; process(clks,alarm1) begin if alarm1=1 then if clks=1 then alarm=1; else alarm=0; end if; else alarm=0; end if; end process;

10、process(clks,hou1,hou2,min1,min2,tmp1) begin if rising_edge(clks) then if hou1=0101and hou2=0000 and min1=0000and min2=0000 then if tmp1=11111111 then tmp10); else tmp1=1&tmp1(7 downto 1); end if; else tmp10); end if; end if; end process; q=tmp1; process(clks,clk,b) begin if rising_edge(clk) then b(

11、7 downto 0)=b(6 downto 0)&S1; If b=11111111 then c=1; Else c=0; end if; end if; end process; process(c,reset) begin if reset=1 then key_mode=00; else if rising_edge(c) then key_modetmp_min=key_out;tmp_hou=0;tmp_sectmp_min=0;tmp_hou=key_out;tmp_sectmp_min=0;tmp_hou=0;tmp_sectmp_min=ensec; tmp_hou=enm

12、in;tmp_sec=clks; end case; end process; process(clk,a) begin if rising_edge(clk) then a(7 downto 0)=a(6 downto 0)&S2; If a=11111111 then Key_out=1; Else Key_out=0; End if; end if; end process; process(clks,key_mode) begin if key_mode=00 then if clks=1 then ss=1011; else ss=1010 ; end if; else ss=101

13、1; end if; end process; process (clk) begin if rising_edge(clk) then cnt1= cnt1+1; end if; end process; cbadatadatadatadatadatadatadatadata datasegsegsegsegsegsegsegsegsegsegsegseg seg=1110001;end case; end process;end;五、硬件测试1、引脚设置2 、配置文件下载将编译产生的SOF格式配置进FPGA中,打开编程窗和配置文件,将实验系统和并口通信线连接好,打开电源。在菜单TOOL中选

14、择programmer,单机下载标符start按钮,即进入对目标器件FPGA的配置下载操作。3、硬件调试配置文件下载成功后,clock选择1024HZ。 上电后,秒满59向分进1后又从00开始计数,分满59向小时进1后从00开始计数,小时满24从00开始计数。按键D111后,计时复位,可以用键D110对小时、分、秒进行模式选择,D109可以重新设置时间数码管显示为设置的新时间。当到整点时,彩灯闪烁报时一分钟。六、 设计小结通过这次设计,进一步加深了对EDA的了解,让我对它有了更加深度了了解。刚开始因为对知识的模棱两可,编写的程序出现很多逻辑和语句上的错误,经过问同学,书上的 慢慢的了解错在哪里,再一次加深了映像,也在其中找到了乐趣,才能逐渐完成本次课程设计。在本次实验中不单单从理论上掌握了很多,同时也加强了对编程的逻辑思维的培养和处理语句能力。看问题不能只看一面,要多方面考虑,明白了遇到问题要先思考而不是盲目的放弃,而应该分析问题找到出出问题之处,而合理运用所学过的知识巧妙的解决问题。 七、参考文献数字电子技术基础-科学出版社 图说VHDL-化学工业出版社 VHDL与数字电路设计-科学出版社

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1