VLSI波形发生器课程设计.doc_第1页
VLSI波形发生器课程设计.doc_第2页
VLSI波形发生器课程设计.doc_第3页
VLSI波形发生器课程设计.doc_第4页
VLSI波形发生器课程设计.doc_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

波形发生器的设计 一、概述波形发生器是一种常用的信号源,广泛地应用于电子电路、自动控制系统和教学实验等领域。多功能函数信号发生器能够产生锯齿波,三角波和正弦波等多种输出信号。信号产生的模块有:锯齿波,三角波波,正弦波模块等。这些信号的产生可以有多种方式,如用计数器直接产生信号输出,或者用计数器产生存储器的地址,在存储器中存放信号的数据。信号发生器的控制模块是由数据选择器实现对这几种信号的选择。最后将波形数据送入D/A转换器,再用示波器测试D/A转换器的输出,就可以观测到这几种波形的输出了。二、设计要求 设计一个波形发生器。具体要求: 设计并实现一个可产生正弦波、三角波和锯齿波的波形发生器。其工作频率为60MHz,可产生1MHz、2MHz、3MHz、4MHz、5MHz、6MHz、10MHz的正弦波、三角波和锯齿波。所产生波形的幅度、相位均可调整。三、实现原理 本程序的实现使用查表的方法来实现多波形发生器。先把各个波形的幅度存入在表格中,以mif的格式存放在LCP_ROM中,它通过外来控制信号和高速时钟信号,向波形数据ROM发出地址信号,输出波形的频率出发出的地址信号的速度决定;这样就可以通过控制信号来改变输出的波形和各个波形的输出频率了。由于输入频率是60M,所以在表格中存入60个数据,如果以每一个时钟都读取每一个数值,则产生1M的输出频率,如果要产生10M的的输出频率,则只需要每十个时钟读一个数就可以了。其它频率也是依照这个方法就可以实现不同频率的输出了。(1)电路外观框图各个端口的功能如下:p1.0:P为输出波形幅度调节档,共有四个可调档次。clk:为系统工作时间,输入频率为60MHz。en:复位信号,输入端。fchu2.0:输出波形频率选择,可产生1MHz、2MHz、3MHz、4MHz、5MHz、6MHz、10MHzpword7.0:相位选择档,可以调节256个初始相位档次xtime1.0:LCP_ROM工作选择时钟,并做输出波形选择,可选择输出锯齿波,三角波和正弦波。da_out9.0:波形输出四、程序代码频率输出选择与调相模块library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity sin isport(clk:in std_logic; en:in std_logic; fchu:in std_logic_vector(2 downto 0); -fchu输出频率选择 pword:in std_logic_vector( 7 downto 0);-相位调节0255 z1,z2,z3,z4:out std_logic; addr_rom:buffer std_logic_vector(7 downto 0);-addr_rom地址采点,从LCP_ROM相应的地址读取数据 xtime:in std_logic_vector(1 downto 0) -时间触发选择,从那个LCP_ROM中调取波形,其选择的波开跟DA输出通道是相一致的。 );end sin ;architecture a of sin issignal s:std_logic_vector(2 downto 0);signal temp: integer range 0 to 715827880;signal address: std_logic_vector(7 downto 0); signal fre_count: std_logic_vector(31 downto 0);signal fw: std_logic_vector(31 downto 0);signal pw: std_logic_vector(7 downto 0);signal xx:std_logic_vector(1 downto 0);signal cda:std_logic_vector(1 downto 0);signal fo:std_logic_vector(31 downto 0);begins=fchu;xx temp temp temp temp temp temp temp temp=71582788;end case;end if; fo=conv_std_logic_vector(temp,32);end process;process(clk,fo,en,pword)begin fw=fo; if clkevent and clk=1 then if en=1 then fre_count=fre_count+fw; end if; end if;end process;process(clk,pw)beginpw=pword; if clkevent and clk=1 then if en=1 then address=fre_count(31 downto 24)+pw; end if; end if; addr_rom=address;end process; process(xx,clk) begin if xx=00 then z1=clk; else z1=1; end if; if xx=01 then z2=clk; else z2=1; end if; if xx=10 then z3=clk; else z3=1; end if; if xx=11 then z4=clk; else z4=1; end if; end process; end a; (2)调频调相模块电路图幅度调节与波形通道输出模块library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity damodule isport(clk,clrn:in std_logic; -key按键计数,按一次时行加1或减1 chosebo,p:in std_logic_vector(1 downto 0); -chosebo选择让那个波形工作 (P四个档,调节幅度) lcp_rom0,lcp_rom1,lcp_rom2:in std_logic_vector(7 downto 0);-LCP_rom到DA的输入通道 da_out:out std_logic_vector(9 downto 0); -数据输出end damodule ;architecture a of damodule issignal count1:integer range 0 to 4;signal cda:std_logic_vector(1 downto 0);signal da_in: std_logic_vector(7 downto 0); signal m:std_logic_vector(1 downto 0);begin cda=chosebo; m count1 count1 count1 count1da_inda_inda_innull; end case; end if; end if;end process;process(clk)variable d:integer range 0 to 1024;begin if clkevent and clk=1 then d:=conv_integer(da_in)*count1; da_out=conv_std_logic_vector(d,10);end if;end process; end a;(3)选波调幅模块电路图 (4)锯齿波,三角波,正弦波的数据存址LCP_ROM五、仿真输出结果 下面举例对对各个波形进行仿真,选择输出频率为1MHz幅度为1初相为0的三个波形进行仿真。(5)锯齿波(6)三角波 以下以正弦波为例,对其输出频率,相位,幅度进行变化的波形仿真。(7)输出频率为1MHz的正弦波(8)输出频率5MHz正弦波(9)2倍幅度初相为0度的正弦波(10)四倍幅度初相为0度的正弦波(11)四倍幅度初相18

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论