方波发生器实验报告.docx

上传人:b****4 文档编号:12073452 上传时间:2023-04-16 格式:DOCX 页数:14 大小:882.31KB
下载 相关 举报
方波发生器实验报告.docx_第1页
第1页 / 共14页
方波发生器实验报告.docx_第2页
第2页 / 共14页
方波发生器实验报告.docx_第3页
第3页 / 共14页
方波发生器实验报告.docx_第4页
第4页 / 共14页
方波发生器实验报告.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

方波发生器实验报告.docx

《方波发生器实验报告.docx》由会员分享,可在线阅读,更多相关《方波发生器实验报告.docx(14页珍藏版)》请在冰豆网上搜索。

方波发生器实验报告.docx

方波发生器实验报告

 

方波发生器及其调制

 

一、实验内容

设计一方波信号发生器,采用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编程的设计

在地址信号的选择下,从指定存储单元中读取相应数据,系统框图如下:

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进展调幅,要重新产生一个方波信号才能调幅

解决:

通过循环计数器产生多电平方波,再对其进展移位,得到调幅信号

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 其它课程

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1