第一范文网 - 专业文章范例文档资料分享平台

FPGA课程设计--基于VHDL的2FSK的信号发生器

来源:用户分享 时间:2025/5/16 6:41:40 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

正弦信号的输入时钟)。基准时钟由一个12 MHz的晶振提供。设计中要求一个50分频(产生240 kHz信号),再2分频(产生120 kHz信号)和100分频(产生1.2 kHz信号),共有三个分频值。

(2).m序列产生器

m序列是伪随机序列的一种,它的显著特点是:随机特性,预先可确定性,循环特性。正因为这些特性,使得m序列产生器在通信领域得到了广泛的应用。

这里用一种带有两个反馈抽头的3级反馈移位寄存器,得到一串“1110010”循环序列,并采取措施防止进入全“0”状态。通过更换时钟频率可以方便地改变输入码元的速率。m序列产生器的电路结构如图3所示。

或门异或门或非门1.2 kHz时钟信号DCLKQDCLKQDCLKQ

图3 m序列产生器

m序列产生器电路结构 (3).跳变检测

将跳变检测引入正弦波的产生中,可以使每次基带码元上升沿或下降沿到来时,对应输出波形位于正弦波形的sin0处。引入跳变检测主要是为了便于观察,确保示波器上显示为一个连续的波形。

基带信号的跳变检测可以有很多方法,图4为一种便于在可编程逻辑器件中实现的方案。

基带码异或门D时钟信号CLK图4 信号跳变检测电路

跳变输出Q (4).2:1数据选择器

2:1数据选择器用于选择正弦波产生器的两个输入时钟。一个时钟的频率为120 kHz,此时正弦波产生器产生一个1.2 kHz的正弦波,代表数字信号“0”;另一个时钟的频率为240 kHz,此时产生一个2.4 kHz的正弦波信号,代表数字信号“1”。

(5).正弦信号的产生

用数字电路和DAC变换器可以产生要求的模拟信号。根据抽样定理可知,当用模拟信号最大频率两倍以上的速率对该模拟信号采样时,便可将原模拟信号不失真地恢复出来。本例要求得到的是两个不同频率的正弦信号,实验中对正弦波每个周期采样100个点,即采样速率为原正弦信号频率的100倍,因此完全可以在接收端将原正弦信号不失真地恢复出来,从而可以在接收端对FSK信号正确地解调。经DAC转换后,可以在示波器上观察到比较理想的波形。

本设计中每个采样点采用8位量化编码,即8位分辨率。采样点的个数与分辨率的大小主要取决于CPLD/FPGA器件的容量,其中分辨率的高低还与DAC的位数有关。实验表明,采用8位分辨率和每周期100个采样点可以达到相当不错的效果。

具体的正弦信号产生器可以用状态机来实现。按前面的设计思路,本实现方案共需100个状态,分别为s1~s100。同时设计一个异步复位端,保证当每个“1”或“0”到来时其调制信号正好位于坐标原点,即sin0处。状态机共有8位输出(Q7~Q0),经DAC变换为模拟信号输出。为得到一个纯正弦波形,应在DAC的输出端加上一个低通滤波器,由于本设计仅观察FSK信号,因此省去了低通滤波器。

本设计中,数字基带信号与FSK调制信号的对应关系为“0”对应1.2 kHz,“1”对应2.4 kHz,此二载波的频率可以方便地通过软件修改。 3、对仿真结果进行分析

2FSK的总体波形如图5所示,其中CLOCK为正弦波发生器时钟MODE表示0:2FSK;1:2PSK,CLK120为用于产生一个1.2KHz的正弦波信号,CLK240为用于产生一个2.4KHz的正弦波信号,VALUE为正弦波的采样点峰值,M_MODE为输出m序列。

图5 2FSK仿真波形图

下图6所示为产生的2FSK波形,可以明显地看到在M_MODE跳变前后VALUE的码元宽度相差一倍,实现了2FSK的频率变化来传递数字信息,即120KHz表示信号“0”,240KHz表示信号“1”。

图6 2FSK仿真波形图

下图3-6可以看出传递信号“1”的波形密度明显比传递信号“0”的波形密度高。

图7 2FSK仿真波形图

2FSK的信号传递频率从下图8中可以看出为240KHz,信号“1”和“0”的跳变是通过相位的改变来实现的。

图8 2FSK仿真波形图

4、具体程序

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.all; USE IEEE.std_logic_unsigned.all; USE IEEE.std_logic_arith.all; ENTITY PSKFSK IS

PORT(CLOCK:IN STD_LOGIC; --正弦波发生器时钟 MODE:IN STD_LOGIC; --0:FSK;1:PSK

CLK240: buffer STD_LOGIC; --用于产生一个2.4KHz的正弦波信号 CLK120: buffer STD_LOGIC; --用于产生一个1.2KHz的正弦波信号 VALUE: out std_logic_vector (7 DOWNTO 0); --正弦波的采样点峰值 M_CODE:BUFFER STD_LOGIC); --输出m序列 END PSKFSK;

ARCHITECTURE PSKFSK_ARCH OF PSKFSK IS

SIGNAL COUNT100:INTEGER RANGE 0 TO 99; --记录100个状态 SIGNAL COUNT50: INTEGER RANGE 0 TO 49; --记录50个状态

SIGNAL COUNT: INTEGER RANGE 1 TO 10; --记录10个状态,实现12M分频到240KHz得到CLK240时钟信号

SIGNAL SINCLK,CODERATE: STD_LOGIC; --正弦波信号的频率以及随机序列的编码速率

SIGNAL TEMP,JUMP_HIGH,JUMP_LOW: STD_LOGIC; --0,1跳变标志 SIGNAL M: std_logic_vector (2 DOWNTO 0); --m序列 BEGIN

PROCESS(CLOCK) --分频为240KHz的CLK240信号 BEGIN

IF (CLOCK'EVENT AND CLOCK = '1') THEN IF (COUNT = 10) THEN

COUNT<=1; --计数满时计数回复初值 CLK240<=NOT CLK240; --输出时钟翻转一次 ELSIF (COUNT=5) THEN

FPGA课程设计--基于VHDL的2FSK的信号发生器.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c8fe491bny57u3cm9al7t_2.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top