方波发生器实验报告.docx
- 文档编号:29664078
- 上传时间:2023-07-26
- 格式:DOCX
- 页数:14
- 大小:855.77KB
方波发生器实验报告.docx
《方波发生器实验报告.docx》由会员分享,可在线阅读,更多相关《方波发生器实验报告.docx(14页珍藏版)》请在冰豆网上搜索。
方波发生器实验报告
方波发生器及其调制
一、实验内容
设计一方波信号发生器,采用ROM进行一个周期数据存储,并通过地址发生器产生方波信号。
并通过控制端输入a对方波信号进行调幅和调频。
ROM(4位地址16位数据)
二、实验原理
方波信号发生器是由地址发生器和方波数据存储器ROM两块构成,输入为时钟脉冲,输出为8位二进制。
1地址发生器的原理
地址发生器实质上就是计数器,ROM的地址是4位数据,相当于16位循环计数器。
2.只读存储器ROM的设计
(1)、VHDL编程的实现
①基本原理:
为每一个存储单元编写一个地址,只有地址指定的存储单元才能与公共的I/O相连,然后进行存储数据的读写操作。
②逻辑功能:
地址信号的选择下,从指定存储单元中读取相应数据。
3.调幅与调频
通过输入信号a(3位数据),选择不同调制,如
a=000,2分频
a=001,4分频
a=010,8分频
a=011,16分频
a=100,2倍调幅
a=101,4倍调幅
a=110,8倍调幅
a=111,16倍调幅
分频原理:
偶数分频,即分频系数N=2n(n=1,2,…),若输入的信号频率为f,那么分频器的输出信号的频率为f/2n(n=1,2,…)。
调幅原理:
通过移位寄存器改变方波幅值(左移)。
三、设计方案
1.基于VHDL编程的设计
在地址信号的选择下,从指定存储单元中读取相应数据,系统框图如下:
方波数据存储ROM
地址发生器
FPGA
分频和调幅
四、原理图
1、VHDL编程的实现
(1)、顶层原理图
(2)、地址发生器的VHDL语言的实现
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
useieee.std_logic_arith.all;
entityaddr_countis
port
(
clk1khz:
instd_logic;
qout:
outintegerrange0to15
);
endaddr_count;
architecturebehaveofaddr_countis
signaltemp:
integerrange0to15;
begin
process(clk1khz)
begin
if(clk1khz'eventandclk1khz='1')then
if(temp=15)then
temp<=0;
else
temp<=temp+1;
endif;
endif;
qout<=temp;
endprocess;
endbehave;
(3)ROM的VHDL语言的实现
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
useieee.std_logic_arith.all;
entityromis
port
(
addr:
instd_logic_vector(3downto0);
en:
instd_logic;
qout:
outstd_logic_vector(7downto0)
);
endrom;
architecturebehaveofromis
typememoryisarray(0to15)ofstd_logic_vector(7downto0);
constantrom:
memory:
=("00000000","00000000","00000000","00000000","00000000","00000000","00000000","00000000",
"00000010","00000010","00000010","00000010","00000010","00000010","00000010","00000010");
begin
process(en,addr)
variabletemp:
integerrange0to15;
begin
if(en='1')then
temp:
=conv_integer(addr);
qout<=rom(temp);
else
qout<=(others=>'Z');
endif;
endprocess;
endbehave;
(4)调幅与调频程序
entitytiaozhiis
port(
data:
instd_logic_vector(7downto0);
a:
instd_logic_vector(2downto0);
clk:
instd_logic;
sl_in:
instd_logic;
clk1:
outstd_logic;
qout:
outstd_logic_vector(7downto0)
);
endtiaozhi;
architecturebehaveoftiaozhiis
signalcount:
std_logic_vector(15downto0);
signalq1:
std_logic_vector(7downto0);
signalq2:
std_logic_vector(7downto0);
signalq3:
std_logic_vector(7downto0);
signalq4:
std_logic_vector(7downto0);
begin
process(clk,count,a,q1,q2,q3,q4)
begin
if(clk'eventandclk='1')then
count<=count+1;
q1<=data(6downto0)&sl_in;
q2<=q1(6downto0)&sl_in;
q3<=q2(6downto0)&sl_in;
q4<=q3(6downto0)&sl_in;
endif;
endprocess;
process(a)
begin
caseais
when"000"=>clk1<=count
(1);
when"001"=>clk1<=count
(2);
when"010"=>clk1<=count(3);
when"011"=>clk1<=count(4);
when"100"=>qout<=q1;
when"101"=>qout<=q2;
when"110"=>qout<=q3;
when"111"=>qout<=q4;
endcase;
endprocess;
endbehave;
(5)仿真结果如下
产生的方波信号
当控制端输入为:
101时,4倍调幅
当控制端输入为100时,2倍调幅
当控制端输入为110时,8倍调幅
当控制端输入为111时,16倍调幅
当控制端输入为000时,2分频
当控制端输入为001时,4分频
当控制端输入为010时,8分频
当控制端输入为011时,16分频
五设计总结
1.评估
在这次EDA实验设计中,我们完成的是一个方波信号发生器的设计,在这次设计中,让我们了解到了ROM,地址发生器,分频和调幅的设计方法,进一步掌握了Quartus‖的常见使用方法,并掌握了方波信号发生器的设计原理,对我们来说,此次实验的收获在于数据存储器ROM的设计,我们相信,这对于以后的实验将会有很大的帮助。
此次的实验还算成功,从电路模块的设计到电路的仿真成功能独立完成,这是对自己的一次很大的鼓励,我们相信,以后的课程将会学的更好。
2.
问题:
不能对信号clk进行调幅,要重新产生一个方波信号才能调幅
解决:
通过循环计数器产生多电平方波,再对其进行移位,得到调幅信号
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 方波 发生器 实验 报告