摘 要

通信在人们生活中无处不在,而在通信系统中,一个至关重要的技术就是信号的调制技术。当前FPGA技术在飞
速发展,从开始电子设计的外围器件慢慢演变到现在,FPGA已成为各种系统中必不可少的组成部分。本文通过DSP
Builder间接实现FPGA的开发,完成两种通信信号的调制。首先利用MATLAB/Simulink 中 DSP Builder 模块库,再
根据调制信号的产生原理创建调制信号的发生器模型,然后对调制信号的发生器模型进行仿真,最后利用Signal
Compiler模块的功能自动生成VHDL 语言,并在Quartus Ⅱ 中对得到的调制信号的VHDL代码进行仿真,仿真结果表
明通过DSP Builder可以生成FPGA可运行的VHDL程序。
关键词:FPGA;调制信号;MATLAB;Simulink;DSP Builder

1 绪论

1.1研究意义
  在数字电路设计中,现场可编程门阵列(FieldPro-grammableGateArray,FPGA)技术的应用变得越来越广泛,尤
其是在通信领域。现有的调制信号调制器大多是利用固定功能的集成电路来实现的,具有集成块多、易出错、体积
大、布线复杂等缺点。FPGA芯片在系统集成领域有着许多优点,它能有效的减小实物设计的体积,还能提高可靠
性,降低成本等。
  工程师设计芯片时通常要为在硅片上实现的每一行RTL代码编写出10行之多的测试平台代码。验证任务可能会在
整个设计周期内占用50%或更多的时间。尽管效率很低下,且这样9的辛苦,但仍有60%之多的芯片存在功能的小问
题,不得不返工。HDL仿真目前还不能发现系统级错误,所以芯片设计人员越来越多地利用FPGA来加速原型设计和算
法创建 。为了处理大型测试数据集,工程师可以利用FPGA快速评估算法和架构然后可以迅速做出权衡。为了避免因
使用HDL仿真器而消耗大量时间,工程师可以通过间接方式进行测试设计。基于这种想法,本设计研究通过间接方式
实现FPGA产生调制信号的方法。使用MATLAB和Simulink创建FPGA原型,目的是为了借助MATLAB中DSPBuilder模块库
的自动HDL代码生成功能,得到通用的硬件描述语言VHDL文件,然后再借助Modelsim进行仿真,这样能有效节省手动
编写VHDL文件的时间,而且能避免编写错误,大大地提高了效率。本文将研究FSK和AM这两种调制信号的FPGA实现。
1.2 FPGA的发展和应用
  FPGA技术是一种可以用于编程的、新兴起的逻辑器件,它具备工作效率高、高密度、编程灵活等优点,在如今
的各类电子产品当中的应用十分广泛。重新配置和扩展体系结构都能由FPGA技术来实现,所以FPGA可以当作标准处
理器芯片算法的协助性处理器。由于FPGA技术本身独有的高密性和现场编程功能,所以可以在计算机上完成电路设
计中的很多工作。再加上辅助CAD技术,所以能够大大缩短产品开发周期,有效降低投资风险。在这个过程中,样品
的体积和器件的功能损耗也会由于器件的高密性而有所降低,所以人们在实验室就可以研发出规模较大的集成电
路。所以这一器件的刚一诞生,便很快地获得电路设计人员的青睐,现已成为电路系统中十分突出的一种新型电

路。FPGA技术所拥有的功能是由用户编程来控制的,即使它的外部接口不发生变化,也能够很轻易地实现对其电路
逻辑功能的更改,所以其比较适合用在小批量、多品种的军用设备开发。因为其便于使用,能够很轻易改变其逻辑
功能,这一优势正好能适应现代通信技术发展的需求,因此,FPGA技术应用于国外的很多科研项目当中。FPGA器件
结构具有两大不同的类,即:(1)阵列分布逻辑单元型。这一类型的电路结构相似于门阵列电路,芯片内部是由分布
阵列的编程逻辑单元块所构成的,在芯片的周围可以编程输入或是输出的单元模块。(2)PAL结构扩展类型。这一类型
具有陈列可编程和阵列固定的特点,所以其互连模式比较死板,缺少灵活性。
  可编程技术是FPGA的核心,在软件无线电中,使用软件资源其替代冗余的硬件,降低成本是其核心理念。而
