数字频率计课程设计.doc_第1页
数字频率计课程设计.doc_第2页
数字频率计课程设计.doc_第3页
数字频率计课程设计.doc_第4页
数字频率计课程设计.doc_第5页
免费预览已结束,剩余13页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

电子课程设计 数字频率计 学院: 专业、班级: 姓名: 学号 : 指导老师: 时间: 目录一、设计任务要求3二、总体框图3三、选择器件3四、功能模块41、分频部分 42、控制部分 63、计数部分 64、锁存部分 95、数据选择部分 106、3-8译码部分 127、显示部分 13五、总体设计电路图 141、总体电路的原理图152、总体电路仿真图163、管脚分配图164、实验连线与硬件验证情况 17六、总结 17参考文献 2数字频率计一、设计任务与要求1、设计任务:检测输入信号频率,并显示在数码管上,输入信号频率在1hz999hz。2、设计要求:写出设计步骤,画出设计电路图,设计顶层文件及各模块程序,实验箱连线,程序下载,功能测试。二、总体框图 控制部分系 统 时 钟 分 频 部 分 数据选择 计 数 部 分 数 据 锁 存 部分数码管地址译码数码管显示部分总体框图设计思路:由50mhz系统时钟分频得到0.5hz的基准时钟,在基准时钟的1s高电平期间计被测频率的脉冲个数,1s高电平结束时计数结束,所记录的脉冲个数就是被测信号的频率,为了在数码管上显示计数结果需要锁存器将所计的数锁存,因此,在基准时钟下降沿来的时候锁存器实现锁存功能。为了下次计数必须将本次计数的结果清零,所以在基准时钟低电平期间对计数器清零。被测频率从计数器的是中端输入实现频率的测试。将锁存器锁存的数据输入扫描器,通过译码器将锁存的二进制数译成十进制然后显示到数码管上,最终被读出来。此频率计的测频的最大值是9999hz,超出范围将无法显示正确的结果。三、选择器件1、装有quartusii软件的计算机一台。2、芯片:使用altera公司生产的cyclone系列芯片,如ep1c12q240c8芯片。3、eda实验箱一个。4、下载接口是数字芯片的下载接口(jtag)主要用于fpga芯片的数据下载。35、拨码开关。6、时钟源。 cyclone的配置器件 配置器件器件数量ep1c3ep1c4ep1c6ep1c12ep1c20epcs1111n/an/aepcs411111epc2 11122epc411111epc811111epc16111111、新的可编程体系结构,实现低成本设计。 2、嵌入式存储器资源支持多种存储器应用和数字信号处理(dsp)实现 3、专用外部存储器接口电路,支持与ddr fcram和sdram器件以及sdr sdram存储器的连接。 4、支持串行总线和网络接口以及多种通信协议 片内和片外系统时序管理使用嵌入式pll 5、支持单端i/o标准和差分i/o技术,lvds信号数据速率高达640mbps。 6、处理功耗支持nios ii 系列嵌入式处理器 7、采用新的串行配置器件的低成本配置方案四、功能模块1、分频器 图一library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;4entity div isport(clk_in:in std_logic; clk1k,clk5:out std_logic);end div;architecture a of div issignal fre_n:integer range 0 to 19999;signal clk_tmp:std_logic;signal tmp:std_logic;begin clk1k=clk_tmp; clk5=19999 then fre_n=0; clk_tmp=not clk_tmp; else fre_n=fre_n+1; end if; end if;end process;process(clk_tmp) variable count : integer range 0 to 619; begin if clk_tmpevent and clk_tmp=1 then if count=619 then tmp=not tmp;count:=0; else count:=count+1; end if; end if; end process;end a;分频器的逻辑功能分析:第一个进程将50mhz的系统时钟分成为0.5hz的时钟信号,第二个进程分成19999hz的时钟,0.5hz的时钟信号高电平期间用于计数器的计数、低电平期间清零、下降沿的时候锁存器锁存数据;而619hz的时钟信号用于扫描器的驱动时钟,当619hz的时钟信号上升沿来的时候扫描器进行扫描。2、测控器5 图二library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity testctl is port(clk:in std_logic; tsten:out std_logic; clr_cnt:out std_logic; load:out std_logic);end testctl;architecture a of testctl is signal div2clk:std_logic; beginprocess(clk) beginif(clkevent and clk=1) then div2clk=not div2clk;end if;end process; process(clk,div2clk)beginif(clk=0and div2clk=0) thenclr_cnt=1;elseclr_cnt=0;end if; end process;load=not div2clk; tsten0); elsif clkevent and clk=1 thenif en=1 thenif cqi0);end if;end if;end if;if cqi=9 then cout=1;else cout=0;end if;cq=cqi;end process;end behav; 图五十进制计数器的逻辑功能分析:在计数器的时钟信号处于高电平期间,即1s高电平期间,当被测频率的上升沿来的时侯计数器加一,当个位计到九的时候给十位进一,同理当十位、百位、千位等等计满九的时候给对应的高位进一。当0.5hz的1秒高电平结束的时候计数停止,当1秒低电平来的时候对计数器所计的数清零,为下次的计数做准备,当下一个时钟上升沿来的时候再次的计数。 4、锁存器 8 图六library ieee;use ieee.std_logic_1164.all;entity reg24 is port(load,rst:in std_logic; din:in std_logic_vector(3 downto 0); dout:out std_logic_vector(3 downto 0); end reg24;architecture a of reg24 is signal data:std_logic_vector(3 downto 0);begin process(rst,load) beginif rst=1 thendata0);elsif(loadevent and load=1) then data=din; end if; dout=data; end process;end 9图七锁存部分的逻辑功能分析:当0.5hz的基准时钟下降沿来的时候锁存器是能,将计数器输出端给的数据锁存。5、4选1数据选择器 图八library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity seltime is port( clk1,reset:in std_logic;10d1,d2:in std_logic_vector(3 downto 0); d3,d4:in std_logic_vector(3 downto 0); daout :out std_logic_vector(3 downto 0); sel:out std_logic_vector(2 downto 0); end seltime;architecture fun of seltime is signal count:std_logic_vector(2 downto 0);begin sel=count; process(clk1,reset) begin if(reset=1)then count=011)then count=000; else countdaoutdaoutdaoutdaout=d4;end case;end process;end fun; 图九114选1数据选择器的逻辑功能分析:选择器的功能是进行位选。本实验是四位十进制计数器,有四位计数器和索存器。选择器进行选择分别进行控制。位选之后然后通过译码器显示。6、3-8译码器 图十library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all; entity decode3_8 isport(sel: instd_logic_vector(2 downto 0);q: outstd_logic_vector(7 downto 0);end decode3_8;architecture a of decode3_8 isbeginq=11111110when sel=0 else 11111101when sel=1 else 11111011when sel=2 else 11110111when sel=3 else 11111111;end a;12图十一3-8译码器的逻辑功能分析:将扫描输出的三位二进制数译成与之相对应的十进制数,以便在数码管上直接显示测频结果。7、数码显示 图十二library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity deled is13port(num:in std_logic_vector(3 downto 0);led:out std_logic_vector(6 downto 0);end deled;architecture fun of deled isbeginled=1111110when num=0000else 0110000when num=0001else 1101101when num=0010else 1111001when num=0011else 0110011when num=0100else 1011011when num=0101else 1110000when num=0111else 1111111when num=1000else 1111011when num=1001;end fun; 图十三数码显示的逻辑功能分析:将七段数码管的输入,即四位二进制数译十进制的形式显示到数码管上,数码管的每段是高电平,即输出位1是对应的灯就亮,输出位输出0则就灭,根据灯亮的段读出数字。 五、总体设计电路图1、设计原理图14图十四电路的总体工作概括:本设计有两个时钟信号,一个是clk,一个是fryin。clk是总的时钟信号用来实现仿真,fryin是待测时钟信号,io3与ioclk连接以便测信号频率。分频器将时钟信号分为1khz和5hz。5hz用来扫频送到测控器模块。测控器一个输出为tsten送给计数器以便计数,一个输出为清零端,另一个为置数端。十进制计数器和索存器分别实现计数和索存功能。模块将锁存输入到4选1 多路选择器,为个锁存器分别有四个控制端,选择器进行位选之后通过3-8译码器译码,然后显示在7段数码管上。2、波形仿真图15图十五波形仿真分析: 在上图波形当中,当译码输出即setout是11111110时,数码输出即abcdefg 是1111110,这表示个位显示十进制数0。当译码输出即译码输出setout 是11111101,数码输出是即abcdefg 是1111110,这表示十位显示十进制数0.据次原则,依次根据译码输出对应读出八位数字,最后换算成准确的频率数。3、管脚分配图 图十六164、eda实验箱上的硬件验证(1)试验箱连线:将eda试验箱上的io3与ioclk连接。(2)当拨码开关拨到1111时,数码管显示1hz;当拨码开关拨到0111时,数码管显示5hz;当拨码开关拨到1011时,数码管显示10hz;当拨码开关拨到1101时,数码管显示50hz;当拨码开关拨到0101时,数码管显示503hz;当拨码开关拨到1001时,数码管显示1093hz;被测频率越高,误差越大。六、总结 第一次看到课程设计,没有搞懂频率计的含义。当时只设计了一个时钟信号,在后来实验中,也没有注意位选和控制。要准确的显示每一位数字,每个数码管上都应该有自己的控制端。最初的设计中没有4选1选择器,也没有注意3-8译码器的主要性,没有译码器数据无法编译成数码管识别的数字。在老师的指导下,重点设计了分频器、选择器、3-8译码器。虽然程序可以编译但是还得考虑另外的也是非常致命的一个问题是我的软件必须和硬件相匹配。在设计过程当中遇到好多大大小小的问题,当是,每次出麻烦都与我的分频器有关,当分得的扫描频率太大的时候,数码管上扫描的数据闪的厉害,很不稳定,然而,太小的时候,数码管就是一片黑,根本没显示,所以必须一直调扫描时钟的频率。

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论