基于FPGA的2FSK调制解调系统

这篇具有很好参考价值的文章主要介绍了基于FPGA的2FSK调制解调系统。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、前言

        FSK作为数字通信中不可或缺的一种调制方式,其具有抗干扰能力强,不受信道参数的影响的优点,为此,设计合适的FSK调制解调系统便具有重要意义。

二、主要步骤

  该系统产生主要分为三个步骤:

 1、通过matlab产生两个不同频率的正弦载波

        产生方式:通过matlab软件编程生成一个.mif文件,存放正弦波一个周期的编码值,采样点数为1024,辐值为0-1024。再调用一个12bit数据宽度,深度为1024的ROM,生成两个例化ROM文件,在基准时钟下通过计数器累加不断送入新地址,以两种不同的方法来取地址(本设计采用的是一个地址加一,另一个加二)。 这样即可生成两个不同频率的载波。

        .mif文件生成参考代码为:

clc;
clear;
depth =1024; %存储器的深度
widths = 12; %数据宽度为12位
N = 0 :1023; %把一个周期的正弦信号分为256份
s =sin(2*pi *N/256); %计算0 ~2*pi之间的sin值
qqq = fopen('sine.mif','wt') %使用fopen函数生成sine.mif
fprintf(qqq, 'depth = %d;\n',depth); %使用fprintf打印depth = 1027;
fprintf(qqq, 'width = %d;\n',widths); %使用fprintf打印width = 12;
fprintf(qqq, 'address_radix = UNS;\n'); %使用fprintf打印address_radix = UNS; 表示无符号显示数据
fprintf(qqq,'data_radix = UNS;\n'); %使用fprintf打印data_radix = UNS; 表示无符号显示数据
fprintf(qqq,'content begin\n'); %使用fprintf打印content begin
for(x = 1 : depth) %产生正弦数据
fprintf(qqq,'%d:%d;\n',x-1,round(128*sin(2*pi*(x-1)/256)+128)); 
end
fprintf(qqq, 'end;'); %使用fprintf打印end;
fclose(qqq);

        生成的.mif文件内容如下: 

两个不同频率载波,fpga开发,信号处理,信息与通信

         对应的调数据代码为:

module fangwen(clk,dout1,dout2);

input clk;
output dout1,dout2;

wire [10:0] dout1,dout2;
reg [9:0] addr1 =0,addr2 =0;


rom rom1(
			.clock(clk),
			.address(addr1),
			.q(dout1)
			);

rom rom2(
			.clock(clk),
			.address(addr2),
			.q(dout2)
			);

always @(negedge clk)
	begin
		addr1<=addr1+1;
	end

always @(negedge clk)
	begin
		addr2<=addr2+2;
	end
endmodule

        产生的载波效果如下: 

两个不同频率载波,fpga开发,信号处理,信息与通信

  2、通过产生m序列的方式模拟数字信源

        信源部分代码为:

module DDS(clk,enable,code,dt);   
input clk,enable;
output code,dt;
reg code=0;
reg [7:0] dt = 8'b1010_1010,cnt=0;    //设置信源的初始状态

integer i=8;

always @(negedge clk)
    begin
        if(enable)
            begin
            if(i!=1)
            begin
            code<=dt[i-1];
            i=i-1;
            end
            else 
                begin
                code<= dt[0];   
                dt  <= dt<<1;
                dt[0]<=((dt[7]^dt[3])^dt[2])^dt[1];
                i<=8;
                cnt<=cnt+1'b1;
                end
            end
            else
            begin
            code<=code;
            i<=8;
            end
    end

endmodule

        波形如下:

两个不同频率载波,fpga开发,信号处理,信息与通信 

  3、将数字信息加载在载波上

        调制部分代码为:

module tiaozhi(clk,enable,shuchu,clk1);//顶层

input clk,enable;
output shuchu,clk1;

wire [7:0] dt;
reg clk1=0;

wire [10:0] dout1,dout2;
wire code;
wire [10:0] shuchu;
reg [9:0] sum1=0;

