您现在的位置:首页 >> 通信 >> 内容

m基于FPGA的8PSK调制解调系统verilog实现,包含testbench测试文件

时间:2023/11/30 23:48:04 点击:

  核心提示:00_052m,包括程序操作录像...

1.完整项目描述和程序获取

>面包多安全交易平台:https://mbd.pub/o/bread/ZZeXlp9u

>如果链接失效,可以直接打开本站店铺搜索相关店铺:

点击店铺

>如果链接失效,程序调试报错或者项目合作可以加微信或者QQ联系。

2.部分仿真图预览


3.算法概述

      8PSK调制是一种相位调制方式,其基本原理是通过改变载波的相位来传递信息。在8PSK中,一个符号周期内的相位变化有8种可能的状态,分别对应3个比特的信息。因此,8PSK调制可以看作是一种将3个比特映射到一个符号的映射方式。

4.部分源码

`timescale 1ns / 1ps

//

// Company: 

// Engineer: 

// 

// Create Date: 2023/05/03 06:21:37

// Design Name: 

// Module Name: TEST

// Project Name: 

// Target Devices: 

// Tool Versions: 

// Description: 

// 

// Dependencies: 

// 

// Revision:

// Revision 0.01 - File Created

// Additional Comments:

// 

 

 

module TEST();

 

reg i_clk;

reg i_clksample;

reg i_rst;

reg i_dat;

 

wire[2:0]o_ISET;

wire o_clk_3div;

 

wire signed[15:0]o_I8psk;

wire signed[15:0]o_Q8psk;

wire signed[15:0]o_Ifir_T;

wire signed[15:0]o_Qfir_T;

wire signed[15:0]o_cos_T;

wire signed[15:0]o_sin_T;

wire signed[31:0]o_modc_T;

wire signed[31:0]o_mods_T;

wire signed[31:0]o_mod_T;

 

wire signed[15:0]o_cos_R;

wire signed[15:0]o_sin_R;

wire signed[31:0]o_modc_R;

wire signed[31:0]o_mods_R;

wire signed[31:0]o_Ifir_R;

wire signed[31:0]o_Qfir_R;

 

 

 

//DQPSK调制

T8PSK T8PSKU(

.i_clk  (i_clk),

.i_clksample(i_clksample),

.i_rst  (i_rst),

.i_dat  (i_dat),

.o_ISET (o_ISET),

.o_clk_3div(o_clk_3div),

.o_I8psk(o_I8psk),

.o_Q8psk(o_Q8psk),

.o_Ifir (o_Ifir_T),

.o_Qfir (o_Qfir_T),

.o_cos  (o_cos_T),

.o_sin  (o_sin_T),

.o_modc (o_modc_T),

.o_mods (o_mods_T),

.o_mod  (o_mod_T)

);

 

 

 

 

//8PSK解调

wire [2:0]o_wbits;

wire      o_bits;

R8PSK R8SKU(

.i_clk  (i_clk),

.i_clksample(i_clksample),

.i_rst  (i_rst),

.o_clk_3div(),

.i_med  (o_mod_T[25:10]),

.o_cos  (o_cos_R),

.o_sin  (o_sin_R),

.o_modc (o_modc_R),

.o_mods (o_mods_R),

.o_Ifir (o_Ifir_R),

.o_Qfir (o_Qfir_R),

.o_wbits(o_wbits),

.o_bits(o_bits)

);

 

initial

begin

    i_clk = 1'b1;

    i_clksample= 1'b1;

    i_rst = 1'b1;

    #12000

    i_rst = 1'b0;

end

 

always #80 i_clk=~i_clk;

always #5 i_clksample=~i_clksample;

 

 

initial

begin

    i_dat = 1'b0;

    #12000

    repeat(10000)

    begin

    #160 i_dat = 1'b1;

    #160 i_dat = 1'b1;

    #160 i_dat = 1'b0;

    #160 i_dat = 1'b0;

    #160 i_dat = 1'b0;

    #160 i_dat = 1'b1;

    #160 i_dat = 1'b0;

    #160 i_dat = 1'b1;

    #160 i_dat = 1'b1;

    #160 i_dat = 1'b0;

    #160 i_dat = 1'b0;

    #160 i_dat = 1'b0;

    #160 i_dat = 1'b0;

    #160 i_dat = 1'b0;

    #160 i_dat = 1'b0;

    #160 i_dat = 1'b0;

    #160 i_dat = 1'b0;

    #160 i_dat = 1'b0;

    #160 i_dat = 1'b1;

    #160 i_dat = 1'b1;

    #160 i_dat = 1'b1;

    #160 i_dat = 1'b0;

    #160 i_dat = 1'b0;

    #160 i_dat = 1'b1;

    #160 i_dat = 1'b0;

    #160 i_dat = 1'b0;

    #160 i_dat = 1'b1;

    #160 i_dat = 1'b1;

    #160 i_dat = 1'b0;

    

    

    end

end

 

 

 //显示发射端带相位旋转的星座图

integer fout1;

integer fout2;

initial begin

 fout1 = $fopen("It.txt","w");

 fout2 = $fopen("Qt.txt","w"); 

end

 

always @ (posedge i_clk)

 begin

     if(i_rst==0)

     begin

    $fwrite(fout1,"%d\n",o_I8psk);

$fwrite(fout2,"%d\n",o_Q8psk);

end

else begin

    $fwrite(fout1,"%d\n",0);

$fwrite(fout2,"%d\n",0);

end

end

 

 

 

endmodule

00_052m

---

作者:我爱C编程 来源:我爱C编程
本站最新成功开发工程项目案例
相关文章
相关评论
发表我的评论
  • 大名:
  • 内容:
本类固顶
  • 没有
  • FPGA/MATLAB商业/科研类项目合作(www.store718.com) © 2025 版权所有 All Rights Reserved.
  • Email:1480526168@qq.com 站长QQ: 1480526168