数字钟——实验报告.doc

上传人:doc321 文档编号:12923612 上传时间:2021-12-07 格式:DOC 页数:12 大小:300.50KB
返回 下载 相关 举报
数字钟——实验报告.doc_第1页
第1页 / 共12页
数字钟——实验报告.doc_第2页
第2页 / 共12页
数字钟——实验报告.doc_第3页
第3页 / 共12页
数字钟——实验报告.doc_第4页
第4页 / 共12页
数字钟——实验报告.doc_第5页
第5页 / 共12页
点击查看更多>>
资源描述

《数字钟——实验报告.doc》由会员分享,可在线阅读,更多相关《数字钟——实验报告.doc(12页珍藏版)》请在三一文库上搜索。

1、57电子科技大学实 验 报 告学生姓名:学号: 指导教师:冯健实验地点:科研楼B座453实验时间:2008.3.18一、 实验室名称:二、 实验项目名称:数字钟的FPGA设计与实现三、 实验学时:16学时四、 实验原理:数字钟电路的基本结构(图1所示)由两个6O进制计数器和一个24进制计数器组成,分别对秒、分、小时进行计时,当计时到23时59分59秒时,再来一个计数脉冲,则计数器清零,重新开始计时。六十进制计数器系统时钟秒计数器数据选择器六十进制计数器译码器显示码数码管数码管数码管秒分时秒脉冲分脉冲时脉冲BCD码BCD码BCD码扫描码产生图1 实现方案电路框图秒计数器的计数时钟clk为1 Hz

2、的标准信号,可以由晶振产生的信号通过分频得到。当数字钟处于计时状态时,秒计数器的进位输出信号carry 作为分钟计数器的计数信号,分钟计数器的进位输出信号carry 又作为小时计数器的计数信号。时、分、秒的计时结果通过6个数码管来动态显示。五、 实验目的:1. 掌握计数器的基本设计方法;2. 对利用VHDL硬件描述语言设计相关模块有一定的了解;3. ALTERA MAXPLUSII 软件的使用。4. 要求:能够自动计时,并下载到实验箱中用七段数码管显示出时、分、秒六、 实验内容:1. 在MAX+PLUSII软件上用VHDL语言编写源程序实现数字钟的五 个模块。2. 将所编程序进行编译并调试改错

3、,最终实现正确仿真。3. 选择芯片型号:Device FLEX10K EPF10K10LC84-44. 管脚分配: Programmer Floorplan Editor 5. 将实验箱中的管脚按照芯片管脚分配好。6. 编译适配: Complier7. 启动 Programmer Hardware Type Byte blaster Ok8. JTAGMulti-Device JTAG Chain 选择要下载的文件: XXX.pof Add Ok9. ProgrammerConfigure七、 实验器材(设备、元器件)1. EDA实验箱 一只2. MAXPLUS软件 一套八、 实验步骤:1.

4、分别建立模块源程序。运行MAXPLUS II软件,首先选择“File”中的“New”, 建立一个新的VHDL文件;编辑VHDL源程序选择“Text Editor file”。 输入五个模块的源程序,将源程序存为VHDL文件格式,分别进行编译。2. 分别建立模块仿真文件 ,仿真源文件。首先,选择“”, 建立一个新的仿真文件。选择“Waveform Editor file”,并选择文件扩展名为“.scf”,得到仿真波形窗口。添加仿真波形名称:点击“NodeEnter Nodes from SNF”,出现仿真波形窗口;点击右上方“List”,左边窗口显示全部信号名称,将待仿真的信号添加到右

5、边窗口;点击“OK”。然后,设置仿真波形文件为当前工程:选择“Set Project to Current File”;保存,选择正在使用的“驱动器目录”,输入文件名“.scf”点击“OK”。最后,编辑输入信号:点击输入信号名称,利用左边工具栏编辑输入的激励信号,点击“MAX+plus IISimulatorStart”进行仿真。3采用原理图方式Graphic Editor file (*.gdf),将这五个模块连接起来,这是最方便,最直观的逻辑输入方法。输入逻辑元件,没有的逻辑元件,如输入输出可在Symbol Libraries框中选择prim库, 在Symbol Name栏输入input或

6、者output。设计好的原理图如图2所示:图2 数字钟电路图4.整体编译。上面已经完成了原理图的输入,需要给设计指定一个工程名,选择File->Project->Set Project to Current File,将当前工程名设为当前文件名。准备开始编译,选择MAX+plus II->Compiler,弹出编译窗口,按 Start 开始编译。如图3所示:图3 整体编译窗口编译结束之后,在正确无误的情况下可以进行下一步的仿真5. 整体仿真。首先要编辑一个波形文件,打开MAX+plus II->Waveform Editor:图4 波形仿真界面 然后确定仿真的时长,选择

7、File->End Time,输入100us,确定;还需要确定仿真的最小时间单位,选择Option->Grid Size,输入50ns,确定;下面开始输入要仿真的信号名称,选择Node->Enter Node From SNF,按=>选择要增加的Nodes,点击输入信号名称,利用左边工具栏编辑输入的激励信号,点击“MAX+plus IISimulatorStart”进行仿真。6. 选择芯片型号:Device FLEX10K EPF10K10LC84-47. 管脚分配: Programmer Floorplan Editor 8. 将实验箱中的管脚按照芯片管脚分配好。图5