always @(negedge clk)
begin
sum1<=sum1+1;     //计数,看什么时候下一个周期,用来控制下一个码元的出现
if(sum1==10'd1023)
	clk1=~clk1;
end

fangwen u1(.clk(clk),.dout1(dout1),.dout2(dout2));
DDS u2(.clk(clk1),.enable(enable),.code(code),.dt(dt)); 
switch u3(.clk(clk),.code1(code),.dataout(shuchu),.d1(dout1),.d2(dout2));

endmodule

module switch(clk,code,dataout,d1,d2);
input clk;
input code;
input d1,d2;
wire [10:0] d1,d2;
output dataout;
reg [10:0]dataout;


always @(negedge clk)
    begin
        case(code)
        1'b1:dataout<=d1;
        1'b0:dataout<=d2;
        endcase
    end
endmodule

  4、通过解调的方式将数字信息恢复出来

        解调部分采用过零检测的方法,即数一个码元周期内零点的个数,个数多的是高频对应原数字信息1,反之则对应0。

        具体功能模块代码为:

module jietiao(clk,enable,count,cnt,dout,shuchu,code);
input clk,enable;

wire code;
output dout;
output count,cnt,shuchu;//count记512(相当于记零点)的个数,cnt记脉冲的个数,shuchu是引的调制的输出
output code;

reg [10:0] buffer;
wire[10:0]shuchu;
reg [10:0] cnt=0;

reg dout=0;      //输出的为原基带信号  0  1
integer count=0;

//实例化部分
  
wire clk1;

always @(negedge clk)
	begin
	buffer<=shuchu;
	cnt<=cnt+1;
	if(buffer==11'b01000000000)
		count<=count+1;
	if(cnt==2047)
		begin
			if(count<=6)
				dout<=1;
			else
				dout<=0;
			count<=0;
		 end
	end
tiaozhi u1(.clk(clk),.enable(enable),.shuchu(shuchu),.clk1(clk1),.code(code));
endmodule

        测试模块代码为:

module jietiao_tb;
reg clk=0;
wire dout;
wire [10:0] cnt;
wire [10:0]shuchu;
reg enable=1;
wire  code;
always #2 clk=~clk;
jietiao u1(.clk(clk),.enable(enable),.cnt(cnt),.dout(dout),.shuchu(shuchu),.code(code));
endmodule

三、仿真结果

        可以发现,这样便实现了2FSK调制解调器的功能。

两个不同频率载波,fpga开发,信号处理,信息与通信文章来源地址https://www.toymoban.com/news/detail-772822.html

到了这里,关于基于FPGA的2FSK调制解调系统的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 基于verilog实现2FSK调制解调器

      在某些具体情况下,如通过电话线传输信息时,由于在电话线上只能传输模拟信号,因此需要将数字信号转换为模拟信号,进而将转换后的模拟信号进行传输。数据接收端对模拟信号进行采样,量化,编码后,还原出数字信号。   在上述过程中,数据发送端将数字信号

    2024年02月02日
    浏览(26)
  • STM32-2FSK解调 一种简单的C语言包络提取方法

    效果如图,其中方波为基带信号,原始信号为2FSK经过一路带通滤波器后的理想输出结果。 程序对原始信号的绝对值信号进行包络提取。可以看到提取出的包络信号与方波信号相差无几。  代码如下: 可以看出阈值的设置相当重要,建议对输入的信号求平均值,以平均值作为

    2024年02月12日
    浏览(24)
  • m基于FPGA的8PSK调制解调系统verilog实现,包含testbench测试文件

    目录 1.算法仿真效果 2.算法涉及理论知识概要 2.1 8PSK调制原理 2.2 基于FPGA的8PSK调制解调器设计和实现 3.Verilog核心程序 4.完整算法代码文件获得 vivado仿真结果如下: 借助matlab看8PSK的星座图:         随着通信技术的不断发展,相位调制技术因其高频谱效率和抗干扰能力而广

    2024年02月05日
    浏览(29)
  • m基于FPGA的BPSK调制解调通信系统verilog实现,包含testbench,包含载波同步

    目录 1.算法仿真效果 2.算法涉及理论知识概要 3.verilog核心程序 4.完整算法代码文件 vivado2019.2仿真结果如下:        对比没载波同步和有载波同步的仿真效果,我们可以看到,当不存在载波同步时,数据的包络会有一个缓慢的类正弦变换,这是由于存在频偏导致的。而当加

    2024年02月16日
    浏览(29)
  • m基于FPGA的PPM光学脉位调制解调系统verilog实现,包含testbench

    目录 1.算法仿真效果 2.算法涉及理论知识概要 2.1 PPM调制解调原理 2.2 基于FPGA的PPM系统实现 3.Verilog核心程序 4.完整算法代码文件获得 vivado2019.2仿真结果如下:          基于FPGA的PPM(脉冲位置调制)光学脉位调制解调系统是一个复杂的电子与光电子相结合的通信系统。    

    2024年02月03日
    浏览(32)
  • m基于FPGA的QPSK调制解调通信系统verilog实现,包含testbench,不包含载波同步

    目录 1.算法仿真效果 2.算法涉及理论知识概要 3.Verilog核心程序 4.完整算法代码文件 本系统进行了两个平台的开发,分别是: Vivado2019.2 Quartusii18.0+ModelSim-Altera 6.6d  Starter Edition 其中Vivado2019.2仿真结果如下:  Quartusii18.0+ModelSim-Altera 6.6d  Starter Edition的测试结果如下:        

    2024年02月12日
    浏览(27)
  • m基于FPGA的64QAM调制解调通信系统verilog实现,包含testbench,不包含载波同步

    目录 1.算法仿真效果 2.算法涉及理论知识概要 2.1、64QAM调制解调系统的设计 2.1 信号生成 2.2 信号调制 2.3 信号解调 3.Verilog核心程序 4.完整算法代码文件 本系统进行了两个平台的开发,分别是: Vivado2019.2 Quartusii18.0+ModelSim-Altera 6.6d  Starter Edition 其中Vivado2019.2仿真结果如下:

    2024年02月01日
    浏览(34)
  • 基于System Generator的1024QAM-FM软件无线电联合调制解调系统的FPGA实现

    目录 一、理论基础 1.1环路滤波器 1.2环鉴相器介绍 1.3 Ganrder  二、核心模型

    2024年02月13日
    浏览(28)
  • 基于FPGA的QPSK调制解调-------(1)QPSK调制技术的原理

    QPSK(正交相移键控)是M=4的MPSK一种,也可叫做四进制相移键控。即有四个不同相位的状态,每个码元需要传输2bit的数字信息,可由00、01、11、10组合来对应表示四个不同的相位0、pi/2、pi、3pi/2或pi/4、3pi/4、5pi/4、7pi/4。 由 QPSK调制原理框图如图所示:        首先将输入的数

    2024年02月04日
    浏览(31)
  • FSK解调技术的FPGA实现

    本原创文章由深圳市小眼睛科技有限公司创作,版权归本公司所有,如需转载,需授权并注明出处 一、FSK信号的解调原理 FSK信号的解调也有非相干和相干两种,FSK信号可以看作是用两个频率源交替传输得到的,所以FSK的接收机由两个并联的ASK接收机组成。 (1)相干解调 相干解

    2024年02月09日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包