• 北邮22级信通院数电:Verilog-FPGA(6)第六周实验:全加器(关注我的uu们加群咯~)


    北邮22信通一枚~

    跟随课程进度更新北邮信通院数字系统设计的笔记、代码和文章

    持续关注作者 迎接数电实验学习~

    获取更多文章,请访问专栏:

    北邮22级信通院数电实验_青山如墨雨如画的博客-CSDN博客

    作者建群啦!!!欢迎关注我的uu们加群交流哦~

    目录

    一.verilog 代码 add.v

    二.管脚分配

    三.实验效果

    3.1说明

    ​编辑 3.2实验操作流程

    3.3动画效果


    一.verilog 代码 add.v

    1. module add_initial(a,b,ci_1,si,ci);
    2. input a,b,ci_1;
    3. output si,ci;
    4. wire p,g;
    5. assign p=a^b;
    6. assign g=a&b;
    7. assign si=p^ci_1;
    8. assign ci=g|(p&ci_1);
    9. endmodule
    10. module my_add(a,b,s,ci,cout);
    11. input [3:0] a;
    12. input [3:0] b;
    13. input ci;
    14. output [3:0] s;
    15. output cout;
    16. wire c1,c2,c3;
    17. add_initial u0(.a(a[0]),.b(b[0]),.ci_1(ci),.si(s[0]),.ci(c1));
    18. add_initial u1(.a(a[1]),.b(b[1]),.ci_1(c1),.si(s[1]),.ci(c2));
    19. add_initial u2(.a(a[2]),.b(b[2]),.ci_1(c2),.si(s[2]),.ci(c3));
    20. add_initial u3(.a(a[3]),.b(b[3]),.ci_1(c3),.si(s[3]),.ci(cout));
    21. endmodule
    22. module add(sw,cal,key_confire_2,key_confire_3,
    23. seg_led_1,seg_led_2,clk,rst_n);
    24. input clk;
    25. input rst_n;
    26. input [3:0] sw;
    27. input cal;
    28. input key_confire_2;
    29. input key_confire_3;
    30. output reg [8:0] seg_led_1;
    31. output reg [8:0] seg_led_2;
    32. reg [8:0] seg [15:0];
    33. initial
    34. begin
    35. seg[0]=9'h3f;
    36. seg[1]=9'h06;
    37. seg[2]=9'h5b;
    38. seg[3]=9'h4f;
    39. seg[4]=9'h66;
    40. seg[5]=9'h6d;
    41. seg[6]=9'h7d;
    42. seg[7]=9'h07;
    43. seg[8]=9'h7f;
    44. seg[9]=9'h6f;
    45. seg[10]=9'h77;
    46. seg[11]=9'h7c;
    47. seg[12]=9'h39;
    48. seg[13]=9'h5e;
    49. seg[14]=9'h79;
    50. seg[15]=9'h71;
    51. end
    52. reg [3:0] a;
    53. reg [3:0] b;
    54. reg iscal;
    55. wire [3:0]ans;
    56. wire cout;
    57. wire ci;
    58. always@(*)begin
    59. if(rst_n==0)
    60. begin
    61. a=4'b0000;
    62. b=4'b0000;
    63. iscal=0;
    64. end
    65. if(key_confire_2==0)
    66. begin
    67. a=sw;
    68. end
    69. if(key_confire_3==0)
    70. begin
    71. b=sw;
    72. end
    73. if(cal==0)
    74. begin
    75. iscal=1;
    76. end
    77. end
    78. my_add u(.a(a),.b(b),.s(ans),.ci(ci),.cout(cout));
    79. always@(posedge clk)
    80. begin
    81. if(iscal)
    82. begin
    83. seg_led_1<=seg[ans];
    84. seg_led_2<=seg[cout];
    85. end
    86. else
    87. begin
    88. seg_led_1<=seg[a];
    89. seg_led_2<=seg[b];
    90. end
    91. end
    92. endmodule

    二.管脚分配

    三.实验效果

    3.1说明

     3.2实验操作流程

    1.按下复位键,两个数码管同时显示数字0;

    2.第一次拨动四位二进制拨码开关,输入第一个加数;

    3.按下“第一个数码管的输入确认键”,第一个数码管由原先的数字“0”变为你输入的第一个加数(H);

    4.第二次拨动四位二进制拨码开关,输入第二个加数;

    5.按下“第二个数码管的输入确认键”,第二个数码管由原先的数字“0”变为你输入的第二个加数(H);

    6.按下calculation计算结果键,两位数码管输出最终结果(H)。

    3.3动画效果

    动画效果参考视频链接:

    数电第六周实验全加器_哔哩哔哩_bilibili

  • 相关阅读:
    中国计算机学会推荐国际学术会议和期刊目录
    图文看懂JavaScritpt引擎V8与JS执行过程
    review 11
    49数码论坛系统设计与实现
    模糊PID之matlab模糊控制器配置
    Ranorex Studio 10.x Crack
    【大话设计模式】策略模式
    AJAX、Axios、JSON快速学习笔记(建议收藏)
    JAVA-编程基础-11-04-java IO 字符流
    学生党和SLAMer都可用的工具网站推荐
  • 原文地址:https://blog.csdn.net/bc202205/article/details/133987667