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