FPGA由于其可编程的特性已经成为软件无线电的首选处理器,利用其特性可以实现软件的更新和升级,并且可以实
现不同的通信功能,以适用于不同的应用场景。而且随着FPGA的发展,DSP的很多功能也逐渐集成到了FPGA。可以
说,以FPGA为实现平台的软件无线电技术是未来无线通信领域的关键核心技术。

2 信号的调制原理

2.1 FSK调制原理
  2FSK(FrequencyShiftKeying)为二进制频移键控,用频率不同的载波来传递不同的数字信息,即根据所传送
的数字信息不同,采用不同或改变载波的频率。2FSK信号为二进制中符号“0”对应于载频f1,而二进制符号“1”
则对应于载频f2(注意f1与f2为不同的载频)的已调波形,而且f1与f2两个载频之间的改变是瞬息间完成的的。传
“0”信号时,发送信号的频率为f1;传“1”信号时,发送信号的频率为f2。可见,FSK是用不同频率的载波来传递
数字消息的。故其表达式为:
其波形图如图2.1:在这里插入图片描述

图2.1 2FSK信号波形
  通常有两种2FSK信号的产生方式:(1)频率选择法;(2)载波调频法。由于频率选择法产生的2FSK信号为两
个彼此独立的载波振荡器输出信号之和,在二进制码元状态转换时刻,2FSK信号的相位通常是不连续的,这会不利
于已调信号功率谱旁瓣分量的收敛。载波调频法是在一个直接调频器中产生2FSK信号,即用数字基带矩形脉冲控制
一个振荡器的某些参数,直接改变振荡频率,输出不同频率的信号,这时的已调信号出自同一个振荡器,信号相位
在载频变化时始终是连续的,这将有利于已调信号功率旁瓣分量的收敛,使信号功率更集中于信号带宽内,在这
里,我们采用的是载波调频法。
2.2 AM调制原理
  标准调幅就是常规双边带调制,简称调幅(AM),假设调制信号m(t)的平均值为0,将其叠加一个直流偏量A0
后与载波相乘,即可形成调幅信号。AM调制的框图如图2.2所示。

在这里插入图片描述

图2.2 AM调制的框图
将调制信号加上一个直流分量,保证信号的最小值大于零,然后再和载波相乘,得到已调信号。
AM已调信号的时域表达式为:
  式中:A0为外加的直流分量;m(t)可以是确知信号,也可以是随机信号。若m(t)为却知信号,则AM信号的频谱
为:

3 系统开发环境

3.1 DSP Builder 开发流程
3.1.1 DSP Builder 技术
  DSP Builder是Altera为DSP系统专门设计的一款快捷工具,它的作用是提供一个连接Matlab与FPGA开发工具
Quartus Ⅱ的桥梁,通过DSP Builder我们可以在短时间内就实现系统的建模和仿真。首先在Simulink中调用DSP
Builder工具构建模型,然后配置编译得到硬件描述语言文件,最后在Quartus Ⅱ上面仿真并下载到FPGA上就可以运
行了。
  使用DSP Builder来开发DSP系统,能够更加便捷高效和灵活,这种方法克服了传统DSP系统开发的许多缺点,能
够顺应现在社会的需求。
  借助Simulink设计平台来调用DSP Builder工具箱,能够非常高效便捷地搭建一个算法模型,然后在Simulink中
调用仿真功能进行功能仿真,再使用Signal Compiler对模型就行编译综合生成一个硬件代码文件,再对这个文件进
行配置并运行。当然,这时我们也能调用前文所提到的第三方仿真软件:Modelsim进行一个仿真,仿真成功过后就
可以下载到FPGA进行在线测试。这种软件+硬件联合测试的方式,能够使我们得到的系统更加的精准和稳定。很多例
子表明采用DSP Builder的建模设计方式,能够大大提高执行的效率,并且有效缩短开发周期,降低风险。
3.1.2 DSP Builder模型设计
  在使用DSP Builder模型设计的时候,一个十分重要的步骤就是用Signal Compiler模块把模型文件转化为FPGA
