八位十进制频率计

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

EDA技术

课程设计报告

课题 8位十进制频率计

学院物理与电子信息学院

专业电子与信息工程

姓名 xxx 学号 xxxxxxxxx 指导教师吴朝晖

日期 2013.6.17

目录

一、实验目的 (3)

二、实验内容 (3)

三、实验原理 (3)

四、实验设计 (5)

1、信号发生器 (6)

2、锁存器部分 (7)

3、数码管部分 (8)

4、译码器部分 (9)

5、计数器部分 (10)

五、实验现象 (12)

六、实验心得 (13)

一、实验目的

1、巩固和加深对EDA技术基本知识和概念的理解,提高自己对专业知识的利用能力

2、频率测量的基本目的是计算每秒钟内待测信号的脉冲个数。

二、实验内容

设计并调试好一个8位十进制频率计并使用MAX+plus II 10.2软件进行系统仿真、硬件是使用ZY11EDA13BE型实验箱。并由外接试验箱实时显示。根据8位十进制频率计的设计原则以及电路的基本原理,本实验所设计的频率计由三个模块组成:测频控制信号发生器TESTCTL、8个有时钟使能的十进制计数器CNT10和一个32位锁存器REG32B。

三、实验原理

总框图如下:

测频控制信号发生器的设计要求:频率测量的基本原理是计算每秒钟内待测信号的脉冲个数。这就要求测频控制信号发生器TESTCTL的计数使能信号TSTEN能产生一个1秒脉宽的周期信号,并对频率计的每一计数器CNT10的使能端ENA 进行同步控制。当TSTEN为高电平时,允许计数;为低电平时停止计数,并保持其计数结果。在停止计数期间,首先需要一个锁存信号LOAD的上跳沿将计数器在前1秒钟的计数值锁存进32位锁存器REG32B中,并由外部的7段译码器译出,并稳定显示。设置锁存器的好处是,显示的数据稳定,不会由于周期性的清零信号而不断闪烁。锁存信号之后,必须有一个清零信号CLR_CNT对计数器进行清零,为下1秒钟的计数操作做准备。测频控制信号发生器的工作时序如下图27-1所示。为了产生这个时序图,需首先建立一个由D触发器构成的二分频器,在每次时钟CLK上升沿到来时其值翻转。

图27-1 测频控制信号发生器的工作时序图中控制信号时钟CLK的频率取1HZ,那么信号TSTEN 的脉宽恰好为1S,可以用作计数闸门信号。然后根据测频的时序要求,可得出信号LOAD和CLR_CNT的逻辑描述。由图27-1可见,在计数完成后,即计数使能信号TSTEN在1S的高电平后,利用其反相值的上跳沿产生一个锁存信号LOAD,0.5S后CLR_CNT产生一个清零信号上跳沿。高质量的测频控制信号发生器的设计十分重要,设计中要对其进行仔细的实时仿真,防止可能产生的毛刺。

寄存器REG32B设计要求是:若已有32位BCD码存在于此模块的输入口,在信号LOAD的上升沿后即被锁存到寄存器REG32B的内部,并由REG32B的输出端输出,然后由7段译码器译成能在数码管上显示输出的相应数值。

计数器CNT10设计要求:有一时钟使能输入端,用于锁定计数值。当高电平时计数允许,低电平时禁止计数。

四、实验设计

模拟电路图如下:

各模块仿真如下

1、测频信号发生器TESTCTL

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 behav of testctl is signal div2clk : std_logic;

begin

process(clk)

begin

if(clk'event and clk='1') then

div2clk<=not div2clk;

end if;

end process;

process(clk,div2clk)

begin

if(clk='0' and div2clk='0') then

clr_cnt<='1'; else

clr_cnt<='0';

end if;

end process;

load<=not div2clk;

tsten<=div2clk;

end behav;

2、锁存器REG32B部分

library ieee;

use ieee.std_logic_1164.all;

entity reg32b is

port( load : in std_logic;

rst: in std_logic;

din: in std_logic_vector(31 downto 0);

dout:out std_logic_vector(31 downto 0));

end reg32b;

architecture behav of reg32b is

signal data:std_logic_vector(31 downto 0);

begin

process(rst,load)

begin

if rst='1' then

data<=(others=>'0');

elsif(load'event and load='1') then

data<=din;

end if;

dout<=data;

end process;

end behav;

相关文档
最新文档