EDA课程设计

发布 2022-09-30 19:24:28 阅读 4573

目录。摘要。正文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计时...