资源描述:
《方波发生器实验报告》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、.方波发生器及其调制一、实验内容设计一方波信号发生器,采用ROM进行一个周期数据存储,并通过地址发生器产生方波信号。并通过控制端输入a对方波信号进行调幅和调频。ROM(4位地址16位数据)二、实验原理方波信号发生器是由地址发生器和方波数据存储器ROM两块构成,输入为时钟脉冲,输出为8位二进制。...1地址发生器的原理地址发生器实质上就是计数器,ROM的地址是4位数据,相当于16位循环计数器。2.只读存储器ROM的设计(1)、VHDL编程的实现①基本原理:为每一个存储单元编写一个地址,只有地址指定的存储
2、单元才能与公共的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,…)。调幅原理:通过移位寄存器改变方波幅值(左移)
3、。三、设计方案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_countisport(clk1khz:in
4、std_logic;qout:outintegerrange0to15);endaddr_count;architecturebehaveofaddr_countissignaltemp:integerrange0to15;...beginprocess(clk1khz)beginif(clk1khz'eventandclk1khz='1')thenif(temp=15)thentemp<=0;elsetemp<=temp+1;endif;endif;qout<=temp;endprocess;endbe
5、have;(3)ROM的VHDL语言的实现libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;useieee.std_logic_arith.all;entityromisport(...addr:instd_logic_vector(3downto0);en:instd_logic;qout:outstd_logic_vector(7downto0));endrom;architecturebehaveofromis
6、typememoryisarray(0to15)ofstd_logic_vector(7downto0);constantrom:memory:=("00000000","00000000","00000000","00000000","00000000","00000000","00000000","00000000","00000010","00000010","00000010","00000010","00000010","00000010","00000010","00000010");begi
7、nprocess(en,addr)variabletemp:integerrange0to15;beginif(en='1')thentemp:=conv_integer(addr);qout<=rom(temp);elseqout<=(others=>'Z');endif;endprocess;endbehave;...(4)调幅与调频程序entitytiaozhiisport(data:instd_logic_vector(7downto0);a:instd_logic_vector(2downto0
8、);clk:instd_logic;sl_in:instd_logic;clk1:outstd_logic;qout:outstd_logic_vector(7downto0));endtiaozhi;architecturebehaveoftiaozhiissignalcount:std_logic_vector(15downto0);signalq1:std_logic_vector(7downto0);signalq2: