EDA课程设计报告-正弦波信号发生器的设计.doc_第1页
EDA课程设计报告-正弦波信号发生器的设计.doc_第2页
EDA课程设计报告-正弦波信号发生器的设计.doc_第3页
EDA课程设计报告-正弦波信号发生器的设计.doc_第4页
EDA课程设计报告-正弦波信号发生器的设计.doc_第5页
免费预览已结束,剩余13页可下载查看

下载本文档

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

文档简介

eda课程设计报告 正弦波信号发生器的设计一、设计目的 通过本次课程设计,进一步了解quartus 与lpm_rom与fpga硬件功能的使用方法。培养自己查阅资料及解决问题的能力。二、设计要求1、 通过按键,可以控制输出的是正弦波或三角波。2、 通过adc0832输出正弦波与三角波,电压v范围在0至-10v之间3、 通过示波器观察波形。三、设计内容: 在quartusii上完成信号发生器的设计。最后在实验板上实测,包括fpga中rom的在系统数据读写测试和利用示波器测试。信号输出的d/a使用实验板上的adc0832。四、 设计原理: 图1所示的波信号发生器的结构由五部分组成:1、计数器或地址发生器(这里选择8位)。正弦信号数据rom(8位地址线,8位数据线),含有256个8位数据(一个周期)。2、vhdl顶层设计。3、8位d/a图1所示的信号发生器结构图中,顶层文件adc.vhd在fpga中实现,包含两个部分:rom的地址信号发生器,由8位计数器担任;一个正弦数据rom(或者一个三角波数据rom),由lpm_rom模块构成。地址发生器的时钟clk的输入频率fo与每周期的波形数据点数(在此选择256点),以及d/a输出的频率f的关系是:f=fo/256 vhdl顶层设计adc.vhd 正弦波数据存储rom1 20分频8位计数器(地址发生器)8位d/a按键3三角波数据存储rom2 图1 正弦信号发生器结构框图 图一 信号发生器结构图 图2 信号发生器的设计图五、 设计步骤:1、 建立.mif格式文件mif文件可用c语言程序生成,产生正弦波数值的c程序如下:#include#includemain()int i;float s;for(i=0;i256;i+)s=sin(atan(1)*8*i/256);printf(%d :%d;n,i,(int)(s+1)*255/2)以zx.c保存。产生三角波数值的c程序如下:#include#includemain()int i;float s;for(i=0;i zx.mif;sj sj.mif;将生成的*.mif 文件,再加上.mif文件的头部说明即可。.mif文件的头部说明如下所示:width=8;depth=256;address_radix=dec;data_radix=dec;content begin(数据略去)end;2、 在设计信号发生器前,必须首先完成存放波形数据rom的设计。设计步骤如下:1) 打开quartus 。在files菜单中选择new产生一个对话框,选择block diagram/schematic file 项,会生成一个*.bdf文件,双击文件空白处,跳出symbol窗口,在改窗口下选择megafunctionsstoragelpm_rom。2) 在跳出的 megawizard plug-in manager中选 择vhdl,路径保存在d:chengxv中3) 在parameter settings 窗口中,选择currently selected device family :cyclone.选择rom控制线、地址线和数据线。在弹出的对话框中选择地址线位宽和rom中数据数分别为8和64;选择地址锁存控制信号dual clock。在对话框的“what should the ram”栏选择默认的auto。4) 单击next,将此界面数据如图设置5) 单击next按钮,选择browse,选择利用c做成的mif文件,将此模块命名为rom0,再单击finish 按钮后完成rom0定制。6) 打开此文件可以看到其中调用初始化数据文件的语句为:init_file = .mif。最后生成的rom0元件文件如源代码1所示. 六、 源代码:1)、源代码1如下所示:library ieee;use ieee.std_logic_1164.all;library altera_mf;use altera_mf.all;entity rom0 isport(address: in std_logic_vector (5 downto 0);inclock: in std_logic ;q: out std_logic_vector (7 downto 0);end rom0;architecture syn of rom0 issignal sub_wire0: std_logic_vector (7 downto 0);component altsyncramgeneric (address_aclr_a: string;init_file: string;intended_device_family: string;lpm_hint: string;lpm_type: string;numwords_a: natural;operation_mode: string;outdata_aclr_a: string;outdata_reg_a: string;widthad_a: natural;width_a: natural;width_byteena_a: natural);port (clock0: in std_logic ;address_a: in std_logic_vector (5 downto 0);q_a: out std_logic_vector (7 downto 0);end component;beginq none,init_file = ././ad.mif,intended_device_family = cyclone,lpm_hint = enable_runtime_mod=no,lpm_type = altsyncram,numwords_a = 64,operation_mode = rom,outdata_aclr_a = none,outdata_reg_a = unregistered,widthad_a = 6,width_a = 8,width_byteena_a = 1)port map (clock0 = inclock,address_a = address,q_a = sub_wire0);end syn;2)、顶层设计代码:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity adc isport ( clk:in std_logic;dout:out std_logic_vector(7 downto 0);key:in std_logic);end ;architecture dacc of adc is component rom0 port(address: in std_logic_vector(7 downto 0); inclock: in std_logic;q: out std_logic_vector(7 downto 0) ) ; end component; component rom1 port(address: in std_logic_vector(7 downto 0); inclock: in std_logic;q: out std_logic_vector(7 downto 0) ) ; end component; signal clk1:std_logic;signal q0:std_logic_vector(3 downto 0);signal q1:std_logic_vector(7 downto 0);signal q2:std_logic_vector(7 downto 0);signal q3:std_logic_vector(7 downto 0);beginprocess(clk)beginif clkevent and clk=1 then if q00110 then q0=q0+1;else q0=0000;clk1= not clk1;end if;end if;end process;process(clk1)beginif clk1event and clk1=1 then q1q1,q=q2,inclock=clk);u1:rom0 port map(address=q1,q=q3,inclock=clk);process(key)beginif key=1 then dout=q2;else dout=q3; end if; end process;end ;3)为此顶层设计创建一项工程,工程名和实体名都是adc。4)全程编译一次后进入时序仿真测试。由波形可见,随着每一个时钟上升沿的到来,输出端口将正弦波数据依次输出。 5)硬件测试。选择电路模式5,则时钟clk接实验箱的clock0 。将dout(0)dout(7)分别锁定于实验系统上与dac0832相接的i/o口:pio24、pio25、pio26、pio27、pio28、pio29、pio30、pio31。编译下载adc.sof后,打开电压开关,将clk的时钟通过实验箱上clock0的跳线选择频率为12mhz,再将示波器接于实验箱的两个挂钩上就能观察波形的输出情况了。七、 仿真波形图:八、 引脚锁定:九、 设计结果:clock0=12mhz,输出频率为:f=47kh

温馨提示

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

最新文档

评论

0/150

提交评论