当前位置: 首页 > news >正文

HDLBits中文版,标准参考答案 | 3.1.3 Arithmetic Circuits | 算术电路

关注 望森FPGA  查看更多FPGA资讯

这是望森的第 10 期分享

作者 | 望森
来源 | 望森FPGA

目录

1 Half adder | 半加器

2 Full adder | 全加器

3 3-bit binary adder | 3位二进制加法器

4 Adder | 加法器

5 Signed addition overflow | 有符号数的加法溢出

6 100-bit binary adder | 100位二进制加法器

7 4-digit BCD adder | 4位BCD加法器


本文中的代码都能够正常运行,请放心食用😋~

练习的官方网站是:https://hdlbits.01xz.net/

注:作者将每个练习的知识点都放在了题目和答案之后


1 Half adder | 半加器

题目:

创建一个半加器。半加器将两位相加(无进位),然后得出和与进位。

答案:

module top_module( input a, b,output cout, sum );always@(*) beginsum = a ^ b;cout = a & b;endendmodule

2 Full adder | 全加器

题目:

创建一个全加器。全加器将三位(包括进位)相加,并得出和与进位。

答案:

module top_module( input a, b, cin,output cout, sum );always@(*) beginsum = a ^ b ^ cin;cout = a & b | a & cin | b & cin;endendmodule

3 3-bit binary adder | 3位二进制加法器

题目:

现在您已经知道如何构建全加器,请创建 3 个实例以创建 3 位二进制行波进位加法器。该加法器将两个 3 位数和一个进位相加,以产生 3 位和并输出进位。为了鼓励您实际实例化全加器,还要在行波进位加法器中输出每个全加器的进位。cout[2] 是最后一个全加器的最终进位,也是您通常看到的进位。

答案:

module top_module( input [2:0] a, b,input cin,output [2:0] cout,output [2:0] sum );full_adder adder0(.a(a[0]),.b(b[0]),.cin(cin),.cout(cout[0]),.sum(sum[0]));full_adder adder1(.a(a[1]),.b(b[1]),.cin(cout[0]),.cout(cout[1]),.sum(sum[1]));full_adder adder2(.a(a[2]),.b(b[2]),.cin(cout[1]),.cout(cout[2]),.sum(sum[2]));endmodulemodule full_adder( input a, b, cin,output cout, sum );always@(*) beginsum = a ^ b ^ cin;cout = a & b | a & cin | b & cin;endendmodule

4 Adder | 加法器

题目:

实现以下电路:

("FA" is a full adder)

答案:

