HDLBits刷题合集—9 Arithmetic Circuits

HDLBits-66 Hadd

Problem Statement
创建一个半加器。半加器将两个输入(不带低位的进位)相加产生和和向高位的进位。

代码如下:

module top_module( input a, b,output cout, sum );//assign sum  = a + b;//assign cout = a & b;assign {cout,sum} = a + b;endmodule

HDLBits-67 Fadd

Problem Statement
创建一个全加器。一个全加器加有3个输入(包括低位的进位)并产生一个和和向高位的进位。

代码如下:

module top_module( input a, b, cin,output cout, sum );//assign sum  = a ^ b ^ cin;//assign cout = a & b | a & cin | b & cin;assign {cout,sum} = a + b + cin;endmodule

HDLBits-68 Adder3

Problem Statement
现在你已经知道如何建立一个一位全加器,实例化3次一位全加器来创建一个3位二进制行波进位加法器。该加法器有两个3位输入和一个低位的进位,产生一个3位的和和一个输出。为了鼓励你确实实例化了全加器,行波进位加法器也输出每个一位全加器进位的输出。cout[2]是最后一个一位全加器的进位输出,也是你通常看到的进位输出。

代码如下:

module top_module( input [2:0] a, b,input cin,output [2:0] cout,output [2:0] sum );adder u0 (.a(a[0]), .b(b[0]), .cin(cin), .cout(cout[0]), .sum(sum[0]));adder u1 (.a(a[1]), .b(b[1]), .cin(cout[0]), .cout(cout[1]), .sum(sum[1]));adder u2 (.a(a[2]), .b(b[2]), .cin(cout[1]), .cout(cout[2]), .sum(sum[2]));endmodulemodule adder(input a, b, cin,output cout, sum);assign {cout,sum} = a + b + cin;endmodule

HDLBits-69 Exams/m2014 q4j

Problem Statement
实现下面的电路:


代码如下:

module top_module (input [3:0] x,input [3:0] y, output [4:0] sum);assign sum = x + y;endmodule

HDLBits-70 Exams/ece241 2014 q1c

Problem Statement
假设有2个8位二进制数a[7:0]和b[7:0]。他们相加得到s[7:0]。判断是否发生了(有符号的)溢出。

这里参考格林课堂
有符号数溢出有两种情况:一是正正相加,产生正溢出;另一种情况是负负相减,产生负溢出。所以就分别考虑了这两种情况,将这两种情况取或判断溢出。

a[7] && b[7] && ~s[7]:
正数相加产生一个负数,判断溢出。
~a[7] && ~b[7] && s[7]:
负数相减(补码相加)产生正数,判断溢出。

代码如下:

module top_module (input [7:0] a,input [7:0] b,output [7:0] s,output overflow
); //assign s = a + b;assign overflow = ( a[7] & b[7] & ~s[7] ) | (~a[7] & ~b[7] & s[7]);endmodule

HDLBits-71 Adder100

Problem Statement
创建一个100位二进制加法器。两个100位的数和一个低位的进位相加,产生一个100位的和和一个向高位的进位。

代码如下:

module top_module( input [99:0] a, b,input cin,output cout,output [99:0] sum );assign {cout,sum} = a + b + cin;endmodule

HDLBits-72 Bcdadd4

Problem Statement
给定一个名为bcd_fadd的BCD码加法器,它可以实现两个BCD码和一个低位的进位相加,产生一个和和一个向高位的进位。

实例化4个bcd_fadd,用来创建一个4位BCD码行波进位加法器。该加法器可以实现两个4位的BCD码(打包成16位的向量)和一个进位相加,产生一个4位的和和一个进位。

代码如下:

module top_module( input [15:0] a, b,input cin,output  cout,output [15:0] sum );wire [3:0] cout_temp;bcd_fadd ins0 (.a(a[3:0]), .b(b[3:0]), .cin(cin), .cout(cout_temp[0]), .sum(sum[3:0]));bcd_fadd ins1 (.a(a[7:4]), .b(b[7:4]), .cin(cout_temp[0]), .cout(cout_temp[1]), .sum(sum[7:4]));bcd_fadd ins2 (.a(a[11:8]), .b(b[11:8]), .cin(cout_temp[1]), .cout(cout_temp[2]), .sum(sum[11:8]));bcd_fadd ins3 (.a(a[15:12]), .b(b[15:12]), .cin(cout_temp[2]), .cout(cout_temp[3]), .sum(sum[15:12]));assign cout = cout_temp[3];endmodule

Note
新手一枚,主要分享博客,记录学习过程,后期参考大佬代码或思想会一一列出。欢迎大家批评指正!

HDLBits刷题合集—9 Arithmetic Circuits相关推荐

  1. CCF刷题合集(部分题解)

    CCF 刷题满分代码 注意第一题的话如果比较简单有的我可能没写,有链接的可能写了也只有代码. 202012 202012-1 期末预测之安全指数 CCF 202012-1 期末预测之安全指数 2020 ...

  2. DFS基础-----刷题合集--1(全排列,八皇后,迷宫),让你明白DFS的基础用法

    二刷dfs相关题目 洛谷P1706            全排列 https://www.luogu.com.cn/problem/P1706                              ...

  3. 2022.7.26刷题合集

    目录 1.矩阵快速幂 2.KMP字符串匹配 3.口袋的天空 4.Barn Echoes G 5.租用游艇 6.shortest path of the king 1.矩阵快速幂 #include< ...

  4. 【HDLBits 刷题 13】Buliding Larger Circuits

    目录 写在前面 Buliding Larger Circuits count1k shiftcount fsm seq fsmshift fsm fancytimer fsm onehot 写在前面 ...

  5. 【HDLBits 刷题】所有答案直达链接汇总

    写在前面 以下为HDLBits全部答案,有些题的解法不唯一,我的也许不是最优解,欢迎提出更好的想法,HDLBits总的来说比较适合初学者. HDLBits 答案汇总 Language [HDLBits ...

  6. 【HDLBits 刷题 9】Circuits(5)Finite State Manchines 1-9

    目录 写在前面 Finite State Manchines Fsm1 Fsm1s Fsm2 Fsm2s Fsm3comb Fsm3onehot Fsm3 Fsm3s Design a Moore F ...

  7. 【HDLBits 刷题 10】Circuits(6)Finite State Manchines 10-17

    目录 写在前面 Finite State Manchines Lemmings1 Lemmings2 Lemmings3 Lemmings4 Fsm onehot Fsm ps2 Fsm ps2dat ...

  8. 【HDLBits 刷题 11】Circuits(7)Finite State Manchines 18-26

    目录 写在前面 Finite State Manchines Fsm serialdata Fsm serialdp Fsm hdlc Design a Mealy FSM ece241 2014 q ...

  9. 【HDLBits 刷题 12】Circuits(8)Finite State Manchines 27-34

    目录 写在前面 Finite State Manchines 2014 q3c m2014 q6b m2014 q6c m2014 q6 2012 q2fsm 2012 q2b 2013 q2afsm ...

最新文章

  1. ZXing.Net.Mobile无法识别较大的条码
  2. Java 调用http接口(基于OkHttp的Http工具类方法示例)
  3. Ubuntu 循环显示登录界面
  4. FPGA学习之路—接口(1)—URAT Verilog程序设计
  5. Java Web:session
  6. 苹果要悄悄对这个产品动手了?你们最期盼的NFC功能也要来?
  7. python源码中的学习笔记_第10章_面向对象的特征、特殊方法与属性、以及深浅拷贝
  8. K-Means优缺点
  9. Android聊天软件的开发
  10. 正态分布是离散分布还是连续分布_简单统计学|正态分布之连续数据的概率分布...
  11. 2010年10月14日糗事TOP10
  12. Duplicate entry ‘‘ for key ‘Primary‘
  13. linux sql server 迁移,SQL Server2008 实例数据迁移步骤
  14. 提示计算机中丢失 opencv_world300d.dll
  15. 创新思维与方法期末考试答案
  16. <read papers>学术论文的基金项目和研究成果格式怎么标注?
  17. Multipathd Daemon was Unable to Set Options fast_io_fail_tmo or dev_loss_tmo Under UEK1 or RHCK
  18. 分享!史上最全的STM32库....
  19. Selenium中级 | 在Selenium中模拟键盘操作
  20. Centos系统一张网卡绑定两个IP地址,并且IP地址网段不同。

热门文章

  1. HMI-26-【HUD】HUD重新编写
  2. PS试用期到期后怎么办
  3. 双指缩放canvas图片_移动端 图片手势控制 双指缩放 单指移动
  4. mashang马尚的空间(百度空间)
  5. 十、uni-app小程序时间戳
  6. bugku 听首音乐
  7. 如何通过App进行创业?
  8. 20212126张楷勤#Python技能树测评和CSDN Markdown编译器测评
  9. java sream 对Map分组排序
  10. “couldn‘t connect to trainer on port 5004 using api version 1.4.0. will perform inference instead.”