欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

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

    • 资源ID:36131627       资源大小:123.50KB        全文页数:34页
    • 资源格式: DOC        下载积分:20金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要20金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

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

    EDA课程设计报告 正弦波信号发生器的设计一、设计目的: 进一步熟悉QuartusII及其LPM_ROM与FPGA硬件资源的使用方法。培养动手能力以及合作能力。二、设计要求: 1、clk为12MHz。2、通过DAC0832输出正弦波电压信号,电压范围0-5V。3、通过示波器观察波形。三、设计内容: 在QUARTUSII上完成正弦波信号发生器的设计,包括仿真和资源利用情况了解(假设利用Cyclone器件)。最后在实验系统上实测,包括FPGA中ROM的在系统数据读写测试和利用示波器测试。信号输出的D/A使用实验系统上的ADC0832。四、 设计原理: 图1所示的正弦波信号发生器的结构由四部分组成:1、 计数器或地址发生器(这里选择10位)。2、 正弦信号数据ROM(10位地址线,8位数据线),含有1024个8位数据(一个周期)。3、 VHDL顶层设计。4、 8位D/A(实验中可用ADC0832代替)。图1所示的信号发生器结构图中,顶层文件singt.vhd在FPGA中实现,包含两个部分:ROM的地址信号发生器,由10位计数器担任;一个正弦数据ROM,由LPM_ROM模块构成。LPM_ROM底层是FPGA中的EAB、ESB或M4K等模块。地址发生器的时钟clk的输入频率fo与每周期的波形数据点数(在此选择1024点),以及D/A输出的频率f的关系是:f=fo/1024 VHDL顶层设计singt.vhd8位D/A正弦波数据存储ROM10位计数器(地址发生器) 图1 正弦信号发生器结构框图 图2 正弦波信号发生器的设计图五、 设计步骤:1、 建立.mif格式文件首先,mif文件可用C语言程序生成,产生正弦波数值的C程序如下:#include<stdio.h>#include<math.h>main()int i;float s;for(i=0;i<1024;i+)s=sin(atan(1)*8*i/256);printf("%d :%d;n",i,(int)(s+1)*255/2)其次,把上述程序编译后,在DOS命令行下执行命令:romgen > sdata.mif;将生成的sdata.mif 文件,再加上.mif文件的头部说明即可。.mif文件的头部说明如下所示:WIDTH=8;DEPTH=1024;ADDRESS_RADIX=DEC;DATA_RADIX=DEC;CONTENT BEGIN0:127;1:130;2:133;3:136;4:139;5:143;6:146;(数据略去)1016:102;1017:105;1018:108;1019:111;1020:115;1021:118;1022:121;1023:124;END;2、 在设计正弦波信号发生器前,必须首先完成存放波形数据ROM的设计。利用MegaWizard Plug-In manager定制正弦信号数据ROM宏功能块,并将以上的波形数据加载于此ROM中。设计步骤如下:1) 打开MegaWizard Plug-In manager初始对话框。在Tools菜单中选择MegaWizard Plug-In manager产生一个对话框,选择Create a new custom.项,即定制一个新的模块。单击Next按钮后,在所产生的对话框的左栏选择Storage项下的LPM_ROM,再选择Cyclone器件和VHDL语言方式;最后输入ROM文件存放的路径和文件名:e:wwwrom_1024.vhd,单击Next按钮。2) 选择ROM控制线、地址线和数据线。在弹出的对话框中选择地址线位宽和ROM中数据数分别为10和1024;选择地址锁存控制信号clock。3) 单击Next按钮在对话框的“What should the RAM”栏选择默认的Auto。在栏选择“Do you want toYes,use this file for memory content data”项,并按Browse钮,选择指定路径上的文件rom_1024.mif。在“Allow In-System Memory”栏选择打勾,并在“The Instance ID of this ROM”栏输入ROM1,作为ROM的ID名称。最后单击Next按钮,再单击Finish 按钮后完成ROM定制。4) 打开此文件可以看到其中调用初始化数据文件的语句为:init_file => "sdata.mif"。最后生成的ROM元件文件如源代码1所示,其中的init_file指向已做了修改。修改后用于例化的波形数据ROM文件rom_1024.vhd如下。六、 源代码:1)、源代码1如下所示:LIBRARY ieee;USE ieee.std_logic_1164.all;LIBRARY altera_mf;USE altera_mf.altera_mf_components.all;ENTITY rom_1024 IS PORT ( address: IN STD_LOGIC_VECTOR (9 DOWNTO 0);clock: IN STD_LOGIC ;q: OUT STD_LOGIC_VECTOR (7 DOWNTO 0) );END rom_1024;ARCHITECTURE SYN OF rom_1024 ISSIGNAL sub_wire0:STD_LOGIC_VECTOR(7 DOWNTO 0);COMPONENT altsyncram -例化altsyncram元件,调用了LPM模块altsyncram GENERIC ( -参数传递语句 -类属参量数据类型定义intended_device_family: STRING;width_a: NATURAL;widthad_a: NATURAL;numwords_a: NATURAL;operation_mode: STRING;outdata_reg_a: STRING;address_aclr_a: STRING;outdata_aclr_a: STRING;width_byteena_a: NATURAL;init_file: STRING;lpm_hint: STRING;lpm_type: STRING ); PORT ( - altsyncram元件接口声明clock0: IN STD_LOGIC ; address_a: IN STD_LOGIC_VECTOR (9 DOWNTO 0);q_a: OUT STD_LOGIC_VECTOR (7 DOWNTO 0) ); END COMPONENT;BEGIN q <= sub_wire0(7 DOWNTO 0); altsyncram_component : altsyncram GENERIC MAP (intended_device_family=>"Cyclone", -参数传递映射 width_a => 8, -数据线宽度8 widthad_a => 10, -地址线宽度10numwords_a => 1024, -数据数量1024operation_mode => "ROM",-LPM模式ROMoutdata_reg_a => "CLOCK0",-输出锁存CLOCK0address_aclr_a => "NONE",-无异步地址清0outdata_aclr_a => "NONE",-无输出锁存异步清0width_byteena_a => 1, -byteena_a输出口宽度1init_file => "sdata.mif", -ROM初始化数据文件lpm_hint => "ENABLE_RUNTIME_MOD=NO",lpm_type => "altsyncram" -LPM类型)PORT MAP (clock0 => clock,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 singt is port(clk : in std_logic; -信号源时钟dout : out std_logic_vector(7 downto 0); -8位波形数据输出end singt;architecture dacc of singt is component rom_1024 -调用波形数据存储器LPM_ROM,文件:rom_1024.vhd声明port(address:in std_logic_vector(9 downto 0); -10位地址信号clock : in std_logic; -地址锁存时钟 q:out std_logic_vector(7 downto 0);end component;signal q1:std_logic_vector(9 downto 0); -设内部节点作为地址计数器beginprocess(clk) -LPM_ROM地址发生进程beginif clk'event and clk='1' then q1<=q1+1; -Q1作为地址发生器计数器end if;end process;u1:rom_1024 port map (address=>q1,q=>dout,clock=>clk); -例化end dacc;3)为此顶层设计创建一项工程,工程名和实体名都是singt。4)全程编译一次后进入时序仿真测试。由波形可见,随着每一个时钟上升沿的到来,输出端口将正弦波数据依次输出。 5)硬件测试。选择电路模式5,则时钟CLK接实验箱的clock0 。将dout(0)dout(7)分别锁定于实验系统上与DAC0832相接的I/O口:PIO24、PIO25、PIO26、PIO27、PIO28、PIO29、PIO30、PIO31。编译下载singt.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;由于没有加.mif文件的头部说明,导致用于例化的波形数据ROM文件rom_1024.vhd编译失败。最后在老师的指导帮助下,正确的把.mif文件的头部说明加在了生成的sdata.mif 文件中,这样rom_1024.vhd文件编译成功。第二个问题出现在完成存放波形数据ROM的设计过程中,没有正确的选择指定路径文件名sdata.mif导致用于例化的波形数据ROM文件rom_1024.vhd编译失败,经过我的思考和分析后,我正确的选择指定路径文件名sdata.mif,这样编译正确通过。最后,正确的设计正弦波信号发生器的顶层文件sight.vhd,使设计顺利的通过编译。在编译下载singt.sof后,当改变实验箱上clock0的跳线频率时,相应的波形输出情况也发生相应的变化。在这次设计中,我也深深地体会到“细节决定成败”这句话的真正含义,也许就因为一个小的细节就会导致设计的失败。这次设计也启发了我在以后的学习中一定要耐心、细心、认真,不可粗枝大叶。 library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity abc isport(clk :in std_logic;dout :out integer range 255 downto 0;a :in std_logic);END;architecture one of abc issignal Q : integer range 127 downto 0;signal W : integer range 255 downto 0;signal D : integer range 255 downto 0;signal C : integer range 63 downto 0;begin process (clk)beginif clk'event and clk ='1' then Q <= Q+1;C <= C+1;if Q < 127 THEN Q<= Q+1;ELSE Q<=0;if C < 63 THEN C<= C+1;ELSE C<=0;END IF;END IF;END IF;END PROCESS;PROCESS (C,Q)BEGINCASE C IS WHEN 000=> D <=255; WHEN 001=> D <=254; WHEN 002=> D <=252; WHEN 003=> D <=249; WHEN 004=> D <=245; WHEN 005=> D <=239; WHEN 006=> D <=233; WHEN 007=> D <=225; WHEN 008=> D <=217; WHEN 009=> D <=207; WHEN 010=> D <=197; WHEN 011=> D <=186; WHEN 012=> D <=174; WHEN 013=> D <=162; WHEN 014=> D <=150; WHEN 015=> D <=137; WHEN 016=> D <=124; WHEN 017=> D <=112; WHEN 018=> D <=99; WHEN 019=> D <=87; WHEN 020=> D <=75; WHEN 021=> D <=64; WHEN 022=> D <=53; WHEN 023=> D <=43; WHEN 024=> D <=34; WHEN 025=> D <=26; WHEN 026=> D <=19; WHEN 027=> D <=13; WHEN 028=> D <=8; WHEN 029=> D <=4; WHEN 030=> D <=1; WHEN 031=> D <=0; WHEN 032=> D <=0; WHEN 033=> D <=1; WHEN 034=> D <=4; WHEN 035=> D <=8; WHEN 036=> D <=13; WHEN 037=> D <=19; WHEN 038=> D <=26; WHEN 039=> D <=34; WHEN 040=> D <=43; WHEN 041=> D <=53; WHEN 042=> D <=64; WHEN 043=> D <=75; WHEN 044=> D <=87; WHEN 045=> D <=99; WHEN 046=> D <=112; WHEN 047=> D <=124; WHEN 048=> D <=137; WHEN 049=> D <=150; WHEN 050=> D <=162; WHEN 051=> D <=174; WHEN 052=> D <=186; WHEN 053=> D <=197; WHEN 054=> D <=207; WHEN 055=> D <=217; WHEN 056=> D <=225; WHEN 057=> D <=233; WHEN 058=> D <=239; WHEN 059=> D <=245; WHEN 060=> D <=249; WHEN 061=> D <=252; WHEN 062=> D <=254; WHEN 063=> D <=255;END CASE;CASE Q IS WHEN 000=> W <=255; WHEN 001=> W <=251; WHEN 002=> W <=247; WHEN 003=> W <=243; WHEN 004=> W <=239; WHEN 005=> W <=235; WHEN 006=> W <=231; WHEN 007=> W <=227; WHEN 008=> W <=223; WHEN 009=> W <=219; WHEN 010=> W <=215; WHEN 011=> W <=211; WHEN 012=> W <=207; WHEN 013=> W <=203; WHEN 014=> W <=199; WHEN 015=> W <=195; WHEN 016=> W <=191; WHEN 017=> W <=187; WHEN 018=> W <=183; WHEN 019=> W <=179; WHEN 020=> W <=175; WHEN 021=> W <=171; WHEN 022=> W <=167; WHEN 023=> W <=163; WHEN 024=> W <=159; WHEN 025=> W <=155; WHEN 026=> W <=151; WHEN 027=> W <=147; WHEN 028=> W <=143; WHEN 029=> W <=139; WHEN 030=> W <=135; WHEN 031=> W <=131; WHEN 032=> W <=127; WHEN 033=> W <=123; WHEN 034=> W <=119; WHEN 035=> W <=115; WHEN 036=> W <=111; WHEN 037=> W <=107; WHEN 038=> W <=103; WHEN 039=> W <=99; WHEN 040=> W <=95; WHEN 041=> W <=91; WHEN 042=> W <=87; WHEN 043=> W <=83; WHEN 044=> W <=79; WHEN 045=> W <=75; WHEN 046=> W <=71; WHEN 047=> W <=67; WHEN 048=> W <=63; WHEN 049=> W <=59; WHEN 050=> W <=55; WHEN 051=> W <=51; WHEN 052=> W <=47; WHEN 053=> W <=43; WHEN 054=> W <=39; WHEN 055=> W <=35; WHEN 056=> W <=31; WHEN 057=> W <=27; WHEN 058=> W <=23; WHEN 059=> W <=19; WHEN 060=> W <=15; WHEN 061=> W <=11; WHEN 062=> W <=7; WHEN 063=> W <=3; WHEN 064=> W <=3; WHEN 065=> W <=7; WHEN 066=> W <=11; WHEN 067=> W <=15; WHEN 068=> W <=19; WHEN 069=> W <=23; WHEN 070=> W <=27; WHEN 071=> W <=31; WHEN 072=> W <=35; WHEN 073=> W <=39; WHEN 074=> W <=43; WHEN 075=> W <=47; WHEN 076=> W <=51; WHEN 077=> W <=55; WHEN 078=> W <=59; WHEN 079=> W <=63; WHEN 080=> W <=67; WHEN 081=> W <=71; WHEN 082=> W <=75; WHEN 083=> W <=79; WHEN 084=> W <=83; WHEN 085=> W <=87; WHEN 086=> W <=91; WHEN 087=> W <=95; WHEN 088=> W <=99; WHEN 089=> W <=103; WHEN 090=> W <=107; WHEN 091=> W <=111; WHEN 092=> W <=115; WHEN 093=> W <=119; WHEN 094=> W <=123; WHEN 095=> W <=127; WHEN 096=> W <=131; WHEN 097=> W <=135; WHEN 098=> W <=139; WHEN 099=> W <=143; WHEN 100=> W <=147; WHEN 101=> W <=151; WHEN 102=> W <=155; WHEN 103=> W <=159; WHEN 104=> W <=163; WHEN 105=> W <=167; WHEN 106=> W <=171; WHEN 107=> W <=175; WHEN 108=> W <=179; WHEN 109=> W <=183; WHEN 110=> W <=187; WHEN 111=> W <=191; WHEN 112=> W <=195; WHEN 113=> W <=199; WHEN 114=> W <=203; WHEN 115=> W <=207; WHEN 116=> W <=211; WHEN 117=> W <=215; WHEN 118=> W <=219; WHEN 119=> W <=223; WHEN 120=> W <=227; WHEN 121=> W <=231; WHEN 122=> W <=235; WHEN 123=> W <=239; WHEN 124=> W <=243; WHEN 125=> W <=247; WHEN 126=> W <=251; WHEN 127=> W <=255;END CASE;IF A='0' THEN DOUT <= W;ELSE DOUT <= D;END IF;END PROCESS;END;这次EDA课程设计历时两个星期,在整整两个星期的日子里,可以说是苦多于甜,但是可以学的到很多很多的东西,同时不仅可以巩固以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次设计,进一步加深了对EDA的了解,让我对它有了更加浓厚的兴趣。特别是当每一个子模块编写调试成功时,心里特别的开心。但是在编写顶层文件的程序时,遇到了不少问题,特别是各元件之间的连接,以及信号的定义,总是有错误,在细心的检查下,终于找出了错误和警告,排除困难后,程序编译就通过了,心里终于舒了一口气。其次,在连接各个模块的时候一定要注意各个输入、输出引脚的线宽,因为每个线宽是不一样的,只要让各个线宽互相匹配,才能得出正确的结果,否则,出现任何一点小的误差就会导致整个文件系统的编译出现错误提示,在器件的选择上也有一定的技巧,只有选择了合适当前电路所适合的器件,编译才能得到完满成功。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。总的来说,这次设计的数字秒表还是比较成功的,在设计中遇到了很多问题,最后在老师的辛勤的指导下,终于游逆而解,有点小小的成就感,终于觉得平时所学的知识有了实用的价值,达到了理论与实际相结合的目的,不仅学到了不少知识,而且锻炼了自己的能力,使自己对以后的路有了更加清楚的认识,同时,对未来有了更多的信心。最后,对给过我帮助的所有同学和各位指导老师再次表示忠心的感谢! 在这次设计中,我也深深地体会到“细节决定成败”这句话的真正含义,也许就因为一个小的细节就会导致设计的失败。这次设计也启发了我在以后的学习中一定要耐心、细心、认真,不可粗枝大叶。 34

    注意事项

    本文(EDA课程报告_正弦波信号发生器的设计.doc)为本站会员(叶***)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开