HDLBits刷题合集—9 Arithmetic Circuits
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相关推荐
- CCF刷题合集(部分题解)
CCF 刷题满分代码 注意第一题的话如果比较简单有的我可能没写,有链接的可能写了也只有代码. 202012 202012-1 期末预测之安全指数 CCF 202012-1 期末预测之安全指数 2020 ...
- DFS基础-----刷题合集--1(全排列,八皇后,迷宫),让你明白DFS的基础用法
二刷dfs相关题目 洛谷P1706 全排列 https://www.luogu.com.cn/problem/P1706 ...
- 2022.7.26刷题合集
目录 1.矩阵快速幂 2.KMP字符串匹配 3.口袋的天空 4.Barn Echoes G 5.租用游艇 6.shortest path of the king 1.矩阵快速幂 #include< ...
- 【HDLBits 刷题 13】Buliding Larger Circuits
目录 写在前面 Buliding Larger Circuits count1k shiftcount fsm seq fsmshift fsm fancytimer fsm onehot 写在前面 ...
- 【HDLBits 刷题】所有答案直达链接汇总
写在前面 以下为HDLBits全部答案,有些题的解法不唯一,我的也许不是最优解,欢迎提出更好的想法,HDLBits总的来说比较适合初学者. HDLBits 答案汇总 Language [HDLBits ...
- 【HDLBits 刷题 9】Circuits(5)Finite State Manchines 1-9
目录 写在前面 Finite State Manchines Fsm1 Fsm1s Fsm2 Fsm2s Fsm3comb Fsm3onehot Fsm3 Fsm3s Design a Moore F ...
- 【HDLBits 刷题 10】Circuits(6)Finite State Manchines 10-17
目录 写在前面 Finite State Manchines Lemmings1 Lemmings2 Lemmings3 Lemmings4 Fsm onehot Fsm ps2 Fsm ps2dat ...
- 【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 ...
- 【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 ...
最新文章
- ZXing.Net.Mobile无法识别较大的条码
- Java 调用http接口(基于OkHttp的Http工具类方法示例)
- Ubuntu 循环显示登录界面
- FPGA学习之路—接口(1)—URAT Verilog程序设计
- Java Web:session
- 苹果要悄悄对这个产品动手了?你们最期盼的NFC功能也要来?
- python源码中的学习笔记_第10章_面向对象的特征、特殊方法与属性、以及深浅拷贝
- K-Means优缺点
- Android聊天软件的开发
- 正态分布是离散分布还是连续分布_简单统计学|正态分布之连续数据的概率分布...
- 2010年10月14日糗事TOP10
- Duplicate entry ‘‘ for key ‘Primary‘
- linux sql server 迁移,SQL Server2008 实例数据迁移步骤
- 提示计算机中丢失 opencv_world300d.dll
- 创新思维与方法期末考试答案
- <read papers>学术论文的基金项目和研究成果格式怎么标注?
- Multipathd Daemon was Unable to Set Options fast_io_fail_tmo or dev_loss_tmo Under UEK1 or RHCK
- 分享!史上最全的STM32库....
- Selenium中级 | 在Selenium中模拟键盘操作
- Centos系统一张网卡绑定两个IP地址,并且IP地址网段不同。
热门文章
- HMI-26-【HUD】HUD重新编写
- PS试用期到期后怎么办
- 双指缩放canvas图片_移动端 图片手势控制 双指缩放 单指移动
- mashang马尚的空间(百度空间)
- 十、uni-app小程序时间戳
- bugku 听首音乐
- 如何通过App进行创业?
- 20212126张楷勤#Python技能树测评和CSDN Markdown编译器测评
- java sream 对Map分组排序
- “couldn‘t connect to trainer on port 5004 using api version 1.4.0. will perform inference instead.”