verilog代码转化电路图_门电路实现补码运算

verilog代码转化电路图_门电路实现补码运算comp_conv.v://2022-1-19verilog学习//补码转换逻辑`timescale1ns/10ps;modulecomp_conv( a, a_comp );input[7:0] a;output[7:0] a_comp;//中间变量wire[6:0] b;//负数按位取反的幅度位(1位符号位+7位幅度位)wire[7:0] y;//负数的补码assign ..

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

在这里插入图片描述


comp_conv.v:


// 2022-1-19 verilog学习
// 补码转换逻辑
`timescale 1ns/10ps;

module comp_conv(
								a,
								a_comp
								);

input[7:0]			a;
output[7:0]			a_comp;

// 中间变量
wire[6:0]				b;  // 负数按位取反的幅度位 (1位符号位+7位幅度位)
wire[7:0]				y;  // 负数的补码

assign					b = ~a[6:0];
assign					y[6:0] = b+1;  // 负数的补码=幅度位按位取反+1
assign					y[7] = a[7];   // 符号位不变

// 二选一
assign					a_comp = a[7]?y:a; //正数(符号位[7]是0)的补码是自己,负数的补码是y 

endmodule


// testbench 测试台
module comp_conv_tb;  
reg[7:0]						a_in;		 // 输入有变化,reg型变量
wire[7:0]						y_out;  // 输出要看,wire型变量

comp_conv comp_conv(
										.a(a_in),
										.a_comp(y_out)
										);  // 测试输入输出即可
										
initial begin
											a_in <= 0;  // a_in初始化
							#3000		$stop;			// 8位bit从00000000到11111111有256个变化,每个变化10ns,3000ns足够
end

always #10 a_in <= a_in+1; 

endmodule

简洁版


// 2022-1-19 verilog学习
// 补码转换逻辑
`timescale 1ns/10ps;

module comp_conv(
								a,
								a_comp
								);

input[7:0]			a;
output[7:0]			a_comp;

// 中间变量
//wire[6:0] b; // 负数按位取反的幅度位 (1位符号位+7位幅度位)
//wire[7:0] y; // 负数的补码

//assign b = ~a[6:0];
//assign y[6:0] = b+1; // 负数的补码=幅度位按位取反+1
//assign y[7] = a[7]; // 符号位不变
//assign y = {a[7],~a[6:0]+1};

// 二选一
//assign a_comp = a[7]?y:a; //正数(符号位[7]是0)的补码是自己,负数的补码是y 
assign						a_comp = a[7]?{ 
   a[7],~a[6:0]+1}:a;  // 二选一

endmodule


// testbench 测试台
module comp_conv_tb;  
reg[7:0]						a_in;		 // 输入有变化,reg型变量
wire[7:0]						y_out;  // 输出要看,wire型变量

comp_conv comp_conv(
										.a(a_in),
										.a_comp(y_out)
										);  // 测试输入输出即可
										
initial begin
											a_in <= 0;  // a_in初始化
							#3000		$stop;			// 8位bit从00000000到11111111有256个变化,每个变化10ns,3000ns足够
end

always #10 a_in <= a_in+1; 

endmodule


modelsim 仿真:

正数补码与原码相同

在这里插入图片描述
负数补码符号位 [7] 不变,幅度 [6:0]取反+1

在这里插入图片描述


版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/192506.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • python处理亿级大数据(rar暴力破解器安卓版)

    转载请注明出处:https://blog.csdn.net/l1028386804/article/details/85566045今天是2019年元旦,首先祝大家元旦快乐,在这个喜庆的日子里,不知道大家有没有坚持研究自己所在领域的知识。其实,每项知识、技能的积累,需要的是日复一日的坚持,正所谓——持之以恒,贵在坚持,这样才能做到每天进步一点点。好了,步入正题,今天,闲来无事,基于Python…

  • 解决kafka无法删除topic问题

    解决kafka无法删除topic问题1.问题描述使用kafka命令删除某个topic之后,查看集群的topic列表时,被删除的tpoic依然存在#/data/kafka/bin/kafka-topics.sh–delete–zookeeperzook_ip–topicsystemTopicsystemismarkedfordeletion.Note:Thiswillhavenoimpactifdelete.topic.enableisnotsettotrue.[外链图片转存失败,

    2022年10月16日
  • Android学习(简单使用Bottom Navigation Activity来实现底部导航栏)

    Android学习(简单使用Bottom Navigation Activity来实现底部导航栏)在我们实际编写程序时,不必每一个activity都要从零开始,利用好系统自带的模板往往可以起到事半功倍的效果。下面我们就来看看如何使用BottomNavigationActivity来完成简单的底部导航栏功能。先来看一下效果图吧:创建activity首先在创建面板,我们选择然后next,finish就OK了。创建成功以后我们来运行一下,发现已经基本实现了底部导航栏的功能了!但是还没有结…

    2022年10月31日
  • 用navicat 连接sqlserver提示要安装 sql server native client

    用navicat 连接sqlserver提示要安装 sql server native client解决办法:打开navicat安装目录,找到navicat自带sqlncli_x64.msi,安装后问题解决!说明:我用的是64位的全功能安装版的navicat,亲测可用。谢谢!

    2022年10月21日
  • Redis集群详解

    Redis集群详解Redis集群详解Redis有三种集群模式,分别是:*主从模式*Sentinel模式*Cluster模式三种集群模式各有特点,关于Redis介绍可以参考这里:NoSQL(二)——RedisRedis官网:https://redis.io/,最新版本5.0.4主从模式主从模式介绍主从模式是三种模式中最简单的,在主从复制中,数据库分为两类:主数据库(master)和从…

  • python学习——pandas查看数据集null值:isnull

    python学习——pandas查看数据集null值:isnull在数据集中,可能有些字段下会有null值,我们在进行数据处理的时候,不能视而不见,可以使用isnull查看是否有空值In:all_dummy_df.isnull().sum().sort_values(ascending=False).head(10)Out:LotFrontage486GarageYrBlt159MasVnrArea23…

    2022年10月20日

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号