8、 实验系统图6 CPLD主芯片及引脚9. 编译适配: Complier10. 用Altera的ByteBlaster下载电缆将编程文件.pof从电脑的并行口直接写入器件。主板左上角有一10个脚的 JTAG IN 插座,为编程接口。通过下载电缆与计算机的并口相连。启动 Programmer Hardware Type Byte blaster Ok。11. JTAGMulti-Device JTAG Chain 选择要下载的文件: XXX.pof Add Ok12. ProgrammerConfigure九、 实验数据及结果分析:程序:秒计数器模块library ieee;use ieee.st

9、d_logic_1164.all;use ieee.std_logic_unsigned.all;entity newsecond is port (clk,reset:in std_logic; sec1,sec2: out std_logic_vector(3 downto 0); carry: out std_logic);end newsecond;architecture t1 of newsecond issignal sect1,sect2: std_logic_vector(3 downto 0);begin process(reset,clk) begin if reset=

10、'1' then sect1<="0000" sect2<="0000" elsif (clk'event and clk='1') then if sect1="1001" then sect1<="0000" if sect2="0101" then sect2<="0000" else sect2<=sect2+1; end if; else sect1<=sect1+1; end if; if

11、 (sect1="1001" and sect2="0101") then carry<='1' else carry<='0' end if;end if; end process; sec1<=sect1; sec2<=sect2;end t1;分计数器模块library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity minute is port (clk,reset:in std_logic; m

12、in1,min2: out std_logic_vector(3 downto 0); carry: out std_logic);end minute;architecture t2 of minute issignal mint1,mint2: std_logic_vector(3 downto 0);begin process(reset,clk) begin if reset='1' then mint1<="0000" mint2<="0000" elsif (clk'event and clk='1

13、') then if mint1="1001" then mint1<="0000" if mint2="0101" then mint2<="0000" else mint2<=mint2+1; end if; else mint1<=mint1+1; end if; if (mint1="1001" and mint2="0101") then carry<='1' else carry<='0'

14、 end if;end if; end process; min1<=mint1; min2<=mint2;end t2;时计数器模块library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity hour is port (clk,reset:in std_logic; hour1,hour2: out std_logic_vector(3 downto 0); carry: out std_logic);end hour;architecture t3 of hour issigna

15、l hourt1,hourt2: std_logic_vector(3 downto 0);begin process(reset,clk) begin if reset='1' then hourt1<="0000" hourt2<="0000" elsif (clk'event and clk='1') then if (hourt2="0010" and hourt1="0011") then hourt1<="0000" hour

16、t2<="0000" elsif (hourt2<"0010" and hourt1="1001") then hourt1<="0000" hourt2<=hourt2+1; else hourt1<=hourt1+1; end if; if (hourt1="0011" and hourt2="0010") then carry<='1' else carry<='0' end if;end if;

17、 end process; hour1<=hourt1; hour2<=hourt2;end t3;数据选择器模块library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity m6_1scan isport(clkscan,reset:in std_logic; in1,in2,in3,in4,in5,in6: in std_logic_vector(3 downto 0); data:out std_logic_vector(3 downto 0); sel: out std_log

18、ic_vector(2 downto 0);end m6_1scan;architecture t1 of m6_1scan is signal count: std_logic_vector(2 downto 0);beginprocess(reset,clkscan) begin if reset='1' then data<="0000" elsif (clkscan'event and clkscan='1') then if count<5 then count<=count+1; else count&l

19、t;="000" end if; end if; sel<=count; case count is when "000"=>data<=in1; when "001"=>data<=in2; when "010"=>data<=in3; when "011"=>data<=in4; when "100"=>data<=in5; when others=>data<=in6; end case;en

20、d process;end t1;七段译码器显示模块 library ieee;use ieee.std_logic_1164.all;entity clk7 is port (data: in std_logic_vector(3 downto 0); doute: out std_logic_vector(6 downto 0);end clk7;architecture behave of clk7 is begin process(data) begin case data is when "0000"=>doute<="1111110&quo

21、t; when "0001"=>doute<="0110000" when "0010"=>doute<="1101101" when "0011"=>doute<="1111001" when "0100"=>doute<="0110011" when "0101"=>doute<="1011011" when "0110&q

22、uot;=>doute<="1011111" when "0111"=>doute<="1110000" when "1000"=>doute<="1111111" when others=>doute<="1111011" end case; end process; end behave;通过测试,时、分、秒的计时结果正确。十、 实验结论:通过上述数字钟的设计可以看出,采用硬件描述语言和PLD器件相结合进行数字集成电路的设计简单方便,EDA技术的发展在一定程度上实现了硬件设计的软件化。十一、 总结及心得体会:通过这次的实验使我对数字钟的FPGA设计有了一个更深刻的认识。掌握了计数器的基本设计方法。初步了解了ALTERA MAXPLUSII 软件的使用。十二、 对本实验过程及方法、手段的改进建议:无12 / 12文档可自由编辑打印

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1