关于组合奇偶校验电路

最近我一个同学问我如何写一个奇偶校验器,要是组合电路,主要是因为他设计RISC要用,想了半天,想了两中思路,也可以说是一种,那就是查表后化简卡诺图:
主要思路如下:我们把4位的(假如是偶校验)的情况全部列举出来;我们有以下结果:
  0000 ->0
  0001 ->1
  0010 ->1
  0011 ->0
  0100 ->1
  0101 ->0
  0110 ->0
  0111 ->1
  1000 ->1
  1001 ->0
  1010 ->0
  1011 ->1
  1100 ->0
  1101 ->1
  1110 ->1
  1111 ->0
两个表项一组合可以得到8位的,同理可以得到32位的,这样级联,关于效率那得自己权衡了!
我的大概代码如下:
  1. module JO(out,in);
  2.     input [3:0] in;
  3.     output out;
  4.     reg out;
  5.     always @(*)
  6.         begin:jo_p01
  7.             case (in)
  8.             1,2,4,7,8,11,13,14:out<=1'b1;
  9.             defaultout<=1'd0;
  10.             endcase
  11.         end
  12. endmodule
  13. module JO8(out,in);
  14.     input [7:0] in;
  15.     output out;
  16.     
  17.     wire out1,out2;
  18.     assign out=out1^out2;
  19.     JO X1(.out(out1),.in(in[3:0]));
  20.     JO X2(.out(out2),.in(in[7:4]));
  21. endmodule
激励:
  1. `timescale 1ns / 1ns
  2. module josim();
  3.     reg [7:0] in;
  4.     wire out;
  5.     
  6.     integer count;
  7.     reg [7:0] test;
  8.     reg result;
  9.     reg outcompare1,outcompare;
  10.     
  11.     initial begin
  12.         in=0;        
  13.     end
  14.     
  15.     always begin
  16.         #5 in=in+1;
  17.     end    
  18.     
  19.     JO8  XX(.out(out),.in(in)); 
  20.     
  21.     always @(in)        //在这个块里面,直接算出奇偶校验值,放在outcompare中
  22.      begin
  23.         test=in;
  24.         outcompare1=test[0];
  25.         for(count=0;count<7;count=count+1)
  26.          begin
  27.              test=test>>1;
  28.              if(test[0]) outcompare1=~outcompare1;
  29.          end
  30.          outcompare=outcompare1;
  31.     end
  32.     
  33.     always @(out//out 变化要慢于outcompare,理论上来说是同时变化的。
  34.        begin
  35.            if(out==outcompare) result=1;
  36.            else result=0;
  37.        end
  38. //    assign result = out~^outcompare;     //这样写会产生毛刺,不利于观测。
  39.        
  40. endmodule
整个思路大概就是这样了!
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值