数字频率计测频系统的设计毕业论文(编辑修改稿)内容摘要:

计数器内部的计数功能 , 计数器的内部计数 信号 clk 和频率计数器的使能信号 enable。 频率计数器的计数模块的输出信号就是个位 sec、 十位 sec10。 电路图如 图 26 所示。 图 26 计数模块电路图 10 十进制计数器 , 它的输入端口主要包括使能端口 enable 计数输入端口clk, 输出端口主要包括计数输出端口 q 和进位输出端口 cout。 计数模块程序及仿真图 计数模块的程序如下: LIBRARY IEEE。 USE。 USE。 ENTITY count10 IS PORT( enable:IN STD_LOGIC。 clk:IN STD_LOGIC。 cout:out STD_LOGIC。 q:OUT STD_LOGIC_VECTOR(3 DOWNTO 0))。 END count10。 ARCHITECTURE rt1 OF count10 IS SIGNAL q_tmp:STD_LOGIC_VECTOR(3 DOWNTO 0)。 BEGIN process(clk) begin IF(clk39。 event and clk=39。 139。 )then if(enable=39。 139。 )then if(q_tmp=1001)then q_tmp=0000。 else q_tmp=q_tmp+1。 end if。 end if。 end if。 q=q_tmp。 end process。 cout=39。 139。 when q_tmp=1001and enable=39。 139。 else39。 039。 end rt1。 描述了上述的十进制计数器后 ,我们就可以根据图三所示的结构框图来进行频率计数器计数模块的 VHDL 描述了。 在频率计数器计数模块的 VHDL描述中,我们引用元件的形式调用上面描述的十进制计数器。 从而得到频率计数器的计数功能,程序如下: LIBRARY IEEE。 USE。 ENTITY time_counter IS 11 PORT( enable:IN STD_LOGIC。 clk0:IN STD_LOGIC。 sec10:OUT STD_LOGIC_VECTOR(3 DOWNTO 0)。 sec:OUT STD_LOGIC_VECTOR(3 DOWNTO 0))。 END time_counter。 ARCHITECTURE rt1 OF time_counter IS COMPONENT count10 PORT( enable:IN STD_LOGIC。 clk:IN STD_LOGIC。 cout:out STD_LOGIC。 q:OUT STD_LOGIC_VECTOR(3 DOWNTO 0))。 end COMPONENT。 SIGNAL co1,co2:STD_LOGIC。 BEGIN U1:count10 PORT MAP(enable,clk0,co1,sec)。 U2:count10 PORT MAP(co1,clk0,co2,sec10)。 end rt1。 编译通过后,产生的符号如图 27 所示,仿真 波形图 如图 28 所示。 图 27 计数模块 图 图 28 计数模块的仿真波形图 显示模块 有了计数模块还不能满足设计的要求,任何一个设计都是需要一定的硬件设备来表达。 否则,只有一个理论的程序是不足以来证明一个设计的完整性。 在参考一些资料和根据实验提供的条件,我在这个设计中采用 2 个七段数码管来对这个频率计进行实际的表达。 频率计数器要将计数的结果显示出来 , 就必需设计一个计数显示模块来 12 完成该显示功能。 频频计数器的显示模块的输入信号主要来自于频频计数器计数模块的计数信息 , 它的输出信号是 choose 和 segment, 以用来驱动计数显示的 8 个 LED 七段显示数码管 , 在输出信号中 , 为了节省资源 ,我们采用循环点亮 LED 七段显示数码管的方法来显示频率计数器的计数输出 .我们通过信号 choose(7downto0)来进行 8 个 LED 七段显示数码管的选择 ,从而将输出信号 segment(6downto0)送到相应的 LED 七段显示数码管上以完成频率计数的显示。 计数显示模块的结构框图如图 29 所示 : 图 29 显示模块电路图 从图 29 以看出 ,计数显示模块可由三个部分组成 :八进制计数器 、 计数位选择电路 、 七段显示译码电路。 下面描述一下计数显示模块的工作过程 :在外部计数信号 clk 的作用下 ,八进制计数器的输出从 000 到 111 按顺序循环变化 ,输出信号为 sel。 信号 sel 作为计数位选择电路的选择信号 ,用来选择对应位的数据并将其转换为四位位矢量。 最后将计数位选择电路的输出信号 q 送到七段显示译码电路的输入端口 , 将其转化成用来点燃 LED 七段显示数码管的 segment 信。 七段数码管的描述 我们所使用实验箱中的 8 个七段数码管有这样一个特点, 8 个数码管中每一个数码管中相同的段都是连在一根线上的。 如图 210 所示 : 图 210 七段数码管 故只要有一个数码管的一段亮, 8 个数码管中相同的段都会亮。 在选用 13 数码管后我们 需要考虑一个问题,就是如何在每个数码管上正确的显示程序中每一位要显示的数据, 也就是如何将前面的计数模块中要显示的数字准确的表达在数码管上。 在这里就运用了人体生理学的一个结论,人的眼睛能分辨的时间是 1/16 秒,即频率为 25Hz 左右。 有了这个结论后,我们就可以解决正确显示的问题了,应用动态扫描的方法,只要我 们在显示模块中所使用的频率大于 25Hz 就可以让每个数码管正确的显示程序中所要求的数字了。 因此,在显示模块中首先要设计一个分频器,实验提供的脉冲是 1KHz,我们只要设计的分频器所分出来的频率大于 25Hz 即可,在此我选择一个 8 分频器。 8 分频器的输入信号为 clk,输出信号为 sel(2 DOWNTO 0)。 显示模块中数字位选的问题解决后就需要解决另外一个问题了,那就是如何将程序中的数字在数码管上有效显示出来,即如何让我们能一眼就看出来显示的数字是 0、 9 这十个数字。 根据数码的结构特点 ,我们采用高低电平的方法点亮数码管对应的段即可。 七段数码管的显示结构如图 211 所示: 图 211 数码管管脚图 表 21 详细的 列出了 0、 9 这十个数 与 七段数码管 的对应关系。 表 21 7 段数码管的显示关系 段数字 a b c d e f g 0 1 1 1 1 1 1 0 1 0 1 1 0 0 0 0 2 1 1 0 1 1 0 1 3。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。