能够识别的文件。每一个使用DSP Builder来进行模型设计都必须要有这样一个步骤,否则设计好的模型文件无法被
FPGA所识别。具体的DSP Builder模型设计流程如图3.1:

在这里插入图片描述

图3.1 DSP Builder模型设计流程
  首先,在DSP Builder工具箱里面调用一个标准模型库,用这个标准模型库里面的模型来构建本文需要的算法模
型,然后使用Simulink自带的仿真验证功能对算法模型进行仿真验证,如果结果与预期的相符,就可以进行下一
步,否则就必须对算法模型就行修改或者重头再开始模型构建。下一步是运用Signal Compiler进行参数配置,接着
就是分析综合和布局布线生成网表文件。在这里本文运用的是自动模式,只需要配置相关参数,Modelsim会自动对
算法模型的HDL文件进行仿真分析,然后就可以产生一个.pof文件,这个文件就是我们需要的可以下载到FPGA中运行
的文件。最后我们就可以下载到FPGA中运行,观察运行结果看看是否正确。
3.2 Quartus Ⅱ开发流程
  Altera专门推出的Quartus Ⅱ是一个用于可编程逻辑器件开发的平台,其所包含的工具及支持满足了从设计输
入、分析综合、布局布线、仿真验证到器件编程配置的几乎每一个需求。虽说现在网上有很多第三方软件都能满足
这些功能,但是作为Altera自己推出的平台,Quartus Ⅱ无疑是最适合用于开发FPGA的。用Quartus Ⅱ来开发
FPGA,很容易就得到最优的逻辑功能电路或者复杂系统,只需要通过简单的优化选项、综合规则、布线约束等步骤
就可完成。
  FPGA的开发流程包括九大步骤分别是:设计定义、设计输入、分析和综合、功能仿真、布局布线、时序仿真、
IO分配及配置文件的生成、配置、在线调试,但是主要包括五大步骤:设计输入、综合、布局布线、仿真、编程和
配置。
  设计输入:设计输入包括文本输入和模块符号输入,文本输入中最常见的就是VHDL和Verilog HDL。其中VHDL是
美国早期用于军用超速集成电路设计的硬件描述语言。Verilog HDL是FPGA开发中另一个十分常用的硬件描述语言,
Verilog HDL和VHDL都是IEEE标准的硬件描述语言。虽然Verilog HDL相比于VHDL更晚出现,但是由于其语法和c语言
十分相似,使得有c语言基础的设计者能更快地掌握这门硬件描述语言,所以Verilog HDL更适合用于逻辑电路的设
计,且目前的开发市场中,使用Verilog HDL的设计者占了很大一部分。所以,本文也将采用Verilog HDL文本文件
形式作为设计输入。
  综合:作为FPGA逻辑设计中至关重要的一步,综合的结果直接决定着最后逻辑电路在FPGA中的性能。简单来说
综合这个步骤的功能就是把硬件描述语言代码翻译成FPGA可以识别的内部基本逻辑门或者是逻辑单元的互联网表。
分析综合过后得到的逻辑互联结构收逻辑功能和综合工具共同影响,如果是不同的综合工具,就算是拥有相同的逻
辑功能,那么最后得到的逻辑互联结构也有可能不同。如果想对电路进行结构上的优化,运用Quartus Ⅱ上自带的
综合工具就可以自动完成这项耗时的任务,只需要通过一些可选项就可以对速度、面积等很多选项进行优化。
  布局布线:Quartus Ⅱ是自带布局布线功能的,在软件界面,我们很容易就能找到一个名为Fitter的工具,它

