• 用3-8译码器实现全减器


    描述

            请使用3-8译码器和必要的逻辑门实现全减器,全减器接口图如下,A是被减数,B是减数,Ci是来自低位的借位,D是差,Co是向高位的借位。

    3-8译码器代码如下,可将参考代码添加并例化到本题答案中。

    1. module decoder_38(
    2. input E ,
    3. input A0 ,
    4. input A1 ,
    5. input A2 ,
    6. output reg Y0n ,
    7. output reg Y1n ,
    8. output reg Y2n ,
    9. output reg Y3n ,
    10. output reg Y4n ,
    11. output reg Y5n ,
    12. output reg Y6n ,
    13. output reg Y7n
    14. );
    15. always @(*)begin
    16. if(!E)begin
    17. Y0n = 1'b1;
    18. Y1n = 1'b1;
    19. Y2n = 1'b1;
    20. Y3n = 1'b1;
    21. Y4n = 1'b1;
    22. Y5n = 1'b1;
    23. Y6n = 1'b1;
    24. Y7n = 1'b1;
    25. end
    26. else begin
    27. case({A2,A1,A0})
    28. 3'b000 : begin
    29. Y0n = 1'b0; Y1n = 1'b1; Y2n = 1'b1; Y3n = 1'b1;
    30. Y4n = 1'b1; Y5n = 1'b1; Y6n = 1'b1; Y7n = 1'b1;
    31. end
    32. 3'b001 : begin
    33. Y0n = 1'b1; Y1n = 1'b0; Y2n = 1'b1; Y3n = 1'b1;
    34. Y4n = 1'b1; Y5n = 1'b1; Y6n = 1'b1; Y7n = 1'b1;
    35. end
    36. 3'b010 : begin
    37. Y0n = 1'b1; Y1n = 1'b1; Y2n = 1'b0; Y3n = 1'b1;
    38. Y4n = 1'b1; Y5n = 1'b1; Y6n = 1'b1; Y7n = 1'b1;
    39. end
    40. 3'b011 : begin
    41. Y0n = 1'b1; Y1n = 1'b1; Y2n = 1'b1; Y3n = 1'b0;
    42. Y4n = 1'b1; Y5n = 1'b1; Y6n = 1'b1; Y7n = 1'b1;
    43. end
    44. 3'b100 : begin
    45. Y0n = 1'b1; Y1n = 1'b1; Y2n = 1'b1; Y3n = 1'b1;
    46. Y4n = 1'b0; Y5n = 1'b1; Y6n = 1'b1; Y7n = 1'b1;
    47. end
    48. 3'b101 : begin
    49. Y0n = 1'b1; Y1n = 1'b1; Y2n = 1'b1; Y3n = 1'b1;
    50. Y4n = 1'b1; Y5n = 1'b0; Y6n = 1'b1; Y7n = 1'b1;
    51. end
    52. 3'b110 : begin
    53. Y0n = 1'b1; Y1n = 1'b1; Y2n = 1'b1; Y3n = 1'b1;
    54. Y4n = 1'b1; Y5n = 1'b1; Y6n = 1'b0; Y7n = 1'b1;
    55. end
    56. 3'b111 : begin
    57. Y0n = 1'b1; Y1n = 1'b1; Y2n = 1'b1; Y3n = 1'b1;
    58. Y4n = 1'b1; Y5n = 1'b1; Y6n = 1'b1; Y7n = 1'b0;
    59. end
    60. default: begin
    61. Y0n = 1'b1; Y1n = 1'b1; Y2n = 1'b1; Y3n = 1'b1;
    62. Y4n = 1'b1; Y5n = 1'b1; Y6n = 1'b1; Y7n = 1'b1;
    63. end
    64. endcase
    65. end
    66. end
    67. endmodule

    输入描述

    1.    input             A     ,
    2.    input             B     ,
    3.    input             Ci    

    输出描述

    1.    output wire       D     ,
    2.    output wire       Co    

    解题分析

    3-8译码器实现全减器

            38译码器的输出实际上包含了输入A2  A1  A0组成的所有最小项,而全减器作为组合电路,其输出最终可化简为最小项的形式。

            由于译码器的输出为最小项取反,而逻辑函数可以写成最小项之和的形式,故可以利用门电路和译码器实现逻辑函数。

    需先列出全减器的真值表。

            由真值表可得出,输出D的逻辑表达式用最小项表示为:

    D = m1+m2+m4+m7

            输出Co的逻辑表达式用最小项表示为:

    Co = m1+m2++m3+m7

            由于译码器的输出为最小项取反,下面需要将表达式中的最小项转换为最小项取反的形式。根据反演定理,转换结果如下:

    1. D = (m1’m2’m4’m7’)’;
    2. Co=(m1’m2’m3’m7’)’

    ‘表示取反。

            由上式可知,采用与非门即可实现该电路的组合逻辑输出。关键电路如下:

            上图中D和Co的输入端来自同一各译码器。

            结合电路图,将电路转换成Verilog代码描述如下:

    1. wire Y0_n ;
    2. wire Y1_n ;
    3. wire Y2_n ;
    4. wire Y3_n ;
    5. wire Y4_n ;
    6. wire Y5_n ;
    7. wire Y6_n ;
    8. wire Y7_n ;
    9. decoder_38 U0(
    10. .E (1'b1),
    11. .A0 (Ci ),
    12. .A1 (B ),
    13. .A2 (A ),
    14. .Y0n (Y0_n),
    15. .Y1n (Y1_n),
    16. .Y2n (Y2_n),
    17. .Y3n (Y3_n),
    18. .Y4n (Y4_n),
    19. .Y5n (Y5_n),
    20. .Y6n (Y6_n),
    21. .Y7n (Y7_n)
    22. );
    23. assign D = ~(Y1_n & Y2_n & Y4_n & Y7_n);
    24. assign Co = ~(Y1_n & Y2_n & Y3_n & Y7_n);

    参考代码

    1. `timescale 1ns/1ns
    2. module decoder_38(
    3. input E ,
    4. input A0 ,
    5. input A1 ,
    6. input A2 ,
    7. output reg Y0n ,
    8. output reg Y1n ,
    9. output reg Y2n ,
    10. output reg Y3n ,
    11. output reg Y4n ,
    12. output reg Y5n ,
    13. output reg Y6n ,
    14. output reg Y7n
    15. );
    16. always @(*)begin
    17. if(!E)begin
    18. Y0n = 1'b1;
    19. Y1n = 1'b1;
    20. Y2n = 1'b1;
    21. Y3n = 1'b1;
    22. Y4n = 1'b1;
    23. Y5n = 1'b1;
    24. Y6n = 1'b1;
    25. Y7n = 1'b1;
    26. end
    27. else begin
    28. case({A2,A1,A0})
    29. 3'b000 : begin
    30. Y0n = 1'b0; Y1n = 1'b1; Y2n = 1'b1; Y3n = 1'b1;
    31. Y4n = 1'b1; Y5n = 1'b1; Y6n = 1'b1; Y7n = 1'b1;
    32. end
    33. 3'b001 : begin
    34. Y0n = 1'b1; Y1n = 1'b0; Y2n = 1'b1; Y3n = 1'b1;
    35. Y4n = 1'b1; Y5n = 1'b1; Y6n = 1'b1; Y7n = 1'b1;
    36. end
    37. 3'b010 : begin
    38. Y0n = 1'b1; Y1n = 1'b1; Y2n = 1'b0; Y3n = 1'b1;
    39. Y4n = 1'b1; Y5n = 1'b1; Y6n = 1'b1; Y7n = 1'b1;
    40. end
    41. 3'b011 : begin
    42. Y0n = 1'b1; Y1n = 1'b1; Y2n = 1'b1; Y3n = 1'b0;
    43. Y4n = 1'b1; Y5n = 1'b1; Y6n = 1'b1; Y7n = 1'b1;
    44. end
    45. 3'b100 : begin
    46. Y0n = 1'b1; Y1n = 1'b1; Y2n = 1'b1; Y3n = 1'b1;
    47. Y4n = 1'b0; Y5n = 1'b1; Y6n = 1'b1; Y7n = 1'b1;
    48. end
    49. 3'b101 : begin
    50. Y0n = 1'b1; Y1n = 1'b1; Y2n = 1'b1; Y3n = 1'b1;
    51. Y4n = 1'b1; Y5n = 1'b0; Y6n = 1'b1; Y7n = 1'b1;
    52. end
    53. 3'b110 : begin
    54. Y0n = 1'b1; Y1n = 1'b1; Y2n = 1'b1; Y3n = 1'b1;
    55. Y4n = 1'b1; Y5n = 1'b1; Y6n = 1'b0; Y7n = 1'b1;
    56. end
    57. 3'b111 : begin
    58. Y0n = 1'b1; Y1n = 1'b1; Y2n = 1'b1; Y3n = 1'b1;
    59. Y4n = 1'b1; Y5n = 1'b1; Y6n = 1'b0; Y7n = 1'b0;
    60. end
    61. default: begin
    62. Y0n = 1'b1; Y1n = 1'b1; Y2n = 1'b1; Y3n = 1'b1;
    63. Y4n = 1'b1; Y5n = 1'b1; Y6n = 1'b1; Y7n = 1'b1;
    64. end
    65. endcase
    66. end
    67. end
    68. endmodule
    69. module decoder1(
    70. input A ,
    71. input B ,
    72. input Ci ,
    73. output wire D ,
    74. output wire Co
    75. );
    76. wire Y0_n ;
    77. wire Y1_n ;
    78. wire Y2_n ;
    79. wire Y3_n ;
    80. wire Y4_n ;
    81. wire Y5_n ;
    82. wire Y6_n ;
    83. wire Y7_n ;
    84. decoder_38 U0(
    85. .E (1'b1),
    86. .A0 (Ci ),
    87. .A1 (B ),
    88. .A2 (A ),
    89. .Y0n (Y0_n),
    90. .Y1n (Y1_n),
    91. .Y2n (Y2_n),
    92. .Y3n (Y3_n),
    93. .Y4n (Y4_n),
    94. .Y5n (Y5_n),
    95. .Y6n (Y6_n),
    96. .Y7n (Y7_n)
    97. );
    98. assign D = ~(Y1_n & Y2_n & Y4_n & Y7_n);
    99. assign Co = ~(Y1_n & Y2_n & Y3_n & Y7_n);
    100. endmodule

    注:解题分析来源于网友,如有侵权,请告删之。

  • 相关阅读:
    使用Python PyQt5完成残缺棋盘覆盖仿真作业
    POI2020题解
    Android CPU Profile/TraceView
    LeetCode168. Excel Sheet Column Title
    利用mybatis框架时,常见的三种sql注入方式
    vue 图片引入的各种方式
    RabbitMQ基本使用一
    IDEA Maven项目上传jar包到nexus仓库图文教程
    【GitLab】GitLab CI/CD 模型部署自动化超详细介绍
    蓝桥杯1045
  • 原文地址:https://blog.csdn.net/jk_101/article/details/132454244