一、设计目的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计时...