当前位置:   article > 正文

FPGA - 4位数值比较器电路

FPGA - 4位数值比较器电路

4位数值比较器电路

描述

某4位数值比较器的功能表如下。

请用Verilog语言采用门级描述方式,实现此4位数值比较器

输入描述:

    input        [3:0]           A       ,
    input        [3:0]           B       

输出描述:

    output   wire            Y2    , //A>B
    output   wire            Y1    , //A=B
    output   wire            Y0      //A<B

分析:

这里要注意题目的“门级描述方式”,所以我们只能使用基本门电路:&,|,!,^,^~。

门级描述,无非就是将<,>,==三个符号用门级电路来表示,然后根据行为级描述进行替换。

        a == b  --> ~(a^b)

        a > b --> (a^b)&a

        a < b --> (a^b)&b

行为级描述就是从最高位依次比较。

对于Y1; A = B

A[3] = B[3], A[2] = B[2], A[1] = B[1], A[0] = B[0],

如何描述呢?(^异或,相同为0,不同为1

即 :

assign Y1 = ~(A[0]^B[0]) & ~(A[1]^B[1]) & ~(A[2]^B[2]) & ~(A[3]^B[3]);

所以这道题的解题代码为:

  1. `timescale 1ns/1ns
  2. module comparator_4(
  3. input [3:0] A ,
  4. input [3:0] B ,
  5. output wire Y2 , //A>B
  6. output wire Y1 , //A=B
  7. output wire Y0 //A<B
  8. );
  9. assign Y1 = ~(A[0]^B[0]) & ~(A[1]^B[1])
  10. & ~(A[2]^B[2]) & ~(A[3]^B[3]);
  11. assign Y2 = ((A[3]^B[3])&A[3])
  12. | ~(A[3]^B[3]) & ((A[2]^B[2])&A[2])
  13. | ~(A[3]^B[3]) & ~(A[2]^B[2]) & ((A[1]^B[1])&A[1])
  14. | ~(A[3]^B[3]) & ~(A[2]^B[2]) & ~(A[1]^B[1] )& ((A[0]^B[0])&A[0]);
  15. assign Y0 = ((A[3]^B[3])&B[3])
  16. | ~(A[3]^B[3]) & ((A[2]^B[2])&B[2])
  17. | ~(A[3]^B[3]) & ~(A[2]^B[2]) & ((A[1]^B[1])&B[1])
  18. | ~(A[3]^B[3]) & ~(A[2]^B[2]) & ~(A[1]^B[1] )& ((A[0]^B[0])&B[0]);
  19. endmodule

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/692005
推荐阅读
相关标签
  

闽ICP备14008679号