的原理是先对上一步分析和综合产生的网表文件和约束文件进行分析,再结合FPGA内部可以调用的资源,最后对逻
辑功能电路进行布局布线以及进行时序分析。布局布线分为两个步骤:(1)资源分配。根据约束文件进行资源分配
;(2)优化。资源分配过后,需要对其余逻辑进行优化,如果资源分配时没有约束文件,那么这一步将会对所有的
逻辑文件进行全面的优化。为了方便和更合理的对逻辑电路进行布局布线,Quartus Ⅱ内提供了很多选项来丰富
Fitter工具。为了能更好的满足用户需求,Quartus Ⅱ还具备一种物理综合优化,它的原理时对网表文件进行优化
以达到提高工作速度或减少资源占用,从而实现对逻辑功能结构的优化。
  仿真:Quartus Ⅱ能够提供逻辑功能电路的行为仿真和时许仿真,当然也同样支持第三方软件如Modelsim来对
工程进行仿真。为此Altera推出了一款专门与Quartus Ⅱ软件配套的工具:Altera-ModelSim,这款软件相较于
Modelsim来说较为方便,毕竟是Altera专门推出的与Quartus Ⅱ配套的仿真软件,更加适合初学者操作。用户首先
需要在Quartus Ⅱ软件上编写硬件描述语言,接着进行编译综合,成功过后就可以进行调用模块代码,最后就可以
在Quartus Ⅱ上进行仿真功能,接着软件就会自动运行Altera-ModelSim工具进行各种仿真。
  编程和配置:为了让I/O端口关联FPGA的管脚,我们需要在下载到FPGA之前对硬件描述语言编写的逻辑功能电路
进行输入输出端口的配置。在Quartus Ⅱ中,可以用脚本输入方式和Assignment Editor等来实现FPGA的管脚配置。
其中脚本输入的方式更加灵活高效,用户只需要按照编写好的脚本文件,在Quartus Ⅱ点击运行就可以,软件会自
动配置好FPGA的管脚。配置完成过后只需要编译然后生成下载文件,下载后FPGA便能运行了。
3.3 Modelsim的调用
  在本文中运用到了一个第三方的仿真软件:Modelsim,这是一款十分高效且精准的混合仿真软件,是由Model公
司研发出来的一款仿真软件。这款仿真软件深受广大FPGA研发者的喜爱,目前是业界最为通用的FPGA仿真器,应为
其能够同时支持Verilog HDL 与 VHDL两种语言仿真。目前Modelsim的版本有很多,它们都支持TCL脚本语言输入,
仿真结果可以是波形也可以是列表。

4 构建模型

在生成FPGA原型时,HDL代码必不可少。若手工编写了Verilog或VHDL代码,过程将变得更加复杂,所以本文将
利用MATLAB的simulink建立调制信号模型,再把模型文件转化为通用的硬件描述语言VHDL文件,这样就能用
Modelsim对生成的VHDL文件进行仿真。
  MATLAB是功能强大的数学分析工具、广泛应用于科学计算和工程计算,可以进行复杂的数字信号处理系统的建
模、参数估计、性能分析。Simulink是MATLAB的一个组成部分,用于图形化建模仿真。DSPBuilder作为Simulink中
的一个工具箱,使得用FPGA设计DSP系统完全可以通过Simulink的图形化界面进行,只要简单地进行DSPBuilder工具
箱的模块调用即可。从而使得一个复杂电子系统设计变得相当容易而且直观。所以本文运用DSPBuilder工具箱中的
部分模块,建立了调制信号的仿真模型,再生成VHDL文件,然后就可以在Quartus Ⅱ中仿真了。
  根据调制信号的产生原理,采用嵌入在Matlab/simulink的DSPBuilder来实现。在Matlab中输入Simulink点击回
车,DSPBuilder设计流程的第一步是在MATLAB/Simulink中进行设计输入,即在MATLAB的Simulink环境中建立一个
MDL模型文件如图4.1。在这里插入图片描述

图4.1 新建模型文件
在建立模型的过程中,需要用到很多DSP builder中的模块如图4.2,主要用到的有:

Signal Compiler:Signal Compiler是DSP builder最核心的模块,其主要功能为:将simulink中构建的模型文
件转化为可综合的RTL级VHDL代码。
  AltBus:AltBus模块能够实现浮点simulink总线向定点类型总线的转变,在把AltBus插进一个数据或者I/O口通
道,就能产生输入和输出端口。在把一个信号变为定点类型的时候,必须要设置它的位宽,而设置特定的位宽有很
多种实现的方法,这些都是AltBus模块的工作。在这里插入图片描述

图4.2 DSP builder中的模块
Constant:产生一个常量值。
  LUT:LUT指显示查找表(Look-Up-Table),本质上就是一个RAM。它把数据事先写入RAM后,每当输入一个信号
就等于输入一个地址进行查表,找出地址对应的内容,然后输出。
Pulse Generator:产生脉冲信号。
  Multiplexer:数据选择器,在多路的数据传送过程中,能够根据需要地将其中任意一路信号选择出来。
Parallel Adder Subtractor:并行加法器。
Delay:延时模块。
Scop:示波器。
4.1 FSK信号模型建立
  先在模型中放入Signal Compiler,它的作用十八模型文件转化为VHDL文件,然后用图形方式调用
AlteraDSPBuilder和其它的Simulink库中的图形模块,构成系统级或算法级设计框图(或称Simulink建模)。首先
打开MATLAB,然后,打开simulink,新建一个模型(mdl文件),从Altera DSP builder库中把我们需要的模块放进
我们新建的模型中,依次连接,这样就可以得到我们需要的模型文件,其fsk模型如图4.3所示。
图4.3 2FSK模型
在这里插入图片描述

4.2 AM信号模型建立
  过程跟上述相似,再Simulink中新建一个am.mdl文件,然后在AlteraDSPBuilder模块中找到相应的模块并调入
Simulink窗口,并将相应模块连接在一起得到AM模型如图4.4:在这里插入图片描述

图4.4 AM模型
4.3 基于Simulink的调制信号模型的仿真
  在FSK模型窗口中选择“simulink”菜单,再选“start”项开始仿真,待仿真结束,双击Scope模块,打开
Scope观察窗。其中的仿真波形如图4.5所示。
  从FSK调制的仿真结果可以看出,低电平控制的时候,正弦波的频率较高,而高电平的时候正好相反,至此完成
了我们的FSK的模型仿真。在这里插入图片描述

图4.5 FSK模型仿真图

5 将模型文件转化为VHDL语言文件

DSPBuilder是一个数字信号处理(DSP)开发工具,它提供了Quartus®II软件和MATLAB/Simulink工具之间的
接口,DSPBuilder设计实现的关键一步,是通过SignalCompiler把Simulink的模型文件转化成通用的硬件描述语言
VHDL文件。这是由于QuartusII不能直接处理MATLAB的.mdl文件,所以需要一个转换过程。这个自动转化的过程就是
综合配置的过程,通过自动的综合配置,能够避免编程的复杂过程,大大提高效率。在这里插入图片描述

5.1分析模型
  双击此模块即打开SignalCompiler窗口如图5.1,在Advanced下方点击Analyze进行分析。
图5.1 SignalCompiler窗口
在这里插入图片描述

图5.2代码生成提示

可以看到,图5.2中红色方框中提示硬件描述语言已经生成,到这个阶段Simulink的使命就已经完成了,接下来
就要Modelsim来进行仿真了。
5.2验证VHDL代码
  在Simulink中进行的仿真是属于系统验证性质的,是对MDL文件进行的仿真,并没有对生成的VHDL代码进行过仿
真,事实上,生成VHDL描述是RTL级的,是针对具体的硬件结构的,而在MATLAB的Simulink中的模型仿真是算法级
(系统级)的,是针对算法实现的,这两者之间有可能存在软件理解上的差异,转换后的VHDL代码实现可能与MDL模
型描述的情况不完全相符,这就需要针对生成的RTL级VHDL代码进行功能仿真。
在这里插入图片描述

