前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >笔试 | 1bit的半加器、全加器实现

笔试 | 1bit的半加器、全加器实现

作者头像
FPGA探索者
发布于 2022-04-04 05:11:42
发布于 2022-04-04 05:11:42
2.1K00
代码可运行
举报
文章被收录于专栏:FPGA探索者FPGA探索者
运行总次数:0
代码可运行

什么是半加器,什么是全加器,请用Verilog分别实现1位半加器和1位全加器,并写TestBench仿真文件,给出WORD或PDF版本的报告,包括但不限于文字说明、代码、仿真测试图等。

【解答】

1.原理

半加器

全加器

当多位数相加时,半加器可用于最低位求和,并给出进位数。第二位的相加有两个待加数和,还有一个来自前面低位送来的进位数。这三个数相加,得出本位和数(全加和数)和进位数。这种就是“全加"真值表:

2.编程思路

(1)根据真值表编写

按照半加器和全加器的真值表写出输出端的逻辑表达式,对半加器,输出的进位端是量输入的“与”,输出的计算结果是量输入的异或;对全加器,也按照逻辑表达式做。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//半加器模块
module adder_half(  
inputa,
inputb,
output regsum,
output regcout
);
 
//这里的always @(*)搭配里面的“=”阻塞赋值符号
//实现的效果和 assign sum = a ^ b; assign cout = a & b;是一样的
always @(*)
begin
sum = a ^ b;
cout = a & b;
end
endmodule

全加器:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
module all_adder(cout,sum,a,b,cin);
 
input a,b,cin;
output sum,cout;
 
wire sum,cout;
 
assign sum=a^b^cin;
assign cout=(a&b)|(a&cin)|(b&cin);
endmodule

3.问题汇总

(1)`timescale 1 ns/1 ps

timescale是verilog中的一种时间尺度预编译指令,用来定义仿真时的时间单位和时间精度,左边是时间单位,右边是时间精度,时间单位是用于编写激励文件,时间精度是显示时的刻度,比如#100也就是100ns。时间精度不能大于时间单位,比如`timescale 1 ns/1 ps是正确的,而`timescale 1 ps/1 ns是错误的。

(2)#({$random}%100)

首先,#代表延时,这个语句表示延时随机的一个时间,结合`timescale 1 ns/1 ns是延时随机的ns。

$random 是 verilog 中产生随机数的系统函数,在调用时返回一个 32 位的随机数,是带符号的整形数。有几种用法:

random 和random()意义一样,都是产生随机数;

$random%100 在-99 到 99 之间产生随机数;

{$random}%100 采用位拼接符,在 0 到 100 之间产生随机数;

如 seed =10, $random(seed) 根据 seed 值产生随机数,而后 seed 值也会更新。

(3)add t0(.cin(cin), .a(a), .b(b), .sum(sum), .count(count));

例化的格式,先建立一个叫add的模块(module),有5个引脚,分别是cin/a/b/sum/count,例化的模块叫做t0,比较简单的例化方式就是如上所示的,括号外的引脚与括号内的引脚名称完全一致,无需区分。

实际上,括号外的引脚名称代表的是模块定义时的引脚,括号内的引脚是目前实际使用的引脚名称,如可以将@大神袁的测试文件改为:

