完成(2,1,7)编码方式 多项式为[133,171],也可以完成(2,1,5)编码方式多项式[23,35]的verilog实现
对应代码中的注释的位置。

相应的译码器也写已写完,后续。。。。。。。。。。。。。

相关的卷积编码的基础知识请参看

https://blog.csdn.net/u011639609/article/details/51476278###;

`timescale 1ns / 1ps
//
// Company:
// Engineer:
//
// Create Date: 2018/03/30 11:00:01
// Design Name:
// Module Name: ConvolutionGen_module_v2
// Project Name:
// Target Devices:
// Tool Versions:
// Description:
// Dependencies:
//
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
//
//
module ConvolutionGen_module_v2(
 
 I_Clk, I_Rst,
 I_Din,I_DinEn,
 O_Dout1, O_Dout2,
 O_DoutEn
);
input  I_Clk;
input  I_Rst;
input  I_Din;
input  I_DinEn;//输入数据
output O_Dout1;
output O_Dout2;
output O_DoutEn;
reg O_Dout1  = 'b0;
reg O_Dout2  = 'b0;
reg O_DoutEn = 'b0;
localparam   S_Idle   = 2'b01,
             S_S1_Gen = 2'b10;
reg [1:0] R_CurrentState = S_Idle;
reg R_I_Din = 'b0, R_Din = 'b0;
reg R_I_DinEn = 'b0;// R_DinEn = 'b0;
reg R_StartFlag = 'b0, R_EndFlag = 'b0;
reg R_Dout1 = 'b0, R_Dout2 = 'b0;
reg R_DoutEn = 'b0;
//reg [3:0] R_ShiftReg = 'b0;//(2.1.5)编码方式的寄存器为4bit
reg [5:0] R_ShiftReg = 'b0;//(2.1.7)
always @ ( posedge I_Clk )
begin
if ( I_Rst )
  begin
  R_CurrentState <= S_Idle;
  end
 else
  begin
  case ( R_CurrentState )
   S_Idle:
    begin
    if ( R_StartFlag )
     begin
     R_CurrentState <= S_S1_Gen;
     end
    else
     begin
     R_CurrentState <= S_Idle;
     end
    end
   S_S1_Gen:
    begin
    if ( R_EndFlag )
     begin
     R_CurrentState <= S_Idle;
     end
    else
     begin
     R_CurrentState <= S_S1_Gen;
     end
    end
   default:
    begin
    R_CurrentState <= S_Idle;
    end
  endcase
  end
end
always @ ( posedge I_Clk )
begin
 
 R_I_Din   <= I_Din;
 R_I_DinEn <= I_DinEn;//输入数据
R_Din   <= R_I_Din;
 //R_DinEn <= R_I_DinEn;//输入数据
 
 if ( R_CurrentState == S_Idle )
  begin
  if ( ~R_I_DinEn & I_DinEn )
   begin
   R_StartFlag <= 1'b1;
   end
  else
   begin
   R_StartFlag <= R_StartFlag;
   end
  end
 else
  begin
  R_StartFlag <= 1'b0;
  end
 
 if ( R_CurrentState == S_S1_Gen )
  begin
  if ( R_I_DinEn & ~I_DinEn )
   begin
   R_EndFlag <= 1'b1;
   end
  else
   begin
   R_EndFlag <= R_EndFlag;
   end
  end
 else
  begin
  R_EndFlag <= 1'b0;
  end
 
 if ( R_CurrentState == S_S1_Gen )
  begin
  R_Dout1 <= R_ShiftReg[5]^R_ShiftReg[4]^R_ShiftReg[2]^R_ShiftReg[1]^R_Din;
  R_Dout2 <= R_ShiftReg[5]^R_ShiftReg[2]^R_ShiftReg[1]^R_ShiftReg[0]^R_Din; //(2,1,7)
/*   R_Dout1 <= R_ShiftReg[3]^R_ShiftReg[2]^R_Din;
  R_Dout2 <= R_ShiftReg[3]^R_ShiftReg[1]^R_ShiftReg[0]^R_Din; */  //(2,1,5)
  end
 else
  begin
  R_Dout1 <= 1'b0;
  R_Dout2 <= 1'b0;
  end
 
 R_DoutEn <= R_CurrentState == S_S1_Gen;
 
 if ( R_CurrentState == S_S1_Gen )
  begin
  //R_ShiftReg <= {R_ShiftReg[2:0],R_Din};//(2,1,5)
  R_ShiftReg <= {R_ShiftReg[4:0],R_Din};//(2,1,7)
  end
 else
  begin
  R_ShiftReg <= 4'd0;
  end
 
 O_Dout1  <= R_Dout1;
 O_Dout2  <= R_Dout2;
 O_DoutEn <= R_DoutEn;
 
end
 
endmodule

卷积编码verilog实现相关推荐

  1. 单载波频域均衡matlab仿真,包括卷积编码维特比译码,矩阵交织,QPSK调制解调,导频插入,MMSE-FDE频域均衡

    目录 1.算法描述 2.仿真效果预览 3.MATLAB核心程序 4.完整MATLAB 1.算法描述 频域均衡是从校正系统的频率特性出发,利用一个可调滤波器的频率的频率特性去补偿信道或系统的频率特性,使 ...

  2. AWGN信道下卷积编码、viterbe译码、分别采用软硬判决,进行误码率分析

    一.卷积编码 仿真 (硬判决译码 误码率和理论值比较) 已知卷积码生成函数: 可知码率为1/3,相应的抽头系数为(557 663 711)的卷积码.编写程序,采用卷积编码.维特比译码(硬判决),BPS ...

  3. ldpc matlab verlog,LDPC编码Verilog代码

    [实例简介] LDPC编码Verilog代码 LDPC编码Verilog代码 [实例截图] [核心代码] ldpc_verilog_rtl └── verilog_rtl ├── rtl │   ├─ ...

  4. 片状卷积的verilog实现

    给大家推荐免费的kugou音乐 vip哈, 还不知道的一定有相见恨晚的感觉,获取地址http://www.service99.cn ------------题记 在mobilenet中,广泛使用片状的 ...

  5. Pytorch:基于转置卷积解码的卷积自编码网络

    Pytorch: 图像自编码器-卷积自编码网络(转置卷积解码)和图像去噪 Copyright: Jingmin Wei, Pattern Recognition and Intelligent Sys ...

  6. 卷积码树状图怎么画_卷积码是什么 卷积码编码原理介绍【图文】

    卷积码,卷积码是什么意思 卷积码在一个二进制分组码(n,k)当中,包含k个信息位,码组长度为n,每个码组的(n-k)个校验位仅与本码组的k个信息位有关,而与其它码组无关.为了达到一定的纠错能力和编码效 ...

  7. 手写Verilog用FPGA实现实时图像卷积,用Block Ram缓存图像

    手写Verilog用FPGA实现实时图像卷积,用Block Ram缓存图像_哔哩哔哩_bilibili可用于神经网络卷积加速.Vivado里生成本代码所需Block Ram IP时要把Output R ...

  8. 通信系统未编码、卷积码与格雷码的仿真性能比较

    通信系统未编码.卷积码与格雷码的仿真性能比较 论文+代码+仿真结果:下载地址 以上仿真结果可知: 1.未编码.卷积编码和格雷码三种编码,经PSK调制后加AWGN(高斯白噪声),在经过解调和解码得出来的 ...

  9. ar编码matlab仿真_matlab-ofdm通信链路仿真

    tips: 块状与梳状导频 相同点或相似点 1 导频序列和训练序列的作用都是为了得到准确符号同步和频偏纠正. 2 导频序列和训练序列都进行信道估计. 3 二者都传输已知数据. 4 二者都可称之为基于辅 ...

  10. 循环卷积和周期卷积的关系_基于单口RAM读写的卷积电路(下)

    这是迟到很久的卷积电路verilog设计的下篇...你看我还有机会吗... 上回我们给出系统的层次结构.卷积计算模块以及用于数据缓存的fifo模块,今天我们首先回顾一下上一次的关键内容. 系统结构回顾 ...

最新文章

  1. 在asp.net中为Web用户控件添加属性和事件
  2. mybatis转义反斜杠_mybatis like 的坑
  3. Python基础(三):字符串和元组常用方法
  4. 虚拟机登服务器,用虚拟机登录云服务器
  5. Django如何安装指定版本
  6. Logstash读取Kafka数据写入HDFS详解
  7. webpack笔记一:webpack的介绍,安装,加载css、图片、字体等
  8. 金蝶K3 数据表知识整理(不断完善)
  9. dell服务器卸载系统,如何通过 iDRAC9 装载和卸载驱动程序包
  10. 硅谷真假u盘测试软件,硅谷硅谷真假u盘测试
  11. GLUE部分基准数据集介绍:RTE、MRPC、SST-2、QNLI、MNLI、QQP
  12. 故障处理——阿里云服务器无法向外发送邮件
  13. github用户followers分析
  14. 【猿说VUE】Visual Studio Code安装配置
  15. Android动画总结系列(2)——补间动画使用
  16. 【Java】哈希冲突(哈希碰撞)
  17. 肖邦圆舞曲14首 个人赏析
  18. Cannot initialize a variable of type 'Stu *' with an rvalue of type 'void *'
  19. 【万里征程——Windows App开发】动态磁贴
  20. 映泰 远程开机_远程温柔的开关机,哪种智能插座可以做到?我找到了它

热门文章

  1. Spring的事务传播机制
  2. linux搭建mysql集群
  3. ruby 从入门到放弃-第一节-hello world
  4. 写给后端程序员的前端开发流程与正确姿势.
  5. uniapp仿京东地址选择插件
  6. Ubuntu安装ssh服务详细过程
  7. 中国家庭追踪调查(CFPS)数据及问卷(2010-2018年)
  8. 分享 :理解和管理社交媒体算法的4个想法
  9. Hash表的平均查找长度ASL计算方法
  10. cookie模拟登陆淘宝