module top_module (input [3:0] x,input [3:0] y, output [4:0] sum);wire [2:0] cout;full_adder adder0(.a(x[0]),.b(y[0]),.cin(1'b0),.cout(cout[0]),.sum(sum[0]));full_adder adder1(.a(x[1]),.b(y[1]),.cin(cout[0]),.cout(cout[1]),.sum(sum[1]));full_adder adder2(.a(x[2]),.b(y[2]),.cin(cout[1]),.cout(cout[2]),.sum(sum[2]));full_adder adder3(.a(x[3]),.b(y[3]),.cin(cout[2]),.cout(sum[4]),.sum(sum[3]));endmodulemodule full_adder( input a, b, cin,output cout, sum );always@(*) beginsum = a ^ b ^ cin;cout = a & b | a & cin | b & cin;endendmodule
参考答案:
module top_module (input [3:0] x,input [3:0] y,output [4:0] sum
);// This circuit is a 4-bit ripple-carry adder with carry-out.assign sum = x+y;        // Verilog addition automatically produces the carry-out bit.// Verilog quirk: Even though the value of (x+y) includes the carry-out, (x+y) is still considered to be a 4-bit number (The max width of the two operands).// This is correct:// assign sum = (x+y);// But this is incorrect:// assign sum = {x+y};        // Concatenation operator: This discards the carry-out
endmodule

5 Signed addition overflow | 有符号数的加法溢出

题目:

假设有两个 8 位 2 的补码数,a[7:0] 和 b[7:0]。这两个数相加得到 s[7:0]。还要计算是否发生了(有符号)溢出。

答案:

module top_module (input [7:0] a,input [7:0] b,output [7:0] s,output overflow
); //wire [8:0] sum;assign sum = {a[7],a} + {b[7],b};assign s = sum[7:0];assign overflow = sum[8] ^ sum[7];endmodule

知识点:

提示:当两个正数相加产生负数,或者两个负数相加产生正数时,就会发生带符号溢出。有几种检测溢出的方法:可以通过比较输入和输出数字的符号来计算溢出,也可以从位n和n-1的进位导出溢出。


6 100-bit binary adder | 100位二进制加法器

题目:

创建一个 100 位二进制加法器。该加法器将两个 100 位数字和一个进位相加,得到一个 100 位和及进位输出。

答案:

module top_module( input [99:0] a, b,input cin,output cout,output [99:0] sum );wire [100:0] a_t,b_t;assign a_t = {1'b0,a};assign b_t = {1'b0,b};assign {cout,sum} = a_t + b_t + cin;endmodule
参考答案:
module top_module (input [99:0] a,input [99:0] b,input cin,output cout,output [99:0] sum
);// The concatenation {cout, sum} is a 101-bit vector.assign {cout, sum} = a+b+cin;endmodule

7 4-digit BCD adder | 4位BCD加法器

题目:

为您提供了一个名为 bcd_fadd 的 BCD(二进制编码的十进制)一位数加法器,它将两个 BCD 数字和进位相加,并产生一个和及进位输出。

module bcd_fadd (
input [3:0] a,
input [3:0] b,
input cin,
output cout,
output [3:0] sum );

实例化 bcd_fadd 的 4 个副本以创建一个 4 位 BCD 行波进位加法器。您的加法器应将两个 4 位 BCD 数字(打包成 16 位向量)和一个进位相加,以产生一个 4 位和及进位输出。

答案:

module top_module ( input [15:0] a, b,input cin,output cout,output [15:0] sum );wire [2:0] cout_t;bcd_fadd addr0(.a(a[3:0]),.b(b[3:0]),.cin(cin),.cout(cout_t[0]),.sum(sum[3:0]));bcd_fadd addr1(.a(a[7:4]),.b(b[7:4]),.cin(cout_t[0]),.cout(cout_t[1]),.sum(sum[7:4]));bcd_fadd addr2(.a(a[11:8]),.b(b[11:8]),.cin(cout_t[1]),.cout(cout_t[2]),.sum(sum[11:8]));bcd_fadd addr3(.a(a[15:12]),.b(b[15:12]),.cin(cout_t[2]),.cout(cout),.sum(sum[15:12]));endmodule

- END -

公z号/CSDN搜索【望森FPGA】,查看更多FPGA资讯~

相关文章请到我的主页查看

相关文章:

HDLBits中文版,标准参考答案 | 3.1.3 Arithmetic Circuits | 算术电路

关注 望森FPGA 查看更多FPGA资讯 这是望森的第 10 期分享 作者 | 望森 来源 | 望森FPGA 目录 1 Half adder | 半加器 2 Full adder | 全加器 3 3-bit binary adder | 3位二进制加法器 4 Adder | 加法器 5 Signed addition overflow | 有符号数的加法溢出 6 100-bit bi…...

网络编程 websocket

1. HTTP 截至 2024 年,HTTP(HyperText Transfer Protocol)已经发展到 HTTP/3 版本。 各个版本的简介: HTTP/0.9(1991年): 最初的 HTTP 版本,非常简单,仅支持 GET 方法…...

【JDK17 | 5】Java 17 深入剖析:新的随机数生成器 API

引言 在 Java 17 中,新的随机数生成器 API 作为一个重要特性被引入,旨在提供更灵活和高效的随机数生成方案。新的 API 不仅支持多种生成算法,还改善了随机数生成的性能,适应了现代开发的需求。在本篇文章中,我们将深入…...

剪切走的照片:高效恢复与预防策略

一、剪切走的照片现象描述 在日常的数字生活中,照片作为记录生活点滴、工作成果的重要载体,其重要性不言而喻。然而,有时我们可能会遇到一种令人头疼的情况:原本打算通过剪切操作将照片移动到另一个位置,却意外地发现…...

基于XGBoost的结核分枝杆菌的耐药性预测研究【多种机器学习】

1. 绪论 目录 1. 绪论 1.1研究背景及意义 1.2国内外研究现状 1.2.1国内研究现状 1.2.2国外研究现状 1.3研究目的 2. 相关技术概念 2.1结核分枝杆菌的耐药性机制 2.2机器学习与系统发育法相结合 2.3XGBoost和随机森林算法的优势和应用 3. 模型设计 3.1数据准备与预…...

【C++差分数组】3229. 使数组等于目标数组所需的最少操作次数|2066

本文涉及知识点 C差分数组 LeetCode3229. 使数组等于目标数组所需的最少操作次数 给你两个长度相同的正整数数组 nums 和 target。 在一次操作中,你可以选择 nums 的任何子数组,并将该子数组内的每个元素的值增加或减少 1。 返回使 nums 数组变为 tar…...

浅谈PyTorch中的DP和DDP

目录 1. 引言2. PyTorch 数据并行(Data Parallel, DP)2.1 DP 的优缺点2.2 DP 实现代码示例 3. PyTorch 分布式数据并行(Distributed Data Parallel, DDP)3.1 DDP 的优缺点3.2 分布式基本概念3.3 DDP 的应用流程3.5 DDP 实现代码示…...

在Windows上利用谷歌浏览器进行视频会议和协作

随着远程工作和在线教育的普及,使用谷歌浏览器在Windows上进行视频会议和协作变得越来越常见。本文将为您提供一个详细的教程,教您如何在Windows上利用谷歌浏览器进行视频会议和协作,同时解决一些常见的问题。(本文由https://goog…...

VMware Fusion 13.6.1 发布下载,修复 4 个已知问题

VMware Fusion 13.6.1 发布下载,修复 4 个已知问题 VMware Fusion 13.6.1 for Mac - 领先的免费桌面虚拟化软件 适用于基于 Intel 处理器和搭载 Apple 芯片的 Mac 的桌面虚拟化软件 请访问原文链接:https://sysin.org/blog/vmware-fusion-13/ 查看最新…...

P9751 [CSP-J 2023] 旅游巴士

P 9751 P9751 P9751 部分分思路 题目要求时间必须是 k k k 的非负整数倍,所以想到了升维。这样就变成了一道分层图最短路的题目。用 BFS 算法可以拿到 A i 0 A_i0 Ai​0 的 35 35 35 分。 满分思路 其实部分分的思路已经很接近正解了,想要拿到满…...

【Linux】man手册安装使用

目录 man(manual,手册) 手册安装: 章节区分: 指令参数: 使用场景: 手册内容列表: 手册查看快捷键: 实例: 仍致谢:Linux常用命令大全(手册) – 真正好用的Linux命令在线查询网站 提供的命令查询 在开头先提醒一下:在 man 手册中退出的方法很简单…...

mysql学习教程,从入门到精通,SQL处理重复数据(39)

1、SQL处理重复数据 使用GROUP BY和HAVING子句删除重复数据(以SQL Server为例)”的背景和原理的详细解释: 1.1、背景 在数据库管理中,数据重复是一个常见的问题。重复数据可能由于多种原因产生,如数据录入错误、数据…...

mapbox解决wmts请求乱码问题

贴个群号 WebGIS学习交流群461555818,欢迎大家 事故现场 如图所示,wmts请求全是乱码,看起来像是将一个完整的请求拆成一个一个的字母了,而且控制台打印map.getStyle() 查看该source发现不出异常 解决办法 此类问题就是由于更…...

《C++职场中设计模式的学习与应用:开启高效编程之旅》

在 C职场中,设计模式是提升代码质量、增强程序可维护性和可扩展性的强大武器。掌握并正确应用设计模式,不仅能让你在工作中更加得心应手,还能为你的职业发展增添有力的砝码。那么,如何在 C职场中学习和应用设计模式呢?…...

Maya动画--基础约束

005-基础约束02_哔哩哔哩_bilibili 父子约束 移动圆环,球体会跟着移动,并回到初始的相对位置 不同物体间没有层级关系 明确子物体与父物体间的关系 衣服上的纽扣 法线约束 切线约束 碰到中心时会改变方向...

腾讯云License 相关

腾讯云视立方 License 是必须购买的吗? 若您下载的腾讯云视立方功能模块中,包含直播推流(主播开播和主播观众连麦/主播跨房 PK)、短视频(视频录制编辑/视频上传发布)、终端极速高清和腾讯特效功能模块&…...

开放式耳机什么品牌最好?十大超好用开放式耳机排名!

由于长时间使用传统入耳式耳机可能会对耳道健康带来潜在的负面影响,越来越多的用户倾向于选择开放式耳机,这种设计不侵入耳道。它有助于降低耳内湿度、减少细菌滋生,以及缓解耳道因封闭而过热的不适。但是大部分人还是不知道怎么选择开放式耳…...

基于Zynq SDIO WiFi移植二(支持2.4/5G)

1 SDIO设备识别 经过编译,将移植好的uboot、kernel、rootFS、ramdisk等烧录到Flash中,上电启动,在log中,可看到sdio设备 [ 1.747059] mmc1: queuing unknown CIS tuple 0x01 (3 bytes) [ 1.761842] mmc1: queuing unknown…...

Spring Boot敏感数据动态配置:深入实践与安全性提升

在构建Spring Boot应用的过程中,敏感数据的处理与保护是至关重要的。传统上,这些敏感数据(如数据库密码、API密钥、加密密钥等)可能被硬编码在配置文件中,这不仅增加了泄露的风险,也限制了配置的灵活性和可…...

软考数据库部分 ---- (概念数据库模型,三级模式,两级映像,事物管理)

文章目录 一、概念数据库模型二、结构数据库模型三、三级模式四、两级映像五、关系模式基本术语六、关系模式七、关系的数学定义八、数据定义语言九、SQL访问控制十、视图十一、索引十二、关系模式十三、范式十四、数据库设计十五、事物管理(ACID)十六、…...

Hyper-V DDA图形工具:告别PowerShell命令行的设备直通新时代

Hyper-V DDA图形工具:告别PowerShell命令行的设备直通新时代 【免费下载链接】DDA 实现Hyper-V离散设备分配功能的图形界面工具。A GUI Tool For Hyper-Vs Discrete Device Assignment(DDA). 项目地址: https://gitcode.com/gh_mirrors/dd/DDA 还在为Hyper-…...

3步搞定Linux启动盘:Deepin Boot Maker完全使用指南

3步搞定Linux启动盘:Deepin Boot Maker完全使用指南 【免费下载链接】deepin-boot-maker 项目地址: https://gitcode.com/gh_mirrors/de/deepin-boot-maker 在Linux系统安装和维护过程中,启动盘制作是一个看似简单却充满挑战的环节。传统命令行工…...

基于Circuit Playground Express与NeoPixel打造交互式太空头盔全流程指南

1. 项目概述:打造你的专属太空头盔如果你和我一样,是个对太空探索和创客DIY都充满热情的“技术宅”,那么把科幻电影里的装备搬到现实世界,绝对是一件让人肾上腺素飙升的事。今天要聊的,就是一个能让你过足“宇航员瘾”…...

信息学奥赛刷题技巧:用‘整型转布尔’这道题,教你举一反三理解数据类型隐式转换

从整型转布尔看C隐式类型转换的艺术 在信息学竞赛的刷题过程中,很多同学会止步于"这道题我做对了"的层面,却忽略了题目背后蕴含的语言特性宝藏。以OpenJudge 1.2.09这道经典的整型与布尔型转换题目为例,表面上看只是考察基本数据类…...

数据笔记:LargeST——如何构建与评估一个面向未来的大规模交通预测基准数据集

1. 为什么我们需要LargeST这样的交通预测基准数据集 交通预测是智慧城市建设的核心技术之一,但长期以来这个领域面临一个尴尬局面:算法模型越来越复杂,却缺乏足够规模和质量的数据来验证其真实效果。这就像给赛车手一辆玩具车来测试性能——模…...

STM32CubeMX外设配置实战——以F103C8T6的CAN与DMA为例

1. STM32CubeMX与F103C8T6开发基础 STM32CubeMX是ST官方推出的图形化配置工具,它能极大简化STM32系列MCU的外设初始化流程。对于刚接触STM32开发的工程师来说,这个工具就像"乐高积木说明书"——通过可视化操作就能完成80%的底层配置工作。我最…...

HS2-HF Patch:为《Honey Select 2》注入新生命的魔法补丁

HS2-HF Patch:为《Honey Select 2》注入新生命的魔法补丁 【免费下载链接】HS2-HF_Patch Automatically translate, uncensor and update HoneySelect2! 项目地址: https://gitcode.com/gh_mirrors/hs/HS2-HF_Patch 你是不是曾经打开《Honey Select 2》时&am…...

开源技能库构建指南:Git+Markdown+Docsify打造个人技术知识体系

1. 项目概述:一个开源技能库的诞生与价值在技术领域,尤其是软件开发、运维和数据分析等方向,我们每天都在与海量的工具、框架和命令打交道。时间一长,一个很现实的问题就摆在了面前:那些曾经花了好几个小时才调通的复杂…...

合宙Air153C看门狗芯片:嵌入式系统可靠性的硬件守护方案

1. 项目概述:一颗“小而美”的国产看门狗芯片最近在做一个低功耗的户外监测设备项目,主控用的就是合宙的Air系列MCU。在调试过程中,最让我头疼的就是系统偶尔的“死机”问题。设备部署在野外,不可能每次都跑过去手动重启。正当我琢…...

PowerInfer:基于热点神经元预测的LLM高性能推理引擎部署指南

1. 项目概述:当推理速度成为AI落地的瓶颈最近在折腾本地大模型推理的朋友,估计都绕不开一个核心痛点:速度。模型效果再好,生成一句话要等上十几秒,那种“卡顿感”足以劝退绝大多数想把它集成到实际应用里的开发者。我自…...