目录。摘要。正文1
1.设计目的和要求1
2.设计原理1
3.设计内容1
摘要。此次设计的主要目的是学习掌握频率计的设计方法,掌握动态扫描输出电路的实现方法,学习较复杂的数字系统的设计方法。通过单位时间(1秒)内频率的计数来实现频率的设计。
此次设计主要用四位十进制计数器,所以频率计数范围为1~9999hz。量程有1khz,1mhz两档,用led灯指示。且读数大于9999时,频率计处于超量程状态,发出溢出指示,下次量程,量程自动增大一档。
读数小时,频率计处于前量程状态,下次测量,量程自动减小一档。然后锁存防止闪烁显示,最后由译码扫描显示电路输出到数码管进行显示输出。并且**后能够进行**频率的计数和静态显示。
通过这次的设计能够更清楚的理解vhdl程序的描述语言,进行简单程序的编写和**。
关键词:eda技术、频率、四位十进制、**、锁存显示。
正文。1)设计4位十进制频率计,学习较复杂的数字系统设计方法;
2)用vhdl硬件描述语言进行模块电路的设计;
3)掌握较为复杂的原理图层次化设计,熟悉详细的设计流程。
根据频率的定义和频率测量的基本原理,测定信号的频率必须有一个脉宽为1s的输入信号脉冲计数允许的信号;1s计数结束后,计数值被锁入锁存器,计数器清零,为下一测评计数周期做好准备。测频控制信号可以由一个独立的发生器来产生。
ftctrl的计数使能信号cnt_en能产生一个1s脉宽的周期信号,并对频率计中的4位计数器couter4d的enabl使能端进行同步控制。当cnt_en高电平时允许计数;低电平时停止计数,并保持其所计的脉冲数。在停止计数期间,首先需要一个锁存信号load的上升沿将计数器在前一秒钟的计数值锁进锁存器reg4d中,并由外部的十进制7段译码器译出,显示计数值。
设置锁存器的好处是数据显示稳定,不会由于周期性的清零信号而不断闪烁。锁存信号后,必须有一清零信号rst_cnt对计数器进行清零,为下一秒的技术操作做准备。
3.1模块划分。
设计一个四位十进制频率计,首先需要一个测频控制电路来产生一个脉宽为1s的输入信号脉冲计数允许的信号;然后需要一个4位计数器进行计数,由于我们设计的是四位的十进制的频率计,所以还需要用4个十进制的加法计数器来构成所需要的计数器;在技计数完成之后还需要一个锁存器将计数值进行锁存,从而使显示的数值稳定。
3.2四位计数器设计。
1)输入完整的vhdl语言描述,具体描述如下。
library ieee;
use use
entity cnt4b is
port (clk : in std_logic;
rst : in std_logic;
ena : in std_logic;
outy : out std_logic_vector(3 downto 0);
cout : out std_logic );
end cnt4b;
architecture beh** of cnt4b is
signal cqi : std_logic_vector(3 downto 0);
beginp_reg: process(clk, rst, ena)
beginif rst = 1' then cqi <=0000";
elsif clk'event and clk = 1' then
if ena = 1' then cqi <=cqi + 1;
end if;
end if;
outy <=cqi ;
end process p_reg ; 进位输出。
cout<=cqi(0) and cqi(1) and cqi(2) and cqi(3);
end beh**;
(2) 模块图形符号及逻辑功能描述如图1所示。
图1 四位计数器结构体。
3)**结果及分析,结果如图2所示。
图2 四位计数器**波形。
分析:对照波形进行分析,结果正确说明设计无误。
3.3测频控制器的设计。
1)输入完整的vhdl语言描述,具体描述如下。
library ieee; -测频控制器。
use use
entity testctl is
portclkk : in std_logic; -1hz
cnt_en,rst_cnt,load : out std_logic);
end testctl;
architecture beh** of testctl is
signal div2clk : std_logic;
beginprocess( clkk )
beginif clkk'event and clkk = 1' then div2clk <=not div2clk;
end if;
end process;
process (clkk, div2clk)
beginif clkk='0' and div2clk='0' then rst_cnt <=1';
else rst_cnt <=0'; end if;
end process;
load <=not div2clk ;
cnt_en <=div2clk;
end beh**;
3.4四位锁存器的设计。
1)输入完整的vhdl语言描述,具体描述如下。
library ieee; -4位锁存器。
use entity reg4b is
port ( load : in std_logic;
din : in std_logic_vector(3 downto 0);
dout : out std_logic_vector(3 downto 0) )
end reg4b;
architecture beh** of reg4b is
beginprocess(load, din)
beginif load'event and load='1'
then dout <=din时钟到来时,锁存输入数据。
end if;
end process;
end beh**;
将完成的4位计数器、测频控制器以及4位锁存器的设计打包成模块以便设计顶层文件时调用。
该程序分为五个部分,分别实现预定的功能,然后通过元件例化的方式,组合在一起,编写顶层文件,组合在一起,形成整个系统,各功能相互配合以实现简易频率计的设计。
顶层文件程序中设置一系列的信号,将五个部分的程序输入输出信号相对应的连接起来,并与整个系统的封装引脚相对应。同时将五个程序分别编译后生成的。vhd文件加载进来,然后进行编译,**。
顶层文件的设计,结果如下图所示。
图33.5十进制加法计数器的设计。
library ieee;
use use
entity cnt10 is
port (rst:in std_logic清零端。
fx::in std_logic时钟信号。
ena:in std_logic使能端。
outy:out std_logic_vector(3 downto 0);-输出计数结果。
cout:out std_logic输出信号用于进位。
end entity cnt10;
architecture beh** of cnt10 is
beginprocess(rst,ena,fx)
variable cqi :std_logic_vector(3 downto 0);-定义变量cqi
beginif (rst = 1') then cqi:=(others =>0');
elsif(fx'event and fx = 1') then --在时钟信号fx的上升沿。
if ena='1' then使能端为1,让信号从0--9进行计数。
if cqi<9 then cqi:= cqi+1; cout<='0';
EDA课程设计
题目一 数字钟设计 学号1 15 一 实验目的。学习并掌握数字钟的原理 设计方法。二 实验内容。计数始终由模60秒计数器 模60分计数器 模24小时计数器 报时模块 分 时设定模块及输出显示模块构成。可以采用同步计数器或异步计数器设计方法。三 实验要求。计时范围为0小时0分0秒至23小时59分59秒...
eda课程设计
哈尔滨工业大学 威海 信电学院电子信息工程。一 软硬件介绍。1软件部分介绍。1.1 quartus ii 是altera公司的综合性pld fpga开发软件,支持原理图 vhdl veriloghdl以及ahdl altera hardware description language 等多种设计输...
eda课程设计
目录。1 引言 2 1.1 课程设计的目的与任务 2 1.2 课程设计的内容 2 1.3课程设计仪器设备 2 1.4 课程设计的题目 2 1.5 方案的选择 2 2设计方案 3 2.1 设计原理 3 2.2各功能模块的原理及其源程序 3 2.2.1控制模块 3 2.2.2分频模块 4 2.2.3计时...