EDA课程设计zmt

发布 2022-09-30 20:39:28 阅读 8999

课程设计。

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计时...