EDA课程设计报告正弦波信号发生器的设计.doc

上传人:文库蛋蛋多 文档编号:4144033 上传时间:2023-04-07 格式:DOC 页数:18 大小:130KB
返回 下载 相关 举报
EDA课程设计报告正弦波信号发生器的设计.doc_第1页
第1页 / 共18页
EDA课程设计报告正弦波信号发生器的设计.doc_第2页
第2页 / 共18页
EDA课程设计报告正弦波信号发生器的设计.doc_第3页
第3页 / 共18页
EDA课程设计报告正弦波信号发生器的设计.doc_第4页
第4页 / 共18页
EDA课程设计报告正弦波信号发生器的设计.doc_第5页
第5页 / 共18页
点击查看更多>>
资源描述

《EDA课程设计报告正弦波信号发生器的设计.doc》由会员分享,可在线阅读,更多相关《EDA课程设计报告正弦波信号发生器的设计.doc(18页珍藏版)》请在三一办公上搜索。

1、EDA课程设计报告 正弦波信号发生器的设计一、设计目的 通过本次课程设计,进一步了解QUARTUS 与LPM_ROM与FPGA硬件功能的使用方法。培养自己查阅资料及解决问题的能力。二、设计要求1、 通过按键,可以控制输出的是正弦波或三角波。2、 通过ADC0832输出正弦波与三角波,电压V范围在0至-10V之间3、 通过示波器观察波形。三、设计内容: 在QUARTUSII上完成信号发生器的设计。最后在实验板上实测,包括FPGA中ROM的在系统数据读写测试和利用示波器测试。信号输出的D/A使用实验板上的ADC0832。四、 设计原理: 图1所示的波信号发生器的结构由五部分组成:1、计数器或地址发

2、生器(这里选择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

3、 正弦信号发生器结构框图 图一 信号发生器结构图 图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 文件,再加上.m

4、if文件的头部说明即可。.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

5、-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、。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;ARCHIT

7、ECTURE 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_

8、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 = altsyncra

9、m,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 AD

10、C 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_VE

11、CTOR(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 CL

12、Kevent 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)为此顶层设

13、计创建一项工程,工程名和实体名都是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=47KHZ,周期为:T=21us十、 设计体会:在本次设计的过程中,我在编译过程中出现问题,第一个问题出在建立.mif格式文件中,没有将生成的sdata.mif文件加上.mif文件的头部说明。.mif文件的头部说明如下所示:WIDTH=8;DEPTH=1024;ADDRESS_RADIX=DEC;DATA_RADIX=DEC;CONTENT BEGIN0:127;1:130;(数据略去)1023:124;END;

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

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号