首页 > 其他分享 >FPGA加扰与仿真

FPGA加扰与仿真

时间:2024-07-05 11:34:34浏览次数:10  
标签:仿真 wire FPGA clk 加扰 63 rst data reg

对加扰仿真,输出结果符合预期

 

仿真代码如下

 

module scrambler_64bit(
    input wire clk,
    input wire rst,
    input wire [63:0] data_in,
    output reg [63:0] data_out
);

reg [63:0] state;

always @(posedge clk or posedge rst) begin
    if (rst) begin
        state <= 64'hFFFFFFFFFFFFFFFF; 
    end else begin
        state <= state + 64'hAAAAAAAAAAAAAAAA; // 64位加法扰乱器
    end
end

assign data_out = data_in ^ state; // 异或

endmodule

 

module descrambler_64bit(
    input wire clk,
    input wire rst,
    input wire [63:0] data_in,
    output reg [63:0] data_out
);

reg [63:0] state;

always @(posedge clk or posedge rst) begin
    if (rst) begin
        state <= 64'hFFFFFFFFFFFFFFFF; // 初始化,需与加扰器一致
    end else begin
        state <= state + 64'hAAAAAAAAAAAAAAAA; // 解扰器状态更新,需与加扰器保持同步
    end
end

assign data_out = data_in ^ state; // 异或恢复原始数据

endmodule

 

module tb_scrambler_descrambler_64bit();

reg clk;
reg rst;
reg [63:0] data_in;
wire [63:0] scrambled_data;
wire [63:0] descrambled_data;

scrambler_64bit scrambler_inst (
    .clk(clk),
    .rst(rst),
    .data_in(data_in),
    .data_out(scrambled_data)
);

descrambler_64bit descrambler_inst (
    .clk(clk),
    .rst(rst),
    .data_in(scrambled_data),
    .data_out(descrambled_data)
);

// Clock generation
always #5 clk = ~clk;

initial begin
    clk = 0;
    rst = 1;
    data_in = 64'h12340000ABCD0000; 
    #10 rst = 0; 
    #100;
    $display("Input Data: %h", data_in);
    $display("Scrambled Data: %h", scrambled_data);
    $display("Descrambled Data: %h", descrambled_data);
    // $finish;
end

endmodule

 

标签:仿真,wire,FPGA,clk,加扰,63,rst,data,reg
From: https://www.cnblogs.com/radiumlrb/p/18285469

相关文章

  • 基于matlab的通信仿真系统的设计与实现 毕业论文+修改版论文+论文检测查重报告+源码
    !!!有需要的小伙伴可以通过文章末尾名片咨询我哦!!! ......
  • 课程设计——基于FPGA的双向移位寄存器
    基于FPGA的双向移位寄存器摘 要本文使用verilogHDL语言设计双向移位寄存器,使电路受外部信号控制,实现数字信号的双向移位等功能,其电路设计模块主要分为三个部分,分别为接受判断控制信号的组合逻辑电路部分、实现存储、运算和输出数据的时序逻辑电路部分以及时钟信号输入部分......
  • 基于LEACH路由协议的网络性能matlab仿真,包括数据量,能耗,存活节点
    1.程序功能描述       LEACH的原理在于它将传感器节点分为两类:簇头节点和普通节点。普通节点将数据发送给距离自己最近的簇头节点,然后簇头节点将收集到的数据融合后发送给基站。这种机制可以减少网络中节点的能耗,并且能够提高数据融合比例,减少传输数据量。本课题将分别对......
  • FPGA必修课—FIFO
    FIFO基本概念FIFO,全称为“FirstInFirstOut”,译为“先进先出”。这是一种常见的数据存储和处理原则,其基本含义在于数据的存取顺序:最先进入的数据将最先被取出。FIFO可以被视为一种特殊类型的数据缓冲区,它按照元素到达的顺序进行数据的存取操作。学习FIFO的重要性在于它在......
  • 基于PSO粒子群优化的CNN-LSTM的时间序列回归预测matlab仿真
    1.算法运行效果图预览  2.算法运行软件版本matlab2022a 3.部分核心程序fori=1:Iteriforj=1:Npeoprng(i+j)iffunc_obj(x1(j,:))<pbest1(j)p1(j,:)=x1(j,:);%变量pbest1(j)=func_obj(x1(j,:));......
  • Verilog图片仿真
            今天给大家分享自己使用的一段仿真代码,是我调整好的,拿去就可以直接使用!!!        我们做fpga有时候会接触一些图像相关的算法,我们不能每一次都是编译成功下载验证看效果吧,我也是找了好久,终于找到一个没啥毛病的,我对于这个模块还是做了一些调整,满足我们......
  • 基于全数字实时仿真的嵌入式DevOps解决方案
    ​为丰富浙江省信息技术应用创新(以下简称“信创”)产业生态,在全社会各领域形成示范效应,浙江省经信厅联合省密码管理局开展2023年浙江省深化信创典型案例评选工作。经过征集申报、专家评选、名单公示等程序,确定36个应用示范案例和24个典型解决方案。【典型解决方案】基于全数......
  • 【雷达】单基地雷达仿真,含距离-多普勒地图Matlab实现
     ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,代码获取、论文复现及科研仿真合作可私信。......
  • 基于STM32单片机的智能垃圾桶控制系统 语音识别 LD3322 垃圾分类 红外感应 超声波满溢
        随着社会科学技术的飞速发展,人们的生活质量和速度也在不断提高。大多数传统的家用垃圾桶已经过时且缺乏新颖性,并且缺乏人性化设计。使用起来既不方便也不卫生,并且所有的生活垃圾和废物垃圾都被均匀地装载,没有经过仔细的分类。随之而来的是,清洁工的任务量正以几何速......
  • 基于STM32单片机的智能垃圾桶控制系统 语音识别LD3322 垃圾分类 火灾检测 金属检测 成
        随着社会科学技术的飞速发展,人们的生活质量和速度也在不断提高。大多数传统的家用垃圾桶已经过时且缺乏新颖性,并且缺乏人性化设计。使用起来既不方便也不卫生,并且所有的生活垃圾和废物垃圾都被均匀地装载,没有经过仔细的分类。随之而来的是,清洁工的任务量正以几何速......