FPGA产生m序列及其应用
伪随机序列又称为伪随机码,是一组人工生成的周期序列。它不仅具有随机序列的一些统计特性和高斯白噪声所有的良好的自相关特征,而且具有某种确定的编码规则,同时又便于重复产生和处理,因而在通信领域应用广泛。
通常产生的伪随机序列电路可以用线性反馈移位寄存器,其产生的周期最长的二进制数字序列称为最大长度线性反馈移位寄存器序列,简称m序列。
伪随机序列发生器
m序列在保密通信中的应用,如下表所示:
简单地说,就是将信号源发出的信息经过m序列的异或操作处理加密,达到接收方之前,再用加密时使用的那串m序列再次异或处理即可得到原本的信息。之所以要强调是加密时的那串序列,是因为m序列发生器产生的m序列是在时刻变化着的。
FPGA实现
我们要在FPGA中进行的设计与上述原理思路一致。
设计一个用于加密的器件,这里命名为EncodeMachine,内部产生m序列,并将其与输入的数据异或后再输出。
代码如下:
module EncodeMachine(clk, rst_n,encode_data_in,encode_data_out);input clk;input rst_n;input[7:0] encode_data_in;output encode_data_out;reg[7:0] shift_reg;wire[7:0] encode_data_out;///parameter seed = 8'b10101010;/// always@(posedge clk or negedge rst_n)beginif(~rst_n)shift_reg <= seed;else beginshift_reg[0]<=shift_reg[1];shift_reg[1]<=shift_reg[2];shift_reg[2]<=shift_reg[3];shift_reg[3]<=shift_reg[4];shift_reg[4]<=shift_reg[5];shift_reg[5]<=shift_reg[6];shift_reg[6]<=shift_reg[7];shift_reg[7]<=shift_reg[0]^shift_reg[4]^shift_reg[5]^shift_reg[6];endend assign encode_data_out = encode_data_in ^ shift_reg;endmodule
再设计一个用于解密的器件,这里命名为DecodeMachine,产生与EncodeMachine同步的m序列,将加密的数据与同步时刻的m序列异或输出,得到原数据。
所谓同步,也就是设定同一个seed初值。
代码如下:
module DecodeMachine(clk, rst_n,decode_data_in,decode_data_out);input clk;input rst_n;input[7:0] decode_data_in;output decode_data_out;reg[7:0] shift_reg;wire[7:0] decode_data_out;parameter seed = 8'b10101010;always@(posedge clk or negedge rst_n)beginif(~rst_n)shift_reg <= seed;else beginshift_reg[0]<=shift_reg[1];shift_reg[1]<=shift_reg[2];shift_reg[2]<=shift_reg[3];shift_reg[3]<=shift_reg[4];shift_reg[4]<=shift_reg[5];shift_reg[5]<=shift_reg[6];shift_reg[6]<=shift_reg[7];shift_reg[7]<=shift_reg[0]^shift_reg[4]^shift_reg[5]^shift_reg[6];endend assign decode_data_out = decode_data_in ^ shift_reg;endmodule
最后在textbench中设定好测试数据,仿真一下:
这里一共显示了五行二进制数据。
第一行数据是输入的原始数据
第二行是经m序列加密后的实时数据
第三行是经过解密后还原的原始数据
第四行是加密器件的内部m序列
第五行是解密器件的内部m序列
textbench参考代码:
`timescale 1ns/1ps
module testbench;reg clk; reg rst_n;reg[7:0] encode_data_in;wire[7:0] encode_data_out;wire[7:0] decode_data_out;EncodeMachine EncodeMachine_inst (.clk(clk),.rst_n(rst_n),.encode_data_in(encode_data_in),.encode_data_out(encode_data_out));DecodeMachine DecodeMachine_inst (.clk(clk),.rst_n(rst_n),.decode_data_in(encode_data_out),.decode_data_out(decode_data_out)); always #10clk = ~clk;initialbegin#0 clk = 1;rst_n = 0;encode_data_in = 8'h00;#40 rst_n = 1;encode_data_in = 8'h41;#20 encode_data_in = 8'h41;#20 encode_data_in = 8'h41;#20 encode_data_in = 8'h41;#20 encode_data_in = 8'h41;#20 encode_data_in = 8'h41;#20 encode_data_in = 8'h41;#20 encode_data_in = 8'h41;#20 encode_data_in = 8'h41;#20 encode_data_in = 8'h41;#1000 $stop ; endendmodule
FPGA产生m序列及其应用相关推荐
- FPGA学习-m序列信号发生器
原文作者:FPGA设计论坛 m序列简介 m序列是目前广泛应用的一种伪随机序列,其在通信领域有着广泛的应用,如扩频通信,卫星通信的码分多址,数字数据中的加密.加扰.同步.误码率测量等领域.m序列在所有的 ...
- 从设置、加载、启动看Xilinx FPGA配置流程
尽管FPGA的配置模式各不相同,但整个配置过程中FPGA的工作流程是一致的,分为三个部分:设置.加载.启动. 本文引用地址: http://www.21ic.com/embed/hardware/pr ...
- matlab基于dct的图像压缩编码解码_基于FPGA的扩频系统设计(下)
大侠好,欢迎来到FPGA技术江湖,江湖偌大,相见即是缘分.大侠可以关注FPGA技术江湖,在"闯荡江湖"."行侠仗义"栏里获取其他感兴趣的资源,或者一起煮酒言欢. ...
- XILINX FPGA 7K325T 烧录MCS文件后无法自启动的问题
XILINX FPGA 7K325T 烧录MCS文件后无法自启动的问题 现象描述:使用IMPACT烧写FPGA外挂的BPI的flash后,发现烧完之后DONE信号一直没有拉高,烧写失败,重新上电之后, ...
- Xilinx FPGA通过FLASH加载程序的时序
尽管FPGA的配置模式各不相同,但整个配置过程中FPGA的工作流程是一致的,分为三个部分:设置.加载.启动. 复位结束配置开始 有多种方式使FPGA的配置进入这一过程.在上电时,电压达到FPGA要求之 ...
- 基于FPGA的扩频系统设计(上)
今天给大侠带来基于FPGA的扩频系统设计,由于篇幅较长,分三篇.今天带来第一篇,上篇.话不多说,上货. 导读 在无线通信系统中,普遍使用扩频通信技术,因此扩频技术对通信系统具有重要的现实意义.直接序列 ...
- 基于FPGA的扩频系统设计(中)
今天给大侠带来基于FPGA的扩频系统设计,由于篇幅较长,分三篇.今天带来第一篇,中篇.话不多说,上货. 导读 在无线通信系统中,普遍使用扩频通信技术,因此扩频技术对通信系统具有重要的现实意义.直接序列 ...
- 国内研究团队提出通过非侵入性脑机超表面平台实现人脑直接无线通信
无论是侵入性的还是非侵入性的,脑机接口 (BCI)都具有无与伦比的前景,并有望帮助有需要的患者更好地与周围环境互动.受到基于 BCI 的康复技术的启发对于神经系统损伤和截肢,我们提出了一种电磁脑‑计算 ...
- FSM学习笔记20210905
1 状态机 1.1 概念 有限状态机(Finite State Machine, FSM)简称状态机,是用来表示系统中的有限个状态及这些状态之间的转移和动作的模型.这些转移和动作依赖于当前状态和外部输 ...
- IC技术圈期刊 2021年第8期
IC技术圈期刊内容涵盖FPGA.前端.验证.后端.自动化.模拟.求职.管理等IC技术领域,欢迎阅读,欢迎投稿. 本期文章包括:FPGA 9篇,前端 14篇,验证 3篇,后端 1篇,模拟 2篇,求职就业 ...
最新文章
- jpa单向多对一关联映射
- 如何安装Windows10+CentOS7双系统_自用成功版——注意看评论的注意事项
- p沟道mos管导通条件_通俗易懂:MOS管基本知识(快速入门)
- (转载)VS2010/MFC编程入门之三十六(工具栏:工具栏资源及CToolBar类)
- 第七章:Java_集合
- 吴裕雄 Bootstrap 前端框架开发——Bootstrap 辅助类:表格单元格使用了 bg-primary 类...
- mybatis3 添加ehcache支持
- 有了bootstrap,为什么还要做amaze ui
- AutoVBA调用AddCricle方法绘制圆
- 项目:艺龙国内机票实时数据爬虫
- 企业联合体的形式_企业联合体与垄断的初探
- 18年研赛数学建模心得
- 毒你没商量!DOC病毒原理完全解析(转)
- indesign选中不了图片删除_图片神器XnView教程、方法和技巧汇总
- 全球plc品牌总结(欢迎补充)
- thinkphp6 使用PhpOffice导入Excel表格(上传文件)
- 2022年网络安全的八大趋势
- Keil,eclipse, netbean, codeblock三个的初步应用体会。
- 23考研 长安大学846计算机考研复试《数据库》
- Minecraft HMCL 使用认证服务器LittleSkin进行登录