




免费预览已结束,剩余14页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
电子科技大学电子技术综合实验报告题 目:基于EDA技术的数字秒表设计 学 院:光电信息学院 专 业:光信息科学与技术 班 级:29053010 学 号:2905301014 姓 名:李雄风 指导老师:皇晓辉 2012年3月20日一、设计目标1.1设计要求利用FPGA实验电路板,设计实现一个数字秒表,其计数范围为000000595999,计数结果用8个数码管显示;设置两个按钮开关,一个按钮使秒表复位,另一个按钮控制秒表的启动/停止。1.2面板构思根据上面的设计要求,给出如下图1-1所示的数字秒表外观面板的基本排布构思图。图1-1 外观面板排布图1.3面板分析1.3.1计数器分析该数字秒表的计数范围为000000595999,其分十位和秒十位均为六进制计数器,其他位则均为十进制计数器。因此,总共需要6个计数器,其中2个为六进制计数器,4个为十进制计数器。在每个计数器中设置进位输出端和使能端,将6个计数器通过进位输出端和使能端级联构成异步计数,就能实现数字秒表由000000到595999的计数。1.3.2启停按钮分析按下启停按钮,应使原本处于计数状态的秒表暂停计数,或者使原本暂停计数的秒表恢复计数。暂停期间,秒表应保持计数结果;恢复计数时,秒表应从保持的结果处开始计数。要达到以上效果,可以通过控制最低位计数器的使能端(刚好其未参与级联)来实现。具体地说,按下启停按钮时,将会产生一个脉冲,利用该脉冲可以实现对使能端的边沿触发,只要在每次按下启停按钮时让使能信号翻转,就可以实现上述功能。1.3.3复位按钮分析按下复位按钮,应使原本暂停计数的秒表恢复到初始值000000;而对于原本正在计数的秒表,其应不起作用。要达到以上效果,可以在每个计数器上设置一个清零端,当使能信号为无效时,利用按下复位按钮产生的脉冲对所有的清零端实现边沿触发,使其有效;而在使能信号有效时,该脉冲应不起作用。二、电路设计2.1模块划分为实现该数字秒表的功能,将整个数字秒表分解为几个模块分别进行设计,最后再将各模块连接起来,构成一个整体。需要设计的模块应包括以下几个:(1)分频器在FPGA实验电路板上,有一个晶振可以提供48MHz的输入信号,而对于所要求的数字秒表,其最小计数间隔为0.01秒,即应将48MHz的晶振频率分频到100Hz。另外,在计数结果输出显示时,往往利用人们的视觉暂留效应,采取扫描显示的方法(这样可以节省电路开销),为此需要产生一个扫描信号,一般取其频率为1kHz,因此还需将48MHz的晶振频率分频到1kHz。(2)计数器计数器部分应由2个六进制计数器和4个十进制计数器构成,在1.3中,已经对其做了详细说明,在此不再赘述。(3)启停和复位模块该部分也已经在1.3中做了详细说明,在此不再赘述。(4)扫描模块扫描模块应在1kHz的扫描信号驱动下,产生3位二进制计数输出。该1kHz的扫描信号由分频器输出,而产生的3位二进制计数输出,则作用于8个数码管的选通。由于FPGA实验电路板内已经集成了一个3-8译码器,故可用该3位二进制计数输出直接控制8个数码管的选通。(5)显示模块将8个八段数码管编号为LDE0,LED1,LED7,如图1-1所示。当LED0被扫描模块的输出信号选通时,应使最低位计数器的计数值显示译码到八段显示器上输出;当LED1被选通时,应使次低位计数器的计数值显示译码到八段显示器上输出;以此类推。应注意的是,当LED2和LED5被选通时,没有对应的计数器给其提供计数值,应给他们设定一个固定值,再显示译码输出“-”。2.2模块设计2.2.1分频器设计如2.1中分析,总共需要两种分频器,它们的设计分别如下:(1)100Hz分频VHDL描述如下:library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;entity fenpin1 is Port (clk : in STD_LOGIC; newclk : out STD_LOGIC);end fenpin1;architecture ART of fenpin1 is signal count:integer range 0 to 10#479999#;beginprocess(clk)begin if clkevent and clk=1 then if count=10#479999# then count=0; newclk=1; else count=count+1; newclk=0; end if; end if;end process;end ART;电路图如下图2-1所示:图2-1 100Hz分频器(2)1kHz分频VHDL描述如下:library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;entity fenpin2 is Port ( clk : in STD_LOGIC; newclk : out STD_LOGIC; din3 : out STD_LOGIC_VECTOR (3 downto 0); din6 : out STD_LOGIC_VECTOR (3 downto 0);end fenpin2;architecture ART of fenpin2 is signal count:integer range 0 to 10#47999#;beginprocess(clk)begin if clkevent and clk=1 then if count=10#47999# then count=0; newclk=1;din3=1111;din6=1111; else count=count+1; newclk=0; din3=1111;din6=1111; end if; end if;end process;end ART;电路图如下图2-2所示:图2-2 1kHz分频器2.2.2计数器设计如1.3中分析,总共需要两种计数器,它们的设计分别如下:(1)六进制计数器VHDL描述如下:library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;entity jishu6 is Port ( clk : in STD_LOGIC; clr : in STD_LOGIC; en : in STD_LOGIC; cn : out STD_LOGIC; count6 : out STD_LOGIC_VECTOR (3 downto 0);end jishu6;architecture ART of jishu6 is signal recount6:STD_LOGIC_VECTOR(3 DOWNTO 0);begincount6=recount6;process(clk,clr,en)begin if clr=1 then recount6=0000;cn=0; elsif rising_edge(clk) then if en=1 then if recount6=0101 then recount6=0000;cn=1; else recount6=recount6+1;cn=0; end if; end if; end if;end process;end ART;电路图如下图2-3所示:图2-3 六进制计数器(2)十进制计数器VHDL描述如下:library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;entity jishu10 is Port ( clk : in STD_LOGIC; clr : in STD_LOGIC; en : in STD_LOGIC; cn : out STD_LOGIC; count10 : out STD_LOGIC_VECTOR (3 downto 0);end jishu10;architecture ART of jishu10 is signal recount10:STD_LOGIC_VECTOR(3 DOWNTO 0);begincount10=recount10;process(clk,clr,en)begin if clr=1 then recount10=0000;cn=0; elsif rising_edge(clk) then if en=1 then if recount10=1001 then recount10=0000;cn=1; else recount10=recount10+1;cn=0; end if; end if; end if;end process;end ART;电路图如下图2-4所示:图2-4 十进制计数器2.2.3启停和复位模块设计如1.3中分析,启停和复位模块的设计如下:VHDL描述:library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;entity xx is Port ( clk : in STD_LOGIC; reset : in STD_LOGIC; runstop : in STD_LOGIC; clr : out STD_LOGIC; en : inout STD_LOGIC);end xx;architecture ART of xx isbeginprocess(reset,runstop)begin if runstop =1 and runstopevent then en=(NOT en); end if; if en=1 then clr=0; elsif reset=1 and resetevent then clr=1; end if;end process;end ART;电路图如下图2-5所示:图2-5 启停和复位模块2.2.4扫描模块设计如2.1中分析,扫描模块的设计如下:VHDL描述:library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;entity hangsaomiao is Port ( clk : in STD_LOGIC; din1 : in STD_LOGIC_VECTOR (3 downto 0); din2 : in STD_LOGIC_VECTOR (3 downto 0); din3 : in STD_LOGIC_VECTOR (3 downto 0); din4 : in STD_LOGIC_VECTOR (3 downto 0); din5 : in STD_LOGIC_VECTOR (3 downto 0); din6 : in STD_LOGIC_VECTOR (3 downto 0); din7 : in STD_LOGIC_VECTOR (3 downto 0); din8 : in STD_LOGIC_VECTOR (3 downto 0); dp : out STD_LOGIC; cs : out STD_LOGIC; selt : out STD_LOGIC_VECTOR (2 downto 0); daout : out STD_LOGIC_VECTOR (3 downto 0);end hangsaomiao;architecture ART of hangsaomiao is signal cout:std_logic_vector(2 downto 0);begin selt=111 then cout=000;cs=0;else cout=cout+1;csdaout= din1 ; dpdaout= din2 ; dpdaout= din3 ; dpdaout= din4 ; dpdaout= din5 ; dpdaout= din6 ; dpdaout= din7 ; dpdaout= din8 ; dpdaout=din1; dp led led led led led led led led led led led= 1111110;end case;end process;end ART;电路图如下图2-7所示:图2-7 显示模块2.3顶层模块设计在设计完各个子模块后,需要设计一个顶层模块,将各个子模块连接起来,实现完整的数字秒表功能。该顶层模块的设计如下:VHDL描述:library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;entity stopwatch is Port ( clk : in STD_LOGIC; reset : in STD_LOGIC; runstop : in STD_LOGIC; dp : out STD_LOGIC; cs : out STD_LOGIC; selt : out STD_LOGIC_VECTOR (2 downto 0); led : out STD_LOGIC_VECTOR (6 downto 0);end stopwatch;architecture ART of stopwatch is component fenpin1 is port(clk:in STD_LOGIC; newclk:out STD_LOGIC); end component; component fenpin2 is port(clk:in STD_LOGIC; newclk:out STD_LOGIC;din3,din6:out std_logic_vector(3 downto 0); end component; component xx is port(clk,reset,runstop:in std_logic; clr:out std_logic; en:buffer STD_LOGIC); end component; component jishu10 is port(clk,clr,en:in std_logic; cn:out std_logic; count10:out STD_LOGIC_VECTOR(3 DOWNTO 0); end component; component jishu6 is port(clk,clr,en:in std_logic; cn:out std_logic; count6:out STD_LOGIC_VECTOR(3 DOWNTO 0); end component; component hangsaomiao is port(clk:in std_logic; din1,din2,din3,din4,din5,din6,din7,din8:in std_logic_vector(3 downto 0);dp,cs:out std_logic;selt: out std_logic_vector(2 downto 0); daout:out std_logic_vector(3 downto 0); end component; component display is port(BCD:in STD_LOGIC_VECTOR(3 DOWNTO 0); led:out STD_LOGIC_VECTOR(6 DOWNTO 0 ); end component; signal aa1,aa2,aa3,aa4,aa5,aa6:std_logic; signal bb1,bb2,bb3,bb4,bb5,bb6,bb7,bb8,bb9:std_logic_vector(3 downto 0); signal cc1,cc2,clr,en:std_logic;beginU0: fenpin1 port map(clk,cc1);U1: fenpin2 port map(clk,cc2,bb3,bb6);fd: xx port map(cc2,reset,runstop,clr,en);U2: jishu10 port map(cc1,clr,en,aa1,bb1);U3: jishu10 port map(aa1,clr,en,aa2,bb2);U4: jishu10 port map(aa2,clr,en,aa3,bb4);U5: jishu6 port map(aa3,clr,en,aa4,bb5);U6: jishu10 port map(aa4,clr,en,aa5,bb7);U7: jishu6 port map(aa5,clr,en,aa6,bb8);U8:hangsaomiao port map(cc2,bb1,bb2,bb3,bb4,bb5,bb6,bb7,bb8,dp,cs,selt,bb9);U9: display port map(bb9,led);end ART;电路图如下图2-7所示:图2-7 顶层模块三、软件仿真以100Hz分频器为例进行仿真。在Xilinx ISE 9.1i中输入VHDL代码,综合无误,下面利用ModelSim SE 6.2b进行仿真,结果如下图3-1所示:图3-1 100Hz分频器仿真由图3-1可知,输入48MHz的时钟信号clk,输出为100Hz的脉冲信号newclk,可见设计是成功的。四、硬件实现4.1引脚设置将所有子模块的VHDL代码输入Xilinx ISE 9.1i,最后再输入顶层模块的VHDL代码,综合无误后,即可设置引脚。本设计的引脚设置如下图4-1所示:图4-1 引脚设置图4.2烧入代码在Xilinx ISE 9.1i中,光标移至【Generate Programing File】单击鼠标右键,然后
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 浙江事业单位笔试真题2025
- 聊城事业单位笔试真题2025
- 2024年新疆第二医学院招聘事业单位工作人员笔试真题
- 主题4 战略性矿产资源-石油教学设计-2025-2026学年高中地理选择性必修3中图中华地图版
- 2024-2025学年高中化学 第三章 第四节 离子晶体说课稿 新人教版选修3
- 九年级化学下册 第九单元 溶液 实验活动5 一定溶质质量分数的氯化钠溶液的配制说课稿 (新版)新人教版
- 油墨厂高岭土验收规章
- 企业员工保密合同协议
- 股权转让合同
- 第三节 撒哈拉以南非洲说课稿-2025-2026学年初中地理鲁教版五四学制六年级下册-鲁教版五四学制2012
- 电缆沟及盖板作业指导书培训课件
- GB/T 19867.6-2016激光-电弧复合焊接工艺规程
- GB/T 19478-2018畜禽屠宰操作规程鸡
- 三级教育考试卷(焊工)答案
- 无生上课课堂教学评价标准
- 深圳低压电工作业-实际操作培训课件-科目四-作业现场应急处理
- 中控岗位培训课件
- 宾馆酒店前台责任书
- 2.2 第2课时 基本不等式的综合应用(课件)高一数学(人教A版2019必修第一册)
- 勿忘国耻教学课件
- 《中国音乐发展简史》PPT课件
评论
0/150
提交评论