300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > 重温FPGA之4bit信息位 汉明编码器 verilog实现

重温FPGA之4bit信息位 汉明编码器 verilog实现

时间:2021-01-12 10:40:58

相关推荐

重温FPGA之4bit信息位 汉明编码器 verilog实现

1.题目

2.源码

// *********************************************************************************// Project Name : Hamming_code// Email : 2972880695@// Website: /u/hqz68/// Create Time : /12/14 // File Name : Hamming_code.v// Module Name : Hamming_code// Abstract:// editor: sublime text 3// *********************************************************************************// Modification History:// Date By Version Change Description// -----------------------------------------------------------------------// /12/14 宏强子 1.0 Original// // *********************************************************************************`timescale1ns/1nsmodule Hamming_code (//system signalsinputsclk, inputs_rst_n,//inputinputstart,input[3:0]data_i,//outputoutputwire[6:0]data_o);//========================================================================\// =========== Define Parameter and Internal signals =========== //========================================================================/localparams0 = 4'd0;localparams1 = 4'd1;localparams2 = 4'd2;localparams3 = 4'd3;reg [3:0]state;reg [6:0]data_reg;reg bit_6;reg bit_5;reg bit_3;//=============================================================================//****************************Main Code *******************************//=============================================================================always @ (posedge sclk or negedge s_rst_n) beginif(s_rst_n == 1'b0)state <= s0;else if (state == s0 & start == 1'b1)state <= s1;else if (state == s1)state <= s2;else if (state == s2)state <= s3;else if (state == s3)state <= s0; elsestate <= state;endalways @ (posedge sclk or negedge s_rst_n) beginif(s_rst_n == 1'b0)data_reg <= 7'd0;else if(state == s1)data_reg <= {1'b0,1'b0,data_i[3],1'b0,data_i[2],data_i[1],data_i[0]};elsedata_reg <= data_reg;endalways @ (state) beginif (state == s1)bit_6 = data_reg[4] ^ data_reg[2] ^ data_reg[1];else if (state == s2)bit_5 = data_reg[4] ^ data_reg[1] ^ data_reg[0];else if (state == s3)bit_3 = data_reg[2] ^ data_reg[1] ^ data_reg[0];else if (state == s0)beginbit_6 = 1'b0;bit_5 = 1'b0;bit_3 = 1'b0;end end assign data_o = (state == s3) ? {bit_6,bit_5,data_reg[4],bit_3,data_reg[2:0]} : 7'd0;endmodule

3.测试平台

`timescale 1ns/1nsmodule tb_sim();regsclk;regs_rst_n;regstart;reg[3:0]data_i;wire[6:0]data_o;initial beginsclk =1;s_rst_n = 0;start = 0;data_i = 4'd0;#100s_rst_n =1;#200start = 1;data_i = 4'b0101; //对应输出 01000101#100start = 0;endalways #50 sclk = ~ sclk;Hamming_code Hamming_code_inst(//system signals.sclk(sclk), .s_rst_n(s_rst_n),//input.start(start),.data_i(data_i),//output.data_o(data_o));endmodule

4.仿真波形

欢迎关注我的公众号:芯王国,有更多的FPGA&数字IC的技术分享,还可以获取开源FPGA项目!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。