EDA课程设计

发布 2022-09-30 19:30:28 阅读 3234

一、设计目的2

二、设计要求2

三、设计总体方案要求2

1、设计的总体原理2

2、设计内容2

四、eda设计与**2

1、时基发生模块3

2、频率细调模块4

3、波形发生模块9

4、方波产生模块10

5、正弦波发生模块12

6、三角发生模块16

7、上锯齿波发生模块17

8、下锯齿波发生模块18

9、梯形波发生模块20

10、波形选择模块21

11、频率显示模块23

五、硬件实现28

1、硬件实现步骤28

2、硬件实现结果29

六、设计总结39

七、参考文献39

八、设计生成的电路总原理图40

一、设计目的。

1)、通过本次课程设计,进一步熟悉quartusii软件的使用,掌握eda技术及cpld/fpga的开发流程,掌握自顶向下的设计思想,掌握vhdl语言的编程技巧。

2)、掌握dac的工作原理。并利用dac0832芯片实现数/模转换,产生模拟信号。

3)、并利用eda技术产生常见的基本波形波形;

二、设计要求。

1)、熟悉dac的工作原理,利用dac0832产生正弦波、方波、三角波、锯齿波、梯形波等波形。

2)、通过按键控制波形发生信号的频率来控制波形的周期时间,通过档位选择来满足不同场合的需要。

3)、通过频率细调实现频率的进一步接近所需要的频率指标。并通过数码管显示出输出频率的四位有效值。

4)、能把设计文件**到实验箱,并用示波器观察各波形。

三、总体设计方案要求。

1、设计总体原理。

实现多功能波形发生器,从总体功能模块上划分应该有四部分组成,分别由:目标频率产生模块、频率调节模块、显示模块及波形产生模块。通过各功能模块的的功能管脚的相互连接,即可形成所需要的多功能信号发生器。

其结构框图如图3-1所示。

图3-1 总体设计框图。

2、设计内容。

电子时钟主要模块有四个,它包括时基发生电路(脉冲信号产生模块)、频率调节模块(即分频模块)、数字显示模块、波形发生模块、复位模块等。将总体电路模块化,根据自顶向下设计思想,先将各个模块先用eda技术中的vhdl语言编程**,再生成各个小模块的模拟框图元件,再根据所需要的功能将其在原理图中相连接,生成具有一定功能的子功能模块。然后根据总体设计思路,将各子功能模块连接起来实现总设计电路,最后经过**和硬件调试即可实现总体功能。

四、eda设计及**(各个模块设计程序、原理框图及**波形图)

1.时基发生电路。

总体设计方法是原理图与程序相结合的方法实现,原理图如4-1所示。

图4-1 时基发生电路。

该电路的主要功能为:给待发生的功能模块提供两种不同的时钟,该实际发生电路提供两种档位的时钟脉冲,由锁相环产生高频率的稳定时钟,一方面为后续波形的产生提供可变的定时脉冲;另一方面为频率显示模块提供基准频率。

图中原理图2选1模块的程序为:

library ieee;

use use

entity muxto21 is

port(sel :in std_logic;--选择信号sel

d1,d2:in std_logic;--3路输入信号。

q: out std_logic); 输出信号。

end muxto21;

architecture muxto21 of muxto21 is

beginq<=d1 when sel='0' else --选择信号sel=001,选择第1路信号输出。

d2; -选择信号sel=010,选择第2路信号输出。

end muxto21;其**波形图4-2所示:

图4-2 时基发生电路**波形图。

编译后生成的实际发生电路模块如图4-3所示:

图 4-3时基发生电路模块。

图中分频模块为500分频电路,主要是降低时钟频率,产生低频率的信号波形,具体实现程序如下:

library ieee;

use use

entity div1000 is

port(clk:in std_logic;

clkout: out std_logic); 输出信号。

end; architecture div1000 of div1000 is

signal cout:std_logic;

beginprocess(clk)

variable temp: integer range 0 to 499;

beginif clk'event and clk='1' then

if temp=499 then

temp:=0;

cout<='1';

elsetemp:=temp+1;

cout<='0';

end if;

end if;

end process;

p_div: process(cout)

variable cnt2 : std_logic;

beginif cout'event and cout = 1' then

cnt2 :=not cnt2;

--如果溢出标志信号full为高电平,d触发器输出取反。

if cnt2 = 1' then clkout <=1'; else clkout<= 0';

end if;

end if;

end process p_div ;

end div1000;

其**波形如图4-4所示:

图4-4 分频模块**图。

编译后生成的分频电路模块如图4-5所示:

图4-5 分频模块原理图。

2.频率调节模块。

频率调节主要对时基发生电路产生的两种时钟频率进行二次分频,该分频电路能够将上述两种频率进行0~999内进行任意值得分频,从而得到不同的频率值。以满足在不同的场合下的频率需求。频率调节模块如图4-6所示:

图4-6 频率调节电路。

分频数值设置电路主要实现的功能是:对所需要的分频数值进行设置,该电路有四个按键进行控制,其中一个按键是对其他三个按键加减功能控制,当该按键为高电平时实现减数功能,当为低电平时实现加数功能。而且其他三个键d1、d2、d3分别控制分频数的个位、十位、百位。

图中的分频数值设置电路程序如下:

library ieee;

use use

use entity fenpin is

port(d1,d2,d3,jj:in std_logic个位、十位、百位分频设置按键。

rst:in std_logic;

db1: out std_logic_vector(3 downto 0); 个位分频显示端口。

db2: out std_logic_vector(3 downto 0); 十位分频显示端口。

db3: out std_logic_vector(3 downto 0); 百位分频显示端口。

db: out std_logic_vector(6 downto 0));分频输出端。

end;architecture one of fenpin is

signal jia : std_logic;

signal int1,int2,int3: integer;

signal temp1,temp2,te***: std_logic_vector(3 downto 0);

beginp0:process(jj)

begin

if jj='0' then --低电平时实现加法运算。

jia<='1';

elsejia<='0高电平时实现减法运算。

end if;

end process p0;

p1:process(rst,d1) -d1按键的加减控制。

beginif rst='1' then --复位信号有效时个位清零。

temp1<="0000";

elsif rising_edge(d1) then

if jia='1' then

if temp1="1001" then

temp1<="0000";

elsetemp1<=temp1+1;

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