`timescale 1 ns/1 ns

module top_tb();

reg a1;

reg b1;

wire sum1;

wire count1;

initial

begin

a1 = 0;

b1 = 0;

forever

begin

#({$random}%100)

a1 = ~a1;

#({$random}%100)

b1 = ~b1;

end

end

top t0(.a(a1), .b(b1), .sum(sum1), .count(count1));

endmodule

(4)对于延时,可以采用直接赋值的延时,如#5,使用随机延时目前暂时不常用。

当仿真到想结束时,可以在initial块的最后加$finish(此处可参考@大神李),即调用系统函数结束仿真,否则,仿真在ModelSim中会一直进行下去,不方便观察(在Vivado中设置的第一次仿真结束时间停止,默认1ns)。

此外,这里建议使用$stop来代替$finish,即停止仿真,在ModelSim中是暂停了仿真,而$finishi则可能会退出,看不到仿真波形。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-03-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 FPGA探索者 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
SpringMVC系列知识:(六)乱码的问题
我们前段传到后端的是中文,前段也是utf-8。但是在后端接收到的就是乱码。这个不是前段的问题,是后端的java代码出现了问题。我们可以在controller层输出一下接收到的前段数据,就可以看到输出的是乱码。所以,我们解决的时候就是在controller层解决乱码的问题。
一写代码就开心
2020/11/19
4040
SpringMVC-解决POST请求中文参数乱码
程序员NEO
2023/10/01
3350
SpringMVC-解决POST请求中文参数乱码
《SpringMVC从入门到放肆》九、SpringMVC注解式开发(简单参数接收)
上一篇我们学习了注解式开发的配置方式并写了一个小Demo跑起来。今天我们来学习注解开发的参数接收。处理器方法中的常用参数有五类,这些参数会在系统调用时由系统自动赋值,即程序员可以在方法中直接使用。具体如下:
I Teach You 我教你
2019/05/25
4120
4. SpringMVC获取请求参数
将 HttpServletRequest 作为控制器方法的形参 , 此时 HttpServletRequest 类型的参数表示封装了当前请求的请求报文的对象
捞月亮的小北
2023/12/01
1990
4. SpringMVC获取请求参数
SpringMVC配置字符过滤器的两种方式
一、在web.xml中配置 <filter> <filter-name>characterEncodingFilter</filter-name> <filter-class>orgspringframeworkwebfilterCharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </in
凡人飞
2020/09/20
1.3K0
深度学习springMVC(三)SpringMVC的编码过滤器配置, SpringMVC的静态资源放行(看不懂你打我)
目录 SpringMVC的编码过滤器配置 浏览器服务器交互的编码格式介绍 问题: 解决 SpringMVC的编码过滤器配置 SpringMVC的静态资源放行 SpringMVC的Dispatcher的拦截范围问题 问题: 解决: SpringMVC的静态资源放行配置 SpringMVC的编码过滤器配置 浏览器服务器交互的编码格式介绍 问题: 在浏览器和服务器的数据交互流程中,处理英文数据以外还有中文数据。 浏览器发起的请求数据中包含中文,服务器响应的数据包含中文。而浏览器 默认的编码格式为iso
一写代码就开心
2021/07/08
1.2K0
springmvc框架开发中解决产生的乱码情况
一:解决post请求方式产生的乱码情况 示例代码如下: 1   <!-- 解决post乱码 --> 2 <filter> 3 <filter-name>CharacterEncodingFilter</filter-name> 4 <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> 5 <init-param> 6
赵小忠
2018/01/24
6850
spring开发中applicationContext.xml和web.xml解决中文乱码问题
web.xml <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
Tom2Code
2022/04/15
7850
Springmvc解决中文乱码问题
Springmvc解决中文乱码问题 本人独立博客https://chenjiabing666.github.io POST 在表单提交的时候,如果遇到中文乱码的情况,springmvc提供了一个CharacterEncodingFilter过滤器,我们只需要在web.xml文件中配置即可 注意 表单的提交方式必须是post 在web.xml中配置CharacterEncodingFilter编码格式要和JSP页面的编码格式一致 解决中文乱码必须使用过滤器(在DispatcherServlet之前执行),而不
爱撒谎的男孩
2018/05/10
2.4K3
Springmvc解决中文乱码问题
IDEA中SpringMVC配置文件详解
在web.xml中,SpringDispatcherServlet(核心控制器)的配置文件可以有两种方式:
Charles-LZ
2021/01/18
6100
基于SpringMVC注解的学生信息批量修改
4. 创建com.itheima.po.Student.java。包含属性id,stname,score
天道Vax的时间宝藏
2021/08/11
4530
SpringMVC开发 知识点速查
SpringMVC入门 什么是SpringMVC 实现MVC设计模式的框架 SpringMVC核心组件 DispatcherServlet 前置控制器,调度 Handler 处理器,完成具体业务逻辑 HandlerMapping 将请求映射到Handler,映射 HandlerInterceptor 处理器拦截器 HandlerExcutionChain 处理器执行链,拦截器 HandlerAdapter 处理器适配器,转换 ModelAndView 装载模型数据和视图信息 ViewResolver 视图解
linxinzhe
2018/07/25
4360
SpringMVC开发 知识点速查
解决前端到后台Controller的get/post乱码问题
在tomcat服务器的service.xml Connector里加 URIEncoding="utf-8"
名字是乱打的
2022/05/13
5070
解决前端到后台Controller的get/post乱码问题
web项目显示乱码解决方案整理
在做web项目的时候,经常会遇到中文显示乱码 和 中文传参乱码的问题,在这里整理一份解决方案
执笔记忆的空白
2020/12/25
2.6K0
SpringMVC入门(一)
1. 工作流程 用户请求服务器,然后核心控制器捕获请求 核心控制器交由映射器把请求url和控制器进行映射 核心控制器交由适配器调用映射的控制器,中间还进行数据转换 对应的控制器的逻辑操作完成后返回Mo
晚上没宵夜
2020/03/11
4760
SpringMVC传递参数乱码解决,web.xml中配置编码过滤器
web.xml中配置编码过滤器 编码过滤器 <!-- 编码过滤--> <filter> <filter-name>CharacterEncodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>encoding<
2020/10/23
7090
Servlet-过滤器入门
Servlet 过滤器是可用于 Servlet 编程的 Java 类,可以实现以下目的: 1. 在客户端的请求访问后端资源之前,拦截这些请求。 2. 在服务器的响应发送回客户端之前,处理这些响应。
用户2146693
2019/08/08
3780
Servlet-过滤器入门
Springmvc解决中文乱码问题
文章目录 1. Springmvc解决中文乱码问题 1.1. POST 1.1.1. 注意 1.1.2. 在web.xml配置 1.2. GET 1.3. 总结 Springmvc解决中文乱码问题 POST 在表单提交的时候,如果遇到中文乱码的情况,springmvc提供了一个CharacterEncodingFilter过滤器,我们只需要在web.xml文件中配置即可 注意 表单的提交方式必须是post 在web.xml中配置CharacterEncodingFilter编码格式要和JSP页面的编码格
爱撒谎的男孩
2019/12/31
1.4K0
SpringMVC乱码或前台乱码解决办法
以及 form表单提交方式为必须为post 修改web.xml,增加编码过滤器,如下(注意,需要设置forceEncoding参数值为true)
試毅-思伟
2018/09/06
1.7K0
GET、POST编码问题
GET请求、POST经常会出现中文乱码的问题,最好约定前后端的编码,一般为UTF-8。但是这里面也是有坑的。 后端设置编码为UTF-8的推荐方式: SpringMVC配置过滤器: <filter> <filter-name>characterEncodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <ini
欠扁的小篮子
2018/07/04
7250
相关推荐
SpringMVC系列知识:(六)乱码的问题
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档