调幅信号发生器设计_第1页
调幅信号发生器设计_第2页
调幅信号发生器设计_第3页
调幅信号发生器设计_第4页
调幅信号发生器设计_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

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

文档简介

1、湖南人文科技学院课程设计报告课程名称:VHDL语言与EDA课程设计设计题目:调幅信号发生器设计系别:通信与控制工程系专业:电子信息工程班 级: 2009 级1班学生姓名:颜锐 李昌华学 号:09409143 09409124起止日期:起12年06月11日 2012年06月22日指导教师:田汉平 岳舟教研室主任:侯海良指导教师评语:指导教师签名:年 月 日项目成权重成绩颜锐李昌华1、设计过程中出勤、学习态度等 方面0.22、课程设计质量与答辩0.53、设计报告书写及图纸规范程度0.3总成绩教研室审核意见:教研室主任签字:年 月 日教学系审核意见:主任签字:年 月日在通信系统中,调制解调方式常常决

2、定了一个通信系统的性能,而幅度调制是一种 应用很广的连续波调制方式。在实际电路的设计过程中,要设计一个幅度模拟调制电路 (am电路)是相当复杂的,而且要修改其中的调幅指数也不方便。但随着现代电子技术的日趋成熟,采用Matlab/Simulink下建立相应的通信系统的数学模型,然后在FPGA中以全数字化方法实现系统中的关键模块是一种切实有效的方法。Altera公司推出的DSP Builder工具将系统数学模型的建立和通信系统开发结合起来,大大提高了通信系 统的开发效率。文中首先分析了调幅信号发生器的数学表达式,然后根据其数学表达式,在matlab/simulink下建立相应的数学模型,然后利用

3、DSP Builder模块库的 SignalCompiler工具将此模型转换为VHDL语言,最后在QuartusII中对其进行编译直至 下载到FPGA中,实现相应的电路。这种设计方法可以快速进行数字信号处理器的设计, 而且又便于修改和扩充其功能,整个设计思路灵活,图形界面简单直观,开发周期短。关键词:数学模型,调幅信号,调制度,现场可编程门电路11设计要求 12前言 13方案对比 13.1 方案一 13.2 方案二 23.3 方案选择 44各功能模块分析 44.1 调制信号 44.2 多路选择器 44.3 载波信号 44.4 载波频率算法 45调试过程 55.1 技术问题 55.2 现象记录

4、56结论 57元器件及仪器设备明细表 68参考文献 69致谢 710、 附录 710.1 附录 1 710.2 附录 2 12调幅信号发生器设计1设计要求能将FPGA内部产生的低频信号进行调制,也能选择外部输入的幅度小于4V的低频信号进行调制,输出信号的载波频率为100KHz。输出波形峰峰值大于2V。2前言目前的FPGA技术得到了极大的扩展,资源容量和工作频率都有了很大的提高,市 场中XILINX 和ALTERA公司的FPGA芯片都是很好的选择。而且其都支持主流的硬 件编程语言VHDL和VERILOG。在FPGA中,相位累加器和相位调制器都可通过加法 器来实现。如果要实现对幅度的调制则可在正弦

5、查找表后插入一个乘法器来实现。在用 FPGA设计的过程中,整个流程都采用系统时钟产生和控制,所以其各个部分的时序和 同步性需要认真对待,还有考虑到加法器以及乘法器等对资源的使用情况,进位链或流 水线技术都可以考虑进行利用。3方案对比3.1 方案一利用单片机将模拟电路实现部分数字化,从而使硬件设计更为简单,图3-1为简化结 构框图。由外部接口、单片机、D/ A转换器、数码显示和示波器组成。软件程序经编 译后写到单片机CPU中,将软件程序数据表中对应调幅波数字量由 D/ A转换器转换为 模拟信号,频率值通过数码管来显示,也可在示波器上观察到实际的调幅波。1数码显示外 部接口图3-1图3-2为信号发

