课程设计。
1.设计题目与要求。
功能:实现数字信号的频率测量与显示,频率最高为4位。
输入信号:时钟信号clk(10khz),被测信号,复位信号reset(高电平有效)
输出信号:频率的led数码管(共阴极)显示码(静态显示方式)
要求:系统由计数器(被测信号的半个周期时钟上升沿的个数)、计算单元(计算被测信号的频率值)、显示码译码器(将频率的bcd码转换成led显示码)。要求给出系统总体组成框图,设计思路,完成以上模块的vhdl实现及功能**,顶层文件及整体**。
1.2系统设计方案。
根据系统设计要求,需要实现一个4位十进制数字频率计,其原理框图如图1所示。
图1-1 数字频率计组成原理框图。
由于是4位十进制数字频率计,所以计数器cnt10需用4个,7段显示译码器也需用4个。频率测量的基本原理是计算每秒钟内待测信号的脉冲个数。为此,测频控制信号发生器 f_in_cnt应设置一个控制信号时钟clk,一个计数使能信号输出端en、一个与en输出信号反向的锁存输出信号lock和清零输出信号clr。
若clk的输入频率为1hz,则输出信号端en输出一个脉宽恰好为1秒的周期信号,可以作为闸门信号用。由它对频率计的每一个计数器的使能端进行同步控制。当en高电平时允许计数,低电平时停止计数,并保持所计的数。
在停止计数期间,锁存信号lock的上跳沿将计数器在前1秒钟的计数值锁存进4位锁存器lock,由7段译码器译出并稳定显示。设置锁存器的好处是:显示的数据稳定,不会由于周期性的清零信号而不断闪烁。
锁存信号之后,清零信号clr对计数器进行清零,为下1秒钟的计数操作作准备。
1.3 单元电路设计:
1.3.1时基产生与测频时序控制电路模块。
时基产生与测频时序控制电路主要产生计数允许信号en、清零信号clr和锁存信号lock。
时基产生电路。
图2-2 时基产生模块顶层图。
其vhdl程序清单如下:
-clk_sx_ctrl
library ieee;
use use
entity clk_sx_ctrl is
port(clk: in std_logic;
lock: out std_logic;
en: out std_logic;
clr: out std_logic);
end;architecture art of clk_sx_ctrl is
signal q: std_logic_vector(3 downto 0);
beginprocess(clk)
beginif(clk'event and clk='1')then
if q="1111"then
q<="0000";
elseq<=q+'1';
end if;
end if;
en<=not q(3);
lock<=q(3)and not(q(2))and q(1);
clr<=q(3)and q(2)and not(q(1));
end process;
end art;
测频时序控制电路:
为实现系统功能,控制电路模块需输出三个信号:一是控制计数器允许对被测信号计数的信号en;二是将前一秒计数器的计数值存入锁存的锁存信号lock;三是为下一个周期计数做准备的计数器清零信号clr。上述三个信号产生的顺序是:
先提供计数信号,这种信号使计数器在1s提供锁存信号,这种信号对计数值进行锁存;最后是发出清零信号,这种信号可对计数器清零。计数器清零结束后又可重新计数,计数进入第二个周期。不难看出,控制电路模块实际上就是一个控制器,它需要一个周期为1s 的信号作为产生并控制控制器输出的时基信号clk0。
控制电路模块中控制器及端口如图3 所示:
图3 测频时序控制模块顶层图。
其vhdl程序清单如下:
-f_in_
library ieee;
use use
entity f_in_cnt is
port(clk:in std_logic;
en:in std_logic;
clr:in std_logic;
qa,qb,qc,qd:buffer std_logic_vector(3 downto 0 ))
end f_in_cnt;
architecture art of f_in_cnt is
component cnt10
port(clk,en,clr:in std_logic;
count10:buffer std_logic_vector(3 downto 0));
end component;
signal s2:std_logic;
signal s3:std_logic;
signal s4:std_logic;
begins2<=not qa(3);
s3<=not qb(3);
s4<=not qc(3);
u1:cnt10 port map(clk,en,clr,qa);
u2:cnt10 port map(s2,en,clr,qb);
u3:cnt10 port map(s3,en,clr,qc);
u4:cnt10 port map(s4,en,clr,qd);
end art;
2. 待测信号脉冲计数电路模块。
待测信号脉冲信号脉冲计数电路是对待测脉冲信号的频率进行测量,它可由4个十进制加法计数器组成,其中en为计数选通控制信号,clr为计数器清零信号。在计数器清零信号clr清零后,当计数选通控制信号en有效时,开始对待测信号进行计数。如果计数选通控制信号en的宽度为1s,那么计数结果就为待测信号的频率;如果计数选通控制信号en的宽度为100ms,那么待测信号的频率等于计数结果的10倍。
该模块将对输入信号进行十进制计数。它虽然由多个十进制计数器组成,但采用cpld 后,设计时只要先制作一个单个的十进制计数器,然后再将多个结构相同的单个十进制计数器在cpld 内部进行连接就可组合成为一个完整的计数电路模块。为实现系统功能,十进制计数器需要设置三个输入端:
即被测信号输入端clk、计数器状态清零端clr 和计数器工作使能端en。需要设置四个输出端,即count0、count1、count2 和count3 ,并由这四个输出端输出四位bcd码来表示十进制数。需要说明,上述十进制计数器都是满10进1 ,且进位时计数器清零并重新计数。
计数电路模块中的单个计数器符号及端口功能如图4 所示:
图4 待测信号脉冲计数模块顶层图。
其vhdl程序清单如下:
library ieee;
use use
entity cnt10 is
port(clk,en,clr: in std_logic;
count10 :buffer std_logic_vector(3 downto 0));
end cnt10;
architecture one of cnt10 is
beginprocess(clk,clr,en)
beginif clr='1' then
count10<="0000";
elsif(clk'event and clk='1')then
if(en='1')then
if count10="1001"then
count10<="0000";
elsecount10<=count10+'1';
end if;
end if;
end if;
end process;
end one;
3. 锁存与译码显示控制电路模块。
锁存与译码显示控制电路用于实现记忆显示,在测量过程中不刷新新的数据,直到测量过程结束后,锁存显示测量结果,并且保存到下一次测量结束。其功能是对四位bcd码进行锁存并且转换成为对应的4组七段码,用于驱动数码管。
锁存电路模块。
该模块可使系统显示电路的工作稳定而可靠,避免计数电路模块清零时引起显示闪烁的现象。锁存电路模块是由多个锁存器组成。每个锁存器都是用来锁存与其单独相连的计数器的输出数据。
由于每个锁存器锁存的都是4 位2 进**表示的十进制数,其功能完全相同,因此只需要设计制作一个锁存器就可连接组合成一个锁存电路模块。为实现系统功能,锁存器需设置四个数据输入端:即qa、qb、qc 和qd ,并由它们输入计数器的计数值。
需设置一个使锁存器工作的使能端l0ck。还需设置四个锁存数据的输出端:即leda 、ledb 、ledc和ledd 。
锁存电路模块中单个锁存器的符号及端口功能如图5 所示。
图5 4位锁存模块顶层图。
其vhdl程序清单如下:
library ieee;
use entity lock is
port(lock:in std_logic;
qa,qb,qc,qd:in std_logic_vector(3 downto 0);
leda,ledb,ledc,ledd:out std_logic_vector(6 downto 0));
end;architecture art of lock is
signal l0,l1,l2,l3:std_logic_vector(3 downto 0);
component seg7
port(bcd:in std_logic_vector(3 downto 0);
dout:out std_logic_vector(6 downto 0));
end component;
beginprocess(lock)
beginif(lock'event and lock='1')then
l0<=qa;
l1<=qb;
l2<=qc;
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计时...