图5.3 FSK的Modelsim仿真波形

在此我们利用Modelsim来对生成的VHDL代码进行功能仿真。打开Modelsim,选择“file”→ “open”打开先前
通过SignalCompiler自动生成得到的VHDL代码,设置好相应参数确定后,出现如图5.3和图5.4所示的仿真波形,可
以看到Modelsimd的仿真波形与Simulink里构建的模型仿真的结果基本一至,这说明用SignalCompiler转化的VHDL代
码时正确的,于是即可在Quartus II环境下进行时许仿真,由于包含了芯片的延时信息,时序仿真被视为和实际最
为相似的仿真。时序仿真过后就可以制定器件管脚进行编译,最后就可以下载到FPGA器件中,进行硬件测试。

在这里插入图片描述

图5.5 FSK部分VHDL代码图

在这里插入图片描述

和图5.8,可以看到其仿真的波形和预期的效果基本一致,至此,设计就已经进入尾声,接下来就是指定器件管脚、
进行编译、最后下载到FPGA器件中,就可以对硬件进行测试。
  当需要调节一些数据时,仅修改FSK或AM模型文件就可以实现,这样不仅避免了繁所的VHDL语言编程,而且便于
进行调整,如图5.9-2.11所示。在这里插入图片描述

图 5.9 修改脉冲信号的频率和幅度
在这里插入图片描述

在这里插入图片描述

图5.10 修改常量参数
图 5.11设置位宽

6 结论

FPGA的开发本身是一件十分复杂的过程,如果程序员自己编写VHDL语言的话,开发周期就会变得十分漫长,且
容易出错,而利用Altera公司的DSP Builder工具库进行建模设计,再利用其模块的功能自动生成FPGA可识别的VHDL
代码语言,这样就可以避免用VHDL语言编程设计这一复杂过程,以达到简单、高效、便捷的目的。本文通过产生两
种调制信号的仿真实验,实现了用DSP Builder来间接开发FPGA。
致谢

这篇论文的写作进入尾声,四年的本科生生活也即将结束了。
  回首这四年学习生活,心中充满了温暖和感恩。在这里,我结识了很多热情的同学和关心我的老师们,他们在
生活和学习中给了我真诚无私的帮助,让我觉得这四年一直生活在一个温暖幸福的大家庭里,学校的教学资源如此
丰富,让我在校图书馆,院资料室,随时都可以找到自己所需要的知识。本论文的完成,离不开学校领导的关心,
老师、同学、朋友及家人的帮助。
  首先,向我的论文指导老师、海南大学信息与通信工程学院的陈敏老师表示最诚挚的感谢!在论文的写作过程
中,从论文选题到框架确定再到修改定稿,导师都极具耐心地加以细致审阅,提出修改意见,并敦促我反复思考,
对本文的完成提供了莫大的帮助。在本文完成之际,谨向李老师表示最衷心的感谢!
  在这里还要感谢海南大学信息与通信工程学院的老师们,你们不仅使我获得更多的专业知识,而且开拓了我的
法律视野,这是各位老师辛勤培养的结果,向各位老师表示真诚的感谢!最后还要感谢我的室友们,大家共同创造
的良好寝室氛围,为我的论文写作提供了集思广益的优越环境。
  本文在撰写过程中,搜集参考了大量的文献资料,在此对资料被本文引用的学者专家们一并加以感谢!本文虽
然有良师加以指导,但鉴于本人资质愚钝后进,论文行笔必有颇多疏忽遗漏之处,敬请各位老师严加斧正。

Logo

GitCode 天启AI是一款由 GitCode 团队打造的智能助手,基于先进的LLM(大语言模型)与多智能体 Agent 技术构建,致力于为用户提供高效、智能、多模态的创作与开发支持。它不仅支持自然语言对话,还具备处理文件、生成 PPT、撰写分析报告、开发 Web 应用等多项能力,真正做到“一句话,让 Al帮你完成复杂任务”。

更多推荐