6、生器电路原理图,主要有8051CPU、DAC0832、LM324、插座等外 围电路组成,8051外接12MHz晶振和复位电路,以满足电路正常工作。J1插座可接到面 板上,外接相应的按钮来改变信号的幅度和频率,其中1、2用于改变信号的幅度,3、4、5、6用于改变信号的频率。J2插座用来外界/U出数码显示,VCC是电源端,GND是地端,电压范围为3.65 V。s?sislZ卷 出 烟DAC0K32e U 215图3-23.2 方案二(1.1)Fdr是载波信号,Fam是调制信号,m是调制度调幅信号表达式为:F =Fdr*(1+Fam*m)式中:F是调制后的输出信号(0m1)。Fdr和Fam都是有符号

7、函数。图3-3为调幅信号发生器的总体框图图3-3根据幅度调制信号调幅原理,可以在 Matlab/Simulink下利用DSP Builder来建立 幅度调制信号模型。可以在Matlab/Simulink作出图3-4所示的电路模型。其中ADDER、 Dly、Bus、BusConversion、LMT 构成一个DDS模块,产生调制信号。进入乘法器 Product 的a端;进入b端的是Mux的输出,这是一个8选1的多路选择器,对预设好的8 个调制度数据进行选择,这里设置的调制度分别从0.9到0.1共8个调制度值,选通信 号由SL输入。ADDER2将乘积(乘积项取高8位整数)与128相加。由于是8位乘

8、积,故128 类似于1.1式中的1。和进入第2个乘法器Product1的a端。元件 ADDER1、Dly1、BusConversion1、Bus1、LUT1 构成另一个 DDS 模块,产 生载波信号。进入乘法器 Product1的b端,即得到调幅模拟信号,然后将此调幅模拟 信号经10位DAC转换后输出,即得到模拟调幅模拟信号。Cst1输入的数据控制调制信 号频率;Cst2输入的数据控制载波信号频率;SL1的数据控制调制度;SL2选择内外信 号调制。MlkC/njrijn整6nmrrH2CorrdjntZn*E*-1 Mulbp-li-ErAddr 5uMijie: 0);signal SL1s

9、td_logic_vector(2 downto 0):=(others=0);signal SL2 :std_logic:=0;signal AM_OUTsignal SIGNAL_OUTstd_logic_vector(9 downto 0);std_logic_vector(7 downto 0);component untitledport(clock:in std_logic ;sclrp:in std_logic ;Input1:in std_logic_vector(7downto 0);SL1:in std_logic_vector(2 downto 0);SL2:in std

10、_logic;AM_OUT : out std_logic_vector(9 downto 0);SIGNAL_OUT : out std_logic_vector(7 downto 0); end component ;Beginassert (10) report altversion severity Note;-Sampling clock process generationClkPr : processbeginwait for ClockPeriod/2;clock = not clock;end process ClkPr;-System Reset : Initializat

11、ion of Altera Registers sReadSimulinkStimuli =0 when (CountClock4) else 1;WriteStimuli = not SystemReset;ctime:process(clock)beginif clockevent and clock=0 thenCountClock = CountClock+1;SystemReset clock,sclrp= SystemReset,Input1= Input1,SL1=SL1,SL2=SL2,AM_OUT = AM_OUT,SIGNAL_OUT = SIGNAL_OUT);-Read

12、ing Simulink Input Stimuli Input1 from the file Input1.salt pInput1:process(clock)file InputIFile : text open read_mode is DSPBuilder_untitled/Input1.salt; variable Inputlint: integer ;variable InputILine: line ;beginif (not endfile(InputlFile) and (sReadSimulinkStimuli=1) thenif clockevent and cloc

13、k=0 thenreadline(Input1file,Input1Line);read(Input1Line,Input1int);Inputl = int2sstd( Input1Int,8);end if ;end if ; end process ;-Reading Simulink Input Stimuli SL1 from the file SL1.salt pSL1:process(clock)file SLIFile : text open read_mode is DSPBuilder_untitled/SL1.salt;variable SLIInt: integer ;

14、variable SLILine: line ;beginif (not endfile(SLIFile) and (sReadSimulinkStimuli=1) thenif clockevent and clock=0 thenreadline(SL1file,SL1Line);read(SL1Line,SL1int);SL1 = int2sstd( SL1Int,3);end if ;end if ;end process ;-Reading Simulink Input Stimuli SL2 from the file SL2.salt pSL2:process(clock)fil

15、e SL2File : text open read_mode is DSPBuilder_untitled/SL2.salt;variable SL2Int: integer ;variable SL2Line: line ;beginif (not endfile(SL2File) and (sReadSimulinkStimuli=1) thenif clockevent and clock=0 thenreadline(SL2file,SL2Line);read(SL2Line,SL2int);SL2 left, field=5);writeline(oFile,traceline);

16、end if ;end if ;end process ;-Writing Output Signal SIGNAL_OUT in the file SIGNAL_OUT”.txtpSIGNAL_OUT:process(clock)file oFile : text open write_mode is SIGNAL_OUT.txt;variable traceline : line ;beginif WriteStimuli=1 thenif clockevent and clock=1 thenwrite(traceline, conv_integer(0 & SIGNAL_OUT),ju

17、stified=left, field=5);writeline(oFile,traceline);end if ;end if ;end process ;end architecture tbDspBuilder;10.2附录2timescale 1ns / 1psmodule tb_untitled;/ Input Signalsreg clock;integer fopenok_stimuli;reg SystemReset;reg 7:0 Inputl;integer Input1_stimuli, Input1_valinteger ;reg 2:0 SL1;integer SL1

18、_stimuli, SL1_valinteger ;reg SL2;integer SL2_stimuli, SL2_valinteger ;/ Output Signalswire 9:0 AM_OUT;integer AM_OUT_stimuli, AM_OUT_valinteger ;wire 7:0 SIGNAL_OUT;integer SIGNAL_OUT_stimuli, SIGNAL_OUT_valinteger ;initialbeginfopenok_stimuli =1;Input1_stimuli = $fopen (DSPBuilder_untitledInput1.s

19、alt,r);if (Input1_stimuli=0) fopenok_stimuli=0;if (Input1_stimuli=0) $display(DSP Builder Warning : unable to open input stimuli files DSPBuilder_untitledInput1.salt);SL1_stimuli = $fopen (DSPBuilder_untitledSL1.salt,r);if (SL1_stimuli=0) fopenok_stimuli=0;if (SL1_stimuli=0) $display(DSP Builder War

20、ning : unable to open input stimuli files DSPBuilder_untitledSL1.salt);SL2_stimuli = $fopen (DSPBuilder_untitledSL2.salt,r);if (SL2_stimuli=0) fopenok_stimuli=0;if (SL2_stimuli=0) $display(DSP Builder Warning : unable to open input stimuli files DSPBuilder_untitledSL2.salt);AM_OUT_stimuli = $fopen (

21、AM_OUT.txt);if (AM_OUT_stimuli=0) fopenok_stimuli=0;if (AM_OUT_stimuli=0) $display(DSP Builder Warning : unable to open input stimuli files AM_OUT.txt);SIGNAL_OUT_stimuli = $fopen (SIGNAL_OUT.txt);if (SIGNAL_OUT_stimuli=0) fopenok_stimuli=0;if (SIGNAL_OUT_stimuli=0) $display(DSP Builder Warning : un

22、able to open input stimuli files SIGNAL_OUT.txt);# 0 clock = 1b0;# 0 SystemReset = 1b1;# 80 SystemReset = 1b0;endalwaysbegin# 10.000 clock = 1;# 10.000 clock = 0;end/ Read input stimuli from Input1.salt filealways (negedge clock)beginif (SystemReset=0)&(fopenok_stimuli=1)begin$fscanf(Input1_stimuli,

23、%d,Input1_valinteger);Input1 = Input1_valinteger;endend/ Read input stimuli from SL1.salt file always (negedge clock)beginif (SystemReset=0)&(fopenok_stimuli=1) begin$fscanf(SL1_stimuli,%d,SL1_valinteger);SL1 = SL1_valinteger;end end/ Read input stimuli from SL2.salt filealways (negedge clock)beginif (SystemReset=0)&(fopenok_stimuli=1)begin$fscanf(SL2_stimuli,%d,SL2_valinteger);SL

温馨提示

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

评论

0/150

提交评论